Changeset 3742 in CLRX


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

CLRadeonExtender: AsmROCm: First testcase with metadata info pseudo-ops.

File:
1 edited

Legend:

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

    r3670 r3742  
    5454static const char* rocmRegionTypeNames[3] =
    5555{ "data", "fkernel", "kernel" };
     56
     57static const char* rocmValueKindNames[] =
     58{
     59    "value", "globalbuf", "dynshptr", "sampler", "image", "pipe", "queue",
     60    "gox", "goy", "goz", "none", "printfbuf", "defqueue", "complact"
     61};
     62
     63static const char* rocmValueTypeNames[] =
     64{ "struct", "i8", "u8", "i16", "u16", "f16", "i32", "u32", "f32", "i64", "u64", "f64" };
     65
     66static const char* rocmAddressSpaces[] =
     67{ "none", "private", "global", "constant", "local", "generic", "region" };
     68
     69static const char* rocmAccessQuals[] =
     70{ "default", "read_only", "write_only", "read_write" };
    5671
    5772// print dump of ROCm output to stream for comparing with testcase
     
    135150        os << "  Metadata:\n" << std::string(output->metadata,
    136151                            output->metadataSize) << "\n";
     152   
     153    // dump ROCm metadata
     154    if (output->useMetadataInfo)
     155    {
     156        const ROCmMetadata& metadata = output->metadataInfo;
     157        os << "  MetadataInfo:\n"
     158            "    Version: " << metadata.version[0] << "." << metadata.version[1] << "\n";
     159        // dump printf info
     160        for (const ROCmPrintfInfo& printfInfo: metadata.printfInfos)
     161        {
     162            os << "    Printf: " << printfInfo.id;
     163            for (size_t argSize: printfInfo.argSizes)
     164                os << ", " << argSize;
     165            os << "; \"" << printfInfo.format << "\"\n";
     166        }
     167        // dump kernel metadata
     168        for (const ROCmKernelMetadata& kernel: metadata.kernels)
     169        {
     170            os << "    Kernel: " << kernel.name << "\n"
     171                "      SymName=" << kernel.symbolName << "\n"
     172                "      Language=" << kernel.language << " " <<
     173                        kernel.langVersion[0] << "." << kernel.langVersion[1] << "\n"
     174                "      ReqdWorkGroupSize=" << kernel.reqdWorkGroupSize[0] << " " <<
     175                        kernel.reqdWorkGroupSize[1] << " " <<
     176                        kernel.reqdWorkGroupSize[2] << "\n"
     177                "      WorkGroupSizeHint=" << kernel.workGroupSizeHint[0] << " " <<
     178                        kernel.workGroupSizeHint[1] << " " <<
     179                        kernel.workGroupSizeHint[2] << "\n"
     180                "      VecTypeHint=" << kernel.vecTypeHint << "\n"
     181                "      RuntimeHandle=" << kernel.runtimeHandle << "\n"
     182                "      KernargSegmentSize=" << kernel.kernargSegmentSize << "\n"
     183                "      KernargSegmentAlign=" << kernel.kernargSegmentAlign << "\n"
     184                "      GroupSegmentFixedSize=" << kernel.groupSegmentFixedSize<< "\n"
     185                "      PrivateSegmentFixedSize=" << kernel.privateSegmentFixedSize<< "\n"
     186                "      WaveFrontSize=" << kernel.wavefrontSize << "\n"
     187                "      SgprsNum=" << kernel.sgprsNum << "\n"
     188                "      VgprsNum=" << kernel.vgprsNum << "\n"
     189                "      SpilledSgprs=" << kernel.spilledSgprs << "\n"
     190                "      SpilledVgprs=" << kernel.spilledVgprs << "\n"
     191                "      MaxFlatWorkGroupSize=" << kernel.maxFlatWorkGroupSize << "\n"
     192                "      FixedWorkGroupSize=" << kernel.fixedWorkGroupSize[0] << " " <<
     193                        kernel.fixedWorkGroupSize[1] << " " <<
     194                        kernel.fixedWorkGroupSize[2] << "\n";
     195           
     196            // dump kernel arguments
     197            for (const ROCmKernelArgInfo& argInfo: kernel.argInfos)
     198                os << "      Arg name=" << argInfo.name << ", type=" << argInfo.typeName <<
     199                    ", size=" << argInfo.size << ", align=" << argInfo.align << "\n"
     200                    "        valuekind=" <<
     201                            rocmValueKindNames[cxuint(argInfo.valueKind)] <<
     202                    ", valuetype=" << rocmValueTypeNames[cxuint(argInfo.valueType)] <<
     203                    ", pointeeAlign=" << argInfo.pointeeAlign << "\n"
     204                    "        addrSpace=" <<
     205                            rocmAddressSpaces[cxuint(argInfo.addressSpace)] <<
     206                    ", accQual=" << rocmAccessQuals[cxuint(argInfo.accessQual)] <<
     207                    ", actAccQual=" <<
     208                            rocmAccessQuals[cxuint(argInfo.actualAccessQual)] << "\n"
     209                    "        Flags=" <<
     210                    (argInfo.isConst ? " const" : "") <<
     211                    (argInfo.isRestrict ? " restrict" : "") <<
     212                    (argInfo.isVolatile ? " volatile" : "") <<
     213                    (argInfo.isPipe ? " pipe" : "") << "\n";
     214        }
     215    }
    137216   
    138217    if (!output->target.empty())
     
    680759  NewBinFormat
    681760)ffDXD", "", true
     761    },
     762    {   // metadata info
     763        R"ffDXD(.rocm
     764        .gpu Fiji
     765        .eflags 3
     766        .newbinfmt
     767        .md_version 3 , 5
     768        .printf 1 ,5 ,7 , 2,  11, "sometext %d %e %f"
     769        .printf 2 ,"sometext"
     770        .printf  , 16 ,8 , 2,  4, "sometext %d %e %f"
     771.kernel kxx1
     772    .config
     773        .dims x
     774        .codeversion 1,0
     775        .call_convention 0x34dac
     776        .debug_private_segment_buffer_sgpr 98
     777        .debug_wavefront_private_segment_offset_sgpr 96
     778        .gds_segment_size 100
     779        .kernarg_segment_align 32
     780    # metadata
     781        .md_symname "kxx1@kd"
     782        .md_language "Poliglot", 3, 1
     783        .reqd_work_group_size 6,2,4
     784        .work_group_size_hint 5,7,2
     785        .vectypehint float16
     786        .spilledsgprs 11
     787        .spilledvgprs 52
     788        .md_kernarg_segment_size 64
     789        .md_kernarg_segment_align 8
     790        .md_group_segment_fixed_size 0
     791        .md_private_segment_fixed_size 0
     792        .md_wavefront_size 64
     793        .md_sgprsnum 14
     794        .md_vgprsnum 11
     795        .max_flat_work_group_size 256
     796        .arg n, "uint", 4, , value, u32
     797        .arg n2, "uint", 12, , value, u32
     798        .arg x0, "char", 1, 16, value, char
     799        .arg x1, "int8", 1, 16, value, i8
     800        .arg x2, "short", 2, 16, value, short
     801        .arg x3, "int16", 2, 16, value, i16
     802        .arg x4, "int", 4, 16, value, int
     803        .arg x5, "int32", 4, 16, value, i32
     804        .arg x6, "long", 8, 16, value, long
     805        .arg x7, "int64", 8, 16, value, i64
     806        .arg x8, "uchar", 1, 16, value, uchar
     807        .arg x9, "uint8", 1, 16, value, u8
     808        .arg x10, "ushort", 2, 16, value, ushort
     809        .arg x11, "uint16", 2, 16, value, u16
     810        .arg x12, "uint", 4, 16, value, uint
     811        .arg x13, "uint32", 4, 16, value, u32
     812        .arg x14, "ulong", 8, 16, value, ulong
     813        .arg x15, "uint64", 8, 16, value, u64
     814        .arg x16, "half", 2, 16, value, half
     815        .arg x17, "fp16", 2, 16, value, f16
     816        .arg x18, "float", 4, 16, value, float
     817        .arg x19, "fp32", 4, 16, value, f32
     818        .arg x20, "double", 8, 16, value, double
     819        .arg x21, "fp64", 8, 16, value, f64
     820        .arg a, "float*", 8, 8, globalbuf, f32, global, default const volatile
     821        .arg abuf, "float*", 8, 8, globalbuf, f32, constant, default
     822        .arg abuf2, "float*", 8, 8, dynshptr, f32, 1, local
     823        .arg abuf3, "float*", 8, 8, globalbuf, f32, generic, default
     824        .arg abuf4, "float*", 8, 8, globalbuf, f32, region, default
     825        .arg abuf5, "float*", 8, 8, dynshptr, f32, 1, private
     826        .arg bbuf, "float*", 8, 8, globalbuf, f32, global, read_only
     827        .arg bbuf2, "float*", 8, 8, globalbuf, f32, global, write_only
     828        .arg bbuf3, "float*", 8, 8, globalbuf, f32, global, read_write
     829        .arg img1, "image1d_t", 8, 8, image, struct, read_only, default
     830        .arg img2, "image1d_t", 8, 8, image, struct, write_only, default
     831        .arg img3, "image1d_t", 8, 8, image, struct, read_write, default
     832        .arg , "", 8, 8, gox, i64
     833        .arg , "", 8, 8, goy, i64
     834        .arg , "", 8, 8, goz, i64
     835        .arg , "", 8, 8, globaloffsetx, i64
     836        .arg , "", 8, 8, globaloffsety, i64
     837        .arg , "", 8, 8, globaloffsetz, i64
     838.text
     839kxx1:   .skip 256
     840        s_mov_b32 s7, 0
     841        s_endpgm
     842)ffDXD",
     843        R"ffDXD(ROCmBinDump:
     844  ROCmSymbol: name=kxx1, offset=0, size=0, type=kernel
     845    Config:
     846      amdCodeVersion=1.1
     847      amdMachine=1:8:0:3
     848      kernelCodeEntryOffset=256
     849      kernelCodePrefetchOffset=0
     850      kernelCodePrefetchSize=0
     851      maxScrachBackingMemorySize=0
     852      computePgmRsrc1=0xc0040
     853      computePgmRsrc2=0x80
     854      enableSgprRegisterFlags=0x0
     855      enableFeatureFlags=0x0
     856      workitemPrivateSegmentSize=0
     857      workgroupGroupSegmentSize=0
     858      gdsSegmentSize=100
     859      kernargSegmentSize=0
     860      workgroupFbarrierCount=0
     861      wavefrontSgprCount=10
     862      workitemVgprCount=1
     863      reservedVgprFirst=0
     864      reservedVgprCount=0
     865      reservedSgprFirst=0
     866      reservedSgprCount=0
     867      debugWavefrontPrivateSegmentOffsetSgpr=96
     868      debugPrivateSegmentBufferSgpr=98
     869      kernargSegmentAlignment=5
     870      groupSegmentAlignment=4
     871      privateSegmentAlignment=4
     872      wavefrontSize=6
     873      callConvention=0x34dac
     874      runtimeLoaderKernelSymbol=0x0
     875      ControlDirective:
     876      0000000000000000000000000000000000000000000000000000000000000000
     877      0000000000000000000000000000000000000000000000000000000000000000
     878      0000000000000000000000000000000000000000000000000000000000000000
     879      0000000000000000000000000000000000000000000000000000000000000000
     880  Comment:
     881  nullptr
     882  Code:
     883  0100000000000000010008000000030000010000000000000000000000000000
     884  0000000000000000000000000000000040000c00800000000000000000000000
     885  00000000640000000000000000000000000000000a0001000000000000000000
     886  6000620005040406ac4d03000000000000000000000000000000000000000000
     887  0000000000000000000000000000000000000000000000000000000000000000
     888  0000000000000000000000000000000000000000000000000000000000000000
     889  0000000000000000000000000000000000000000000000000000000000000000
     890  0000000000000000000000000000000000000000000000000000000000000000
     891  800087be000081bf
     892  MetadataInfo:
     893    Version: 3.5
     894    Printf: 1, 5, 7, 2, 11; "sometext %d %e %f"
     895    Printf: 2; "sometext"
     896    Printf: 4294967295, 16, 8, 2, 4; "sometext %d %e %f"
     897    Kernel: kxx1
     898      SymName=kxx1@kd
     899      Language=Poliglot 3.1
     900      ReqdWorkGroupSize=6 2 4
     901      WorkGroupSizeHint=5 7 2
     902      VecTypeHint=float16
     903      RuntimeHandle=
     904      KernargSegmentSize=64
     905      KernargSegmentAlign=8
     906      GroupSegmentFixedSize=0
     907      PrivateSegmentFixedSize=0
     908      WaveFrontSize=64
     909      SgprsNum=14
     910      VgprsNum=11
     911      SpilledSgprs=11
     912      SpilledVgprs=52
     913      MaxFlatWorkGroupSize=256
     914      FixedWorkGroupSize=0 0 0
     915      Arg name=n, type=uint, size=4, align=4
     916        valuekind=value, valuetype=u32, pointeeAlign=0
     917        addrSpace=none, accQual=default, actAccQual=default
     918        Flags=
     919      Arg name=n2, type=uint, size=12, align=16
     920        valuekind=value, valuetype=u32, pointeeAlign=0
     921        addrSpace=none, accQual=default, actAccQual=default
     922        Flags=
     923      Arg name=x0, type=char, size=1, align=16
     924        valuekind=value, valuetype=i8, pointeeAlign=0
     925        addrSpace=none, accQual=default, actAccQual=default
     926        Flags=
     927      Arg name=x1, type=int8, size=1, align=16
     928        valuekind=value, valuetype=i8, pointeeAlign=0
     929        addrSpace=none, accQual=default, actAccQual=default
     930        Flags=
     931      Arg name=x2, type=short, size=2, align=16
     932        valuekind=value, valuetype=i16, pointeeAlign=0
     933        addrSpace=none, accQual=default, actAccQual=default
     934        Flags=
     935      Arg name=x3, type=int16, size=2, align=16
     936        valuekind=value, valuetype=i16, pointeeAlign=0
     937        addrSpace=none, accQual=default, actAccQual=default
     938        Flags=
     939      Arg name=x4, type=int, size=4, align=16
     940        valuekind=value, valuetype=i32, pointeeAlign=0
     941        addrSpace=none, accQual=default, actAccQual=default
     942        Flags=
     943      Arg name=x5, type=int32, size=4, align=16
     944        valuekind=value, valuetype=i32, pointeeAlign=0
     945        addrSpace=none, accQual=default, actAccQual=default
     946        Flags=
     947      Arg name=x6, type=long, size=8, align=16
     948        valuekind=value, valuetype=i64, pointeeAlign=0
     949        addrSpace=none, accQual=default, actAccQual=default
     950        Flags=
     951      Arg name=x7, type=int64, size=8, align=16
     952        valuekind=value, valuetype=i64, pointeeAlign=0
     953        addrSpace=none, accQual=default, actAccQual=default
     954        Flags=
     955      Arg name=x8, type=uchar, size=1, align=16
     956        valuekind=value, valuetype=u8, pointeeAlign=0
     957        addrSpace=none, accQual=default, actAccQual=default
     958        Flags=
     959      Arg name=x9, type=uint8, size=1, align=16
     960        valuekind=value, valuetype=u8, pointeeAlign=0
     961        addrSpace=none, accQual=default, actAccQual=default
     962        Flags=
     963      Arg name=x10, type=ushort, size=2, align=16
     964        valuekind=value, valuetype=i16, pointeeAlign=0
     965        addrSpace=none, accQual=default, actAccQual=default
     966        Flags=
     967      Arg name=x11, type=uint16, size=2, align=16
     968        valuekind=value, valuetype=u16, pointeeAlign=0
     969        addrSpace=none, accQual=default, actAccQual=default
     970        Flags=
     971      Arg name=x12, type=uint, size=4, align=16
     972        valuekind=value, valuetype=u32, pointeeAlign=0
     973        addrSpace=none, accQual=default, actAccQual=default
     974        Flags=
     975      Arg name=x13, type=uint32, size=4, align=16
     976        valuekind=value, valuetype=u32, pointeeAlign=0
     977        addrSpace=none, accQual=default, actAccQual=default
     978        Flags=
     979      Arg name=x14, type=ulong, size=8, align=16
     980        valuekind=value, valuetype=u64, pointeeAlign=0
     981        addrSpace=none, accQual=default, actAccQual=default
     982        Flags=
     983      Arg name=x15, type=uint64, size=8, align=16
     984        valuekind=value, valuetype=u64, pointeeAlign=0
     985        addrSpace=none, accQual=default, actAccQual=default
     986        Flags=
     987      Arg name=x16, type=half, size=2, align=16
     988        valuekind=value, valuetype=f16, pointeeAlign=0
     989        addrSpace=none, accQual=default, actAccQual=default
     990        Flags=
     991      Arg name=x17, type=fp16, size=2, align=16
     992        valuekind=value, valuetype=f16, pointeeAlign=0
     993        addrSpace=none, accQual=default, actAccQual=default
     994        Flags=
     995      Arg name=x18, type=float, size=4, align=16
     996        valuekind=value, valuetype=f32, pointeeAlign=0
     997        addrSpace=none, accQual=default, actAccQual=default
     998        Flags=
     999      Arg name=x19, type=fp32, size=4, align=16
     1000        valuekind=value, valuetype=f32, pointeeAlign=0
     1001        addrSpace=none, accQual=default, actAccQual=default
     1002        Flags=
     1003      Arg name=x20, type=double, size=8, align=16
     1004        valuekind=value, valuetype=f64, pointeeAlign=0
     1005        addrSpace=none, accQual=default, actAccQual=default
     1006        Flags=
     1007      Arg name=x21, type=fp64, size=8, align=16
     1008        valuekind=value, valuetype=f64, pointeeAlign=0
     1009        addrSpace=none, accQual=default, actAccQual=default
     1010        Flags=
     1011      Arg name=a, type=float*, size=8, align=8
     1012        valuekind=globalbuf, valuetype=f32, pointeeAlign=0
     1013        addrSpace=global, accQual=default, actAccQual=default
     1014        Flags= const volatile
     1015      Arg name=abuf, type=float*, size=8, align=8
     1016        valuekind=globalbuf, valuetype=f32, pointeeAlign=0
     1017        addrSpace=constant, accQual=default, actAccQual=default
     1018        Flags=
     1019      Arg name=abuf2, type=float*, size=8, align=8
     1020        valuekind=dynshptr, valuetype=f32, pointeeAlign=1
     1021        addrSpace=local, accQual=default, actAccQual=default
     1022        Flags=
     1023      Arg name=abuf3, type=float*, size=8, align=8
     1024        valuekind=globalbuf, valuetype=f32, pointeeAlign=0
     1025        addrSpace=generic, accQual=default, actAccQual=default
     1026        Flags=
     1027      Arg name=abuf4, type=float*, size=8, align=8
     1028        valuekind=globalbuf, valuetype=f32, pointeeAlign=0
     1029        addrSpace=region, accQual=default, actAccQual=default
     1030        Flags=
     1031      Arg name=abuf5, type=float*, size=8, align=8
     1032        valuekind=dynshptr, valuetype=f32, pointeeAlign=1
     1033        addrSpace=private, accQual=default, actAccQual=default
     1034        Flags=
     1035      Arg name=bbuf, type=float*, size=8, align=8
     1036        valuekind=globalbuf, valuetype=f32, pointeeAlign=0
     1037        addrSpace=global, accQual=default, actAccQual=read_only
     1038        Flags=
     1039      Arg name=bbuf2, type=float*, size=8, align=8
     1040        valuekind=globalbuf, valuetype=f32, pointeeAlign=0
     1041        addrSpace=global, accQual=default, actAccQual=write_only
     1042        Flags=
     1043      Arg name=bbuf3, type=float*, size=8, align=8
     1044        valuekind=globalbuf, valuetype=f32, pointeeAlign=0
     1045        addrSpace=global, accQual=default, actAccQual=read_write
     1046        Flags=
     1047      Arg name=img1, type=image1d_t, size=8, align=8
     1048        valuekind=image, valuetype=struct, pointeeAlign=0
     1049        addrSpace=none, accQual=read_only, actAccQual=default
     1050        Flags=
     1051      Arg name=img2, type=image1d_t, size=8, align=8
     1052        valuekind=image, valuetype=struct, pointeeAlign=0
     1053        addrSpace=none, accQual=write_only, actAccQual=default
     1054        Flags=
     1055      Arg name=img3, type=image1d_t, size=8, align=8
     1056        valuekind=image, valuetype=struct, pointeeAlign=0
     1057        addrSpace=none, accQual=read_write, actAccQual=default
     1058        Flags=
     1059      Arg name=, type=, size=8, align=8
     1060        valuekind=gox, valuetype=i64, pointeeAlign=0
     1061        addrSpace=none, accQual=default, actAccQual=default
     1062        Flags=
     1063      Arg name=, type=, size=8, align=8
     1064        valuekind=goy, valuetype=i64, pointeeAlign=0
     1065        addrSpace=none, accQual=default, actAccQual=default
     1066        Flags=
     1067      Arg name=, type=, size=8, align=8
     1068        valuekind=goz, valuetype=i64, pointeeAlign=0
     1069        addrSpace=none, accQual=default, actAccQual=default
     1070        Flags=
     1071      Arg name=, type=, size=8, align=8
     1072        valuekind=gox, valuetype=i64, pointeeAlign=0
     1073        addrSpace=none, accQual=default, actAccQual=default
     1074        Flags=
     1075      Arg name=, type=, size=8, align=8
     1076        valuekind=gox, valuetype=i64, pointeeAlign=0
     1077        addrSpace=none, accQual=default, actAccQual=default
     1078        Flags=
     1079      Arg name=, type=, size=8, align=8
     1080        valuekind=gox, valuetype=i64, pointeeAlign=0
     1081        addrSpace=none, accQual=default, actAccQual=default
     1082        Flags=
     1083  EFlags=3
     1084  NewBinFormat
     1085)ffDXD",
     1086        "", true
    6821087    }
    6831088};
Note: See TracChangeset for help on using the changeset viewer.