forked from OSchip/llvm-project
Mark all PPC comparison instructions as not having side effects
Now that the CR spilling issues have been resolved, we can remove the unmodeled-side-effect attributes from the comparison instructions (and also mark them as isCompare). By allowing these, by default, to have unmodeled side effects, we were hiding problems with CR spilling; but everything seems much happier now. llvm-svn: 179502
This commit is contained in:
parent
6e06e04ec1
commit
95e6ea69be
|
@ -451,14 +451,16 @@ defm MULHDU : XOForm_1r<31, 9, 0, (outs G8RC:$rT), (ins G8RC:$rA, G8RC:$rB),
|
||||||
}
|
}
|
||||||
} // Interpretation64Bit
|
} // Interpretation64Bit
|
||||||
|
|
||||||
def CMPD : XForm_16_ext<31, 0, (outs CRRC:$crD), (ins G8RC:$rA, G8RC:$rB),
|
let isCompare = 1, neverHasSideEffects = 1 in {
|
||||||
"cmpd $crD, $rA, $rB", IntCompare>, isPPC64;
|
def CMPD : XForm_16_ext<31, 0, (outs CRRC:$crD), (ins G8RC:$rA, G8RC:$rB),
|
||||||
def CMPLD : XForm_16_ext<31, 32, (outs CRRC:$crD), (ins G8RC:$rA, G8RC:$rB),
|
"cmpd $crD, $rA, $rB", IntCompare>, isPPC64;
|
||||||
"cmpld $crD, $rA, $rB", IntCompare>, isPPC64;
|
def CMPLD : XForm_16_ext<31, 32, (outs CRRC:$crD), (ins G8RC:$rA, G8RC:$rB),
|
||||||
def CMPDI : DForm_5_ext<11, (outs CRRC:$crD), (ins G8RC:$rA, s16imm:$imm),
|
"cmpld $crD, $rA, $rB", IntCompare>, isPPC64;
|
||||||
"cmpdi $crD, $rA, $imm", IntCompare>, isPPC64;
|
def CMPDI : DForm_5_ext<11, (outs CRRC:$crD), (ins G8RC:$rA, s16imm:$imm),
|
||||||
def CMPLDI : DForm_6_ext<10, (outs CRRC:$dst), (ins G8RC:$src1, u16imm:$src2),
|
"cmpdi $crD, $rA, $imm", IntCompare>, isPPC64;
|
||||||
"cmpldi $dst, $src1, $src2", IntCompare>, isPPC64;
|
def CMPLDI : DForm_6_ext<10, (outs CRRC:$dst), (ins G8RC:$src1, u16imm:$src2),
|
||||||
|
"cmpldi $dst, $src1, $src2", IntCompare>, isPPC64;
|
||||||
|
}
|
||||||
|
|
||||||
let neverHasSideEffects = 1 in {
|
let neverHasSideEffects = 1 in {
|
||||||
defm SLD : XForm_6r<31, 27, (outs G8RC:$rA), (ins G8RC:$rS, GPRC:$rB),
|
defm SLD : XForm_6r<31, 27, (outs G8RC:$rA), (ins G8RC:$rS, GPRC:$rB),
|
||||||
|
|
|
@ -1318,10 +1318,12 @@ def XORIS : DForm_4<27, (outs GPRC:$dst), (ins GPRC:$src1, u16imm:$src2),
|
||||||
[(set i32:$dst, (xor i32:$src1, imm16ShiftedZExt:$src2))]>;
|
[(set i32:$dst, (xor i32:$src1, imm16ShiftedZExt:$src2))]>;
|
||||||
def NOP : DForm_4_zero<24, (outs), (ins), "nop", IntSimple,
|
def NOP : DForm_4_zero<24, (outs), (ins), "nop", IntSimple,
|
||||||
[]>;
|
[]>;
|
||||||
def CMPWI : DForm_5_ext<11, (outs CRRC:$crD), (ins GPRC:$rA, s16imm:$imm),
|
let isCompare = 1, neverHasSideEffects = 1 in {
|
||||||
"cmpwi $crD, $rA, $imm", IntCompare>;
|
def CMPWI : DForm_5_ext<11, (outs CRRC:$crD), (ins GPRC:$rA, s16imm:$imm),
|
||||||
def CMPLWI : DForm_6_ext<10, (outs CRRC:$dst), (ins GPRC:$src1, u16imm:$src2),
|
"cmpwi $crD, $rA, $imm", IntCompare>;
|
||||||
"cmplwi $dst, $src1, $src2", IntCompare>;
|
def CMPLWI : DForm_6_ext<10, (outs CRRC:$dst), (ins GPRC:$src1, u16imm:$src2),
|
||||||
|
"cmplwi $dst, $src1, $src2", IntCompare>;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let PPC970_Unit = 1, neverHasSideEffects = 1 in { // FXU Operations.
|
let PPC970_Unit = 1, neverHasSideEffects = 1 in { // FXU Operations.
|
||||||
|
@ -1375,18 +1377,22 @@ defm EXTSH : XForm_11r<31, 922, (outs GPRC:$rA), (ins GPRC:$rS),
|
||||||
"extsh", "$rA, $rS", IntSimple,
|
"extsh", "$rA, $rS", IntSimple,
|
||||||
[(set i32:$rA, (sext_inreg i32:$rS, i16))]>;
|
[(set i32:$rA, (sext_inreg i32:$rS, i16))]>;
|
||||||
}
|
}
|
||||||
def CMPW : XForm_16_ext<31, 0, (outs CRRC:$crD), (ins GPRC:$rA, GPRC:$rB),
|
let isCompare = 1, neverHasSideEffects = 1 in {
|
||||||
"cmpw $crD, $rA, $rB", IntCompare>;
|
def CMPW : XForm_16_ext<31, 0, (outs CRRC:$crD), (ins GPRC:$rA, GPRC:$rB),
|
||||||
def CMPLW : XForm_16_ext<31, 32, (outs CRRC:$crD), (ins GPRC:$rA, GPRC:$rB),
|
"cmpw $crD, $rA, $rB", IntCompare>;
|
||||||
"cmplw $crD, $rA, $rB", IntCompare>;
|
def CMPLW : XForm_16_ext<31, 32, (outs CRRC:$crD), (ins GPRC:$rA, GPRC:$rB),
|
||||||
|
"cmplw $crD, $rA, $rB", IntCompare>;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
let PPC970_Unit = 3 in { // FPU Operations.
|
let PPC970_Unit = 3 in { // FPU Operations.
|
||||||
//def FCMPO : XForm_17<63, 32, (outs CRRC:$crD), (ins FPRC:$fA, FPRC:$fB),
|
//def FCMPO : XForm_17<63, 32, (outs CRRC:$crD), (ins FPRC:$fA, FPRC:$fB),
|
||||||
// "fcmpo $crD, $fA, $fB", FPCompare>;
|
// "fcmpo $crD, $fA, $fB", FPCompare>;
|
||||||
def FCMPUS : XForm_17<63, 0, (outs CRRC:$crD), (ins F4RC:$fA, F4RC:$fB),
|
let isCompare = 1, neverHasSideEffects = 1 in {
|
||||||
"fcmpu $crD, $fA, $fB", FPCompare>;
|
def FCMPUS : XForm_17<63, 0, (outs CRRC:$crD), (ins F4RC:$fA, F4RC:$fB),
|
||||||
def FCMPUD : XForm_17<63, 0, (outs CRRC:$crD), (ins F8RC:$fA, F8RC:$fB),
|
"fcmpu $crD, $fA, $fB", FPCompare>;
|
||||||
"fcmpu $crD, $fA, $fB", FPCompare>;
|
def FCMPUD : XForm_17<63, 0, (outs CRRC:$crD), (ins F8RC:$fA, F8RC:$fB),
|
||||||
|
"fcmpu $crD, $fA, $fB", FPCompare>;
|
||||||
|
}
|
||||||
|
|
||||||
let Uses = [RM] in {
|
let Uses = [RM] in {
|
||||||
let neverHasSideEffects = 1 in {
|
let neverHasSideEffects = 1 in {
|
||||||
|
|
Loading…
Reference in New Issue