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
|
||||
|
||||
def CMPD : XForm_16_ext<31, 0, (outs CRRC:$crD), (ins G8RC:$rA, G8RC:$rB),
|
||||
"cmpd $crD, $rA, $rB", IntCompare>, isPPC64;
|
||||
def CMPLD : XForm_16_ext<31, 32, (outs CRRC:$crD), (ins G8RC:$rA, G8RC:$rB),
|
||||
"cmpld $crD, $rA, $rB", IntCompare>, isPPC64;
|
||||
def CMPDI : DForm_5_ext<11, (outs CRRC:$crD), (ins G8RC:$rA, s16imm:$imm),
|
||||
"cmpdi $crD, $rA, $imm", IntCompare>, isPPC64;
|
||||
def CMPLDI : DForm_6_ext<10, (outs CRRC:$dst), (ins G8RC:$src1, u16imm:$src2),
|
||||
"cmpldi $dst, $src1, $src2", IntCompare>, isPPC64;
|
||||
let isCompare = 1, neverHasSideEffects = 1 in {
|
||||
def CMPD : XForm_16_ext<31, 0, (outs CRRC:$crD), (ins G8RC:$rA, G8RC:$rB),
|
||||
"cmpd $crD, $rA, $rB", IntCompare>, isPPC64;
|
||||
def CMPLD : XForm_16_ext<31, 32, (outs CRRC:$crD), (ins G8RC:$rA, G8RC:$rB),
|
||||
"cmpld $crD, $rA, $rB", IntCompare>, isPPC64;
|
||||
def CMPDI : DForm_5_ext<11, (outs CRRC:$crD), (ins G8RC:$rA, s16imm:$imm),
|
||||
"cmpdi $crD, $rA, $imm", 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 {
|
||||
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))]>;
|
||||
def NOP : DForm_4_zero<24, (outs), (ins), "nop", IntSimple,
|
||||
[]>;
|
||||
def CMPWI : DForm_5_ext<11, (outs CRRC:$crD), (ins GPRC:$rA, s16imm:$imm),
|
||||
"cmpwi $crD, $rA, $imm", IntCompare>;
|
||||
def CMPLWI : DForm_6_ext<10, (outs CRRC:$dst), (ins GPRC:$src1, u16imm:$src2),
|
||||
"cmplwi $dst, $src1, $src2", IntCompare>;
|
||||
let isCompare = 1, neverHasSideEffects = 1 in {
|
||||
def CMPWI : DForm_5_ext<11, (outs CRRC:$crD), (ins GPRC:$rA, s16imm:$imm),
|
||||
"cmpwi $crD, $rA, $imm", 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.
|
||||
|
@ -1375,18 +1377,22 @@ defm EXTSH : XForm_11r<31, 922, (outs GPRC:$rA), (ins GPRC:$rS),
|
|||
"extsh", "$rA, $rS", IntSimple,
|
||||
[(set i32:$rA, (sext_inreg i32:$rS, i16))]>;
|
||||
}
|
||||
def CMPW : XForm_16_ext<31, 0, (outs CRRC:$crD), (ins GPRC:$rA, GPRC:$rB),
|
||||
"cmpw $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 isCompare = 1, neverHasSideEffects = 1 in {
|
||||
def CMPW : XForm_16_ext<31, 0, (outs CRRC:$crD), (ins GPRC:$rA, GPRC:$rB),
|
||||
"cmpw $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.
|
||||
//def FCMPO : XForm_17<63, 32, (outs CRRC:$crD), (ins FPRC:$fA, FPRC:$fB),
|
||||
// "fcmpo $crD, $fA, $fB", FPCompare>;
|
||||
def FCMPUS : XForm_17<63, 0, (outs CRRC:$crD), (ins F4RC:$fA, F4RC:$fB),
|
||||
"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 isCompare = 1, neverHasSideEffects = 1 in {
|
||||
def FCMPUS : XForm_17<63, 0, (outs CRRC:$crD), (ins F4RC:$fA, F4RC:$fB),
|
||||
"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 neverHasSideEffects = 1 in {
|
||||
|
|
Loading…
Reference in New Issue