summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorJessica Paquette <jpaquette@apple.com>2019-03-04 21:12:46 +0000
committerJessica Paquette <jpaquette@apple.com>2019-03-04 21:12:46 +0000
commit0632e12f8927a13345cec0f823212fbd881fe889 (patch)
tree29e03f10d99f148101705c96219ac0f9c1cb2b38 /llvm/lib/Target
parente800a32b93cc26dc3087f260b633e54afe0ba722 (diff)
downloadbcm5719-llvm-0632e12f8927a13345cec0f823212fbd881fe889.tar.gz
bcm5719-llvm-0632e12f8927a13345cec0f823212fbd881fe889.zip
[GlobalISel][AArch64] Legalize vector G_SELECT
Just scalarize it, and add a test showing it works. Differential Revision: https://reviews.llvm.org/D58747 llvm-svn: 355339
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp b/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp
index 3694b9faab7..03933b1d098 100644
--- a/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp
+++ b/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp
@@ -298,10 +298,13 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST) {
getActionDefinitionsBuilder(G_BRINDIRECT).legalFor({p0});
// Select
+ // FIXME: We can probably do a bit better than just scalarizing vector
+ // selects.
getActionDefinitionsBuilder(G_SELECT)
.legalFor({{s32, s1}, {s64, s1}, {p0, s1}})
.clampScalar(0, s32, s64)
- .widenScalarToNextPow2(0);
+ .widenScalarToNextPow2(0)
+ .scalarize(0);
// Pointer-handling
getActionDefinitionsBuilder(G_FRAME_INDEX).legalFor({p0});
OpenPOWER on IntegriCloud