Matt Sinclair has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/42206 )

Change subject: arch-vega: Add decodings for Flat, Global, Scratch
......................................................................

arch-vega: Add decodings for Flat, Global, Scratch

Does not implement the functions yet

Change-Id: I32feab747b13bd2eff98983e3281c0d82e756221
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/42206
Tested-by: kokoro <[email protected]>
Reviewed-by: Matt Sinclair <[email protected]>
Maintainer: Matt Sinclair <[email protected]>
---
M src/arch/amdgpu/vega/decoder.cc
M src/arch/amdgpu/vega/gpu_decoder.hh
2 files changed, 832 insertions(+), 9 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 5dac7f9..3015313 100644
--- a/src/arch/amdgpu/vega/decoder.cc
+++ b/src/arch/amdgpu/vega/decoder.cc
@@ -1623,19 +1623,19 @@
         &Decoder::decode_OP_FLAT__FLAT_LOAD_DWORDX3,
         &Decoder::decode_OP_FLAT__FLAT_LOAD_DWORDX4,
         &Decoder::decode_OP_FLAT__FLAT_STORE_BYTE,
-        &Decoder::decode_invalid,
+        &Decoder::decode_OP_FLAT__FLAT_STORE_BYTE_D16_HI,
         &Decoder::decode_OP_FLAT__FLAT_STORE_SHORT,
-        &Decoder::decode_invalid,
+        &Decoder::decode_OP_FLAT__FLAT_STORE_SHORT_D16_HI,
         &Decoder::decode_OP_FLAT__FLAT_STORE_DWORD,
         &Decoder::decode_OP_FLAT__FLAT_STORE_DWORDX2,
         &Decoder::decode_OP_FLAT__FLAT_STORE_DWORDX3,
         &Decoder::decode_OP_FLAT__FLAT_STORE_DWORDX4,
-        &Decoder::decode_invalid,
-        &Decoder::decode_invalid,
-        &Decoder::decode_invalid,
-        &Decoder::decode_invalid,
-        &Decoder::decode_invalid,
-        &Decoder::decode_invalid,
+        &Decoder::decode_OP_FLAT__FLAT_LOAD_UBYTE_D16,
+        &Decoder::decode_OP_FLAT__FLAT_LOAD_UBYTE_D16_HI,
+        &Decoder::decode_OP_FLAT__FLAT_LOAD_SBYTE_D16,
+        &Decoder::decode_OP_FLAT__FLAT_LOAD_SBYTE_D16_HI,
+        &Decoder::decode_OP_FLAT__FLAT_LOAD_SHORT_D16,
+        &Decoder::decode_OP_FLAT__FLAT_LOAD_SHORT_D16_HI,
         &Decoder::decode_invalid,
         &Decoder::decode_invalid,
         &Decoder::decode_invalid,
@@ -1728,6 +1728,137 @@
         &Decoder::decode_invalid
     };

+    IsaDecodeMethod Decoder::tableSubDecode_OP_GLOBAL[] = {
+        &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_GLOBAL__GLOBAL_LOAD_UBYTE,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_SBYTE,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_USHORT,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_SSHORT,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_DWORD,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_DWORDX2,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_DWORDX3,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_DWORDX4,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_STORE_BYTE,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_STORE_BYTE_D16_HI,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_STORE_SHORT,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_STORE_SHORT_D16_HI,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_STORE_DWORD,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_STORE_DWORDX2,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_STORE_DWORDX3,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_STORE_DWORDX4,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_UBYTE_D16,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_UBYTE_D16_HI,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_SBYTE_D16,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_SBYTE_D16_HI,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_SHORT_D16,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_SHORT_D16_HI,
+        &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_GLOBAL__GLOBAL_ATOMIC_SWAP,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_CMPSWAP,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_ADD,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_SUB,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_SMIN,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_UMIN,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_SMAX,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_UMAX,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_AND,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_OR,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_XOR,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_INC,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_DEC,
+        &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_GLOBAL__GLOBAL_ATOMIC_SWAP_X2,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_CMPSWAP_X2,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_ADD_X2,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_SUB_X2,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_SMIN_X2,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_UMIN_X2,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_SMAX_X2,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_UMAX_X2,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_AND_X2,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_OR_X2,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_XOR_X2,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_INC_X2,
+        &Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_DEC_X2,
+        &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
+    };
+
     IsaDecodeMethod Decoder::tableSubDecode_OP_MIMG[] = {
         &Decoder::decode_OP_MIMG__IMAGE_LOAD,
         &Decoder::decode_OP_MIMG__IMAGE_LOAD_MIP,
@@ -2009,6 +2140,137 @@
         &Decoder::decode_invalid
     };

