Ignore:
Timestamp:
Nov 2, 2016, 11:14:00 AM (4 years ago)
Author:
matszpk
Message:

CLRadeonExtender: DisasmROCm: Fix for big-endian machines in config dump routine.

File:
1 edited

Legend:

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

    r2523 r2524  
    128128{
    129129    output.write("    .config\n", 12);
     130   
     131    uint32_t amdCodeVersionMajor = ULEV(config.amdCodeVersionMajor);
     132    uint32_t amdCodeVersionMinor = ULEV(config.amdCodeVersionMinor);
     133    uint16_t amdMachineKind = ULEV(config.amdMachineKind);
     134    uint16_t amdMachineMajor = ULEV(config.amdMachineMajor);
     135    uint16_t amdMachineMinor = ULEV(config.amdMachineMinor);
     136    uint16_t amdMachineStepping = ULEV(config.amdMachineStepping);
     137    uint64_t kernelCodeEntryOffset = ULEV(config.kernelCodeEntryOffset);
     138    uint64_t kernelCodePrefetchOffset = ULEV(config.kernelCodePrefetchOffset);
     139    uint64_t kernelCodePrefetchSize = ULEV(config.kernelCodePrefetchSize);
     140    uint64_t maxScrachBackingMemorySize = ULEV(config.maxScrachBackingMemorySize);
     141    uint32_t computePgmRsrc1 = ULEV(config.computePgmRsrc1);
     142    uint32_t computePgmRsrc2 = ULEV(config.computePgmRsrc2);
     143    uint16_t enableSpgrRegisterFlags = ULEV(config.enableSpgrRegisterFlags);
     144    uint16_t enableFeatureFlags = ULEV(config.enableFeatureFlags);
     145    uint32_t workitemPrivateSegmentSize = ULEV(config.workitemPrivateSegmentSize);
     146    uint32_t workgroupGroupSegmentSize = ULEV(config.workgroupGroupSegmentSize);
     147    uint32_t gdsSegmentSize = ULEV(config.gdsSegmentSize);
     148    uint64_t kernargSegmentSize = ULEV(config.kernargSegmentSize);
     149    uint32_t workgroupFbarrierCount = ULEV(config.workgroupFbarrierCount);
     150    uint16_t wavefrontSgprCount = ULEV(config.wavefrontSgprCount);
     151    uint16_t workitemVgprCount = ULEV(config.workitemVgprCount);
     152    uint16_t reservedVgprFirst = ULEV(config.reservedVgprFirst);
     153    uint16_t reservedVgprCount = ULEV(config.reservedVgprCount);
     154    uint16_t reservedSgprFirst = ULEV(config.reservedSgprFirst);
     155    uint16_t reservedSgprCount = ULEV(config.reservedSgprCount);
     156    uint16_t debugWavefrontPrivateSegmentOffsetSgpr =
     157            ULEV(config.debugWavefrontPrivateSegmentOffsetSgpr);
     158    uint16_t debugPrivateSegmentBufferSgpr = ULEV(config.debugPrivateSegmentBufferSgpr);
     159    uint32_t callConvention = ULEV(config.callConvention);
     160    uint64_t runtimeLoaderKernelSymbol = ULEV(config.runtimeLoaderKernelSymbol);
     161   
    130162    size_t bufSize;
    131163    char buf[100];
    132164    const cxuint ldsShift = arch<GPUArchitecture::GCN1_1 ? 8 : 9;
    133     const uint32_t pgmRsrc1 = config.computePgmRsrc1;
    134     const uint32_t pgmRsrc2 = config.computePgmRsrc2;
     165    const uint32_t pgmRsrc1 = computePgmRsrc1;
     166    const uint32_t pgmRsrc2 = computePgmRsrc2;
    135167   
    136168    const cxuint dimMask = (pgmRsrc2 >> 7) & 7;
     
    188220   
    189221    bufSize = snprintf(buf, 100, "        .codeversion %u, %u\n",
    190                    config.amdCodeVersionMajor, config.amdCodeVersionMinor);
     222                   amdCodeVersionMajor, amdCodeVersionMinor);
    191223    output.write(buf, bufSize);
    192224    bufSize = snprintf(buf, 100, "        .machine %hu, %hu, %hu, %hu\n",
    193                    config.amdMachineKind, config.amdMachineMajor,
    194                    config.amdMachineMinor, config.amdMachineStepping);
     225                   amdMachineKind, amdMachineMajor,
     226                   amdMachineMinor, amdMachineStepping);
    195227    output.write(buf, bufSize);
    196228    bufSize = snprintf(buf, 100, "        .kernel_code_entry_offset 0x%" PRIx64 "\n",
    197                        config.kernelCodeEntryOffset);
    198     output.write(buf, bufSize);
    199     if (config.kernelCodePrefetchOffset!=0)
     229                       kernelCodeEntryOffset);
     230    output.write(buf, bufSize);
     231    if (kernelCodePrefetchOffset!=0)
    200232    {
    201233        bufSize = snprintf(buf, 100,
    202234                   "        .kernel_code_prefetch_offset 0x%" PRIx64 "\n",
    203                            config.kernelCodePrefetchOffset);
    204         output.write(buf, bufSize);
    205     }
    206     if (config.kernelCodePrefetchSize!=0)
     235                           kernelCodePrefetchOffset);
     236        output.write(buf, bufSize);
     237    }
     238    if (kernelCodePrefetchSize!=0)
    207239    {
    208240        bufSize = snprintf(buf, 100, "        .kernel_code_prefetch_size %" PRIu64 "\n",
    209                            config.kernelCodePrefetchSize);
    210         output.write(buf, bufSize);
    211     }
    212     if (config.maxScrachBackingMemorySize!=0)
     241                           kernelCodePrefetchSize);
     242        output.write(buf, bufSize);
     243    }
     244    if (maxScrachBackingMemorySize!=0)
    213245    {
    214246        bufSize = snprintf(buf, 100, "        .max_scratch_backing_memory %" PRIu64 "\n",
    215                            config.maxScrachBackingMemorySize);
    216         output.write(buf, bufSize);
    217     }
    218    
    219     const uint16_t sgprFlags = config.enableSpgrRegisterFlags;
     247                           maxScrachBackingMemorySize);
     248        output.write(buf, bufSize);
     249    }
     250   
     251    const uint16_t sgprFlags = enableSpgrRegisterFlags;
    220252    if ((sgprFlags&1) != 0)
    221253        output.write("        .use_private_segment_buffer\n", 36);
     
    238270    if ((sgprFlags&512) != 0)
    239271        output.write("        .use_grid_workgroup_count_z\n", 36);
    240     const uint16_t featureFlags = config.enableFeatureFlags;
     272    const uint16_t featureFlags = enableFeatureFlags;
    241273    if ((featureFlags&1) != 0)
    242274        output.write("        .use_ordered_append_gds\n", 32);
     
    253285        output.write("        .use_xnack_enabled\n", 27);
    254286   
    255     if (config.workitemPrivateSegmentSize!=0)
     287    if (workitemPrivateSegmentSize!=0)
    256288    {
    257289        bufSize = snprintf(buf, 100, "        .workitem_private_segment_size %u\n",
    258                          config.workitemPrivateSegmentSize);
    259         output.write(buf, bufSize);
    260     }
    261     if (config.workgroupGroupSegmentSize!=0)
     290                         workitemPrivateSegmentSize);
     291        output.write(buf, bufSize);
     292    }
     293    if (workgroupGroupSegmentSize!=0)
    262294    {
    263295        bufSize = snprintf(buf, 100, "        .workgroup_group_segment_size %u\n",
    264                          config.workgroupGroupSegmentSize);
    265         output.write(buf, bufSize);
    266     }
    267     if (config.gdsSegmentSize!=0)
     296                         workgroupGroupSegmentSize);
     297        output.write(buf, bufSize);
     298    }
     299    if (gdsSegmentSize!=0)
    268300    {
    269301        bufSize = snprintf(buf, 100, "        .gds_segment_size %u\n",
    270                          config.gdsSegmentSize);
    271         output.write(buf, bufSize);
    272     }
    273     if (config.kernargSegmentSize!=0)
     302                         gdsSegmentSize);
     303        output.write(buf, bufSize);
     304    }
     305    if (kernargSegmentSize!=0)
    274306    {
    275307        bufSize = snprintf(buf, 100, "        .kernarg_segment_size %" PRIu64 "\n",
    276                          config.kernargSegmentSize);
    277         output.write(buf, bufSize);
    278     }
    279     if (config.workgroupFbarrierCount!=0)
     308                         kernargSegmentSize);
     309        output.write(buf, bufSize);
     310    }
     311    if (workgroupFbarrierCount!=0)
    280312    {
    281313        bufSize = snprintf(buf, 100, "        .workgroup_fbarrier_count %u\n",
    282                          config.workgroupFbarrierCount);
    283         output.write(buf, bufSize);
    284     }
    285     if (config.wavefrontSgprCount!=0)
     314                         workgroupFbarrierCount);
     315        output.write(buf, bufSize);
     316    }
     317    if (wavefrontSgprCount!=0)
    286318    {
    287319        bufSize = snprintf(buf, 100, "        .wavefront_sgpr_count %hu\n",
    288                          config.wavefrontSgprCount);
    289         output.write(buf, bufSize);
    290     }
    291     if (config.workitemVgprCount!=0)
     320                         wavefrontSgprCount);
     321        output.write(buf, bufSize);
     322    }
     323    if (workitemVgprCount!=0)
    292324    {
    293325        bufSize = snprintf(buf, 100, "        .workitem_vgpr_count %hu\n",
    294                          config.workitemVgprCount);
    295         output.write(buf, bufSize);
    296     }
    297     if (config.reservedVgprFirst!=0)
     326                         workitemVgprCount);
     327        output.write(buf, bufSize);
     328    }
     329    if (reservedVgprFirst!=0)
    298330    {
    299331        bufSize = snprintf(buf, 100, "        .reserved_vgpr_first %hu\n",
    300                          config.reservedVgprFirst);
    301         output.write(buf, bufSize);
    302     }
    303     if (config.reservedVgprCount!=0)
     332                         reservedVgprFirst);
     333        output.write(buf, bufSize);
     334    }
     335    if (reservedVgprCount!=0)
    304336    {
    305337        bufSize = snprintf(buf, 100, "        .reserved_vgpr_count %hu\n",
    306                          config.reservedVgprCount);
    307         output.write(buf, bufSize);
    308     }
    309     if (config.reservedSgprFirst!=0)
     338                         reservedVgprCount);
     339        output.write(buf, bufSize);
     340    }
     341    if (reservedSgprFirst!=0)
    310342    {
    311343        bufSize = snprintf(buf, 100, "        .reserved_sgpr_first %hu\n",
    312                          config.reservedSgprFirst);
    313         output.write(buf, bufSize);
    314     }
    315     if (config.reservedSgprCount!=0)
     344                         reservedSgprFirst);
     345        output.write(buf, bufSize);
     346    }
     347    if (reservedSgprCount!=0)
    316348    {
    317349        bufSize = snprintf(buf, 100, "        .reserved_sgpr_count %hu\n",
    318                          config.reservedSgprCount);
    319         output.write(buf, bufSize);
    320     }
    321     if (config.debugWavefrontPrivateSegmentOffsetSgpr!=0)
     350                         reservedSgprCount);
     351        output.write(buf, bufSize);
     352    }
     353    if (debugWavefrontPrivateSegmentOffsetSgpr!=0)
    322354    {
    323355        bufSize = snprintf(buf, 100, "        "
    324356                        ".debug_wavefront_private_segment_offset_sgpr %hu\n",
    325                          config.debugWavefrontPrivateSegmentOffsetSgpr);
    326         output.write(buf, bufSize);
    327     }
    328     if (config.debugPrivateSegmentBufferSgpr!=0)
     357                         debugWavefrontPrivateSegmentOffsetSgpr);
     358        output.write(buf, bufSize);
     359    }
     360    if (debugPrivateSegmentBufferSgpr!=0)
    329361    {
    330362        bufSize = snprintf(buf, 100, "        .debug_private_segment_buffer_sgpr %hu\n",
    331                          config.debugPrivateSegmentBufferSgpr);
     363                         debugPrivateSegmentBufferSgpr);
    332364        output.write(buf, bufSize);
    333365    }
     
    345377    output.write(buf, bufSize);
    346378    bufSize = snprintf(buf, 100, "        .call_convention 0x%x\n",
    347                      config.callConvention);
    348     output.write(buf, bufSize);
    349     if (config.runtimeLoaderKernelSymbol!=0)
     379                     callConvention);
     380    output.write(buf, bufSize);
     381    if (runtimeLoaderKernelSymbol!=0)
    350382    {
    351383        bufSize = snprintf(buf, 100,
    352384                   "        .runtime_loader_kernel_symbol 0x%" PRIx64 "\n",
    353                          config.runtimeLoaderKernelSymbol);
     385                         runtimeLoaderKernelSymbol);
    354386        output.write(buf, bufSize);
    355387    }
Note: See TracChangeset for help on using the changeset viewer.