summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86ISelLowering.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2011-12-09 15:44:03 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2011-12-09 15:44:03 +0000
commit16bbfbec66f72cbc2e7dbca867862194466238a1 (patch)
tree18c1262a09775abafab0de5be817b3403b503f06 /llvm/lib/Target/X86/X86ISelLowering.cpp
parent2dc5dec41d78ed864b8bebc1b52efba5f13cef4e (diff)
downloadbcm5719-llvm-16bbfbec66f72cbc2e7dbca867862194466238a1.tar.gz
bcm5719-llvm-16bbfbec66f72cbc2e7dbca867862194466238a1.zip
X86: Add patterns for the various rounding ops for SSE4.1 and AVX.
llvm-svn: 146257
Diffstat (limited to 'llvm/lib/Target/X86/X86ISelLowering.cpp')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index dc1aa42b952..cdc1f21743d 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -914,6 +914,17 @@ X86TargetLowering::X86TargetLowering(X86TargetMachine &TM)
}
if (Subtarget->hasSSE41orAVX()) {
+ setOperationAction(ISD::FFLOOR, MVT::f32, Legal);
+ setOperationAction(ISD::FCEIL, MVT::f32, Legal);
+ setOperationAction(ISD::FTRUNC, MVT::f32, Legal);
+ setOperationAction(ISD::FRINT, MVT::f32, Legal);
+ setOperationAction(ISD::FNEARBYINT, MVT::f32, Legal);
+ setOperationAction(ISD::FFLOOR, MVT::f64, Legal);
+ setOperationAction(ISD::FCEIL, MVT::f64, Legal);
+ setOperationAction(ISD::FTRUNC, MVT::f64, Legal);
+ setOperationAction(ISD::FRINT, MVT::f64, Legal);
+ setOperationAction(ISD::FNEARBYINT, MVT::f64, Legal);
+
// FIXME: Do we need to handle scalar-to-vector here?
setOperationAction(ISD::MUL, MVT::v4i32, Legal);
OpenPOWER on IntegriCloud