+    IsaDecodeMethod Decoder::tableSubDecode_OP_SCRATCH[] = {
+        &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_SCRATCH__SCRATCH_LOAD_UBYTE,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_SBYTE,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_USHORT,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_SSHORT,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_DWORD,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_DWORDX2,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_DWORDX3,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_DWORDX4,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_STORE_BYTE,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_STORE_BYTE_D16_HI,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_STORE_SHORT,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_STORE_SHORT_D16_HI,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_STORE_DWORD,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_STORE_DWORDX2,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_STORE_DWORDX3,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_STORE_DWORDX4,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_UBYTE_D16,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_UBYTE_D16_HI,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_SBYTE_D16,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_SBYTE_D16_HI,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_SHORT_D16,
+        &Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_SHORT_D16_HI,
+        &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_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_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_invalid,
+        &Decoder::decode_invalid,
+        &Decoder::decode_invalid,
+        &Decoder::decode_invalid,
+        &Decoder::decode_invalid,
+        &Decoder::decode_invalid,
+    };
+
     IsaDecodeMethod Decoder::tableSubDecode_OP_SMEM[] = {
         &Decoder::decode_OP_SMEM__S_LOAD_DWORD,
         &Decoder::decode_OP_SMEM__S_LOAD_DWORDX2,
@@ -3206,7 +3468,20 @@
     Decoder::subDecode_OP_FLAT(MachInst iFmt)
     {
         InFmt_FLAT *enc = &iFmt->iFmt_FLAT;
-        IsaDecodeMethod method = tableSubDecode_OP_FLAT[enc->OP];
+        IsaDecodeMethod method;
+        switch (enc->SEG) {
+            case 0:
+                method = tableSubDecode_OP_FLAT[enc->OP];
+                break;
+            case 1:
+                method = tableSubDecode_OP_SCRATCH[enc->OP];
+                break;
+            case 2:
+                method = tableSubDecode_OP_GLOBAL[enc->OP];
+                break;
+            default:
+                fatal("Invalid SEG for FLAT encoding: %d\n", enc->SEG);
+        }
         return (this->*method)(iFmt);
     } // subDecode_OP_FLAT

@@ -7243,12 +7518,24 @@
     } // decode_OP_FLAT__FLAT_STORE_BYTE

     GPUStaticInst*
+    Decoder::decode_OP_FLAT__FLAT_STORE_BYTE_D16_HI(MachInst iFmt)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
     Decoder::decode_OP_FLAT__FLAT_STORE_SHORT(MachInst iFmt)
     {
         return new Inst_FLAT__FLAT_STORE_SHORT(&iFmt->iFmt_FLAT);
     } // decode_OP_FLAT__FLAT_STORE_SHORT

     GPUStaticInst*
+    Decoder::decode_OP_FLAT__FLAT_STORE_SHORT_D16_HI(MachInst iFmt)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
     Decoder::decode_OP_FLAT__FLAT_STORE_DWORD(MachInst iFmt)
     {
         return new Inst_FLAT__FLAT_STORE_DWORD(&iFmt->iFmt_FLAT);
@@ -7273,6 +7560,42 @@
     } // decode_OP_FLAT__FLAT_STORE_DWORDX4

     GPUStaticInst*
