aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib
diff options
context:
space:
mode:
authorDavid Green <david.green@arm.com>2022-02-06 16:17:06 +0000
committerDavid Green <david.green@arm.com>2022-02-06 16:17:06 +0000
commitb7d3a2b62f4d3cea9ec7baf1004ac2f68a0bca98 (patch)
treeea1b88c7628edd736b3e69160950eff790aacab5 /llvm/lib
parent3dff4f5cfb461cd25e2c95f2a8e9511f266e5dee (diff)
downloadllvm-b7d3a2b62f4d3cea9ec7baf1004ac2f68a0bca98.zip
llvm-b7d3a2b62f4d3cea9ec7baf1004ac2f68a0bca98.tar.gz
llvm-b7d3a2b62f4d3cea9ec7baf1004ac2f68a0bca98.tar.bz2
[ARM] Mark i64 and f64 shuffles as Custom for MVE
This way they get lowered through the ARMISD::BUILD_VECTOR, which can produce more efficient D register moves. Also helps D115653 not get stuck in a loop.
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/ARM/ARMISelLowering.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
index 32cb88b..ce62979 100644
--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
@@ -392,6 +392,7 @@ void ARMTargetLowering::addMVEVectorTypes(bool HasMVEFP) {
setOperationAction(ISD::EXTRACT_VECTOR_ELT, VT, Custom);
setOperationAction(ISD::BUILD_VECTOR, VT, Custom);
setOperationAction(ISD::VSELECT, VT, Legal);
+ setOperationAction(ISD::VECTOR_SHUFFLE, VT, Custom);
}
setOperationAction(ISD::SCALAR_TO_VECTOR, MVT::v2f64, Legal);