mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-02 10:33:53 +00:00
Incorrect SETCC CondCode used for FP comparisons.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28433 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
95942d76f4
commit
f6f9581983
@ -512,13 +512,20 @@ public:
|
||||
visitShift(I, I.getType()->isUnsigned() ? ISD::SRL : ISD::SRA);
|
||||
}
|
||||
|
||||
void visitSetCC(User &I, ISD::CondCode SignedOpc, ISD::CondCode UnsignedOpc);
|
||||
void visitSetEQ(User &I) { visitSetCC(I, ISD::SETEQ, ISD::SETEQ); }
|
||||
void visitSetNE(User &I) { visitSetCC(I, ISD::SETNE, ISD::SETNE); }
|
||||
void visitSetLE(User &I) { visitSetCC(I, ISD::SETLE, ISD::SETULE); }
|
||||
void visitSetGE(User &I) { visitSetCC(I, ISD::SETGE, ISD::SETUGE); }
|
||||
void visitSetLT(User &I) { visitSetCC(I, ISD::SETLT, ISD::SETULT); }
|
||||
void visitSetGT(User &I) { visitSetCC(I, ISD::SETGT, ISD::SETUGT); }
|
||||
void visitSetCC(User &I, ISD::CondCode SignedOpc, ISD::CondCode UnsignedOpc,
|
||||
ISD::CondCode FPOpc);
|
||||
void visitSetEQ(User &I) { visitSetCC(I, ISD::SETEQ, ISD::SETEQ,
|
||||
ISD::SETOEQ); }
|
||||
void visitSetNE(User &I) { visitSetCC(I, ISD::SETNE, ISD::SETNE,
|
||||
ISD::SETUNE); }
|
||||
void visitSetLE(User &I) { visitSetCC(I, ISD::SETLE, ISD::SETULE,
|
||||
ISD::SETOLE); }
|
||||
void visitSetGE(User &I) { visitSetCC(I, ISD::SETGE, ISD::SETUGE,
|
||||
ISD::SETOGE); }
|
||||
void visitSetLT(User &I) { visitSetCC(I, ISD::SETLT, ISD::SETULT,
|
||||
ISD::SETOLT); }
|
||||
void visitSetGT(User &I) { visitSetCC(I, ISD::SETGT, ISD::SETUGT,
|
||||
ISD::SETOGT); }
|
||||
|
||||
void visitExtractElement(User &I);
|
||||
void visitInsertElement(User &I);
|
||||
@ -1092,11 +1099,15 @@ void SelectionDAGLowering::visitShift(User &I, unsigned Opcode) {
|
||||
}
|
||||
|
||||
void SelectionDAGLowering::visitSetCC(User &I,ISD::CondCode SignedOpcode,
|
||||
ISD::CondCode UnsignedOpcode) {
|
||||
ISD::CondCode UnsignedOpcode,
|
||||
ISD::CondCode FPOpcode) {
|
||||
SDOperand Op1 = getValue(I.getOperand(0));
|
||||
SDOperand Op2 = getValue(I.getOperand(1));
|
||||
ISD::CondCode Opcode = SignedOpcode;
|
||||
if (I.getOperand(0)->getType()->isUnsigned())
|
||||
if ((!UnsafeFPMath && !FiniteOnlyFPMath) &&
|
||||
I.getOperand(0)->getType()->isFloatingPoint())
|
||||
Opcode = FPOpcode;
|
||||
else if (I.getOperand(0)->getType()->isUnsigned())
|
||||
Opcode = UnsignedOpcode;
|
||||
setValue(&I, DAG.getSetCC(MVT::i1, Op1, Op2, Opcode));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user