Changeset 2513 in CLRX


Ignore:
Timestamp:
Oct 30, 2016, 5:48:22 PM (4 years ago)
Author:
matszpk
Message:

CLRadeonExtender: AmdCL2: Automatically set arch_minor and arch_stepping for all device types.

Location:
CLRadeonExtender/trunk
Files:
2 edited

Legend:

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

    r2494 r2513  
    6969        innerExtraSectionCount(0)
    7070{
     71    output.archMinor = output.archStepping = UINT32_MAX;
    7172    assembler.currentKernel = ASMKERN_GLOBAL;
    7273    assembler.currentSection = 0;
  • CLRadeonExtender/trunk/amdbin/AmdCL2BinGen.cpp

    r2492 r2513  
    16741674static const size_t noteAMDGPUTypeOffset_16_3 = 0x48;
    16751675
     1676struct AMDGPUArchValues
     1677{
     1678    uint32_t major;
     1679    uint32_t minor;
     1680    uint32_t stepping;
     1681};
     1682
     1683
     1684static const AMDGPUArchValues amdGpuArchValuesTbl[] =
     1685{
     1686    { 0, 0, 0 }, // GPUDeviceType::CAPE_VERDE
     1687    { 0, 0, 0 }, // GPUDeviceType::PITCAIRN
     1688    { 0, 0, 0 }, // GPUDeviceType::TAHITI
     1689    { 0, 0, 0 }, // GPUDeviceType::OLAND
     1690    { 7, 0, 0 }, // GPUDeviceType::BONAIRE
     1691    { 7, 0, 0 }, // GPUDeviceType::SPECTRE
     1692    { 7, 0, 0 }, // GPUDeviceType::SPOOKY
     1693    { 7, 0, 0 }, // GPUDeviceType::KALINDI
     1694    { 0, 0, 0 }, // GPUDeviceType::HAINAN
     1695    { 7, 0, 1 }, // GPUDeviceType::HAWAII
     1696    { 8, 0, 0 }, // GPUDeviceType::ICELAND
     1697    { 8, 0, 0 }, // GPUDeviceType::TONGA
     1698    { 7, 0, 0 }, // GPUDeviceType::MULLINS
     1699    { 8, 0, 4 }, // GPUDeviceType::FIJI
     1700    { 8, 0, 1 }, // GPUDeviceType::CARRIZO
     1701    { 0, 0, 0 }, // GPUDeviceType::DUMMY
     1702    { 0, 0, 0 }, // GPUDeviceType::GOOSE
     1703    { 0, 0, 0 }, // GPUDeviceType::HORSE
     1704    { 8, 1, 0 }, // GPUDeviceType::STONEY
     1705    { 8, 0, 4 }, // GPUDeviceType::ELLESMERE
     1706    { 8, 0, 4 } // GPUDeviceType::BAFFIN
     1707};
     1708
    16761709static CString constructName(size_t prefixSize, const char* prefix, const CString& name,
    16771710                 size_t suffixSize, const char* suffix)
     
    18061839    if (arch == GPUArchitecture::GCN1_0)
    18071840        throw Exception("OpenCL 2.0 supported only for GCN1.1 or later");
     1841   
     1842    AMDGPUArchValues amdGpuArchValues = amdGpuArchValuesTbl[cxuint(input->deviceType)];
     1843    if (input->archMinor!=UINT32_MAX)
     1844        amdGpuArchValues.minor = input->archMinor;
     1845    if (input->archStepping!=UINT32_MAX)
     1846        amdGpuArchValues.stepping = input->archStepping;
    18081847   
    18091848    if ((hasGlobalData || hasRWData || hasSamplers) && !newBinaries)
     
    19441983            // set AMDGPU type
    19451984            SULEV(*(uint32_t*)(noteBuf.get()+noteAMDGPUTypeOffset_16_3),
    1946                   (arch==GPUArchitecture::GCN1_2) ? 8 : 7);
     1985                  amdGpuArchValues.major);
    19471986            SULEV(*(uint32_t*)(noteBuf.get()+noteAMDGPUTypeOffset_16_3 + 4),
    1948                   input->archMinor);
     1987                  amdGpuArchValues.minor);
    19491988            SULEV(*(uint32_t*)(noteBuf.get()+noteAMDGPUTypeOffset_16_3 + 8),
    1950                   input->archStepping);
     1989                  amdGpuArchValues.stepping);
    19511990           
    19521991            if (gpuProDriver)
     
    20232062            // set AMDGPU type
    20242063            SULEV(*(uint32_t*)(noteBuf.get()+noteAMDGPUTypeOffset),
    2025                   (arch==GPUArchitecture::GCN1_2) ? 8 : 7);
     2064                  amdGpuArchValues.major);
    20262065            SULEV(*(uint32_t*)(noteBuf.get()+noteAMDGPUTypeOffset + 4),
    2027                   input->archMinor);
     2066                  amdGpuArchValues.minor);
    20282067            SULEV(*(uint32_t*)(noteBuf.get()+noteAMDGPUTypeOffset + 8),
    2029                   input->archStepping);
     2068                  amdGpuArchValues.stepping);
    20302069            innerBinGen->addRegion(ElfRegion64(sizeof(noteSectionData),
    20312070                       noteBuf.get(), 8, ".note", SHT_NOTE, 0));
Note: See TracChangeset for help on using the changeset viewer.