[gem5-dev] [M] Change in gem5/gem5[develop]: arch-vega: Add decodings for new MI100 VOP2 insts
Matthew Poremba has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/70042?usp=email ) Change subject: arch-vega: Add decodings for new MI100 VOP2 insts .. arch-vega: Add decodings for new MI100 VOP2 insts VOP2 with opcodes 55-61 were added in MI100 and are not in Vega10. This changeset adds the decodings for these instructions. The changeset does not implement the instructions, however the fatal message is much more helpful for debugging compared so a generic decode_invalid handler. Change-Id: Ibde0880c35ff915bf8e50772df9ce263e55ca893 --- M src/arch/amdgpu/vega/decoder.cc M src/arch/amdgpu/vega/gpu_decoder.hh 2 files changed, 84 insertions(+), 28 deletions(-) diff --git a/src/arch/amdgpu/vega/decoder.cc b/src/arch/amdgpu/vega/decoder.cc index 291dd69..fd3a803 100644 --- a/src/arch/amdgpu/vega/decoder.cc +++ b/src/arch/amdgpu/vega/decoder.cc @@ -274,34 +274,34 @@ &Decoder::decode_OP_VOP2__V_SUBREV_U32, &Decoder::decode_OP_VOP2__V_SUBREV_U32, &Decoder::decode_OP_VOP2__V_SUBREV_U32, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, +&Decoder::decode_OP_VOP2__V_DOT2C_F32_F16, +&Decoder::decode_OP_VOP2__V_DOT2C_F32_F16, +&Decoder::decode_OP_VOP2__V_DOT2C_F32_F16, +&Decoder::decode_OP_VOP2__V_DOT2C_F32_F16, +&Decoder::decode_OP_VOP2__V_DOT2C_I32_I16, +&Decoder::decode_OP_VOP2__V_DOT2C_I32_I16, +&Decoder::decode_OP_VOP2__V_DOT2C_I32_I16, +&Decoder::decode_OP_VOP2__V_DOT2C_I32_I16, +&Decoder::decode_OP_VOP2__V_DOT4C_I32_I8, +&Decoder::decode_OP_VOP2__V_DOT4C_I32_I8, +&Decoder::decode_OP_VOP2__V_DOT4C_I32_I8, +&Decoder::decode_OP_VOP2__V_DOT4C_I32_I8, +&Decoder::decode_OP_VOP2__V_DOT8C_I32_I4, +&Decoder::decode_OP_VOP2__V_DOT8C_I32_I4, +&Decoder::decode_OP_VOP2__V_DOT8C_I32_I4, +&Decoder::decode_OP_VOP2__V_DOT8C_I32_I4, +&Decoder::decode_OP_VOP2__V_FMAC_F32, +&Decoder::decode_OP_VOP2__V_FMAC_F32, +&Decoder::decode_OP_VOP2__V_FMAC_F32, +&Decoder::decode_OP_VOP2__V_FMAC_F32, +&Decoder::decode_OP_VOP2__V_PK_FMAC_F16, +&Decoder::decode_OP_VOP2__V_PK_FMAC_F16, +&Decoder::decode_OP_VOP2__V_PK_FMAC_F16, +&Decoder::decode_OP_VOP2__V_PK_FMAC_F16, +&Decoder::decode_OP_VOP2__V_XNOR_B32, +&Decoder::decode_OP_VOP2__V_XNOR_B32, +&Decoder::decode_OP_VOP2__V_XNOR_B32, +&Decoder::decode_OP_VOP2__V_XNOR_B32, &Decoder::subDecode_OP_VOPC, &Decoder::subDecode_OP_VOPC, &Decoder::subDecode_OP_VOPC, @@ -4172,6 +4172,55 @@ } GPUStaticInst* +Decoder::decode_OP_VOP2__V_DOT2C_F32_F16(MachInst iFmt) +{ +fatal("Trying to decode instruction without a class\n"); +return nullptr; +} + +GPUStaticInst* +Decoder::decode_OP_VOP2__V_DOT2C_I32_I16(MachInst iFmt) +{ +fatal("Trying to decode instruction without a class\n"); +return nullptr; +} + +GPUStaticInst* +Decoder::decode_OP_VOP2__V_DOT4C_I32_I8(MachInst iFmt) +{ +fatal("Trying to decode instruction without a class\n"); +return nullptr; +} + +GPUStaticInst* +Decoder::decode_OP_VOP2__V_DOT8C_I32_I4(MachInst iFmt) +{ +fatal("Trying to decode instruction without a class\n"); +return nullptr; +} + +GPUStaticInst* +Decoder::decode_OP_VOP2__V_FMAC_F32(MachInst iFmt) +{ +fatal("Trying to decode instruction without a class\n"); +return nullptr; +} + +GPUStaticInst* +Decoder::decode_OP_VOP2__V_PK_FMAC_F16(MachInst iFmt) +{ +fatal("Trying to decode instruction without a class\n"); +return nullptr; +} + +GPUStaticInst* +Decoder::decode_OP_VOP2__V_XNOR_B32(MachInst iFmt) +{ +fatal("Trying to decode instruction without a class\n"); +return nullptr; +} + +GPUStaticInst* De
[gem5-dev] [M] Change in gem5/gem5[develop]: arch-vega: Add decodings for new MI100 VOP2 insts
Matthew Poremba has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/70042?usp=email ) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: arch-vega: Add decodings for new MI100 VOP2 insts .. arch-vega: Add decodings for new MI100 VOP2 insts VOP2 with opcodes 55-61 were added in MI100 and are not in Vega10. This changeset adds the decodings for these instructions. The changeset does not implement the instructions, however the fatal message is much more helpful for debugging compared so a generic decode_invalid handler. Change-Id: Ibde0880c35ff915bf8e50772df9ce263e55ca893 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70042 Maintainer: Matt Sinclair Tested-by: kokoro Reviewed-by: Matt Sinclair --- M src/arch/amdgpu/vega/decoder.cc M src/arch/amdgpu/vega/gpu_decoder.hh 2 files changed, 84 insertions(+), 28 deletions(-) Approvals: Matt Sinclair: Looks good to me, approved; Looks good to me, approved kokoro: Regressions pass diff --git a/src/arch/amdgpu/vega/decoder.cc b/src/arch/amdgpu/vega/decoder.cc index 291dd69..fd3a803 100644 --- a/src/arch/amdgpu/vega/decoder.cc +++ b/src/arch/amdgpu/vega/decoder.cc @@ -274,34 +274,34 @@ &Decoder::decode_OP_VOP2__V_SUBREV_U32, &Decoder::decode_OP_VOP2__V_SUBREV_U32, &Decoder::decode_OP_VOP2__V_SUBREV_U32, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, -&Decoder::decode_invalid, +&Decoder::decode_OP_VOP2__V_DOT2C_F32_F16, +&Decoder::decode_OP_VOP2__V_DOT2C_F32_F16, +&Decoder::decode_OP_VOP2__V_DOT2C_F32_F16, +&Decoder::decode_OP_VOP2__V_DOT2C_F32_F16, +&Decoder::decode_OP_VOP2__V_DOT2C_I32_I16, +&Decoder::decode_OP_VOP2__V_DOT2C_I32_I16, +&Decoder::decode_OP_VOP2__V_DOT2C_I32_I16, +&Decoder::decode_OP_VOP2__V_DOT2C_I32_I16, +&Decoder::decode_OP_VOP2__V_DOT4C_I32_I8, +&Decoder::decode_OP_VOP2__V_DOT4C_I32_I8, +&Decoder::decode_OP_VOP2__V_DOT4C_I32_I8, +&Decoder::decode_OP_VOP2__V_DOT4C_I32_I8, +&Decoder::decode_OP_VOP2__V_DOT8C_I32_I4, +&Decoder::decode_OP_VOP2__V_DOT8C_I32_I4, +&Decoder::decode_OP_VOP2__V_DOT8C_I32_I4, +&Decoder::decode_OP_VOP2__V_DOT8C_I32_I4, +&Decoder::decode_OP_VOP2__V_FMAC_F32, +&Decoder::decode_OP_VOP2__V_FMAC_F32, +&Decoder::decode_OP_VOP2__V_FMAC_F32, +&Decoder::decode_OP_VOP2__V_FMAC_F32, +&Decoder::decode_OP_VOP2__V_PK_FMAC_F16, +&Decoder::decode_OP_VOP2__V_PK_FMAC_F16, +&Decoder::decode_OP_VOP2__V_PK_FMAC_F16, +&Decoder::decode_OP_VOP2__V_PK_FMAC_F16, +&Decoder::decode_OP_VOP2__V_XNOR_B32, +&Decoder::decode_OP_VOP2__V_XNOR_B32, +&Decoder::decode_OP_VOP2__V_XNOR_B32, +&Decoder::decode_OP_VOP2__V_XNOR_B32, &Decoder::subDecode_OP_VOPC, &Decoder::subDecode_OP_VOPC, &Decoder::subDecode_OP_VOPC, @@ -4172,6 +4172,55 @@ } GPUStaticInst* +Decoder::decode_OP_VOP2__V_DOT2C_F32_F16(MachInst iFmt) +{ +fatal("Trying to decode instruction without a class\n"); +return nullptr; +} + +GPUStaticInst* +Decoder::decode_OP_VOP2__V_DOT2C_I32_I16(MachInst iFmt) +{ +fatal("Trying to decode instruction without a class\n"); +return nullptr; +} + +GPUStaticInst* +Decoder::decode_OP_VOP2__V_DOT4C_I32_I8(MachInst iFmt) +{ +fatal("Trying to decode instruction without a class\n"); +return nullptr; +} + +GPUStaticInst* +Decoder::decode_OP_VOP2__V_DOT8C_I32_I4(MachInst iFmt) +{ +fatal("Trying to decode instruction without a class\n"); +return nullptr; +} + +GPUStaticInst* +Decoder::decode_OP_VOP2__V_FMAC_F32(MachInst iFmt) +{ +fatal("Trying to decode instruction without a class\n"); +return nullptr; +} + +GPUStaticInst* +