Alexandru Duțu has uploaded this change for review. ( 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
---
M src/arch/amdgpu/vega/decoder.cc
M src/arch/amdgpu/vega/gpu_decoder.hh
2 files changed, 832 insertions(+), 9 deletions(-)



diff --git a/src/arch/amdgpu/vega/decoder.cc b/src/arch/amdgpu/vega/decoder.cc
index afcafd4..0e3718b 100644
--- a/src/arch/amdgpu/vega/decoder.cc
+++ b/src/arch/amdgpu/vega/decoder.cc
@@ -1621,19 +1621,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,
@@ -1726,6 +1726,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,
@@ -2007,6 +2138,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,
@@ -3204,7 +3466,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

@@ -7241,12 +7516,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);
@@ -7271,6 +7558,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);
@@ -7427,6 +7750,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);
@@ -8412,6 +9023,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 4a63d68..06e56a6 100644
--- a/src/arch/amdgpu/vega/gpu_decoder.hh
+++ b/src/arch/amdgpu/vega/gpu_decoder.hh
@@ -64,9 +64,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];
@@ -649,15 +651,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);
@@ -823,6 +881,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);

--
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: 1
Gerrit-Owner: Alexandru Duțu <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
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