Ignore:
Timestamp:
Feb 13, 2018, 7:56:24 AM (22 months ago)
Author:
matszpk
Message:

CLRadeonExtender: ROCmBinGen: Always include the CodeProps? to Kernel in the ROCm metadata.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/amdbin/ROCmBinaries.cpp

    r3772 r3776  
    18701870       
    18711871        // kernel code properties
    1872         if (kernel.kernargSegmentSize != BINGEN64_NOTSUPPLIED ||
    1873             kernel.kernargSegmentAlign != BINGEN64_NOTSUPPLIED ||
    1874             kernel.privateSegmentFixedSize != BINGEN64_NOTSUPPLIED ||
    1875             kernel.groupSegmentFixedSize != BINGEN64_NOTSUPPLIED ||
    1876             kernel.wavefrontSize != BINGEN_NOTSUPPLIED ||
    1877             kernel.sgprsNum != BINGEN_NOTSUPPLIED ||
    1878             kernel.vgprsNum != BINGEN_NOTSUPPLIED ||
    1879             kernel.maxFlatWorkGroupSize != BINGEN64_NOTSUPPLIED ||
    1880             hasValue(kernel.spilledSgprs) || hasValue(kernel.spilledVgprs) ||
    1881             kernel.fixedWorkGroupSize[0] != 0 || kernel.fixedWorkGroupSize[1] != 0 ||
     1872        const ROCmKernelConfig& kconfig = *kconfigs[i];
     1873       
     1874        output += "    CodeProps:       \n";
     1875        output += "      KernargSegmentSize: ";
     1876        itocstrCStyle(hasValue(kernel.kernargSegmentSize) ?
     1877                kernel.kernargSegmentSize : ULEV(kconfig.kernargSegmentSize),
     1878                numBuf, 24);
     1879        output += numBuf;
     1880        output += "\n      GroupSegmentFixedSize: ";
     1881        itocstrCStyle(hasValue(kernel.groupSegmentFixedSize) ?
     1882                kernel.groupSegmentFixedSize :
     1883                uint64_t(ULEV(kconfig.workgroupGroupSegmentSize)),
     1884                numBuf, 24);
     1885        output += numBuf;
     1886        output += "\n      PrivateSegmentFixedSize: ";
     1887        itocstrCStyle(hasValue(kernel.privateSegmentFixedSize) ?
     1888                kernel.privateSegmentFixedSize :
     1889                uint64_t(ULEV(kconfig.workitemPrivateSegmentSize)),
     1890                numBuf, 24);
     1891        output += numBuf;
     1892        output += "\n      KernargSegmentAlign: ";
     1893        itocstrCStyle(hasValue(kernel.kernargSegmentAlign) ?
     1894                kernel.kernargSegmentAlign :
     1895                uint64_t(1ULL<<kconfig.kernargSegmentAlignment),
     1896                numBuf, 24);
     1897        output += numBuf;
     1898        output += "\n      WavefrontSize:   ";
     1899        itocstrCStyle(hasValue(kernel.wavefrontSize) ? kernel.wavefrontSize :
     1900                cxuint(1U<<kconfig.wavefrontSize), numBuf, 24);
     1901        output += numBuf;
     1902        output += "\n      NumSGPRs:        ";
     1903        itocstrCStyle(hasValue(kernel.sgprsNum) ? kernel.sgprsNum :
     1904                cxuint(ULEV(kconfig.wavefrontSgprCount)), numBuf, 24);
     1905        output += numBuf;
     1906        output += "\n      NumVGPRs:        ";
     1907        itocstrCStyle(hasValue(kernel.vgprsNum) ? kernel.vgprsNum :
     1908                cxuint(ULEV(kconfig.workitemVgprCount)), numBuf, 24);
     1909        output += numBuf;
     1910        // spilled registers
     1911        if (hasValue(kernel.spilledSgprs))
     1912        {
     1913            output += "\n      NumSpilledSGPRs: ";
     1914            itocstrCStyle(kernel.spilledSgprs, numBuf, 24);
     1915            output += numBuf;
     1916        }
     1917        if (hasValue(kernel.spilledVgprs))
     1918        {
     1919            output += "\n      NumSpilledVGPRs: ";
     1920            itocstrCStyle(kernel.spilledVgprs, numBuf, 24);
     1921            output += numBuf;
     1922        }
     1923        output += "\n      MaxFlatWorkGroupSize: ";
     1924        itocstrCStyle(hasValue(kernel.maxFlatWorkGroupSize) ?
     1925                    kernel.maxFlatWorkGroupSize : uint64_t(256), numBuf, 24);
     1926        output += numBuf;
     1927        output += "\n";
     1928        if (kernel.fixedWorkGroupSize[0] != 0 || kernel.fixedWorkGroupSize[1] != 0 ||
    18821929            kernel.fixedWorkGroupSize[2] != 0)
    18831930        {
    1884             const ROCmKernelConfig& kconfig = *kconfigs[i];
    1885            
    1886             output += "    CodeProps:       \n";
    1887             output += "      KernargSegmentSize: ";
    1888             itocstrCStyle(hasValue(kernel.kernargSegmentSize) ?
    1889                     kernel.kernargSegmentSize : ULEV(kconfig.kernargSegmentSize),
    1890                     numBuf, 24);
    1891             output += numBuf;
    1892             output += "\n      GroupSegmentFixedSize: ";
    1893             itocstrCStyle(hasValue(kernel.groupSegmentFixedSize) ?
    1894                     kernel.groupSegmentFixedSize :
    1895                     uint64_t(ULEV(kconfig.workgroupGroupSegmentSize)),
    1896                     numBuf, 24);
    1897             output += numBuf;
    1898             output += "\n      PrivateSegmentFixedSize: ";
    1899             itocstrCStyle(hasValue(kernel.privateSegmentFixedSize) ?
    1900                     kernel.privateSegmentFixedSize :
    1901                     uint64_t(ULEV(kconfig.workitemPrivateSegmentSize)),
    1902                     numBuf, 24);
    1903             output += numBuf;
    1904             output += "\n      KernargSegmentAlign: ";
    1905             itocstrCStyle(hasValue(kernel.kernargSegmentAlign) ?
    1906                     kernel.kernargSegmentAlign :
    1907                     uint64_t(1ULL<<kconfig.kernargSegmentAlignment),
    1908                     numBuf, 24);
    1909             output += numBuf;
    1910             output += "\n      WavefrontSize:   ";
    1911             itocstrCStyle(hasValue(kernel.wavefrontSize) ? kernel.wavefrontSize :
    1912                     cxuint(1U<<kconfig.wavefrontSize), numBuf, 24);
    1913             output += numBuf;
    1914             output += "\n      NumSGPRs:        ";
    1915             itocstrCStyle(hasValue(kernel.sgprsNum) ? kernel.sgprsNum :
    1916                     cxuint(ULEV(kconfig.wavefrontSgprCount)), numBuf, 24);
    1917             output += numBuf;
    1918             output += "\n      NumVGPRs:        ";
    1919             itocstrCStyle(hasValue(kernel.vgprsNum) ? kernel.vgprsNum :
    1920                     cxuint(ULEV(kconfig.workitemVgprCount)), numBuf, 24);
    1921             output += numBuf;
    1922             // spilled registers
    1923             if (hasValue(kernel.spilledSgprs))
    1924             {
    1925                 output += "\n      NumSpilledSGPRs: ";
    1926                 itocstrCStyle(kernel.spilledSgprs, numBuf, 24);
    1927                 output += numBuf;
    1928             }
    1929             if (hasValue(kernel.spilledVgprs))
    1930             {
    1931                 output += "\n      NumSpilledVGPRs: ";
    1932                 itocstrCStyle(kernel.spilledVgprs, numBuf, 24);
    1933                 output += numBuf;
    1934             }
    1935             output += "\n      MaxFlatWorkGroupSize: ";
    1936             itocstrCStyle(hasValue(kernel.maxFlatWorkGroupSize) ?
    1937                         kernel.maxFlatWorkGroupSize : uint64_t(256), numBuf, 24);
    1938             output += numBuf;
    1939             output += "\n";
    1940             if (kernel.fixedWorkGroupSize[0] != 0 || kernel.fixedWorkGroupSize[1] != 0 ||
    1941                 kernel.fixedWorkGroupSize[2] != 0)
    1942             {
    1943                 output += "      FixedWorkGroupSize:   ";
    1944                 genArrayValue(3, kernel.fixedWorkGroupSize, output);
    1945             }
     1931            output += "      FixedWorkGroupSize:   ";
     1932            genArrayValue(3, kernel.fixedWorkGroupSize, output);
    19461933        }
    19471934    }
Note: See TracChangeset for help on using the changeset viewer.