diff options
Diffstat (limited to 'llvm/lib/Target/AMDGPU/MIMGInstructions.td')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/MIMGInstructions.td | 41 | 
1 files changed, 23 insertions, 18 deletions
diff --git a/llvm/lib/Target/AMDGPU/MIMGInstructions.td b/llvm/lib/Target/AMDGPU/MIMGInstructions.td index 629643c022c..795260e9c05 100644 --- a/llvm/lib/Target/AMDGPU/MIMGInstructions.td +++ b/llvm/lib/Target/AMDGPU/MIMGInstructions.td @@ -401,32 +401,36 @@ multiclass ImagePatterns<SDPatternOperator name, string opcode> {    def : ImagePattern<name, !cast<MIMG>(opcode # _V4_V4), v4i32>;  } -class ImageLoadPattern<SDPatternOperator name, MIMG opcode, ValueType vt> : Pat < -  (name vt:$addr, v8i32:$rsrc, imm:$dmask, imm:$r128, imm:$da, imm:$glc, -        imm:$slc), -  (opcode $addr, $rsrc, +multiclass ImageLoadPattern<SDPatternOperator name, MIMG opcode, ValueType vt> { +  def : Pat < +    (v4f32 (name vt:$addr, v8i32:$rsrc, i32:$dmask, i1:$glc, i1:$slc, i1:$lwe, +                i1:$da)), +    (opcode $addr, $rsrc,            (as_i32imm $dmask), 1, (as_i1imm $glc), (as_i1imm $slc), -          (as_i1imm $r128), 0, 0, (as_i1imm $da)) ->; +          0, 0, (as_i1imm $lwe), (as_i1imm $da)) +  >; +}  multiclass ImageLoadPatterns<SDPatternOperator name, string opcode> { -  def : ImageLoadPattern<name, !cast<MIMG>(opcode # _V4_V1), i32>; -  def : ImageLoadPattern<name, !cast<MIMG>(opcode # _V4_V2), v2i32>; -  def : ImageLoadPattern<name, !cast<MIMG>(opcode # _V4_V4), v4i32>; +  defm : ImageLoadPattern<name, !cast<MIMG>(opcode # _V4_V1), i32>; +  defm : ImageLoadPattern<name, !cast<MIMG>(opcode # _V4_V2), v2i32>; +  defm : ImageLoadPattern<name, !cast<MIMG>(opcode # _V4_V4), v4i32>;  } -class ImageStorePattern<SDPatternOperator name, MIMG opcode, ValueType vt> : Pat < -  (name v4f32:$data, vt:$addr, v8i32:$rsrc, i32:$dmask, imm:$r128, imm:$da, -        imm:$glc, imm:$slc), -  (opcode $data, $addr, $rsrc, +multiclass ImageStorePattern<SDPatternOperator name, MIMG opcode, ValueType vt> { +  def : Pat < +    (name v4f32:$data, vt:$addr, v8i32:$rsrc, i32:$dmask, i1:$glc, i1:$slc, +          i1:$lwe, i1:$da), +    (opcode $data, $addr, $rsrc,            (as_i32imm $dmask), 1, (as_i1imm $glc), (as_i1imm $slc), -          (as_i1imm $r128), 0, 0, (as_i1imm $da)) ->; +          0, 0, (as_i1imm $lwe), (as_i1imm $da)) +  >; +}  multiclass ImageStorePatterns<SDPatternOperator name, string opcode> { -  def : ImageStorePattern<name, !cast<MIMG>(opcode # _V4_V1), i32>; -  def : ImageStorePattern<name, !cast<MIMG>(opcode # _V4_V2), v2i32>; -  def : ImageStorePattern<name, !cast<MIMG>(opcode # _V4_V4), v4i32>; +  defm : ImageStorePattern<name, !cast<MIMG>(opcode # _V4_V1), i32>; +  defm : ImageStorePattern<name, !cast<MIMG>(opcode # _V4_V2), v2i32>; +  defm : ImageStorePattern<name, !cast<MIMG>(opcode # _V4_V4), v4i32>;  }  class ImageAtomicPattern<SDPatternOperator name, MIMG opcode, ValueType vt> : Pat < @@ -554,6 +558,7 @@ def : SampleRawPattern<int_SI_getlod, IMAGE_GET_LOD_V4_V4, v4i32>;  // Image load  defm : ImageLoadPatterns<int_amdgcn_image_load, "IMAGE_LOAD">;  defm : ImageLoadPatterns<int_amdgcn_image_load_mip, "IMAGE_LOAD_MIP">; +defm : ImageLoadPattern<int_amdgcn_image_getresinfo, IMAGE_GET_RESINFO_V4_V1, i32>;  // Image store  defm : ImageStorePatterns<int_amdgcn_image_store, "IMAGE_STORE">;  | 

