[llvm] r222285 - R600/SI: Set hasSideEffects = 0 on load and store instructions.
Matt Arsenault
Matthew.Arsenault at amd.com
Tue Nov 18 15:57:33 PST 2014
Author: arsenm
Date: Tue Nov 18 17:57:33 2014
New Revision: 222285
URL: http://llvm.org/viewvc/llvm-project?rev=222285&view=rev
Log:
R600/SI: Set hasSideEffects = 0 on load and store instructions.
Assuming unmodeled side effects interferes with some scheduling
opportunities.
Don't put it in the base class of DS instructions since there
are a few weird effecting, non load/store instructions there.
Modified:
llvm/trunk/lib/Target/R600/SIInstrFormats.td
llvm/trunk/lib/Target/R600/SIInstrInfo.td
Modified: llvm/trunk/lib/Target/R600/SIInstrFormats.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/R600/SIInstrFormats.td?rev=222285&r1=222284&r2=222285&view=diff
==============================================================================
--- llvm/trunk/lib/Target/R600/SIInstrFormats.td (original)
+++ llvm/trunk/lib/Target/R600/SIInstrFormats.td Tue Nov 18 17:57:33 2014
@@ -223,6 +223,7 @@ class SMRD <dag outs, dag ins, string as
let SMRD = 1;
let mayStore = 0;
let mayLoad = 1;
+ let hasSideEffects = 0;
let UseNamedOperandTable = 1;
}
@@ -527,10 +528,9 @@ class VOPC <bits<8> op, dag ins, string
class VINTRP <bits <2> op, dag outs, dag ins, string asm, list<dag> pattern> :
InstSI <outs, ins, asm, pattern>, VINTRPe<op> {
-
- let neverHasSideEffects = 1;
let mayLoad = 1;
let mayStore = 0;
+ let hasSideEffects = 0;
}
} // End Uses = [EXEC]
@@ -555,7 +555,7 @@ class MUBUF <bits<7> op, dag outs, dag i
let EXP_CNT = 1;
let MUBUF = 1;
- let neverHasSideEffects = 1;
+ let hasSideEffects = 0;
let UseNamedOperandTable = 1;
}
@@ -591,6 +591,8 @@ class MIMG <bits<7> op, dag outs, dag in
let VM_CNT = 1;
let EXP_CNT = 1;
let MIMG = 1;
+
+ let hasSideEffects = 0; // XXX ????
}
Modified: llvm/trunk/lib/Target/R600/SIInstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/R600/SIInstrInfo.td?rev=222285&r1=222284&r2=222285&view=diff
==============================================================================
--- llvm/trunk/lib/Target/R600/SIInstrInfo.td (original)
+++ llvm/trunk/lib/Target/R600/SIInstrInfo.td Tue Nov 18 17:57:33 2014
@@ -941,6 +941,8 @@ class DS_1A <bits<8> op, dag outs, dag i
// Single load interpret the 2 i8imm operands as a single i16 offset.
let offset0 = offset{7-0};
let offset1 = offset{15-8};
+
+ let hasSideEffects = 0;
}
class DS_Load_Helper <bits<8> op, string asm, RegisterClass regClass> : DS_1A <
@@ -965,6 +967,7 @@ class DS_Load2_Helper <bits<8> op, strin
let data1 = 0;
let mayLoad = 1;
let mayStore = 0;
+ let hasSideEffects = 0;
}
class DS_Store_Helper <bits<8> op, string asm, RegisterClass regClass> : DS_1A <
@@ -988,6 +991,7 @@ class DS_Store2_Helper <bits<8> op, stri
[]> {
let mayStore = 1;
let mayLoad = 0;
+ let hasSideEffects = 0;
let vdst = 0;
}
@@ -1016,7 +1020,6 @@ class DS_1A2D_RET <bits<8> op, string as
AtomicNoRet<noRetOp, 1> {
let mayStore = 1;
let mayLoad = 1;
-
let hasPostISelHook = 1; // Adjusted to no return version.
}
More information about the llvm-commits
mailing list