summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorJessica Paquette <jpaquette@apple.com>2019-04-18 21:15:48 +0000
committerJessica Paquette <jpaquette@apple.com>2019-04-18 21:15:48 +0000
commit0aa9b453c40ec4707ebb9b7a7e2bd21919d5e470 (patch)
treefe9eebb4231324f6993f451245e7d819032003e8 /llvm/lib
parent3b5119c68455fe30ab1f2e32b12b4e15ce3ef122 (diff)
downloadbcm5719-llvm-0aa9b453c40ec4707ebb9b7a7e2bd21919d5e470.tar.gz
bcm5719-llvm-0aa9b453c40ec4707ebb9b7a7e2bd21919d5e470.zip
[GlobalISel][AArch64] Legalize/select G_(S/Z/ANY)_EXT for v8s8s
This adds legalization for G_SEXT, G_ZEXT, and G_ANYEXT for v8s8s. We were falling back on G_ZEXT in arm64-vabs.ll before, preventing us from selecting the @llvm.aarch64.neon.sabd.v8i8 intrinsic. This adds legalizer support for those 3, which gives us selection via the importer. Update the relevant tests (legalize-ext.mir, select-int-ext.mir) and add a GISel line to arm64-vabs.ll. Differential Revision: https://reviews.llvm.org/D60881 llvm-svn: 358715
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp b/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp
index 19fd1d1650b..4fb09bb8666 100644
--- a/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp
+++ b/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp
@@ -316,7 +316,8 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST) {
// Extensions
getActionDefinitionsBuilder({G_ZEXT, G_SEXT, G_ANYEXT})
- .legalForCartesianProduct({s8, s16, s32, s64}, {s1, s8, s16, s32});
+ .legalForCartesianProduct({s8, s16, s32, s64}, {s1, s8, s16, s32})
+ .legalFor({v8s16, v8s8});
getActionDefinitionsBuilder(G_TRUNC).alwaysLegal();
OpenPOWER on IntegriCloud