From fac248cb5fb78968b8d90c14e53fcbbbba7fef66 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Wed, 12 Oct 2016 16:35:29 +0000 Subject: AMDGPU/SI: Change mimg intrinsic signatures This makes more fields overridable and removes redundant bits. Patch by: Changpeng Fang llvm-svn: 284024 --- llvm/lib/Target/AMDGPU/MIMGInstructions.td | 41 +++++++++++++++++------------- 1 file changed, 23 insertions(+), 18 deletions(-) (limited to 'llvm/lib') 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 { def : ImagePattern(opcode # _V4_V4), v4i32>; } -class ImageLoadPattern : Pat < - (name vt:$addr, v8i32:$rsrc, imm:$dmask, imm:$r128, imm:$da, imm:$glc, - imm:$slc), - (opcode $addr, $rsrc, +multiclass ImageLoadPattern { + 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 { - def : ImageLoadPattern(opcode # _V4_V1), i32>; - def : ImageLoadPattern(opcode # _V4_V2), v2i32>; - def : ImageLoadPattern(opcode # _V4_V4), v4i32>; + defm : ImageLoadPattern(opcode # _V4_V1), i32>; + defm : ImageLoadPattern(opcode # _V4_V2), v2i32>; + defm : ImageLoadPattern(opcode # _V4_V4), v4i32>; } -class ImageStorePattern : Pat < - (name v4f32:$data, vt:$addr, v8i32:$rsrc, i32:$dmask, imm:$r128, imm:$da, - imm:$glc, imm:$slc), - (opcode $data, $addr, $rsrc, +multiclass ImageStorePattern { + 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 { - def : ImageStorePattern(opcode # _V4_V1), i32>; - def : ImageStorePattern(opcode # _V4_V2), v2i32>; - def : ImageStorePattern(opcode # _V4_V4), v4i32>; + defm : ImageStorePattern(opcode # _V4_V1), i32>; + defm : ImageStorePattern(opcode # _V4_V2), v2i32>; + defm : ImageStorePattern(opcode # _V4_V4), v4i32>; } class ImageAtomicPattern : Pat < @@ -554,6 +558,7 @@ def : SampleRawPattern; // Image load defm : ImageLoadPatterns; defm : ImageLoadPatterns; +defm : ImageLoadPattern; // Image store defm : ImageStorePatterns; -- cgit v1.2.3