+    Decoder::decode_OP_FLAT__FLAT_LOAD_UBYTE_D16(MachInst iFmt)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_FLAT__FLAT_LOAD_UBYTE_D16_HI(MachInst iFmt)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_FLAT__FLAT_LOAD_SBYTE_D16(MachInst iFmt)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_FLAT__FLAT_LOAD_SBYTE_D16_HI(MachInst iFmt)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_FLAT__FLAT_LOAD_SHORT_D16(MachInst iFmt)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_FLAT__FLAT_LOAD_SHORT_D16_HI(MachInst iFmt)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
     Decoder::decode_OP_FLAT__FLAT_ATOMIC_SWAP(MachInst iFmt)
     {
         return new Inst_FLAT__FLAT_ATOMIC_SWAP(&iFmt->iFmt_FLAT);
@@ -7429,6 +7752,294 @@
     } // decode_OP_FLAT__FLAT_ATOMIC_DEC_X2

     GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_UBYTE(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_SBYTE(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_USHORT(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_SSHORT(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_DWORD(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_DWORDX2(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_DWORDX3(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_DWORDX4(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_STORE_BYTE(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_STORE_BYTE_D16_HI(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_STORE_SHORT(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_STORE_SHORT_D16_HI(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_STORE_DWORD(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_STORE_DWORDX2(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_STORE_DWORDX3(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_STORE_DWORDX4(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_UBYTE_D16(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_UBYTE_D16_HI(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_SBYTE_D16(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_SBYTE_D16_HI(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_SHORT_D16(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_LOAD_SHORT_D16_HI(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_SWAP(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_CMPSWAP(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_ADD(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_SUB(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_SMIN(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_UMIN(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_SMAX(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_UMAX(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_AND(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_OR(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_XOR(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_INC(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_DEC(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_SWAP_X2(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_CMPSWAP_X2(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_ADD_X2(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_SUB_X2(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_SMIN_X2(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_UMIN_X2(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_SMAX_X2(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_UMAX_X2(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_AND_X2(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_OR_X2(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_XOR_X2(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_INC_X2(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_GLOBAL__GLOBAL_ATOMIC_DEC_X2(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
     Decoder::decode_OP_MIMG__IMAGE_LOAD(MachInst iFmt)
     {
         return new Inst_MIMG__IMAGE_LOAD(&iFmt->iFmt_MIMG);
@@ -8414,6 +9025,138 @@
     } // decode_OP_MUBUF__BUFFER_ATOMIC_DEC_X2

     GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_UBYTE(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_SBYTE(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_USHORT(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_SSHORT(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_DWORD(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_DWORDX2(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_DWORDX3(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_DWORDX4(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_STORE_BYTE(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_STORE_BYTE_D16_HI(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_STORE_SHORT(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_STORE_SHORT_D16_HI(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_STORE_DWORD(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_STORE_DWORDX2(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_STORE_DWORDX3(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_STORE_DWORDX4(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_UBYTE_D16(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_UBYTE_D16_HI(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_SBYTE_D16(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_SBYTE_D16_HI(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_SHORT_D16(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
+    Decoder::decode_OP_SCRATCH__SCRATCH_LOAD_SHORT_D16_HI(MachInst)
+    {
+        return nullptr;
+    }
+
+    GPUStaticInst*
     Decoder::decode_OP_SMEM__S_LOAD_DWORD(MachInst iFmt)
     {
         return new Inst_SMEM__S_LOAD_DWORD(&iFmt->iFmt_SMEM);
diff --git a/src/arch/amdgpu/vega/gpu_decoder.hh b/src/arch/amdgpu/vega/gpu_decoder.hh
index 22dc3f3..6b3094a 100644
--- a/src/arch/amdgpu/vega/gpu_decoder.hh
+++ b/src/arch/amdgpu/vega/gpu_decoder.hh
@@ -61,9 +61,11 @@
         static IsaDecodeMethod tableSubDecode_OPU_VOP3[768];
         static IsaDecodeMethod tableSubDecode_OP_DS[256];
         static IsaDecodeMethod tableSubDecode_OP_FLAT[128];
+        static IsaDecodeMethod tableSubDecode_OP_GLOBAL[128];
         static IsaDecodeMethod tableSubDecode_OP_MIMG[128];
         static IsaDecodeMethod tableSubDecode_OP_MTBUF[16];
         static IsaDecodeMethod tableSubDecode_OP_MUBUF[128];
+        static IsaDecodeMethod tableSubDecode_OP_SCRATCH[128];
         static IsaDecodeMethod tableSubDecode_OP_SMEM[64];
         static IsaDecodeMethod tableSubDecode_OP_SOP1[256];
         static IsaDecodeMethod tableSubDecode_OP_SOPC[128];
@@ -646,15 +648,71 @@
         GPUStaticInst* decode_OP_FLAT__FLAT_LOAD_DWORDX3(MachInst);
         GPUStaticInst* decode_OP_FLAT__FLAT_LOAD_DWORDX4(MachInst);
         GPUStaticInst* decode_OP_FLAT__FLAT_LOAD_SBYTE(MachInst);
+        GPUStaticInst* decode_OP_FLAT__FLAT_LOAD_SBYTE_D16(MachInst);
+        GPUStaticInst* decode_OP_FLAT__FLAT_LOAD_SBYTE_D16_HI(MachInst);
+        GPUStaticInst* decode_OP_FLAT__FLAT_LOAD_SHORT_D16(MachInst);
+        GPUStaticInst* decode_OP_FLAT__FLAT_LOAD_SHORT_D16_HI(MachInst);
         GPUStaticInst* decode_OP_FLAT__FLAT_LOAD_SSHORT(MachInst);
         GPUStaticInst* decode_OP_FLAT__FLAT_LOAD_UBYTE(MachInst);
+        GPUStaticInst* decode_OP_FLAT__FLAT_LOAD_UBYTE_D16(MachInst);
+        GPUStaticInst* decode_OP_FLAT__FLAT_LOAD_UBYTE_D16_HI(MachInst);
         GPUStaticInst* decode_OP_FLAT__FLAT_LOAD_USHORT(MachInst);
         GPUStaticInst* decode_OP_FLAT__FLAT_STORE_BYTE(MachInst);
+        GPUStaticInst* decode_OP_FLAT__FLAT_STORE_BYTE_D16_HI(MachInst);
         GPUStaticInst* decode_OP_FLAT__FLAT_STORE_DWORD(MachInst);
         GPUStaticInst* decode_OP_FLAT__FLAT_STORE_DWORDX2(MachInst);
         GPUStaticInst* decode_OP_FLAT__FLAT_STORE_DWORDX3(MachInst);
         GPUStaticInst* decode_OP_FLAT__FLAT_STORE_DWORDX4(MachInst);
         GPUStaticInst* decode_OP_FLAT__FLAT_STORE_SHORT(MachInst);
+        GPUStaticInst* decode_OP_FLAT__FLAT_STORE_SHORT_D16_HI(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_LOAD_UBYTE(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_LOAD_SBYTE(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_LOAD_USHORT(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_LOAD_SSHORT(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_LOAD_DWORD(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_LOAD_DWORDX2(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_LOAD_DWORDX3(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_LOAD_DWORDX4(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_STORE_BYTE(MachInst);
+ GPUStaticInst* decode_OP_GLOBAL__GLOBAL_STORE_BYTE_D16_HI(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_STORE_SHORT(MachInst);
+ GPUStaticInst* decode_OP_GLOBAL__GLOBAL_STORE_SHORT_D16_HI(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_STORE_DWORD(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_STORE_DWORDX2(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_STORE_DWORDX3(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_STORE_DWORDX4(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_LOAD_UBYTE_D16(MachInst);
+ GPUStaticInst* decode_OP_GLOBAL__GLOBAL_LOAD_UBYTE_D16_HI(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_LOAD_SBYTE_D16(MachInst);
+ GPUStaticInst* decode_OP_GLOBAL__GLOBAL_LOAD_SBYTE_D16_HI(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_LOAD_SHORT_D16(MachInst);
+ GPUStaticInst* decode_OP_GLOBAL__GLOBAL_LOAD_SHORT_D16_HI(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_SWAP(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_CMPSWAP(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_ADD(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_SUB(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_SMIN(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_UMIN(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_SMAX(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_UMAX(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_AND(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_OR(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_XOR(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_INC(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_DEC(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_SWAP_X2(MachInst);
+ GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_CMPSWAP_X2(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_ADD_X2(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_SUB_X2(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_SMIN_X2(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_UMIN_X2(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_SMAX_X2(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_UMAX_X2(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_AND_X2(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_OR_X2(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_XOR_X2(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_INC_X2(MachInst);
+        GPUStaticInst* decode_OP_GLOBAL__GLOBAL_ATOMIC_DEC_X2(MachInst);
         GPUStaticInst* decode_OP_MIMG__IMAGE_ATOMIC_ADD(MachInst);
         GPUStaticInst* decode_OP_MIMG__IMAGE_ATOMIC_AND(MachInst);
         GPUStaticInst* decode_OP_MIMG__IMAGE_ATOMIC_CMPSWAP(MachInst);
@@ -820,6 +878,28 @@
         GPUStaticInst* decode_OP_MUBUF__BUFFER_STORE_SHORT(MachInst);
         GPUStaticInst* decode_OP_MUBUF__BUFFER_WBINVL1(MachInst);
         GPUStaticInst* decode_OP_MUBUF__BUFFER_WBINVL1_VOL(MachInst);
+        GPUStaticInst* decode_OP_SCRATCH__SCRATCH_LOAD_UBYTE(MachInst);
+        GPUStaticInst* decode_OP_SCRATCH__SCRATCH_LOAD_SBYTE(MachInst);
+        GPUStaticInst* decode_OP_SCRATCH__SCRATCH_LOAD_USHORT(MachInst);
+        GPUStaticInst* decode_OP_SCRATCH__SCRATCH_LOAD_SSHORT(MachInst);
+        GPUStaticInst* decode_OP_SCRATCH__SCRATCH_LOAD_DWORD(MachInst);
+        GPUStaticInst* decode_OP_SCRATCH__SCRATCH_LOAD_DWORDX2(MachInst);
+        GPUStaticInst* decode_OP_SCRATCH__SCRATCH_LOAD_DWORDX3(MachInst);
+        GPUStaticInst* decode_OP_SCRATCH__SCRATCH_LOAD_DWORDX4(MachInst);
+        GPUStaticInst* decode_OP_SCRATCH__SCRATCH_STORE_BYTE(MachInst);
+ GPUStaticInst* decode_OP_SCRATCH__SCRATCH_STORE_BYTE_D16_HI(MachInst);
+        GPUStaticInst* decode_OP_SCRATCH__SCRATCH_STORE_SHORT(MachInst);
+ GPUStaticInst* decode_OP_SCRATCH__SCRATCH_STORE_SHORT_D16_HI(MachInst);
+        GPUStaticInst* decode_OP_SCRATCH__SCRATCH_STORE_DWORD(MachInst);
+        GPUStaticInst* decode_OP_SCRATCH__SCRATCH_STORE_DWORDX2(MachInst);
+        GPUStaticInst* decode_OP_SCRATCH__SCRATCH_STORE_DWORDX3(MachInst);
+        GPUStaticInst* decode_OP_SCRATCH__SCRATCH_STORE_DWORDX4(MachInst);
+        GPUStaticInst* decode_OP_SCRATCH__SCRATCH_LOAD_UBYTE_D16(MachInst);
+ GPUStaticInst* decode_OP_SCRATCH__SCRATCH_LOAD_UBYTE_D16_HI(MachInst);
+        GPUStaticInst* decode_OP_SCRATCH__SCRATCH_LOAD_SBYTE_D16(MachInst);
+ GPUStaticInst* decode_OP_SCRATCH__SCRATCH_LOAD_SBYTE_D16_HI(MachInst);
+        GPUStaticInst* decode_OP_SCRATCH__SCRATCH_LOAD_SHORT_D16(MachInst);
+ GPUStaticInst* decode_OP_SCRATCH__SCRATCH_LOAD_SHORT_D16_HI(MachInst);
         GPUStaticInst* decode_OP_SMEM__S_ATC_PROBE(MachInst);
         GPUStaticInst* decode_OP_SMEM__S_ATC_PROBE_BUFFER(MachInst);
         GPUStaticInst* decode_OP_SMEM__S_BUFFER_LOAD_DWORD(MachInst);



1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/42206
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I32feab747b13bd2eff98983e3281c0d82e756221
Gerrit-Change-Number: 42206
Gerrit-PatchSet: 6
Gerrit-Owner: Alex Dutu <[email protected]>
Gerrit-Reviewer: Matt Sinclair <[email protected]>
Gerrit-Reviewer: kokoro <[email protected]>
Gerrit-CC: Bobby R. Bruce <[email protected]>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to