summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2019-09-02 20:16:30 +0000
committerCraig Topper <craig.topper@intel.com>2019-09-02 20:16:30 +0000
commit45cd1851097c61b7eee73b93fee4f09fc2a57d3c (patch)
treef064177a259e0077b38d7db947253fe8a5a44897 /llvm/lib
parenta5fd8d8f47d761a9307696987191bb87f9c06d9e (diff)
downloadbcm5719-llvm-45cd1851097c61b7eee73b93fee4f09fc2a57d3c.tar.gz
bcm5719-llvm-45cd1851097c61b7eee73b93fee4f09fc2a57d3c.zip
[X86] Enable fp128 as a legal type with SSE1 rather than with MMX.
FP128 values are passed in xmm registers so should be asssociated with an SSE feature rather than MMX which uses a different set of registers. llc enables sse1 and sse2 by default with x86_64. But does not enable mmx. Clang enables all 3 features by default. I've tried to add command lines to test with -sse where possible, but any test that returns a value in an xmm register fails with a fatal error with -sse since we have no defined ABI for that scenario. llvm-svn: 370682
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 3c188aa50a9..f29d50fccb2 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -645,9 +645,9 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
setOperationAction(ISD::FMA, MVT::f64, Expand);
setOperationAction(ISD::FMA, MVT::f32, Expand);
- // Long double always uses X87, except f128 in MMX.
+ // Long double always uses X87, except f128 in SSE.
if (UseX87) {
- if (Subtarget.is64Bit() && Subtarget.hasMMX()) {
+ if (Subtarget.is64Bit() && Subtarget.hasSSE1()) {
addRegisterClass(MVT::f128, Subtarget.hasVLX() ? &X86::VR128XRegClass
: &X86::VR128RegClass);
ValueTypeActions.setTypeAction(MVT::f128, TypeSoftenFloat);
OpenPOWER on IntegriCloud