Changeset 3292 in CLRX


Ignore:
Timestamp:
Sep 2, 2017, 5:02:44 PM (5 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmGallium?/ROCm: Reuse code to setting config values.

Location:
CLRadeonExtender/trunk/amdasm
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/amdasm/AsmGalliumFormat.cpp

    r3291 r3292  
    834834        AsmAmdHsaKernelConfig& config = *(handler.kernelStates[asmr.currentKernel]->config);
    835835       
    836         // set value
    837         switch(target)
    838         {
    839             case GALLIUMCVAL_HSA_SGPRSNUM:
    840                 config.usedSGPRsNum = value;
    841                 break;
    842             case GALLIUMCVAL_HSA_VGPRSNUM:
    843                 config.usedVGPRsNum = value;
    844                 break;
    845             case GALLIUMCVAL_HSA_PGMRSRC1:
    846                 config.computePgmRsrc1 = value;
    847                 break;
    848             case GALLIUMCVAL_HSA_PGMRSRC2:
    849                 config.computePgmRsrc2 = value;
    850                 break;
    851             case GALLIUMCVAL_HSA_FLOATMODE:
    852                 config.floatMode = value;
    853                 break;
    854             case GALLIUMCVAL_HSA_PRIORITY:
    855                 config.priority = value;
    856                 break;
    857             case GALLIUMCVAL_HSA_USERDATANUM:
    858                 config.userDataNum = value;
    859                 break;
    860             case GALLIUMCVAL_HSA_EXCEPTIONS:
    861                 config.exceptions = value;
    862                 break;
    863             case GALLIUMCVAL_KERNEL_CODE_ENTRY_OFFSET:
    864                 config.kernelCodeEntryOffset = value;
    865                 break;
    866             case GALLIUMCVAL_KERNEL_CODE_PREFETCH_OFFSET:
    867                 config.kernelCodePrefetchOffset = value;
    868                 break;
    869             case GALLIUMCVAL_KERNEL_CODE_PREFETCH_SIZE:
    870                 config.kernelCodePrefetchSize = value;
    871                 break;
    872             case GALLIUMCVAL_MAX_SCRATCH_BACKING_MEMORY:
    873                 config.maxScrachBackingMemorySize = value;
    874                 break;
    875             case GALLIUMCVAL_WORKITEM_PRIVATE_SEGMENT_SIZE:
    876                 config.workitemPrivateSegmentSize = value;
    877                 break;
    878             case GALLIUMCVAL_WORKGROUP_GROUP_SEGMENT_SIZE:
    879                 config.workgroupGroupSegmentSize = value;
    880                 break;
    881             case GALLIUMCVAL_GDS_SEGMENT_SIZE:
    882                 config.gdsSegmentSize = value;
    883                 break;
    884             case GALLIUMCVAL_KERNARG_SEGMENT_SIZE:
    885                 config.kernargSegmentSize = value;
    886                 break;
    887             case GALLIUMCVAL_WORKGROUP_FBARRIER_COUNT:
    888                 config.workgroupFbarrierCount = value;
    889                 break;
    890             case GALLIUMCVAL_WAVEFRONT_SGPR_COUNT:
    891                 config.wavefrontSgprCount = value;
    892                 break;
    893             case GALLIUMCVAL_WORKITEM_VGPR_COUNT:
    894                 config.workitemVgprCount = value;
    895                 break;
    896             case GALLIUMCVAL_DEBUG_WAVEFRONT_PRIVATE_SEGMENT_OFFSET_SGPR:
    897                 config.debugWavefrontPrivateSegmentOffsetSgpr = value;
    898                 break;
    899             case GALLIUMCVAL_DEBUG_PRIVATE_SEGMENT_BUFFER_SGPR:
    900                 config.debugPrivateSegmentBufferSgpr = value;
    901                 break;
    902             case GALLIUMCVAL_PRIVATE_ELEM_SIZE:
    903                 config.enableFeatureFlags = (config.enableFeatureFlags & ~6) |
    904                         ((63-CLZ64(value)-1)<<1);
    905                 break;
    906             case GALLIUMCVAL_KERNARG_SEGMENT_ALIGN:
    907                 config.kernargSegmentAlignment = 63-CLZ64(value);
    908                 break;
    909             case GALLIUMCVAL_GROUP_SEGMENT_ALIGN:
    910                 config.groupSegmentAlignment = 63-CLZ64(value);
    911                 break;
    912             case GALLIUMCVAL_PRIVATE_SEGMENT_ALIGN:
    913                 config.privateSegmentAlignment = 63-CLZ64(value);
    914                 break;
    915             case GALLIUMCVAL_WAVEFRONT_SIZE:
    916                 config.wavefrontSize = 63-CLZ64(value);
    917                 break;
    918             case GALLIUMCVAL_CALL_CONVENTION:
    919                 config.callConvention = value;
    920                 break;
    921             case GALLIUMCVAL_RUNTIME_LOADER_KERNEL_SYMBOL:
    922                 config.runtimeLoaderKernelSymbol = value;
    923                 break;
    924             default:
    925                 break;
    926         }
     836        AsmROCmPseudoOps::setConfigValueMain(config,
     837                ROCmConfigValueTarget(target-GALLIUMCVAL_HSA_FIRST_PARAM), value);
    927838    }
    928839}
     
    975886        AsmAmdHsaKernelConfig& config = *(handler.kernelStates[asmr.currentKernel]->config);
    976887       
    977         // set value
    978         switch(target)
    979         {
    980             case GALLIUMCVAL_HSA_PRIVMODE:
    981                 config.privilegedMode = true;
    982                 break;
    983             case GALLIUMCVAL_HSA_DEBUGMODE:
    984                 config.debugMode = true;
    985                 break;
    986             case GALLIUMCVAL_HSA_DX10CLAMP:
    987                 config.dx10Clamp = true;
    988                 break;
    989             case GALLIUMCVAL_HSA_IEEEMODE:
    990                 config.ieeeMode = true;
    991                 break;
    992             case GALLIUMCVAL_HSA_TGSIZE:
    993                 config.tgSize = true;
    994                 break;
    995             case GALLIUMCVAL_USE_PRIVATE_SEGMENT_BUFFER:
    996                 config.enableSgprRegisterFlags |= ROCMFLAG_USE_PRIVATE_SEGMENT_BUFFER;
    997                 break;
    998             case GALLIUMCVAL_USE_DISPATCH_PTR:
    999                 config.enableSgprRegisterFlags |= ROCMFLAG_USE_DISPATCH_PTR;
    1000                 break;
    1001             case GALLIUMCVAL_USE_QUEUE_PTR:
    1002                 config.enableSgprRegisterFlags |= ROCMFLAG_USE_QUEUE_PTR;
    1003                 break;
    1004             case GALLIUMCVAL_USE_KERNARG_SEGMENT_PTR:
    1005                 config.enableSgprRegisterFlags |= ROCMFLAG_USE_KERNARG_SEGMENT_PTR;
    1006                 break;
    1007             case GALLIUMCVAL_USE_DISPATCH_ID:
    1008                 config.enableSgprRegisterFlags |= ROCMFLAG_USE_DISPATCH_ID;
    1009                 break;
    1010             case GALLIUMCVAL_USE_FLAT_SCRATCH_INIT:
    1011                 config.enableSgprRegisterFlags |= ROCMFLAG_USE_FLAT_SCRATCH_INIT;
    1012                 break;
    1013             case GALLIUMCVAL_USE_PRIVATE_SEGMENT_SIZE:
    1014                 config.enableSgprRegisterFlags |= ROCMFLAG_USE_PRIVATE_SEGMENT_SIZE;
    1015                 break;
    1016             case GALLIUMCVAL_USE_ORDERED_APPEND_GDS:
    1017                 config.enableFeatureFlags |= ROCMFLAG_USE_ORDERED_APPEND_GDS;
    1018                 break;
    1019             case GALLIUMCVAL_USE_PTR64:
    1020                 config.enableFeatureFlags |= ROCMFLAG_USE_PTR64;
    1021                 break;
    1022             case GALLIUMCVAL_USE_DYNAMIC_CALL_STACK:
    1023                 config.enableFeatureFlags |= ROCMFLAG_USE_DYNAMIC_CALL_STACK;
    1024                 break;
    1025             case GALLIUMCVAL_USE_DEBUG_ENABLED:
    1026                 config.enableFeatureFlags |= ROCMFLAG_USE_DEBUG_ENABLED;
    1027                 break;
    1028             case GALLIUMCVAL_USE_XNACK_ENABLED:
    1029                 config.enableFeatureFlags |= ROCMFLAG_USE_XNACK_ENABLED;
    1030                 break;
    1031             default:
    1032                 break;
    1033         }
     888        AsmROCmPseudoOps::setConfigBoolValueMain(config,
     889                    ROCmConfigValueTarget(target-GALLIUMCVAL_HSA_FIRST_PARAM));
    1034890    }
    1035891}
  • CLRadeonExtender/trunk/amdasm/AsmInternals.h

    r3291 r3292  
    668668                      const char* linePtr);
    669669   
     670    static void setConfigValueMain(AsmAmdHsaKernelConfig& config,
     671                        ROCmConfigValueTarget target, uint64_t value);
     672   
    670673    static void setConfigValue(AsmROCmHandler& handler, const char* pseudoOpPlace,
    671674                      const char* linePtr, ROCmConfigValueTarget target);
     675   
     676    static void setConfigBoolValueMain(AsmAmdHsaKernelConfig& config,
     677                        ROCmConfigValueTarget target);
    672678   
    673679    static void setConfigBoolValue(AsmROCmHandler& handler, const char* pseudoOpPlace,
  • CLRadeonExtender/trunk/amdasm/AsmROCmFormat.cpp

    r3291 r3292  
    419419}
    420420
     421void AsmROCmPseudoOps::setConfigValueMain(AsmAmdHsaKernelConfig& config,
     422                ROCmConfigValueTarget target, uint64_t value)
     423{
     424    switch(target)
     425    {
     426        case ROCMCVAL_SGPRSNUM:
     427            config.usedSGPRsNum = value;
     428            break;
     429        case ROCMCVAL_VGPRSNUM:
     430            config.usedVGPRsNum = value;
     431            break;
     432        case ROCMCVAL_PGMRSRC1:
     433            config.computePgmRsrc1 = value;
     434            break;
     435        case ROCMCVAL_PGMRSRC2:
     436            config.computePgmRsrc2 = value;
     437            break;
     438        case ROCMCVAL_FLOATMODE:
     439            config.floatMode = value;
     440            break;
     441        case ROCMCVAL_PRIORITY:
     442            config.priority = value;
     443            break;
     444        case ROCMCVAL_USERDATANUM:
     445            config.userDataNum = value;
     446            break;
     447        case ROCMCVAL_EXCEPTIONS:
     448            config.exceptions = value;
     449            break;
     450        case ROCMCVAL_KERNEL_CODE_ENTRY_OFFSET:
     451            config.kernelCodeEntryOffset = value;
     452            break;
     453        case ROCMCVAL_KERNEL_CODE_PREFETCH_OFFSET:
     454            config.kernelCodePrefetchOffset = value;
     455            break;
     456        case ROCMCVAL_KERNEL_CODE_PREFETCH_SIZE:
     457            config.kernelCodePrefetchSize = value;
     458            break;
     459        case ROCMCVAL_MAX_SCRATCH_BACKING_MEMORY:
     460            config.maxScrachBackingMemorySize = value;
     461            break;
     462        case ROCMCVAL_WORKITEM_PRIVATE_SEGMENT_SIZE:
     463            config.workitemPrivateSegmentSize = value;
     464            break;
     465        case ROCMCVAL_WORKGROUP_GROUP_SEGMENT_SIZE:
     466            config.workgroupGroupSegmentSize = value;
     467            break;
     468        case ROCMCVAL_GDS_SEGMENT_SIZE:
     469            config.gdsSegmentSize = value;
     470            break;
     471        case ROCMCVAL_KERNARG_SEGMENT_SIZE:
     472            config.kernargSegmentSize = value;
     473            break;
     474        case ROCMCVAL_WORKGROUP_FBARRIER_COUNT:
     475            config.workgroupFbarrierCount = value;
     476            break;
     477        case ROCMCVAL_WAVEFRONT_SGPR_COUNT:
     478            config.wavefrontSgprCount = value;
     479            break;
     480        case ROCMCVAL_WORKITEM_VGPR_COUNT:
     481            config.workitemVgprCount = value;
     482            break;
     483        case ROCMCVAL_DEBUG_WAVEFRONT_PRIVATE_SEGMENT_OFFSET_SGPR:
     484            config.debugWavefrontPrivateSegmentOffsetSgpr = value;
     485            break;
     486        case ROCMCVAL_DEBUG_PRIVATE_SEGMENT_BUFFER_SGPR:
     487            config.debugPrivateSegmentBufferSgpr = value;
     488            break;
     489        case ROCMCVAL_PRIVATE_ELEM_SIZE:
     490            config.enableFeatureFlags = (config.enableFeatureFlags & ~6) |
     491                    ((63-CLZ64(value)-1)<<1);
     492            break;
     493        case ROCMCVAL_KERNARG_SEGMENT_ALIGN:
     494            config.kernargSegmentAlignment = 63-CLZ64(value);
     495            break;
     496        case ROCMCVAL_GROUP_SEGMENT_ALIGN:
     497            config.groupSegmentAlignment = 63-CLZ64(value);
     498            break;
     499        case ROCMCVAL_PRIVATE_SEGMENT_ALIGN:
     500            config.privateSegmentAlignment = 63-CLZ64(value);
     501            break;
     502        case ROCMCVAL_WAVEFRONT_SIZE:
     503            config.wavefrontSize = 63-CLZ64(value);
     504            break;
     505        case ROCMCVAL_CALL_CONVENTION:
     506            config.callConvention = value;
     507            break;
     508        case ROCMCVAL_RUNTIME_LOADER_KERNEL_SYMBOL:
     509            config.runtimeLoaderKernelSymbol = value;
     510            break;
     511        default:
     512            break;
     513    }
     514}
     515
    421516void AsmROCmPseudoOps::setConfigValue(AsmROCmHandler& handler, const char* pseudoOpPlace,
    422517                  const char* linePtr, ROCmConfigValueTarget target)
     
    580675    AsmROCmKernelConfig& config = *(handler.kernelStates[asmr.currentKernel]->config);
    581676    // set value
     677    setConfigValueMain(config, target, value);
     678}
     679
     680void AsmROCmPseudoOps::setConfigBoolValueMain(AsmAmdHsaKernelConfig& config,
     681                ROCmConfigValueTarget target)
     682{
    582683    switch(target)
    583684    {
    584         case ROCMCVAL_SGPRSNUM:
    585             config.usedSGPRsNum = value;
    586             break;
    587         case ROCMCVAL_VGPRSNUM:
    588             config.usedVGPRsNum = value;
    589             break;
    590         case ROCMCVAL_PGMRSRC1:
    591             config.computePgmRsrc1 = value;
    592             break;
    593         case ROCMCVAL_PGMRSRC2:
    594             config.computePgmRsrc2 = value;
    595             break;
    596         case ROCMCVAL_FLOATMODE:
    597             config.floatMode = value;
    598             break;
    599         case ROCMCVAL_PRIORITY:
    600             config.priority = value;
    601             break;
    602         case ROCMCVAL_USERDATANUM:
    603             config.userDataNum = value;
    604             break;
    605         case ROCMCVAL_EXCEPTIONS:
    606             config.exceptions = value;
    607             break;
    608         case ROCMCVAL_KERNEL_CODE_ENTRY_OFFSET:
    609             config.kernelCodeEntryOffset = value;
    610             break;
    611         case ROCMCVAL_KERNEL_CODE_PREFETCH_OFFSET:
    612             config.kernelCodePrefetchOffset = value;
    613             break;
    614         case ROCMCVAL_KERNEL_CODE_PREFETCH_SIZE:
    615             config.kernelCodePrefetchSize = value;
    616             break;
    617         case ROCMCVAL_MAX_SCRATCH_BACKING_MEMORY:
    618             config.maxScrachBackingMemorySize = value;
    619             break;
    620         case ROCMCVAL_WORKITEM_PRIVATE_SEGMENT_SIZE:
    621             config.workitemPrivateSegmentSize = value;
    622             break;
    623         case ROCMCVAL_WORKGROUP_GROUP_SEGMENT_SIZE:
    624             config.workgroupGroupSegmentSize = value;
    625             break;
    626         case ROCMCVAL_GDS_SEGMENT_SIZE:
    627             config.gdsSegmentSize = value;
    628             break;
    629         case ROCMCVAL_KERNARG_SEGMENT_SIZE:
    630             config.kernargSegmentSize = value;
    631             break;
    632         case ROCMCVAL_WORKGROUP_FBARRIER_COUNT:
    633             config.workgroupFbarrierCount = value;
    634             break;
    635         case ROCMCVAL_WAVEFRONT_SGPR_COUNT:
    636             config.wavefrontSgprCount = value;
    637             break;
    638         case ROCMCVAL_WORKITEM_VGPR_COUNT:
    639             config.workitemVgprCount = value;
    640             break;
    641         case ROCMCVAL_DEBUG_WAVEFRONT_PRIVATE_SEGMENT_OFFSET_SGPR:
    642             config.debugWavefrontPrivateSegmentOffsetSgpr = value;
    643             break;
    644         case ROCMCVAL_DEBUG_PRIVATE_SEGMENT_BUFFER_SGPR:
    645             config.debugPrivateSegmentBufferSgpr = value;
    646             break;
    647         case ROCMCVAL_PRIVATE_ELEM_SIZE:
    648             config.enableFeatureFlags = (config.enableFeatureFlags & ~6) |
    649                     ((63-CLZ64(value)-1)<<1);
    650             break;
    651         case ROCMCVAL_KERNARG_SEGMENT_ALIGN:
    652             config.kernargSegmentAlignment = 63-CLZ64(value);
    653             break;
    654         case ROCMCVAL_GROUP_SEGMENT_ALIGN:
    655             config.groupSegmentAlignment = 63-CLZ64(value);
    656             break;
    657         case ROCMCVAL_PRIVATE_SEGMENT_ALIGN:
    658             config.privateSegmentAlignment = 63-CLZ64(value);
    659             break;
    660         case ROCMCVAL_WAVEFRONT_SIZE:
    661             config.wavefrontSize = 63-CLZ64(value);
    662             break;
    663         case ROCMCVAL_CALL_CONVENTION:
    664             config.callConvention = value;
    665             break;
    666         case ROCMCVAL_RUNTIME_LOADER_KERNEL_SYMBOL:
    667             config.runtimeLoaderKernelSymbol = value;
     685        case ROCMCVAL_PRIVMODE:
     686            config.privilegedMode = true;
     687            break;
     688        case ROCMCVAL_DEBUGMODE:
     689            config.debugMode = true;
     690            break;
     691        case ROCMCVAL_DX10CLAMP:
     692            config.dx10Clamp = true;
     693            break;
     694        case ROCMCVAL_IEEEMODE:
     695            config.ieeeMode = true;
     696            break;
     697        case ROCMCVAL_TGSIZE:
     698            config.tgSize = true;
     699            break;
     700        case ROCMCVAL_USE_PRIVATE_SEGMENT_BUFFER:
     701            config.enableSgprRegisterFlags |= ROCMFLAG_USE_PRIVATE_SEGMENT_BUFFER;
     702            break;
     703        case ROCMCVAL_USE_DISPATCH_PTR:
     704            config.enableSgprRegisterFlags |= ROCMFLAG_USE_DISPATCH_PTR;
     705            break;
     706        case ROCMCVAL_USE_QUEUE_PTR:
     707            config.enableSgprRegisterFlags |= ROCMFLAG_USE_QUEUE_PTR;
     708            break;
     709        case ROCMCVAL_USE_KERNARG_SEGMENT_PTR:
     710            config.enableSgprRegisterFlags |= ROCMFLAG_USE_KERNARG_SEGMENT_PTR;
     711            break;
     712        case ROCMCVAL_USE_DISPATCH_ID:
     713            config.enableSgprRegisterFlags |= ROCMFLAG_USE_DISPATCH_ID;
     714            break;
     715        case ROCMCVAL_USE_FLAT_SCRATCH_INIT:
     716            config.enableSgprRegisterFlags |= ROCMFLAG_USE_FLAT_SCRATCH_INIT;
     717            break;
     718        case ROCMCVAL_USE_PRIVATE_SEGMENT_SIZE:
     719            config.enableSgprRegisterFlags |= ROCMFLAG_USE_PRIVATE_SEGMENT_SIZE;
     720            break;
     721        case ROCMCVAL_USE_ORDERED_APPEND_GDS:
     722            config.enableFeatureFlags |= ROCMFLAG_USE_ORDERED_APPEND_GDS;
     723            break;
     724        case ROCMCVAL_USE_PTR64:
     725            config.enableFeatureFlags |= ROCMFLAG_USE_PTR64;
     726            break;
     727        case ROCMCVAL_USE_DYNAMIC_CALL_STACK:
     728            config.enableFeatureFlags |= ROCMFLAG_USE_DYNAMIC_CALL_STACK;
     729            break;
     730        case ROCMCVAL_USE_DEBUG_ENABLED:
     731            config.enableFeatureFlags |= ROCMFLAG_USE_DEBUG_ENABLED;
     732            break;
     733        case ROCMCVAL_USE_XNACK_ENABLED:
     734            config.enableFeatureFlags |= ROCMFLAG_USE_XNACK_ENABLED;
    668735            break;
    669736        default:
     
    692759    AsmROCmKernelConfig& config = *(handler.kernelStates[asmr.currentKernel]->config);
    693760   
    694     switch(target)
    695     {
    696         case ROCMCVAL_PRIVMODE:
    697             config.privilegedMode = true;
    698             break;
    699         case ROCMCVAL_DEBUGMODE:
    700             config.debugMode = true;
    701             break;
    702         case ROCMCVAL_DX10CLAMP:
    703             config.dx10Clamp = true;
    704             break;
    705         case ROCMCVAL_IEEEMODE:
    706             config.ieeeMode = true;
    707             break;
    708         case ROCMCVAL_TGSIZE:
    709             config.tgSize = true;
    710             break;
    711         case ROCMCVAL_USE_PRIVATE_SEGMENT_BUFFER:
    712             config.enableSgprRegisterFlags |= ROCMFLAG_USE_PRIVATE_SEGMENT_BUFFER;
    713             break;
    714         case ROCMCVAL_USE_DISPATCH_PTR:
    715             config.enableSgprRegisterFlags |= ROCMFLAG_USE_DISPATCH_PTR;
    716             break;
    717         case ROCMCVAL_USE_QUEUE_PTR:
    718             config.enableSgprRegisterFlags |= ROCMFLAG_USE_QUEUE_PTR;
    719             break;
    720         case ROCMCVAL_USE_KERNARG_SEGMENT_PTR:
    721             config.enableSgprRegisterFlags |= ROCMFLAG_USE_KERNARG_SEGMENT_PTR;
    722             break;
    723         case ROCMCVAL_USE_DISPATCH_ID:
    724             config.enableSgprRegisterFlags |= ROCMFLAG_USE_DISPATCH_ID;
    725             break;
    726         case ROCMCVAL_USE_FLAT_SCRATCH_INIT:
    727             config.enableSgprRegisterFlags |= ROCMFLAG_USE_FLAT_SCRATCH_INIT;
    728             break;
    729         case ROCMCVAL_USE_PRIVATE_SEGMENT_SIZE:
    730             config.enableSgprRegisterFlags |= ROCMFLAG_USE_PRIVATE_SEGMENT_SIZE;
    731             break;
    732         case ROCMCVAL_USE_ORDERED_APPEND_GDS:
    733             config.enableFeatureFlags |= ROCMFLAG_USE_ORDERED_APPEND_GDS;
    734             break;
    735         case ROCMCVAL_USE_PTR64:
    736             config.enableFeatureFlags |= ROCMFLAG_USE_PTR64;
    737             break;
    738         case ROCMCVAL_USE_DYNAMIC_CALL_STACK:
    739             config.enableFeatureFlags |= ROCMFLAG_USE_DYNAMIC_CALL_STACK;
    740             break;
    741         case ROCMCVAL_USE_DEBUG_ENABLED:
    742             config.enableFeatureFlags |= ROCMFLAG_USE_DEBUG_ENABLED;
    743             break;
    744         case ROCMCVAL_USE_XNACK_ENABLED:
    745             config.enableFeatureFlags |= ROCMFLAG_USE_XNACK_ENABLED;
    746             break;
    747         default:
    748             break;
    749     }
     761    setConfigBoolValueMain(config, target);
    750762}
    751763
Note: See TracChangeset for help on using the changeset viewer.