diff --git a/llvm/lib/Target/AMDGPU/BUFInstructions.td b/llvm/lib/Target/AMDGPU/BUFInstructions.td index 43df6c36f47eb..7f812ed7871bd 100644 --- a/llvm/lib/Target/AMDGPU/BUFInstructions.td +++ b/llvm/lib/Target/AMDGPU/BUFInstructions.td @@ -2308,7 +2308,8 @@ class MUBUF_Real_gfx11 op, MUBUF_Pseudo ps, let Inst{53} = ps.tfe; let Inst{54} = ps.offen; let Inst{55} = ps.idxen; - let SubtargetPredicate = isGFX11Only; + let AssemblerPredicate = isGFX11Only; + let DecoderNamespace = "GFX11"; } class Base_MUBUF_Real_Atomic_gfx11 op, MUBUF_Pseudo ps, @@ -2332,13 +2333,15 @@ class MUBUF_Real_gfx10 op, MUBUF_Pseudo ps> : Base_MUBUF_Real_gfx6_gfx7_gfx10 { let Inst{15} = !if(ps.has_dlc, cpol{CPolBit.DLC}, ps.dlc_value); let Inst{25} = op{7}; - let SubtargetPredicate = isGFX10Only; + let AssemblerPredicate = isGFX10Only; + let DecoderNamespace = "GFX10"; } class MUBUF_Real_gfx6_gfx7 op, MUBUF_Pseudo ps> : Base_MUBUF_Real_gfx6_gfx7_gfx10 { let Inst{15} = ps.addr64; - let SubtargetPredicate = isGFX6GFX7; + let AssemblerPredicate = isGFX6GFX7; + let DecoderNamespace = "GFX6GFX7"; } //===----------------------------------------------------------------------===// @@ -2406,7 +2409,8 @@ class VBUFFER_MUBUF_Real_gfx12 op, MUBUF_Pseudo ps, // print BUF_FMT_INVALID for format 0. let Inst{55} = 0b1; let Inst{21-14} = op; - let SubtargetPredicate = isGFX12Only; + let AssemblerPredicate = isGFX12Only; + let DecoderNamespace = "GFX12"; } class VBUFFER_MTBUF_Real_gfx12 op, MTBUF_Pseudo ps, @@ -2420,6 +2424,8 @@ class VBUFFER_MTBUF_Real_gfx12 op, MTBUF_Pseudo ps, let Inst{17-14} = op; let Inst{21-18} = 0b1000; let Inst{61-55} = format; + let AssemblerPredicate = isGFX12Only; + let DecoderNamespace = "GFX12"; } //===----------------------------------------------------------------------===// @@ -2449,21 +2455,17 @@ class VBUFFER_MUBUF_Real_gfx12_impl op, string ps_name, string real_name VBUFFER_MUBUF_Real_gfx12(ps_name), real_name>; multiclass MUBUF_Real_AllAddr_gfx11_Renamed_Impl2 op, string real_name> { - let DecoderNamespace = "GFX11" in { - def _BOTHEN_gfx11 : MUBUF_Real_gfx11_impl; - def _IDXEN_gfx11 : MUBUF_Real_gfx11_impl; - def _OFFEN_gfx11 : MUBUF_Real_gfx11_impl; - def _OFFSET_gfx11 : MUBUF_Real_gfx11_impl; - } + def _BOTHEN_gfx11 : MUBUF_Real_gfx11_impl; + def _IDXEN_gfx11 : MUBUF_Real_gfx11_impl; + def _OFFEN_gfx11 : MUBUF_Real_gfx11_impl; + def _OFFSET_gfx11 : MUBUF_Real_gfx11_impl; } multiclass MUBUF_Real_AllAddr_gfx12_Renamed_Impl2 op, string real_name> { - let DecoderNamespace = "GFX12" in { - def _BOTHEN_gfx12 : VBUFFER_MUBUF_Real_gfx12_impl; - def _IDXEN_gfx12 : VBUFFER_MUBUF_Real_gfx12_impl; - def _OFFEN_gfx12 : VBUFFER_MUBUF_Real_gfx12_impl; - def _OFFSET_gfx12 : VBUFFER_MUBUF_Real_gfx12_impl; - } + def _BOTHEN_gfx12 : VBUFFER_MUBUF_Real_gfx12_impl; + def _IDXEN_gfx12 : VBUFFER_MUBUF_Real_gfx12_impl; + def _OFFEN_gfx12 : VBUFFER_MUBUF_Real_gfx12_impl; + def _OFFSET_gfx12 : VBUFFER_MUBUF_Real_gfx12_impl; } multiclass MUBUF_Real_AllAddr_gfx11_gfx12_Renamed_Impl2 op, string real_name> : @@ -2506,40 +2508,36 @@ class MUBUF_Real_Atomic_gfx12_impl op, string ps_name, multiclass MUBUF_Real_Atomic_gfx11_Renamed_impl op, bit is_return, string real_name> { - let DecoderNamespace = "GFX11" in { - defvar Rtn = !if(!eq(is_return, 1), "_RTN", ""); - def _BOTHEN#Rtn#_gfx11 : - MUBUF_Real_Atomic_gfx11_impl, - AtomicNoRet; - def _IDXEN#Rtn#_gfx11 : - MUBUF_Real_Atomic_gfx11_impl, - AtomicNoRet; - def _OFFEN#Rtn#_gfx11 : - MUBUF_Real_Atomic_gfx11_impl, - AtomicNoRet; - def _OFFSET#Rtn#_gfx11 : - MUBUF_Real_Atomic_gfx11_impl, - AtomicNoRet; - } + defvar Rtn = !if(!eq(is_return, 1), "_RTN", ""); + def _BOTHEN#Rtn#_gfx11 : + MUBUF_Real_Atomic_gfx11_impl, + AtomicNoRet; + def _IDXEN#Rtn#_gfx11 : + MUBUF_Real_Atomic_gfx11_impl, + AtomicNoRet; + def _OFFEN#Rtn#_gfx11 : + MUBUF_Real_Atomic_gfx11_impl, + AtomicNoRet; + def _OFFSET#Rtn#_gfx11 : + MUBUF_Real_Atomic_gfx11_impl, + AtomicNoRet; } multiclass MUBUF_Real_Atomic_gfx12_Renamed_impl op, bit is_return, string real_name> { - let DecoderNamespace = "GFX12" in { - defvar Rtn = !if(!eq(is_return, 1), "_RTN", ""); - def _BOTHEN#Rtn#_gfx12 : - MUBUF_Real_Atomic_gfx12_impl, - AtomicNoRet; - def _IDXEN#Rtn#_gfx12 : - MUBUF_Real_Atomic_gfx12_impl, - AtomicNoRet; - def _OFFEN#Rtn#_gfx12 : - MUBUF_Real_Atomic_gfx12_impl, - AtomicNoRet; - def _OFFSET#Rtn#_gfx12 : - MUBUF_Real_Atomic_gfx12_impl, - AtomicNoRet; - } + defvar Rtn = !if(!eq(is_return, 1), "_RTN", ""); + def _BOTHEN#Rtn#_gfx12 : + MUBUF_Real_Atomic_gfx12_impl, + AtomicNoRet; + def _IDXEN#Rtn#_gfx12 : + MUBUF_Real_Atomic_gfx12_impl, + AtomicNoRet; + def _OFFEN#Rtn#_gfx12 : + MUBUF_Real_Atomic_gfx12_impl, + AtomicNoRet; + def _OFFSET#Rtn#_gfx12 : + MUBUF_Real_Atomic_gfx12_impl, + AtomicNoRet; } multiclass MUBUF_Real_Atomic_gfx11_gfx12_Renamed_impl op, bit is_return, @@ -2578,10 +2576,8 @@ multiclass MUBUF_Real_Atomic_gfx11_gfx12_Renamed_gfx12_Renamed op, strin def : Mnem_gfx12; } -let DecoderNamespace = "GFX11" in { def BUFFER_GL0_INV_gfx11 : MUBUF_Real_gfx11<0x02B, BUFFER_GL0_INV>; def BUFFER_GL1_INV_gfx11 : MUBUF_Real_gfx11<0x02C, BUFFER_GL1_INV>; -} defm BUFFER_LOAD_DWORD : MUBUF_Real_AllAddr_gfx11_gfx12_Renamed<0x014, "buffer_load_b32">; defm BUFFER_LOAD_DWORDX2 : MUBUF_Real_AllAddr_gfx11_gfx12_Renamed<0x015, "buffer_load_b64">; @@ -2669,64 +2665,62 @@ defm BUFFER_ATOMIC_PK_ADD_BF16 : MUBUF_Real_Atomic_gfx12<0x05a>; // MUBUF - GFX10. //===----------------------------------------------------------------------===// -let DecoderNamespace = "GFX10" in { - multiclass MUBUF_Real_AllAddr_Helper_gfx10 op> { - def _BOTHEN_gfx10 : - MUBUF_Real_gfx10(NAME#"_BOTHEN")>; - def _IDXEN_gfx10 : - MUBUF_Real_gfx10(NAME#"_IDXEN")>; - def _OFFEN_gfx10 : - MUBUF_Real_gfx10(NAME#"_OFFEN")>; - def _OFFSET_gfx10 : - MUBUF_Real_gfx10(NAME#"_OFFSET")>; - } - multiclass MUBUF_Real_AllAddr_gfx10 op> { - defm NAME : MUBUF_Real_AllAddr_Helper_gfx10; - defm _TFE : MUBUF_Real_AllAddr_Helper_gfx10; - } - multiclass MUBUF_Real_AllAddr_Lds_gfx10 op, bit isTFE = 0> { - def _OFFSET_gfx10 : MUBUF_Real_gfx10(NAME#"_OFFSET")>; - def _OFFEN_gfx10 : MUBUF_Real_gfx10(NAME#"_OFFEN")>; - def _IDXEN_gfx10 : MUBUF_Real_gfx10(NAME#"_IDXEN")>; - def _BOTHEN_gfx10 : MUBUF_Real_gfx10(NAME#"_BOTHEN")>; - - if !not(isTFE) then { - def _LDS_OFFSET_gfx10 : MUBUF_Real_gfx10(NAME#"_LDS_OFFSET")>; - def _LDS_OFFEN_gfx10 : MUBUF_Real_gfx10(NAME#"_LDS_OFFEN")>; - def _LDS_IDXEN_gfx10 : MUBUF_Real_gfx10(NAME#"_LDS_IDXEN")>; - def _LDS_BOTHEN_gfx10 : MUBUF_Real_gfx10(NAME#"_LDS_BOTHEN")>; - } - } - multiclass MUBUF_Real_Atomics_RTN_gfx10 op> { - def _BOTHEN_RTN_gfx10 : - MUBUF_Real_gfx10(NAME#"_BOTHEN_RTN")>, - AtomicNoRet; - def _IDXEN_RTN_gfx10 : - MUBUF_Real_gfx10(NAME#"_IDXEN_RTN")>, - AtomicNoRet; - def _OFFEN_RTN_gfx10 : - MUBUF_Real_gfx10(NAME#"_OFFEN_RTN")>, - AtomicNoRet; - def _OFFSET_RTN_gfx10 : - MUBUF_Real_gfx10(NAME#"_OFFSET_RTN")>, - AtomicNoRet; - } - multiclass MUBUF_Real_Atomics_gfx10 op> : - MUBUF_Real_Atomics_RTN_gfx10 { - def _BOTHEN_gfx10 : - MUBUF_Real_gfx10(NAME#"_BOTHEN")>, - AtomicNoRet; - def _IDXEN_gfx10 : - MUBUF_Real_gfx10(NAME#"_IDXEN")>, - AtomicNoRet; - def _OFFEN_gfx10 : - MUBUF_Real_gfx10(NAME#"_OFFEN")>, - AtomicNoRet; - def _OFFSET_gfx10 : - MUBUF_Real_gfx10(NAME#"_OFFSET")>, - AtomicNoRet; +multiclass MUBUF_Real_AllAddr_Helper_gfx10 op> { + def _BOTHEN_gfx10 : + MUBUF_Real_gfx10(NAME#"_BOTHEN")>; + def _IDXEN_gfx10 : + MUBUF_Real_gfx10(NAME#"_IDXEN")>; + def _OFFEN_gfx10 : + MUBUF_Real_gfx10(NAME#"_OFFEN")>; + def _OFFSET_gfx10 : + MUBUF_Real_gfx10(NAME#"_OFFSET")>; +} +multiclass MUBUF_Real_AllAddr_gfx10 op> { + defm NAME : MUBUF_Real_AllAddr_Helper_gfx10; + defm _TFE : MUBUF_Real_AllAddr_Helper_gfx10; +} +multiclass MUBUF_Real_AllAddr_Lds_gfx10 op, bit isTFE = 0> { + def _OFFSET_gfx10 : MUBUF_Real_gfx10(NAME#"_OFFSET")>; + def _OFFEN_gfx10 : MUBUF_Real_gfx10(NAME#"_OFFEN")>; + def _IDXEN_gfx10 : MUBUF_Real_gfx10(NAME#"_IDXEN")>; + def _BOTHEN_gfx10 : MUBUF_Real_gfx10(NAME#"_BOTHEN")>; + + if !not(isTFE) then { + def _LDS_OFFSET_gfx10 : MUBUF_Real_gfx10(NAME#"_LDS_OFFSET")>; + def _LDS_OFFEN_gfx10 : MUBUF_Real_gfx10(NAME#"_LDS_OFFEN")>; + def _LDS_IDXEN_gfx10 : MUBUF_Real_gfx10(NAME#"_LDS_IDXEN")>; + def _LDS_BOTHEN_gfx10 : MUBUF_Real_gfx10(NAME#"_LDS_BOTHEN")>; } -} // End DecoderNamespace = "GFX10" +} +multiclass MUBUF_Real_Atomics_RTN_gfx10 op> { + def _BOTHEN_RTN_gfx10 : + MUBUF_Real_gfx10(NAME#"_BOTHEN_RTN")>, + AtomicNoRet; + def _IDXEN_RTN_gfx10 : + MUBUF_Real_gfx10(NAME#"_IDXEN_RTN")>, + AtomicNoRet; + def _OFFEN_RTN_gfx10 : + MUBUF_Real_gfx10(NAME#"_OFFEN_RTN")>, + AtomicNoRet; + def _OFFSET_RTN_gfx10 : + MUBUF_Real_gfx10(NAME#"_OFFSET_RTN")>, + AtomicNoRet; +} +multiclass MUBUF_Real_Atomics_gfx10 op> : + MUBUF_Real_Atomics_RTN_gfx10 { + def _BOTHEN_gfx10 : + MUBUF_Real_gfx10(NAME#"_BOTHEN")>, + AtomicNoRet; + def _IDXEN_gfx10 : + MUBUF_Real_gfx10(NAME#"_IDXEN")>, + AtomicNoRet; + def _OFFEN_gfx10 : + MUBUF_Real_gfx10(NAME#"_OFFEN")>, + AtomicNoRet; + def _OFFSET_gfx10 : + MUBUF_Real_gfx10(NAME#"_OFFSET")>, + AtomicNoRet; +} defm BUFFER_STORE_BYTE_D16_HI : MUBUF_Real_AllAddr_gfx10<0x019>; defm BUFFER_STORE_SHORT_D16_HI : MUBUF_Real_AllAddr_gfx10<0x01b>; @@ -2757,84 +2751,80 @@ def BUFFER_GL1_INV_gfx10 : // MUBUF - GFX6, GFX7, GFX10. //===----------------------------------------------------------------------===// -let AssemblerPredicate = isGFX6, DecoderNamespace = "GFX6" in { - multiclass MUBUF_Real_gfx6 op> { - def _gfx6 : MUBUF_Real_gfx6_gfx7(NAME)>; - } -} // End AssemblerPredicate = isGFX6, DecoderNamespace = "GFX6" +multiclass MUBUF_Real_gfx6 op> { + let AssemblerPredicate = isGFX6, DecoderNamespace = "GFX6" in + def _gfx6 : MUBUF_Real_gfx6_gfx7(NAME)>; +} -let AssemblerPredicate = isGFX7Only, DecoderNamespace = "GFX7" in { - multiclass MUBUF_Real_gfx7 op> { - def _gfx7 : MUBUF_Real_gfx6_gfx7(NAME)>; - } -} // End AssemblerPredicate = isGFX7Only, DecoderNamespace = "GFX7" - -let AssemblerPredicate = isGFX6GFX7, DecoderNamespace = "GFX6GFX7" in { - multiclass MUBUF_Real_AllAddr_Helper_gfx6_gfx7 op> { - def _ADDR64_gfx6_gfx7 : - MUBUF_Real_gfx6_gfx7(NAME#"_ADDR64")>; - def _BOTHEN_gfx6_gfx7 : - MUBUF_Real_gfx6_gfx7(NAME#"_BOTHEN")>; - def _IDXEN_gfx6_gfx7 : - MUBUF_Real_gfx6_gfx7(NAME#"_IDXEN")>; - def _OFFEN_gfx6_gfx7 : - MUBUF_Real_gfx6_gfx7(NAME#"_OFFEN")>; - def _OFFSET_gfx6_gfx7 : - MUBUF_Real_gfx6_gfx7(NAME#"_OFFSET")>; - } - multiclass MUBUF_Real_AllAddr_gfx6_gfx7 op> { - defm NAME : MUBUF_Real_AllAddr_Helper_gfx6_gfx7; - defm _TFE : MUBUF_Real_AllAddr_Helper_gfx6_gfx7; - } - multiclass MUBUF_Real_AllAddr_Lds_gfx6_gfx7 op, bit isTFE = 0> { - def _OFFSET_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_OFFSET")>; - def _ADDR64_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_ADDR64")>; - def _OFFEN_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_OFFEN")>; - def _IDXEN_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_IDXEN")>; - def _BOTHEN_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_BOTHEN")>; - - if !not(isTFE) then { - def _LDS_OFFSET_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_LDS_OFFSET")>; - def _LDS_ADDR64_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_LDS_ADDR64")>; - def _LDS_OFFEN_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_LDS_OFFEN")>; - def _LDS_IDXEN_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_LDS_IDXEN")>; - def _LDS_BOTHEN_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_LDS_BOTHEN")>; - } - } - multiclass MUBUF_Real_Atomics_gfx6_gfx7 op> { - def _ADDR64_gfx6_gfx7 : - MUBUF_Real_gfx6_gfx7(NAME#"_ADDR64")>, - AtomicNoRet; - def _BOTHEN_gfx6_gfx7 : - MUBUF_Real_gfx6_gfx7(NAME#"_BOTHEN")>, - AtomicNoRet; - def _IDXEN_gfx6_gfx7 : - MUBUF_Real_gfx6_gfx7(NAME#"_IDXEN")>, - AtomicNoRet; - def _OFFEN_gfx6_gfx7 : - MUBUF_Real_gfx6_gfx7(NAME#"_OFFEN")>, - AtomicNoRet; - def _OFFSET_gfx6_gfx7 : - MUBUF_Real_gfx6_gfx7(NAME#"_OFFSET")>, - AtomicNoRet; - - def _ADDR64_RTN_gfx6_gfx7 : - MUBUF_Real_gfx6_gfx7(NAME#"_ADDR64_RTN")>, - AtomicNoRet; - def _BOTHEN_RTN_gfx6_gfx7 : - MUBUF_Real_gfx6_gfx7(NAME#"_BOTHEN_RTN")>, - AtomicNoRet; - def _IDXEN_RTN_gfx6_gfx7 : - MUBUF_Real_gfx6_gfx7(NAME#"_IDXEN_RTN")>, - AtomicNoRet; - def _OFFEN_RTN_gfx6_gfx7 : - MUBUF_Real_gfx6_gfx7(NAME#"_OFFEN_RTN")>, - AtomicNoRet; - def _OFFSET_RTN_gfx6_gfx7 : - MUBUF_Real_gfx6_gfx7(NAME#"_OFFSET_RTN")>, - AtomicNoRet; +multiclass MUBUF_Real_gfx7 op> { + let AssemblerPredicate = isGFX7Only, DecoderNamespace = "GFX7" in + def _gfx7 : MUBUF_Real_gfx6_gfx7(NAME)>; +} + +multiclass MUBUF_Real_AllAddr_Helper_gfx6_gfx7 op> { + def _ADDR64_gfx6_gfx7 : + MUBUF_Real_gfx6_gfx7(NAME#"_ADDR64")>; + def _BOTHEN_gfx6_gfx7 : + MUBUF_Real_gfx6_gfx7(NAME#"_BOTHEN")>; + def _IDXEN_gfx6_gfx7 : + MUBUF_Real_gfx6_gfx7(NAME#"_IDXEN")>; + def _OFFEN_gfx6_gfx7 : + MUBUF_Real_gfx6_gfx7(NAME#"_OFFEN")>; + def _OFFSET_gfx6_gfx7 : + MUBUF_Real_gfx6_gfx7(NAME#"_OFFSET")>; +} +multiclass MUBUF_Real_AllAddr_gfx6_gfx7 op> { + defm NAME : MUBUF_Real_AllAddr_Helper_gfx6_gfx7; + defm _TFE : MUBUF_Real_AllAddr_Helper_gfx6_gfx7; +} +multiclass MUBUF_Real_AllAddr_Lds_gfx6_gfx7 op, bit isTFE = 0> { + def _OFFSET_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_OFFSET")>; + def _ADDR64_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_ADDR64")>; + def _OFFEN_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_OFFEN")>; + def _IDXEN_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_IDXEN")>; + def _BOTHEN_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_BOTHEN")>; + + if !not(isTFE) then { + def _LDS_OFFSET_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_LDS_OFFSET")>; + def _LDS_ADDR64_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_LDS_ADDR64")>; + def _LDS_OFFEN_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_LDS_OFFEN")>; + def _LDS_IDXEN_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_LDS_IDXEN")>; + def _LDS_BOTHEN_gfx6_gfx7 : MUBUF_Real_gfx6_gfx7(NAME#"_LDS_BOTHEN")>; } -} // End AssemblerPredicate = isGFX6GFX7, DecoderNamespace = "GFX6GFX7" +} +multiclass MUBUF_Real_Atomics_gfx6_gfx7 op> { + def _ADDR64_gfx6_gfx7 : + MUBUF_Real_gfx6_gfx7(NAME#"_ADDR64")>, + AtomicNoRet; + def _BOTHEN_gfx6_gfx7 : + MUBUF_Real_gfx6_gfx7(NAME#"_BOTHEN")>, + AtomicNoRet; + def _IDXEN_gfx6_gfx7 : + MUBUF_Real_gfx6_gfx7(NAME#"_IDXEN")>, + AtomicNoRet; + def _OFFEN_gfx6_gfx7 : + MUBUF_Real_gfx6_gfx7(NAME#"_OFFEN")>, + AtomicNoRet; + def _OFFSET_gfx6_gfx7 : + MUBUF_Real_gfx6_gfx7(NAME#"_OFFSET")>, + AtomicNoRet; + + def _ADDR64_RTN_gfx6_gfx7 : + MUBUF_Real_gfx6_gfx7(NAME#"_ADDR64_RTN")>, + AtomicNoRet; + def _BOTHEN_RTN_gfx6_gfx7 : + MUBUF_Real_gfx6_gfx7(NAME#"_BOTHEN_RTN")>, + AtomicNoRet; + def _IDXEN_RTN_gfx6_gfx7 : + MUBUF_Real_gfx6_gfx7(NAME#"_IDXEN_RTN")>, + AtomicNoRet; + def _OFFEN_RTN_gfx6_gfx7 : + MUBUF_Real_gfx6_gfx7(NAME#"_OFFEN_RTN")>, + AtomicNoRet; + def _OFFSET_RTN_gfx6_gfx7 : + MUBUF_Real_gfx6_gfx7(NAME#"_OFFSET_RTN")>, + AtomicNoRet; +} multiclass MUBUF_Real_AllAddr_gfx6_gfx7_gfx10 op> : MUBUF_Real_AllAddr_gfx6_gfx7, MUBUF_Real_AllAddr_gfx10; @@ -2944,6 +2934,8 @@ class Base_MTBUF_Real_gfx11 op, MTBUF_Pseudo ps, let Inst{53} = ps.tfe; let Inst{54} = ps.offen; let Inst{55} = ps.idxen; + let AssemblerPredicate = isGFX11Only; + let DecoderNamespace = "GFX11"; } class Base_MTBUF_Real_gfx6_gfx7_gfx10 op, MTBUF_Pseudo ps, int ef> : @@ -2960,27 +2952,23 @@ class Base_MTBUF_Real_gfx6_gfx7_gfx10 op, MTBUF_Pseudo ps, int ef> : //===----------------------------------------------------------------------===// multiclass MTBUF_Real_AllAddr_gfx11_gfx12_Renamed_Impl op, string real_name> { - let AssemblerPredicate = isGFX11Only, DecoderNamespace = "GFX11" in { - def _BOTHEN_gfx11 : - Base_MTBUF_Real_gfx11(NAME#"_BOTHEN"), real_name>; - def _IDXEN_gfx11 : - Base_MTBUF_Real_gfx11(NAME#"_IDXEN"), real_name>; - def _OFFEN_gfx11 : - Base_MTBUF_Real_gfx11(NAME#"_OFFEN"), real_name>; - def _OFFSET_gfx11 : - Base_MTBUF_Real_gfx11(NAME#"_OFFSET"), real_name>; - } - - let AssemblerPredicate = isGFX12Plus, DecoderNamespace = "GFX12" in { - def _BOTHEN_gfx12 : - VBUFFER_MTBUF_Real_gfx12(NAME#"_VBUFFER_BOTHEN"), real_name>; - def _IDXEN_gfx12 : - VBUFFER_MTBUF_Real_gfx12(NAME#"_VBUFFER_IDXEN"), real_name>; - def _OFFEN_gfx12 : - VBUFFER_MTBUF_Real_gfx12(NAME#"_VBUFFER_OFFEN"), real_name>; - def _OFFSET_gfx12 : - VBUFFER_MTBUF_Real_gfx12(NAME#"_VBUFFER_OFFSET"), real_name>; - } + def _BOTHEN_gfx11 : + Base_MTBUF_Real_gfx11(NAME#"_BOTHEN"), real_name>; + def _IDXEN_gfx11 : + Base_MTBUF_Real_gfx11(NAME#"_IDXEN"), real_name>; + def _OFFEN_gfx11 : + Base_MTBUF_Real_gfx11(NAME#"_OFFEN"), real_name>; + def _OFFSET_gfx11 : + Base_MTBUF_Real_gfx11(NAME#"_OFFSET"), real_name>; + + def _BOTHEN_gfx12 : + VBUFFER_MTBUF_Real_gfx12(NAME#"_VBUFFER_BOTHEN"), real_name>; + def _IDXEN_gfx12 : + VBUFFER_MTBUF_Real_gfx12(NAME#"_VBUFFER_IDXEN"), real_name>; + def _OFFEN_gfx12 : + VBUFFER_MTBUF_Real_gfx12(NAME#"_VBUFFER_OFFEN"), real_name>; + def _OFFSET_gfx12 : + VBUFFER_MTBUF_Real_gfx12(NAME#"_VBUFFER_OFFSET"), real_name>; } multiclass MTBUF_Real_AllAddr_gfx11_gfx12_Impl op, MTBUF_Pseudo ps> @@ -3022,20 +3010,20 @@ class MTBUF_Real_gfx10 op, MTBUF_Pseudo ps> : let Inst{15} = !if(ps.has_dlc, cpol{CPolBit.DLC}, ps.dlc_value); let Inst{25-19} = format; let Inst{53} = op{3}; + let AssemblerPredicate = isGFX10Only; + let DecoderNamespace = "GFX10"; } -let AssemblerPredicate = isGFX10Only, DecoderNamespace = "GFX10" in { - multiclass MTBUF_Real_AllAddr_gfx10 op> { - def _BOTHEN_gfx10 : - MTBUF_Real_gfx10(NAME#"_BOTHEN")>; - def _IDXEN_gfx10 : - MTBUF_Real_gfx10(NAME#"_IDXEN")>; - def _OFFEN_gfx10 : - MTBUF_Real_gfx10(NAME#"_OFFEN")>; - def _OFFSET_gfx10 : - MTBUF_Real_gfx10(NAME#"_OFFSET")>; - } -} // End AssemblerPredicate = isGFX10Only, DecoderNamespace = "GFX10" +multiclass MTBUF_Real_AllAddr_gfx10 op> { + def _BOTHEN_gfx10 : + MTBUF_Real_gfx10(NAME#"_BOTHEN")>; + def _IDXEN_gfx10 : + MTBUF_Real_gfx10(NAME#"_IDXEN")>; + def _OFFEN_gfx10 : + MTBUF_Real_gfx10(NAME#"_OFFEN")>; + def _OFFSET_gfx10 : + MTBUF_Real_gfx10(NAME#"_OFFSET")>; +} defm TBUFFER_LOAD_FORMAT_D16_X : MTBUF_Real_AllAddr_gfx10<0x008>; defm TBUFFER_LOAD_FORMAT_D16_XY : MTBUF_Real_AllAddr_gfx10<0x009>; @@ -3055,23 +3043,23 @@ class MTBUF_Real_gfx6_gfx7 op, MTBUF_Pseudo ps> : let Inst{15} = ps.addr64; let Inst{22-19} = dfmt; let Inst{25-23} = nfmt; + let AssemblerPredicate = isGFX6GFX7; + let DecoderNamespace = "GFX6GFX7"; +} + +multiclass MTBUF_Real_AllAddr_gfx6_gfx7 op> { + def _ADDR64_gfx6_gfx7 : + MTBUF_Real_gfx6_gfx7(NAME#"_ADDR64")>; + def _BOTHEN_gfx6_gfx7 : + MTBUF_Real_gfx6_gfx7(NAME#"_BOTHEN")>; + def _IDXEN_gfx6_gfx7 : + MTBUF_Real_gfx6_gfx7(NAME#"_IDXEN")>; + def _OFFEN_gfx6_gfx7 : + MTBUF_Real_gfx6_gfx7(NAME#"_OFFEN")>; + def _OFFSET_gfx6_gfx7 : + MTBUF_Real_gfx6_gfx7(NAME#"_OFFSET")>; } -let AssemblerPredicate = isGFX6GFX7, DecoderNamespace = "GFX6GFX7" in { - multiclass MTBUF_Real_AllAddr_gfx6_gfx7 op> { - def _ADDR64_gfx6_gfx7 : - MTBUF_Real_gfx6_gfx7(NAME#"_ADDR64")>; - def _BOTHEN_gfx6_gfx7 : - MTBUF_Real_gfx6_gfx7(NAME#"_BOTHEN")>; - def _IDXEN_gfx6_gfx7 : - MTBUF_Real_gfx6_gfx7(NAME#"_IDXEN")>; - def _OFFEN_gfx6_gfx7 : - MTBUF_Real_gfx6_gfx7(NAME#"_OFFEN")>; - def _OFFSET_gfx6_gfx7 : - MTBUF_Real_gfx6_gfx7(NAME#"_OFFSET")>; - } -} // End AssemblerPredicate = isGFX6GFX7, DecoderNamespace = "GFX6GFX7" - multiclass MTBUF_Real_AllAddr_gfx6_gfx7_gfx10 op> : MTBUF_Real_AllAddr_gfx6_gfx7, MTBUF_Real_AllAddr_gfx10; diff --git a/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp b/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp index 98988f881f1b4..aece4402b44d9 100644 --- a/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp +++ b/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp @@ -643,9 +643,6 @@ DecodeStatus AMDGPUDisassembler::getInstruction(MCInst &MI, uint64_t &Size, Res = tryDecodeInst(DecoderTableGFX864, MI, QW, Address, CS); if (Res) break; - Res = tryDecodeInst(DecoderTableAMDGPU64, MI, QW, Address, CS); - if (Res) break; - Res = tryDecodeInst(DecoderTableGFX964, MI, QW, Address, CS); if (Res) break;