Changeset 3745 in CLRX


Ignore:
Timestamp:
Feb 7, 2018, 7:26:20 PM (15 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmROCm: Add a missing '.runtime_handle' pseudo-ops. add new testcases to test ROCm metadata pseudo-ops.

Location:
CLRadeonExtender/trunk
Files:
3 edited

Legend:

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

    r3741 r3745  
    731731}
    732732
     733void AsmROCmPseudoOps::setRuntimeHandle(AsmROCmHandler& handler, const char* pseudoOpPlace,
     734                      const char* linePtr)
     735{
     736    Assembler& asmr = handler.assembler;
     737    const char* end = asmr.line + asmr.lineSize;
     738    if (asmr.currentKernel==ASMKERN_GLOBAL ||
     739        asmr.sections[asmr.currentSection].type != AsmSectionType::CONFIG)
     740        PSEUDOOP_RETURN_BY_ERROR("Illegal place of configuration pseudo-op")
     741   
     742    if (handler.metadataSection != ASMSECT_NONE)
     743        PSEUDOOP_RETURN_BY_ERROR("Metadata config can't be defined if "
     744                    "metadata section exists")
     745   
     746    std::string runtimeHandle;
     747    skipSpacesToEnd(linePtr, end);
     748    bool good = asmr.parseString(runtimeHandle, linePtr);
     749    if (!good || !checkGarbagesAtEnd(asmr, linePtr))
     750        return;
     751   
     752    ROCmKernelMetadata& metadata = handler.output.metadataInfo.kernels[asmr.currentKernel];
     753    handler.output.useMetadataInfo = true;
     754    metadata.runtimeHandle = runtimeHandle;
     755
     756}
     757
    733758void AsmROCmPseudoOps::addPrintf(AsmROCmHandler& handler, const char* pseudoOpPlace,
    734759                      const char* linePtr)
     
    10201045        else if (::strcmp(name, "volatile")==0)
    10211046            argIsVolatile = true;
    1022         else if (::strcmp(name, "pip")==0)
     1047        else if (::strcmp(name, "pipe")==0)
    10231048            argIsPipe = true;
    10241049        else
     
    20652090            break;
    20662091        case ROCMOP_RUNTIME_HANDLE:
     2092            AsmROCmPseudoOps::setRuntimeHandle(*this, stmtPlace, linePtr);
    20672093            break;
    20682094        case ROCMOP_RUNTIME_LOADER_KERNEL_SYMBOL:
  • CLRadeonExtender/trunk/amdasm/AsmROCmInternals.h

    r3728 r3745  
    141141    static void setKernelLanguage(AsmROCmHandler& handler, const char* pseudoOpPlace,
    142142                      const char* linePtr);
     143    // .runtime_handle
     144    static void setRuntimeHandle(AsmROCmHandler& handler, const char* pseudoOpPlace,
     145                      const char* linePtr);
    143146    // .printf (add printf)
    144147    static void addPrintf(AsmROCmHandler& handler, const char* pseudoOpPlace,
  • CLRadeonExtender/trunk/tests/amdasm/AsmROCmFormat.cpp

    r3742 r3745  
    10851085)ffDXD",
    10861086        "", true
     1087    },
     1088    {
     1089        R"ffDXD(.rocm
     1090        .gpu Fiji
     1091        .eflags 3
     1092        .newbinfmt
     1093        .md_version 3 , 5
     1094.kernel kxx1
     1095    .config
     1096        .dims x
     1097        .codeversion 1,0
     1098        .call_convention 0x34dac
     1099        .debug_private_segment_buffer_sgpr 98
     1100        .debug_wavefront_private_segment_offset_sgpr 96
     1101        .gds_segment_size 100
     1102        .kernarg_segment_align 32
     1103    # metadata
     1104        .md_language "jezorx"
     1105        .reqd_work_group_size 6,
     1106        .work_group_size_hint 5,7
     1107        .fixed_work_group_size 3,,71
     1108        .md_kernarg_segment_size 64
     1109        .md_kernarg_segment_align 32
     1110        .md_group_segment_fixed_size 1121
     1111        .md_private_segment_fixed_size 6632
     1112        .md_wavefront_size 64
     1113        .md_sgprsnum 14
     1114        .md_vgprsnum 11
     1115        .runtime_handle "SomeCodeToExec"
     1116        # arg infos
     1117        .arg , "", 8, 8, none, i64
     1118        .arg , "", 8, 8, complact, i64
     1119        .arg , "", 8, 8, printfbuf, i64
     1120        .arg , "", 8, 8, defqueue, i64
     1121        .arg pipe0, "pipe_t", 8, 8, pipe, struct, read_write, default pipe
     1122        .arg qx01, "queue_t", 8, 8, queue, struct
     1123        .arg masksamp, "sampler_t", 8, 8, sampler, struct
     1124        .arg vxx1, "void*", 8, 8, globalbuf, i8, global, default const
     1125        .arg vx1, "void*", 8, 8, globalbuf, i8, global, default volatile
     1126        .arg dx3, "void*", 8, 8, globalbuf, i8, global, default restrict
     1127        .arg ex6, "void*", 8, 8, globalbuf, i8, global, default pipe
     1128        .arg fx9, "void*", 8, 8, globalbuf, i8, global, default volatile const restrict
     1129.text
     1130kxx1:   .skip 256
     1131        s_mov_b32 s7, 0
     1132        s_endpgm
     1133)ffDXD",
     1134        R"ffDXD(ROCmBinDump:
     1135  ROCmSymbol: name=kxx1, offset=0, size=0, type=kernel
     1136    Config:
     1137      amdCodeVersion=1.1
     1138      amdMachine=1:8:0:3
     1139      kernelCodeEntryOffset=256
     1140      kernelCodePrefetchOffset=0
     1141      kernelCodePrefetchSize=0
     1142      maxScrachBackingMemorySize=0
     1143      computePgmRsrc1=0xc0040
     1144      computePgmRsrc2=0x80
     1145      enableSgprRegisterFlags=0x0
     1146      enableFeatureFlags=0x0
     1147      workitemPrivateSegmentSize=0
     1148      workgroupGroupSegmentSize=0
     1149      gdsSegmentSize=100
     1150      kernargSegmentSize=0
     1151      workgroupFbarrierCount=0
     1152      wavefrontSgprCount=10
     1153      workitemVgprCount=1
     1154      reservedVgprFirst=0
     1155      reservedVgprCount=0
     1156      reservedSgprFirst=0
     1157      reservedSgprCount=0
     1158      debugWavefrontPrivateSegmentOffsetSgpr=96
     1159      debugPrivateSegmentBufferSgpr=98
     1160      kernargSegmentAlignment=5
     1161      groupSegmentAlignment=4
     1162      privateSegmentAlignment=4
     1163      wavefrontSize=6
     1164      callConvention=0x34dac
     1165      runtimeLoaderKernelSymbol=0x0
     1166      ControlDirective:
     1167      0000000000000000000000000000000000000000000000000000000000000000
     1168      0000000000000000000000000000000000000000000000000000000000000000
     1169      0000000000000000000000000000000000000000000000000000000000000000
     1170      0000000000000000000000000000000000000000000000000000000000000000
     1171  Comment:
     1172  nullptr
     1173  Code:
     1174  0100000000000000010008000000030000010000000000000000000000000000
     1175  0000000000000000000000000000000040000c00800000000000000000000000
     1176  00000000640000000000000000000000000000000a0001000000000000000000
     1177  6000620005040406ac4d03000000000000000000000000000000000000000000
     1178  0000000000000000000000000000000000000000000000000000000000000000
     1179  0000000000000000000000000000000000000000000000000000000000000000
     1180  0000000000000000000000000000000000000000000000000000000000000000
     1181  0000000000000000000000000000000000000000000000000000000000000000
     1182  800087be000081bf
     1183  MetadataInfo:
     1184    Version: 3.5
     1185    Kernel: kxx1
     1186      SymName=
     1187      Language=jezorx 0.0
     1188      ReqdWorkGroupSize=6 1 1
     1189      WorkGroupSizeHint=5 7 1
     1190      VecTypeHint=
     1191      RuntimeHandle=SomeCodeToExec
     1192      KernargSegmentSize=64
     1193      KernargSegmentAlign=32
     1194      GroupSegmentFixedSize=1121
     1195      PrivateSegmentFixedSize=6632
     1196      WaveFrontSize=64
     1197      SgprsNum=14
     1198      VgprsNum=11
     1199      SpilledSgprs=4294967294
     1200      SpilledVgprs=4294967294
     1201      MaxFlatWorkGroupSize=18446744073709551614
     1202      FixedWorkGroupSize=3 1 71
     1203      Arg name=, type=, size=8, align=8
     1204        valuekind=none, valuetype=i64, pointeeAlign=0
     1205        addrSpace=none, accQual=default, actAccQual=default
     1206        Flags=
     1207      Arg name=, type=, size=8, align=8
     1208        valuekind=complact, valuetype=i64, pointeeAlign=0
     1209        addrSpace=none, accQual=default, actAccQual=default
     1210        Flags=
     1211      Arg name=, type=, size=8, align=8
     1212        valuekind=printfbuf, valuetype=i64, pointeeAlign=0
     1213        addrSpace=none, accQual=default, actAccQual=default
     1214        Flags=
     1215      Arg name=, type=, size=8, align=8
     1216        valuekind=defqueue, valuetype=i64, pointeeAlign=0
     1217        addrSpace=none, accQual=default, actAccQual=default
     1218        Flags=
     1219      Arg name=pipe0, type=pipe_t, size=8, align=8
     1220        valuekind=pipe, valuetype=struct, pointeeAlign=0
     1221        addrSpace=none, accQual=read_write, actAccQual=default
     1222        Flags= pipe
     1223      Arg name=qx01, type=queue_t, size=8, align=8
     1224        valuekind=queue, valuetype=struct, pointeeAlign=0
     1225        addrSpace=none, accQual=default, actAccQual=default
     1226        Flags=
     1227      Arg name=masksamp, type=sampler_t, size=8, align=8
     1228        valuekind=sampler, valuetype=struct, pointeeAlign=0
     1229        addrSpace=none, accQual=default, actAccQual=default
     1230        Flags=
     1231      Arg name=vxx1, type=void*, size=8, align=8
     1232        valuekind=globalbuf, valuetype=i8, pointeeAlign=0
     1233        addrSpace=global, accQual=default, actAccQual=default
     1234        Flags= const
     1235      Arg name=vx1, type=void*, size=8, align=8
     1236        valuekind=globalbuf, valuetype=i8, pointeeAlign=0
     1237        addrSpace=global, accQual=default, actAccQual=default
     1238        Flags= volatile
     1239      Arg name=dx3, type=void*, size=8, align=8
     1240        valuekind=globalbuf, valuetype=i8, pointeeAlign=0
     1241        addrSpace=global, accQual=default, actAccQual=default
     1242        Flags= restrict
     1243      Arg name=ex6, type=void*, size=8, align=8
     1244        valuekind=globalbuf, valuetype=i8, pointeeAlign=0
     1245        addrSpace=global, accQual=default, actAccQual=default
     1246        Flags= pipe
     1247      Arg name=fx9, type=void*, size=8, align=8
     1248        valuekind=globalbuf, valuetype=i8, pointeeAlign=0
     1249        addrSpace=global, accQual=default, actAccQual=default
     1250        Flags= const restrict volatile
     1251  EFlags=3
     1252  NewBinFormat
     1253)ffDXD",
     1254        "", true
    10871255    }
    10881256};
Note: See TracChangeset for help on using the changeset viewer.