[PATCH] D52555: [X86] Fix use SSE registers if no-x87 is selected.
Nick Desaulniers via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 1 14:16:03 PDT 2018
nickdesaulniers added inline comments.
================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:282
+ setOperationAction(ISD::FP_TO_UINT, MVT::i32, Promote);
setOperationAction(ISD::FP_TO_UINT , MVT::i64 , Expand);
}
----------------
How come not also this case? Or any of the ISD::FP_TO_SINT?
================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:552
+ } else if (X86ScalarSSEf32 &&
+ (UseX87 || (!useSoftFloat() && Subtarget.is64Bit()))) {
// Use SSE for f32, x87 for f64.
----------------
Below (L1947) you check `Subtarget.is64Bit() || Subtarget.hasX87()`, so I'm curious here why the additional `!useSoftFloat()`?
================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:580-590
+ if (UseX87) {
+ addLegalFPImmediate(APFloat(+0.0)); // FLD0
+ addLegalFPImmediate(APFloat(+1.0)); // FLD1
+ addLegalFPImmediate(APFloat(-0.0)); // FLD0/FCHS
+ addLegalFPImmediate(APFloat(-1.0)); // FLD1/FCHS
+ // Always expand sin/cos functions even though x87 has an instruction.
----------------
Is it possible to share some of this code with the case starting at L591? Seems to be a fair amount of code duplication. Maybe a helper, or a single case can be checked for these?
Repository:
rL LLVM
https://reviews.llvm.org/D52555
More information about the llvm-commits
mailing list