63 gpuDynInst->latency.init(gpuDynInst->computeUnit());
64 gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
80 gpuDynInst->computeUnit()->scalarMemoryPipe
81 .issueRequest(gpuDynInst);
118 gpuDynInst->latency.init(gpuDynInst->computeUnit());
119 gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
135 gpuDynInst->computeUnit()->scalarMemoryPipe.
136 issueRequest(gpuDynInst);
172 gpuDynInst->latency.init(gpuDynInst->computeUnit());
173 gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
189 gpuDynInst->computeUnit()->scalarMemoryPipe.
190 issueRequest(gpuDynInst);
226 gpuDynInst->latency.init(gpuDynInst->computeUnit());
227 gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
243 gpuDynInst->computeUnit()->scalarMemoryPipe.
244 issueRequest(gpuDynInst);
280 gpuDynInst->latency.init(gpuDynInst->computeUnit());
281 gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
297 gpuDynInst->computeUnit()->scalarMemoryPipe.
298 issueRequest(gpuDynInst);
335 gpuDynInst->latency.init(gpuDynInst->computeUnit());
336 gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
352 gpuDynInst->computeUnit()->scalarMemoryPipe
353 .issueRequest(gpuDynInst);
373 :
Inst_SMEM(iFmt,
"s_buffer_load_dwordx2")
391 gpuDynInst->latency.init(gpuDynInst->computeUnit());
392 gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
408 gpuDynInst->computeUnit()->scalarMemoryPipe
409 .issueRequest(gpuDynInst);
429 :
Inst_SMEM(iFmt,
"s_buffer_load_dwordx4")
447 gpuDynInst->latency.init(gpuDynInst->computeUnit());
448 gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
464 gpuDynInst->computeUnit()->scalarMemoryPipe
465 .issueRequest(gpuDynInst);
485 :
Inst_SMEM(iFmt,
"s_buffer_load_dwordx8")
503 gpuDynInst->latency.init(gpuDynInst->computeUnit());
504 gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
520 gpuDynInst->computeUnit()->scalarMemoryPipe
521 .issueRequest(gpuDynInst);
541 :
Inst_SMEM(iFmt,
"s_buffer_load_dwordx16")
559 gpuDynInst->latency.init(gpuDynInst->computeUnit());
560 gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
576 gpuDynInst->computeUnit()->scalarMemoryPipe
577 .issueRequest(gpuDynInst);
617 gpuDynInst->latency.init(gpuDynInst->computeUnit());
618 gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
626 std::memcpy((
void*)gpuDynInst->scalar_data, sdata.
rawDataPtr(),
639 gpuDynInst->computeUnit()->scalarMemoryPipe.
640 issueRequest(gpuDynInst);
674 gpuDynInst->latency.init(gpuDynInst->computeUnit());
675 gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
683 std::memcpy((
void*)gpuDynInst->scalar_data, sdata.
rawDataPtr(),
696 gpuDynInst->computeUnit()->scalarMemoryPipe.
697 issueRequest(gpuDynInst);
731 gpuDynInst->latency.init(gpuDynInst->computeUnit());
732 gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
740 std::memcpy((
void*)gpuDynInst->scalar_data, sdata.
rawDataPtr(),
741 sizeof(gpuDynInst->scalar_data));
753 gpuDynInst->computeUnit()->scalarMemoryPipe.
754 issueRequest(gpuDynInst);
771 :
Inst_SMEM(iFmt,
"s_buffer_store_dword")
803 :
Inst_SMEM(iFmt,
"s_buffer_store_dwordx2")
835 :
Inst_SMEM(iFmt,
"s_buffer_store_dwordx4")
956 gpuDynInst->latency.init(gpuDynInst->computeUnit());
957 gpuDynInst->latency.set(gpuDynInst->computeUnit()->memtime_latency);
958 gpuDynInst->scalarAddr = 0;
959 gpuDynInst->computeUnit()->scalarMemoryPipe.issueRequest(gpuDynInst);
void execute(GPUDynInstPtr) override
Inst_SMEM__S_ATC_PROBE_BUFFER(InFmt_SMEM *)
~Inst_SMEM__S_ATC_PROBE_BUFFER()
void execute(GPUDynInstPtr) override
~Inst_SMEM__S_ATC_PROBE()
Inst_SMEM__S_ATC_PROBE(InFmt_SMEM *)
~Inst_SMEM__S_BUFFER_LOAD_DWORDX16()
Inst_SMEM__S_BUFFER_LOAD_DWORDX16(InFmt_SMEM *)
void initiateAcc(GPUDynInstPtr) override
void completeAcc(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
Inst_SMEM__S_BUFFER_LOAD_DWORDX2(InFmt_SMEM *)
void initiateAcc(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
void completeAcc(GPUDynInstPtr) override
~Inst_SMEM__S_BUFFER_LOAD_DWORDX2()
void initiateAcc(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
~Inst_SMEM__S_BUFFER_LOAD_DWORDX4()
void completeAcc(GPUDynInstPtr) override
Inst_SMEM__S_BUFFER_LOAD_DWORDX4(InFmt_SMEM *)
void completeAcc(GPUDynInstPtr) override
Inst_SMEM__S_BUFFER_LOAD_DWORDX8(InFmt_SMEM *)
~Inst_SMEM__S_BUFFER_LOAD_DWORDX8()
void execute(GPUDynInstPtr) override
void initiateAcc(GPUDynInstPtr) override
void initiateAcc(GPUDynInstPtr) override
~Inst_SMEM__S_BUFFER_LOAD_DWORD()
void completeAcc(GPUDynInstPtr) override
Inst_SMEM__S_BUFFER_LOAD_DWORD(InFmt_SMEM *)
void execute(GPUDynInstPtr) override
Inst_SMEM__S_BUFFER_STORE_DWORDX2(InFmt_SMEM *)
void execute(GPUDynInstPtr) override
void completeAcc(GPUDynInstPtr) override
void initiateAcc(GPUDynInstPtr) override
~Inst_SMEM__S_BUFFER_STORE_DWORDX2()
void execute(GPUDynInstPtr) override
Inst_SMEM__S_BUFFER_STORE_DWORDX4(InFmt_SMEM *)
~Inst_SMEM__S_BUFFER_STORE_DWORDX4()
void initiateAcc(GPUDynInstPtr) override
void completeAcc(GPUDynInstPtr) override
void initiateAcc(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
void completeAcc(GPUDynInstPtr) override
Inst_SMEM__S_BUFFER_STORE_DWORD(InFmt_SMEM *)
~Inst_SMEM__S_BUFFER_STORE_DWORD()
void execute(GPUDynInstPtr) override
~Inst_SMEM__S_DCACHE_INV_VOL()
Inst_SMEM__S_DCACHE_INV_VOL(InFmt_SMEM *)
Inst_SMEM__S_DCACHE_INV(InFmt_SMEM *)
~Inst_SMEM__S_DCACHE_INV()
void execute(GPUDynInstPtr) override
Inst_SMEM__S_DCACHE_WB_VOL(InFmt_SMEM *)
~Inst_SMEM__S_DCACHE_WB_VOL()
void execute(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
Inst_SMEM__S_DCACHE_WB(InFmt_SMEM *)
~Inst_SMEM__S_DCACHE_WB()
void initiateAcc(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
~Inst_SMEM__S_LOAD_DWORDX16()
void completeAcc(GPUDynInstPtr) override
Inst_SMEM__S_LOAD_DWORDX16(InFmt_SMEM *)
Inst_SMEM__S_LOAD_DWORDX2(InFmt_SMEM *)
void execute(GPUDynInstPtr) override
Read 2 dwords from scalar data cache.
~Inst_SMEM__S_LOAD_DWORDX2()
void initiateAcc(GPUDynInstPtr) override
void completeAcc(GPUDynInstPtr) override
void initiateAcc(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
void completeAcc(GPUDynInstPtr) override
Inst_SMEM__S_LOAD_DWORDX4(InFmt_SMEM *)
~Inst_SMEM__S_LOAD_DWORDX4()
void initiateAcc(GPUDynInstPtr) override
~Inst_SMEM__S_LOAD_DWORDX8()
Inst_SMEM__S_LOAD_DWORDX8(InFmt_SMEM *)
void execute(GPUDynInstPtr) override
void completeAcc(GPUDynInstPtr) override
void initiateAcc(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
Read 1 dword from scalar data cache.
Inst_SMEM__S_LOAD_DWORD(InFmt_SMEM *)
void completeAcc(GPUDynInstPtr) override
~Inst_SMEM__S_LOAD_DWORD()
void execute(GPUDynInstPtr) override
Inst_SMEM__S_MEMREALTIME(InFmt_SMEM *)
~Inst_SMEM__S_MEMREALTIME()
void initiateAcc(GPUDynInstPtr gpuDynInst) override
Inst_SMEM__S_MEMTIME(InFmt_SMEM *)
void completeAcc(GPUDynInstPtr gpuDynInst) override
void execute(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
Inst_SMEM__S_STORE_DWORDX2(InFmt_SMEM *)
void completeAcc(GPUDynInstPtr) override
void initiateAcc(GPUDynInstPtr) override
~Inst_SMEM__S_STORE_DWORDX2()
void initiateAcc(GPUDynInstPtr) override
Inst_SMEM__S_STORE_DWORDX4(InFmt_SMEM *)
~Inst_SMEM__S_STORE_DWORDX4()
void completeAcc(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
void initiateAcc(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
~Inst_SMEM__S_STORE_DWORD()
void completeAcc(GPUDynInstPtr) override
Inst_SMEM__S_STORE_DWORD(InFmt_SMEM *)
Inst_SMEM(InFmt_SMEM *, const std::string &opcode)
void initMemRead(GPUDynInstPtr gpuDynInst)
initiate a memory read access for N dwords
void calcAddr(GPUDynInstPtr gpu_dyn_inst, ConstScalarOperandU64 &addr, ScalarRegU32 offset)
For normal s_load_dword/s_store_dword instruction addresses.
void initMemWrite(GPUDynInstPtr gpuDynInst)
initiate a memory write access for N dwords
void read() override
read from and write to the underlying register(s) that this operand is referring to.
std::enable_if< Condition, DataType >::type rawData() const
we store scalar data in a std::array, however if we need the full operand data we use this method to ...
void panicUnimplemented() const
classes that represnt vector/scalar operands in VEGA ISA.
ScalarOperand< ScalarRegU32, false, 4 > ScalarOperandU128
ScalarOperand< ScalarRegU64, false > ScalarOperandU64
ScalarOperand< ScalarRegU32, false, 8 > ScalarOperandU256
ScalarOperand< ScalarRegU32, true > ConstScalarOperandU32
ScalarOperand< ScalarRegU32, true, 4 > ConstScalarOperandU128
ScalarOperand< ScalarRegU64, true > ConstScalarOperandU64
ScalarOperand< ScalarRegU32, false > ScalarOperandU32
ScalarOperand< ScalarRegU32, false, 16 > ScalarOperandU512
Copyright (c) 2024 Arm Limited All rights reserved.
std::shared_ptr< GPUDynInst > GPUDynInstPtr