forked from OSchip/llvm-project
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. llvm-svn: 222285
This commit is contained in:
parent
3aa9a6a126
commit
9a072c19ae
|
@ -223,6 +223,7 @@ class SMRD <dag outs, dag ins, string asm, list<dag> pattern> :
|
|||
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 asm, list<dag> pattern> :
|
|||
|
||||
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 ins, string asm, list<dag> pattern> :
|
|||
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 ins, string asm, list<dag> pattern> :
|
|||
let VM_CNT = 1;
|
||||
let EXP_CNT = 1;
|
||||
let MIMG = 1;
|
||||
|
||||
let hasSideEffects = 0; // XXX ????
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -941,6 +941,8 @@ class DS_1A <bits<8> op, dag outs, dag ins, string asm, list<dag> pat> :
|
|||
// 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, string asm, RegisterClass regClass> : DS <
|
|||
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, string asm, RegisterClass regClass> : DS <
|
|||
[]> {
|
||||
let mayStore = 1;
|
||||
let mayLoad = 0;
|
||||
let hasSideEffects = 0;
|
||||
let vdst = 0;
|
||||
}
|
||||
|
||||
|
@ -1016,7 +1020,6 @@ class DS_1A2D_RET <bits<8> op, string asm, RegisterClass rc, string noRetOp = ""
|
|||
AtomicNoRet<noRetOp, 1> {
|
||||
let mayStore = 1;
|
||||
let mayLoad = 1;
|
||||
|
||||
let hasPostISelHook = 1; // Adjusted to no return version.
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue