89 DPRINTF(VEGA,
"Handling V_MOV_B32 SRC DPP. SRC0: register v[%d], "
90 "DPP_CTRL: 0x%#x, SRC0_ABS: %d, SRC0_NEG: %d, "
91 "SRC1_ABS: %d, SRC1_NEG: %d, BC: %d, "
92 "BANK_MASK: %d, ROW_MASK: %d\n",
extData.iFmt_VOP_DPP.SRC0,
100 extData.iFmt_VOP_DPP.ROW_MASK);
104 assert(!
extData.iFmt_VOP_DPP.SRC1_ABS);
105 assert(!
extData.iFmt_VOP_DPP.SRC1_NEG);
110 vdst[lane] = src_dpp[lane];
116 vdst[lane] = src[lane];
160 sdst = src[src_lane];
196 std::frexp(src[lane],&exp);
199 }
else if (
std::isinf(src[lane]) || exp > 30) {
200 if (std::signbit(src[lane])) {
201 vdst[lane] = INT_MIN;
203 vdst[lane] = INT_MAX;
350 std::frexp(src[lane],&exp);
354 if (std::signbit(src[lane])) {
357 vdst[lane] = UINT_MAX;
359 }
else if (exp > 31) {
360 vdst[lane] = UINT_MAX;
401 std::frexp(src[lane],&exp);
404 }
else if (
std::isinf(src[lane]) || exp > 30) {
405 if (std::signbit(src[lane])) {
406 vdst[lane] = INT_MIN;
408 vdst[lane] = INT_MAX;
470 float tmp = src[lane];
473 vdst[lane] = (out.
data >> 16);
510 vdst[lane] = float(tmp);
546 vdst[lane] = (
VecElemI32)std::floor(src[lane] + 0.5);
582 vdst[lane] = (
VecElemI32)std::floor(src[lane]);
851 std::frexp(src[lane],&exp);
855 if (std::signbit(src[lane])) {
858 vdst[lane] = UINT_MAX;
860 }
else if (exp > 31) {
861 vdst[lane] = UINT_MAX;
934 vdst[lane] = std::trunc(src[lane]);
970 vdst[lane] = std::ceil(src[lane]);
1030 Wavefront *wf = gpuDynInst->wavefront();
1041 vdst[lane] = std::floor(src[lane]);
1065 Wavefront *wf = gpuDynInst->wavefront();
1077 vdst[lane] = std::modf(src[lane], &int_part);
1101 Wavefront *wf = gpuDynInst->wavefront();
1112 vdst[lane] = std::trunc(src[lane]);
1137 Wavefront *wf = gpuDynInst->wavefront();
1148 vdst[lane] = std::ceil(src[lane]);
1172 Wavefront *wf = gpuDynInst->wavefront();
1208 Wavefront *wf = gpuDynInst->wavefront();
1219 vdst[lane] = std::floor(src[lane]);
1243 Wavefront *wf = gpuDynInst->wavefront();
1254 vdst[lane] = std::pow(2.0, src[lane]);
1278 Wavefront *wf = gpuDynInst->wavefront();
1289 vdst[lane] = std::log2(src[lane]);
1313 Wavefront *wf = gpuDynInst->wavefront();
1324 vdst[lane] = 1.0 / src[lane];
1350 Wavefront *wf = gpuDynInst->wavefront();
1361 vdst[lane] = 1.0 / src[lane];
1385 Wavefront *wf = gpuDynInst->wavefront();
1396 vdst[lane] = 1.0 / std::sqrt(src[lane]);
1420 Wavefront *wf = gpuDynInst->wavefront();
1431 if (std::fpclassify(src[lane]) == FP_ZERO) {
1432 vdst[lane] = +INFINITY;
1436 if (std::signbit(src[lane])) {
1442 vdst[lane] = 1.0 / src[lane];
1467 Wavefront *wf = gpuDynInst->wavefront();
1478 if (std::fpclassify(src[lane]) == FP_ZERO) {
1479 vdst[lane] = +INFINITY;
1483 && !std::signbit(src[lane])) {
1485 }
else if (std::signbit(src[lane])) {
1488 vdst[lane] = 1.0 / std::sqrt(src[lane]);
1513 Wavefront *wf = gpuDynInst->wavefront();
1524 vdst[lane] = std::sqrt(src[lane]);
1548 Wavefront *wf = gpuDynInst->wavefront();
1559 vdst[lane] = std::sqrt(src[lane]);
1585 Wavefront *wf = gpuDynInst->wavefront();
1598 if (src[lane] < -256.0 || src[lane] > 256.0) {
1601 vdst[lane] = std::sin(src[lane] * 2.0 * pi.
rawData());
1628 Wavefront *wf = gpuDynInst->wavefront();
1641 if (src[lane] < -256.0 || src[lane] > 256.0) {
1644 vdst[lane] = std::cos(src[lane] * 2.0 * pi.
rawData());
1669 Wavefront *wf = gpuDynInst->wavefront();
1680 vdst[lane] = ~src[lane];
1704 Wavefront *wf = gpuDynInst->wavefront();
1739 Wavefront *wf = gpuDynInst->wavefront();
1774 Wavefront *wf = gpuDynInst->wavefront();
1809 Wavefront *wf = gpuDynInst->wavefront();
1830 :
Inst_VOP1(iFmt,
"v_frexp_exp_i32_f64")
1845 Wavefront *wf = gpuDynInst->wavefront();
1860 std::frexp(src[lane], &exp);
1886 Wavefront *wf = gpuDynInst->wavefront();
1898 vdst[lane] = src[lane];
1901 vdst[lane] = std::frexp(src[lane], &exp);
1926 Wavefront *wf = gpuDynInst->wavefront();
1938 vdst[lane] = std::modf(src[lane], &int_part);
1948 :
Inst_VOP1(iFmt,
"v_frexp_exp_i32_f32")
1967 Wavefront *wf = gpuDynInst->wavefront();
1982 std::frexp(src[lane], &exp);
2013 Wavefront *wf = gpuDynInst->wavefront();
2025 vdst[lane] = src[lane];
2028 vdst[lane] = std::frexp(src[lane], &exp);
2072 Wavefront *wf = gpuDynInst->wavefront();
2083 vdst[lane] = src[lane];
2319 :
Inst_VOP1(iFmt,
"v_frexp_exp_i16_f16")
2505 Wavefront *wf = gpuDynInst->wavefront();
2516 vdst[lane] = std::pow(2.0, src[lane]);
2540 Wavefront *wf = gpuDynInst->wavefront();
2551 vdst[lane] = std::log2(src[lane]);
2573 Wavefront *wf = gpuDynInst->wavefront();
2582 tmp.
data = src[lane];
2583 vdst[lane] = float(tmp);
2605 Wavefront *wf = gpuDynInst->wavefront();
2618 vdst[lane] = src[lane];
2640 Wavefront *wf = gpuDynInst->wavefront();
2649 std::array<uint32_t, NumVecElemPerVecReg> srcData;
2656 byte =
extData.iFmt_VOP_SDWA.SRC0_SEL;
2663 srcData[lane] = realSrc0[lane];
2667 srcData[lane] = src[lane];
2674 in(
bits(srcData[lane],
byte * 8 + 7,
byte * 8));
2680 vdst[lane] = out.
data;
2702 Wavefront *wf = gpuDynInst->wavefront();
2711 std::array<uint32_t, NumVecElemPerVecReg> srcData;
2718 byte =
extData.iFmt_VOP_SDWA.SRC0_SEL;
2725 srcData[lane] = realSrc0[lane];
2729 srcData[lane] = src[lane];
2736 in(
bits(srcData[lane],
byte * 8 + 7,
byte * 8));
2742 vdst[lane] = out.
data;
2764 Wavefront *wf = gpuDynInst->wavefront();
2773 std::array<uint32_t, NumVecElemPerVecReg> srcData;
2780 word =
extData.iFmt_VOP_SDWA.SRC0_SEL;
2787 srcData[lane] = realSrc0[lane];
2791 srcData[lane] = src[lane];
2797 uint32_t packed_vals =
2798 bits(srcData[lane], word * 16 + 15, word * 16);
2810 vdst[lane] = out2.
data;
2812 vdst[lane] |= out1.
data;
2834 Wavefront *wf = gpuDynInst->wavefront();
2843 std::array<uint32_t, NumVecElemPerVecReg> srcData;
2850 word =
extData.iFmt_VOP_SDWA.SRC0_SEL;
2857 srcData[lane] = realSrc0[lane];
2861 srcData[lane] = src[lane];
2867 uint32_t packed_vals =
2868 bits(srcData[lane], word * 16 + 15, word * 16);
2880 vdst[lane] = out2.
data;
2882 vdst[lane] |= out1.
data;
2912 Wavefront *wf = gpuDynInst->wavefront();
2922 return ((in << 1) ^ (((in >> 31) & 1) ? 0xc5 : 0x00));
2927 vdst[lane] = randFunc(src[lane]);
2937 :
Inst_VOP1(iFmt,
"v_permlane16_swap_b32")
2960 for (
int pass = 0; pass < 2; ++pass) {
2961 for (
int lane = 0; lane < 16; ++lane) {
2962 int dlane = pass * 32 + lane + 16;
2963 int slane = pass * 32 + lane;
2966 src[slane] = vdst[dlane];
2978 :
Inst_VOP1(iFmt,
"v_permlane32_swap_b32")
3002 for (
int lane = 0; lane < 32; ++lane) {
3004 src[lane] = vdst[lane + 32];
3005 vdst[lane + 32] = tmp;
const std::string _opcode
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_ACCVGPR_MOV_B32()
Inst_VOP1__V_ACCVGPR_MOV_B32(InFmt_VOP1 *)
~Inst_VOP1__V_BFREV_B32()
void execute(GPUDynInstPtr) override
Inst_VOP1__V_BFREV_B32(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_CEIL_F16(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_CEIL_F32(InFmt_VOP1 *)
Inst_VOP1__V_CEIL_F64(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_CLREXCP(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_COS_F16(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
Inst_VOP1__V_COS_F32(InFmt_VOP1 *)
Inst_VOP1__V_CVT_F16_F32(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_CVT_F16_F32()
Inst_VOP1__V_CVT_F16_I16(InFmt_VOP1 *)
~Inst_VOP1__V_CVT_F16_I16()
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_CVT_F16_U16()
void execute(GPUDynInstPtr) override
Inst_VOP1__V_CVT_F16_U16(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_CVT_F32_BF16(InFmt_VOP1 *)
~Inst_VOP1__V_CVT_F32_BF16()
~Inst_VOP1__V_CVT_F32_BF8()
Inst_VOP1__V_CVT_F32_BF8(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_CVT_F32_F16()
Inst_VOP1__V_CVT_F32_F16(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_CVT_F32_F64()
Inst_VOP1__V_CVT_F32_F64(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_CVT_F32_FP8(InFmt_VOP1 *)
~Inst_VOP1__V_CVT_F32_FP8()
void execute(GPUDynInstPtr) override
Inst_VOP1__V_CVT_F32_I32(InFmt_VOP1 *)
~Inst_VOP1__V_CVT_F32_I32()
Inst_VOP1__V_CVT_F32_U32(InFmt_VOP1 *)
~Inst_VOP1__V_CVT_F32_U32()
void execute(GPUDynInstPtr) override
Inst_VOP1__V_CVT_F32_UBYTE0(InFmt_VOP1 *)
~Inst_VOP1__V_CVT_F32_UBYTE0()
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_CVT_F32_UBYTE1()
void execute(GPUDynInstPtr) override
Inst_VOP1__V_CVT_F32_UBYTE1(InFmt_VOP1 *)
Inst_VOP1__V_CVT_F32_UBYTE2(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_CVT_F32_UBYTE2()
~Inst_VOP1__V_CVT_F32_UBYTE3()
Inst_VOP1__V_CVT_F32_UBYTE3(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
Inst_VOP1__V_CVT_F64_F32(InFmt_VOP1 *)
~Inst_VOP1__V_CVT_F64_F32()
Inst_VOP1__V_CVT_F64_I32(InFmt_VOP1 *)
~Inst_VOP1__V_CVT_F64_I32()
void execute(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
Inst_VOP1__V_CVT_F64_U32(InFmt_VOP1 *)
~Inst_VOP1__V_CVT_F64_U32()
Inst_VOP1__V_CVT_FLR_I32_F32(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_CVT_FLR_I32_F32()
~Inst_VOP1__V_CVT_I16_F16()
Inst_VOP1__V_CVT_I16_F16(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_CVT_I32_F32()
Inst_VOP1__V_CVT_I32_F32(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_CVT_I32_F64()
Inst_VOP1__V_CVT_I32_F64(InFmt_VOP1 *)
Inst_VOP1__V_CVT_OFF_F32_I4(InFmt_VOP1 *)
~Inst_VOP1__V_CVT_OFF_F32_I4()
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_CVT_PK_F32_BF8()
Inst_VOP1__V_CVT_PK_F32_BF8(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
Inst_VOP1__V_CVT_PK_F32_FP8(InFmt_VOP1 *)
~Inst_VOP1__V_CVT_PK_F32_FP8()
Inst_VOP1__V_CVT_RPI_I32_F32(InFmt_VOP1 *)
~Inst_VOP1__V_CVT_RPI_I32_F32()
void execute(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_CVT_U16_F16()
Inst_VOP1__V_CVT_U16_F16(InFmt_VOP1 *)
Inst_VOP1__V_CVT_U32_F32(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_CVT_U32_F32()
void execute(GPUDynInstPtr) override
Inst_VOP1__V_CVT_U32_F64(InFmt_VOP1 *)
~Inst_VOP1__V_CVT_U32_F64()
Inst_VOP1__V_EXP_F16(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_EXP_F32(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_EXP_LEGACY_F32(InFmt_VOP1 *)
~Inst_VOP1__V_EXP_LEGACY_F32()
void execute(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
Inst_VOP1__V_FFBH_I32(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_FFBH_U32(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_FFBL_B32(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_FLOOR_F16()
Inst_VOP1__V_FLOOR_F16(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_FLOOR_F32()
Inst_VOP1__V_FLOOR_F32(InFmt_VOP1 *)
Inst_VOP1__V_FLOOR_F64(InFmt_VOP1 *)
~Inst_VOP1__V_FLOOR_F64()
void execute(GPUDynInstPtr) override
Inst_VOP1__V_FRACT_F16(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_FRACT_F16()
Inst_VOP1__V_FRACT_F32(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_FRACT_F32()
void execute(GPUDynInstPtr) override
Inst_VOP1__V_FRACT_F64(InFmt_VOP1 *)
~Inst_VOP1__V_FRACT_F64()
Inst_VOP1__V_FREXP_EXP_I16_F16(InFmt_VOP1 *)
~Inst_VOP1__V_FREXP_EXP_I16_F16()
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_FREXP_EXP_I32_F32()
void execute(GPUDynInstPtr) override
Inst_VOP1__V_FREXP_EXP_I32_F32(InFmt_VOP1 *)
~Inst_VOP1__V_FREXP_EXP_I32_F64()
void execute(GPUDynInstPtr) override
Inst_VOP1__V_FREXP_EXP_I32_F64(InFmt_VOP1 *)
~Inst_VOP1__V_FREXP_MANT_F16()
Inst_VOP1__V_FREXP_MANT_F16(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_FREXP_MANT_F32(InFmt_VOP1 *)
~Inst_VOP1__V_FREXP_MANT_F32()
void execute(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
Inst_VOP1__V_FREXP_MANT_F64(InFmt_VOP1 *)
~Inst_VOP1__V_FREXP_MANT_F64()
Inst_VOP1__V_LOG_F16(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
Inst_VOP1__V_LOG_F32(InFmt_VOP1 *)
Inst_VOP1__V_LOG_LEGACY_F32(InFmt_VOP1 *)
~Inst_VOP1__V_LOG_LEGACY_F32()
void execute(GPUDynInstPtr) override
Inst_VOP1__V_MOV_B32(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
Inst_VOP1__V_MOV_B64(InFmt_VOP1 *)
~Inst_VOP1__V_MOV_FED_B32()
Inst_VOP1__V_MOV_FED_B32(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_NOP(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_NOT_B32(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_PERMLANE16_SWAP_B32()
Inst_VOP1__V_PERMLANE16_SWAP_B32(InFmt_VOP1 *)
~Inst_VOP1__V_PERMLANE32_SWAP_B32()
void execute(GPUDynInstPtr) override
Inst_VOP1__V_PERMLANE32_SWAP_B32(InFmt_VOP1 *)
Inst_VOP1__V_PRNG_B32(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
Inst_VOP1__V_RCP_F16(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_RCP_F32(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_RCP_F64(InFmt_VOP1 *)
~Inst_VOP1__V_RCP_IFLAG_F32()
void execute(GPUDynInstPtr) override
Inst_VOP1__V_RCP_IFLAG_F32(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_READFIRSTLANE_B32(InFmt_VOP1 *)
~Inst_VOP1__V_READFIRSTLANE_B32()
~Inst_VOP1__V_RNDNE_F16()
Inst_VOP1__V_RNDNE_F16(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_RNDNE_F32()
void execute(GPUDynInstPtr) override
Inst_VOP1__V_RNDNE_F32(InFmt_VOP1 *)
Inst_VOP1__V_RNDNE_F64(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
~Inst_VOP1__V_RNDNE_F64()
Inst_VOP1__V_RSQ_F16(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
Inst_VOP1__V_RSQ_F32(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_RSQ_F64(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_SIN_F16(InFmt_VOP1 *)
Inst_VOP1__V_SIN_F32(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
void execute(GPUDynInstPtr) override
Inst_VOP1__V_SQRT_F16(InFmt_VOP1 *)
Inst_VOP1__V_SQRT_F32(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_SQRT_F64(InFmt_VOP1 *)
void execute(GPUDynInstPtr) override
Inst_VOP1__V_TRUNC_F16(InFmt_VOP1 *)
~Inst_VOP1__V_TRUNC_F16()
void execute(GPUDynInstPtr) override
Inst_VOP1__V_TRUNC_F32(InFmt_VOP1 *)
~Inst_VOP1__V_TRUNC_F32()
void execute(GPUDynInstPtr) override
Inst_VOP1__V_TRUNC_F64(InFmt_VOP1 *)
~Inst_VOP1__V_TRUNC_F64()
void execute(GPUDynInstPtr) override
Inst_VOP1(InFmt_VOP1 *, const std::string &opcode)
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
void read() override
read from the vrf.
void readSrc()
certain vector operands can read from the vrf/srf or constants.
void write() override
write to the vrf.
constexpr T bits(T val, unsigned first, unsigned last)
Extract the bitfield from position 'first' to 'last' (inclusive) from 'val' and right justify it.
constexpr int findLsbSet(uint64_t val)
Returns the bit position of the LSB that is set in the input That function will either use a builtin ...
std::enable_if_t< std::is_integral_v< T >, T > reverseBits(T val, size_t size=sizeof(T))
Takes a value and returns the bit reversed version.
#define panic_if(cond,...)
Conditional panic macro that checks the supplied condition and only panics if the condition is true a...
mxfp< fp8_e4m3_info > mxfloat8
mxfp< binary32 > mxfloat32
mxfp< fp16_e8m7_info > mxbfloat16
mxfp< fp16_e5m10_info > mxfloat16
mxfp< fp8_e5m2_info > mxbfloat8
classes that represnt vector/scalar operands in VEGA ISA.
VecOperand< VecElemF32, true > ConstVecOperandF32
ScalarRegI32 firstOppositeSignBit(ScalarRegI32 val)
VecOperand< VecElemU32, false > VecOperandU32
VecOperand< VecElemF64, true > ConstVecOperandF64
VecOperand< VecElemI32, true > ConstVecOperandI32
VecOperand< VecElemU32, true > ConstVecOperandU32
ScalarRegI32 findFirstOne(T val)
ScalarRegI32 findFirstOneMsb(T val)
T roundNearestEven(T val)
VecOperand< VecElemU16, true, 1 > ConstVecOperandU16
ScalarOperand< ScalarRegF32, true > ConstScalarOperandF32
ScalarOperand< ScalarRegU32, false > ScalarOperandU32
const int NumVecElemPerVecReg(64)
VecOperand< VecElemU64, false > VecOperandU64
VecOperand< VecElemI32, false > VecOperandI32
VecOperand< VecElemU64, true > ConstVecOperandU64
VecOperand< VecElemF64, false > VecOperandF64
VecOperand< VecElemF32, false > VecOperandF32
void processDPP(GPUDynInstPtr gpuDynInst, InFmt_VOP_DPP dppInst, T &src0)
processDPP is a helper function for implementing Data Parallel Primitive instructions.
Copyright (c) 2024 Arm Limited All rights reserved.
std::shared_ptr< GPUDynInst > GPUDynInstPtr
constexpr bool isinf(gem5::AMDGPU::fp16_e5m10_info a)
constexpr bool isnan(gem5::AMDGPU::fp16_e5m10_info a)