Changeset 4987 in CLRX


Ignore:
Timestamp:
Sep 23, 2019, 8:46:32 AM (3 weeks ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmROCm: First testcase for CodeFlags? testing.

Location:
CLRadeonExtender/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/CLRX/amdasm/AsmFormats.h

    r4968 r4987  
    242242    /// return KernelBase for kernel index
    243243    virtual KernelBase& getKernelBase(AsmKernelId index) = 0;
     244    /// return KernelBase for kernel index
     245    virtual const KernelBase& getKernelBase(AsmKernelId index) const = 0;
    244246    /// return kernel number
    245247    virtual size_t getKernelsNum() const = 0;
     
    467469    bool isCodeSection() const;
    468470    KernelBase& getKernelBase(AsmKernelId index);
     471    const KernelBase& getKernelBase(AsmKernelId index) const;
    469472    size_t getKernelsNum() const;
    470473    void handleLabel(const CString& label);
     
    552555    bool isCodeSection() const;
    553556    KernelBase& getKernelBase(AsmKernelId index);
     557    const KernelBase& getKernelBase(AsmKernelId index) const;
    554558    size_t getKernelsNum() const;
    555559};
     
    633637    bool isCodeSection() const;
    634638    KernelBase& getKernelBase(AsmKernelId index);
     639    const KernelBase& getKernelBase(AsmKernelId index) const;
    635640    size_t getKernelsNum() const;
    636641    void setCodeFlags(Flags codeFlags);
  • CLRadeonExtender/trunk/amdasm/AsmAmdCL2Format.cpp

    r4647 r4987  
    431431
    432432AsmKcodeHandler::KernelBase& AsmAmdCL2Handler::getKernelBase(AsmKernelId index)
     433{ return *kernelStates[index]; }
     434
     435const AsmKcodeHandler::KernelBase& AsmAmdCL2Handler::getKernelBase(AsmKernelId index) const
    433436{ return *kernelStates[index]; }
    434437
  • CLRadeonExtender/trunk/amdasm/AsmGalliumFormat.cpp

    r4517 r4987  
    332332
    333333AsmKcodeHandler::KernelBase& AsmGalliumHandler::getKernelBase(AsmKernelId index)
     334{ return *kernelStates[index]; }
     335
     336const AsmKcodeHandler::KernelBase& AsmGalliumHandler::getKernelBase(AsmKernelId index) const
    334337{ return *kernelStates[index]; }
    335338
  • CLRadeonExtender/trunk/amdasm/AsmROCmFormat.cpp

    r4985 r4987  
    335335{ return *kernelStates[index]; }
    336336
     337const AsmKcodeHandler::KernelBase& AsmROCmHandler::getKernelBase(AsmKernelId index) const
     338{ return *kernelStates[index]; }
     339
    337340size_t AsmROCmHandler::getKernelsNum() const
    338341{ return kernelStates.size(); }
     
    23092312    // check whether ctrlDirSection if llvm10BinFormat
    23102313    if (output.llvm10BinFormat)
     2314    {
    23112315        for (const Kernel* kernel: kernelStates)
    23122316            if (kernel->ctrlDirSection != ASMSECT_NONE)
     
    23172321                break;
    23182322            }
     2323        if (dataSection == ASMSECT_NONE)
     2324        {
     2325            assembler.printError(AsmSourcePos(), "No data section for LLVM10BinFormat");
     2326            return false;
     2327        }
     2328    }
    23192329   
    23202330    prepareKcodeState();
  • CLRadeonExtender/trunk/tests/amdasm/AsmRegPool.cpp

    r4516 r4987  
    3333    cxuint sgprsNum;
    3434    cxuint vgprsNum;
     35    Flags codeFlags;
    3536};
    3637
     
    432433            { "kx3", 17, 8 }, { "kx4", 9, 8 }, { "kx5", 12, 8 } }
    433434    },
     435    /* rocm wave32 flags */
     436    {
     437        R"ffDXD(            .rocm; .gpu gfx1010
     438    .llvm10binfmt
     439    .metadatav3
     440    .kernel a1
     441    .config
     442        .use_wave32
     443    .kernel a2
     444    .config
     445    .globaldata
     446    .skip 128
     447    .text
     448.p2align 8
     449a1:
     450        v_cmp_gt_i32    vcc_lo, s1, v1
     451        s_endpgm
     452.p2align 8
     453a2:
     454        v_cmp_gt_i32    vcc, s5, v2
     455        s_endpgm
     456        )ffDXD",
     457        { { "a1", 2, 1, ASM_CODE_WAVE32 }, { "a2", 2, 1, 0 } }
     458    }
    434459};
    435460
     
    497522    {
    498523        // ROCmCompute
    499         const ROCmInput* input = static_cast<const AsmROCmHandler*>(
    500                     assembler.getFormatHandler())->getOutput();
     524        const AsmROCmHandler* handler = static_cast<const AsmROCmHandler*>(
     525                    assembler.getFormatHandler());
     526        const ROCmInput* input = handler->getOutput();
    501527        assertTrue(testName, "input!=nullptr", input!=nullptr);
    502528        assertValue(testName, "kernels.length", testCase.regPools.size(),
     
    512538            assertString(testName, caseName+"name", regPool.kernelName, kinput.symbolName);
    513539            assertTrue(testName, caseName+"useConfig", true);
    514             const ROCmKernelConfig* config = reinterpret_cast<const ROCmKernelConfig*>(
    515                             input->code + kinput.offset);
    516             assertValue(testName, caseName+"sgprsNum", regPool.sgprsNum,
    517                         cxuint(ULEV(config->wavefrontSgprCount)));
    518             assertValue(testName, caseName+"vgprsNum", regPool.vgprsNum,
    519                         cxuint(ULEV(config->workitemVgprCount)));
     540            if (!input->llvm10BinFormat)
     541            {
     542                const ROCmKernelConfig* config = reinterpret_cast<const ROCmKernelConfig*>(
     543                                input->code + kinput.offset);
     544                assertValue(testName, caseName+"sgprsNum", regPool.sgprsNum,
     545                            cxuint(ULEV(config->wavefrontSgprCount)));
     546                assertValue(testName, caseName+"vgprsNum", regPool.vgprsNum,
     547                            cxuint(ULEV(config->workitemVgprCount)));
     548            }
     549            else
     550            {
     551                const ROCmKernelMetadata& kmd = input->metadataInfo.kernels[i];
     552                assertValue(testName, caseName+"sgprsNum", regPool.sgprsNum,
     553                            cxuint(ULEV(kmd.sgprsNum)));
     554                assertValue(testName, caseName+"vgprsNum", regPool.vgprsNum,
     555                            cxuint(ULEV(kmd.vgprsNum)));
     556            }
     557            const AsmKcodeHandler::KernelBase& kcbase = handler->getKernelBase(i);
     558            assertValue(testName, caseName+"codeFlags", regPool.codeFlags,
     559                        kcbase.codeFlags);
    520560        }
    521561    }
Note: See TracChangeset for help on using the changeset viewer.