summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AMDGPU/SIInstrFormats.td
diff options
context:
space:
mode:
authorNicolai Haehnle <nhaehnle@gmail.com>2016-07-11 21:59:43 +0000
committerNicolai Haehnle <nhaehnle@gmail.com>2016-07-11 21:59:43 +0000
commitc06bfa1daa96f59a072ab57ac3ab80bd39280b74 (patch)
tree584222d70785f8a9c4f428ce3cc47759fa231d99 /llvm/lib/Target/AMDGPU/SIInstrFormats.td
parent0e6a1b3bd2f6fa2d8ab8641bb83377c86c29281e (diff)
downloadbcm5719-llvm-c06bfa1daa96f59a072ab57ac3ab80bd39280b74.tar.gz
bcm5719-llvm-c06bfa1daa96f59a072ab57ac3ab80bd39280b74.zip
AMDGPU: Treat texture gather instructions more like other MIMG instructions
Summary: Setting MIMG to 0 has a bunch of unexpected side effects, including that isVMEM returns false which leads to incorrect treatment in the hazard recognizer. The reason I noticed it is that it also leads to incorrect treatment in VGPR-to-SGPR copies, which is one cause of the referenced bug. The only reason why MIMG was set to 0 is to signal the special handling of dmasks, but that can be checked differently. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96877 Reviewers: arsenm, tstellarAMD Subscribers: arsenm, kzhuravl, llvm-commits Differential Revision: http://reviews.llvm.org/D22210 llvm-svn: 275113
Diffstat (limited to 'llvm/lib/Target/AMDGPU/SIInstrFormats.td')
-rw-r--r--llvm/lib/Target/AMDGPU/SIInstrFormats.td3
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIInstrFormats.td b/llvm/lib/Target/AMDGPU/SIInstrFormats.td
index 167e3ed749b..5502777fb31 100644
--- a/llvm/lib/Target/AMDGPU/SIInstrFormats.td
+++ b/llvm/lib/Target/AMDGPU/SIInstrFormats.td
@@ -48,6 +48,8 @@ class InstSI <dag outs, dag ins, string asm = "",
// is unable to infer the encoding from the operands.
field bits<1> VOPAsmPrefer32Bit = 0;
+ field bits<1> Gather4 = 0;
+
// These need to be kept in sync with the enum in SIInstrFlags.
let TSFlags{0} = VM_CNT;
let TSFlags{1} = EXP_CNT;
@@ -78,6 +80,7 @@ class InstSI <dag outs, dag ins, string asm = "",
let TSFlags{22} = WQM;
let TSFlags{23} = VGPRSpill;
let TSFlags{24} = VOPAsmPrefer32Bit;
+ let TSFlags{25} = Gather4;
let SchedRW = [Write32Bit];
OpenPOWER on IntegriCloud