summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM64/ARM64ISelLowering.cpp
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2014-04-15 14:00:03 +0000
committerTim Northover <tnorthover@apple.com>2014-04-15 14:00:03 +0000
commitb37cff1ae2f76c430ee765c415cf1d4570c50e36 (patch)
tree2da43596033da22e268f6e7f299a239c46d2bc9e /llvm/lib/Target/ARM64/ARM64ISelLowering.cpp
parent80a70a265ad89ec2486f0a924024c1e200d84dd4 (diff)
downloadbcm5719-llvm-b37cff1ae2f76c430ee765c415cf1d4570c50e36.tar.gz
bcm5719-llvm-b37cff1ae2f76c430ee765c415cf1d4570c50e36.zip
AArch64/ARM64: add half as a storage type on ARM64.
This brings it into line with the AArch64 behaviour and should open the way for certain OpenCL features. llvm-svn: 206286
Diffstat (limited to 'llvm/lib/Target/ARM64/ARM64ISelLowering.cpp')
-rw-r--r--llvm/lib/Target/ARM64/ARM64ISelLowering.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM64/ARM64ISelLowering.cpp b/llvm/lib/Target/ARM64/ARM64ISelLowering.cpp
index 205cea669e3..cfb9d1e2da3 100644
--- a/llvm/lib/Target/ARM64/ARM64ISelLowering.cpp
+++ b/llvm/lib/Target/ARM64/ARM64ISelLowering.cpp
@@ -84,6 +84,7 @@ ARM64TargetLowering::ARM64TargetLowering(ARM64TargetMachine &TM)
// Set up the register classes.
addRegisterClass(MVT::i32, &ARM64::GPR32allRegClass);
addRegisterClass(MVT::i64, &ARM64::GPR64allRegClass);
+ addRegisterClass(MVT::f16, &ARM64::FPR16RegClass);
addRegisterClass(MVT::f32, &ARM64::FPR32RegClass);
addRegisterClass(MVT::f64, &ARM64::FPR64RegClass);
addRegisterClass(MVT::f128, &ARM64::FPR128RegClass);
@@ -370,10 +371,13 @@ ARM64TargetLowering::ARM64TargetLowering(ARM64TargetMachine &TM)
setLoadExtAction(ISD::EXTLOAD, MVT::f64, Expand);
setLoadExtAction(ISD::EXTLOAD, MVT::f80, Expand);
setLoadExtAction(ISD::SEXTLOAD, MVT::i1, Expand);
+ setTruncStoreAction(MVT::f32, MVT::f16, Expand);
setTruncStoreAction(MVT::f64, MVT::f32, Expand);
+ setTruncStoreAction(MVT::f64, MVT::f16, Expand);
setTruncStoreAction(MVT::f128, MVT::f80, Expand);
setTruncStoreAction(MVT::f128, MVT::f64, Expand);
setTruncStoreAction(MVT::f128, MVT::f32, Expand);
+ setTruncStoreAction(MVT::f128, MVT::f16, Expand);
setTruncStoreAction(MVT::v2i32, MVT::v2i16, Expand);
// Indexed loads and stores are supported.
for (unsigned im = (unsigned)ISD::PRE_INC;
OpenPOWER on IntegriCloud