summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2016-04-26 05:04:37 +0000
committerCraig Topper <craig.topper@gmail.com>2016-04-26 05:04:37 +0000
commitd8d6be4f99766c1828fa4651226bba1d1f9eac82 (patch)
treece9092fa8fe8d8e9428ae24c814d707c71a0fc67 /llvm/lib/Target/ARM
parentedb4a6ba982df35c02a6418fa9faf091459a306f (diff)
downloadbcm5719-llvm-d8d6be4f99766c1828fa4651226bba1d1f9eac82.tar.gz
bcm5719-llvm-d8d6be4f99766c1828fa4651226bba1d1f9eac82.zip
[ARM] Expand vector ctlz_zero_undef so it becomes ctlz.
The default is Legal, which results in 'Cannot select' errors. llvm-svn: 267521
Diffstat (limited to 'llvm/lib/Target/ARM')
-rw-r--r--llvm/lib/Target/ARM/ARMISelLowering.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
index 13a233d4ecd..3e2eb804727 100644
--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
@@ -583,6 +583,16 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM,
setOperationAction(ISD::CTLZ, MVT::v1i64, Expand);
setOperationAction(ISD::CTLZ, MVT::v2i64, Expand);
+ setOperationAction(ISD::CTLZ_ZERO_UNDEF, MVT::v8i8, Expand);
+ setOperationAction(ISD::CTLZ_ZERO_UNDEF, MVT::v4i16, Expand);
+ setOperationAction(ISD::CTLZ_ZERO_UNDEF, MVT::v2i32, Expand);
+ setOperationAction(ISD::CTLZ_ZERO_UNDEF, MVT::v1i64, Expand);
+
+ setOperationAction(ISD::CTLZ_ZERO_UNDEF, MVT::v16i8, Expand);
+ setOperationAction(ISD::CTLZ_ZERO_UNDEF, MVT::v8i16, Expand);
+ setOperationAction(ISD::CTLZ_ZERO_UNDEF, MVT::v4i32, Expand);
+ setOperationAction(ISD::CTLZ_ZERO_UNDEF, MVT::v2i64, Expand);
+
// NEON does not have single instruction CTTZ for vectors.
setOperationAction(ISD::CTTZ, MVT::v8i8, Custom);
setOperationAction(ISD::CTTZ, MVT::v4i16, Custom);
OpenPOWER on IntegriCloud