diff options
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/BUFInstructions.td | 40 | 
1 files changed, 13 insertions, 27 deletions
| diff --git a/llvm/lib/Target/AMDGPU/BUFInstructions.td b/llvm/lib/Target/AMDGPU/BUFInstructions.td index 69bef02b203..02b054f089f 100644 --- a/llvm/lib/Target/AMDGPU/BUFInstructions.td +++ b/llvm/lib/Target/AMDGPU/BUFInstructions.td @@ -17,20 +17,6 @@ def MUBUFOffset : ComplexPattern<i64, 7, "SelectMUBUFOffset">;  def MUBUFOffsetNoGLC : ComplexPattern<i64, 3, "SelectMUBUFOffset">;  def MUBUFOffsetAtomic : ComplexPattern<i64, 4, "SelectMUBUFOffset">; -class MubufLoad <SDPatternOperator op> : PatFrag < -  (ops node:$ptr), (op node:$ptr), [{ -  auto const AS = cast<MemSDNode>(N)->getAddressSpace(); -  return AS == AMDGPUAS::GLOBAL_ADDRESS || -         AS == AMDGPUAS::CONSTANT_ADDRESS; -}]>; - -def mubuf_load          : MubufLoad <load>; -def mubuf_az_extloadi8  : MubufLoad <az_extloadi8>; -def mubuf_sextloadi8    : MubufLoad <sextloadi8>; -def mubuf_az_extloadi16 : MubufLoad <az_extloadi16>; -def mubuf_sextloadi16   : MubufLoad <sextloadi16>; -def mubuf_load_atomic   : MubufLoad <atomic_load>; -  def BUFAddrKind {    int Offset = 0;    int OffEn  = 1; @@ -833,28 +819,28 @@ let SubtargetPredicate = HasPackedD16VMem, D16Buf = 1 in {  } // End HasPackedD16VMem.  defm BUFFER_LOAD_UBYTE : MUBUF_Pseudo_Loads_Lds < -  "buffer_load_ubyte", VGPR_32, i32, mubuf_az_extloadi8 +  "buffer_load_ubyte", VGPR_32, i32, az_extloadi8_global  >;  defm BUFFER_LOAD_SBYTE : MUBUF_Pseudo_Loads_Lds < -  "buffer_load_sbyte", VGPR_32, i32, mubuf_sextloadi8 +  "buffer_load_sbyte", VGPR_32, i32, sextloadi8_global  >;  defm BUFFER_LOAD_USHORT : MUBUF_Pseudo_Loads_Lds < -  "buffer_load_ushort", VGPR_32, i32, mubuf_az_extloadi16 +  "buffer_load_ushort", VGPR_32, i32, az_extloadi16_global  >;  defm BUFFER_LOAD_SSHORT : MUBUF_Pseudo_Loads_Lds < -  "buffer_load_sshort", VGPR_32, i32, mubuf_sextloadi16 +  "buffer_load_sshort", VGPR_32, i32, sextloadi16_global  >;  defm BUFFER_LOAD_DWORD : MUBUF_Pseudo_Loads_Lds < -  "buffer_load_dword", VGPR_32, i32, mubuf_load +  "buffer_load_dword", VGPR_32, i32, load_global  >;  defm BUFFER_LOAD_DWORDX2 : MUBUF_Pseudo_Loads < -  "buffer_load_dwordx2", VReg_64, v2i32, mubuf_load +  "buffer_load_dwordx2", VReg_64, v2i32, load_global  >;  defm BUFFER_LOAD_DWORDX3 : MUBUF_Pseudo_Loads < -  "buffer_load_dwordx3", VReg_96, v3i32, mubuf_load +  "buffer_load_dwordx3", VReg_96, v3i32, load_global  >;  defm BUFFER_LOAD_DWORDX4 : MUBUF_Pseudo_Loads < -  "buffer_load_dwordx4", VReg_128, v4i32, mubuf_load +  "buffer_load_dwordx4", VReg_128, v4i32, load_global  >;  // This is not described in AMD documentation, @@ -1387,8 +1373,8 @@ def : MUBUFLoad_PatternADDR64 <BUFFER_LOAD_UBYTE_ADDR64, i32, az_extloadi8_const  def : MUBUFLoad_PatternADDR64 <BUFFER_LOAD_SSHORT_ADDR64, i32, sextloadi16_constant>;  def : MUBUFLoad_PatternADDR64 <BUFFER_LOAD_USHORT_ADDR64, i32, az_extloadi16_constant>; -defm : MUBUFLoad_Atomic_Pattern <BUFFER_LOAD_DWORD_ADDR64, BUFFER_LOAD_DWORD_OFFSET, i32, mubuf_load_atomic>; -defm : MUBUFLoad_Atomic_Pattern <BUFFER_LOAD_DWORDX2_ADDR64, BUFFER_LOAD_DWORDX2_OFFSET, i64, mubuf_load_atomic>; +defm : MUBUFLoad_Atomic_Pattern <BUFFER_LOAD_DWORD_ADDR64, BUFFER_LOAD_DWORD_OFFSET, i32, atomic_load_global>; +defm : MUBUFLoad_Atomic_Pattern <BUFFER_LOAD_DWORDX2_ADDR64, BUFFER_LOAD_DWORDX2_OFFSET, i64, atomic_load_global>;  } // End SubtargetPredicate = isGFX6GFX7  multiclass MUBUFLoad_Pattern <MUBUF_Pseudo Instr_OFFSET, ValueType vt, @@ -1405,10 +1391,10 @@ let OtherPredicates = [Has16BitInsts] in {  defm : MUBUFLoad_Pattern <BUFFER_LOAD_SBYTE_OFFSET, i16, sextloadi8_constant>;  defm : MUBUFLoad_Pattern <BUFFER_LOAD_UBYTE_OFFSET, i16, az_extloadi8_constant>; -defm : MUBUFLoad_Pattern <BUFFER_LOAD_SBYTE_OFFSET, i16, mubuf_sextloadi8>; -defm : MUBUFLoad_Pattern <BUFFER_LOAD_UBYTE_OFFSET, i16, mubuf_az_extloadi8>; +defm : MUBUFLoad_Pattern <BUFFER_LOAD_SBYTE_OFFSET, i16, sextloadi8_global>; +defm : MUBUFLoad_Pattern <BUFFER_LOAD_UBYTE_OFFSET, i16, az_extloadi8_global>; -defm : MUBUFLoad_Pattern <BUFFER_LOAD_USHORT_OFFSET, i16, mubuf_load>; +defm : MUBUFLoad_Pattern <BUFFER_LOAD_USHORT_OFFSET, i16, load_global>;  } // End OtherPredicates = [Has16BitInsts] | 

