summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen
diff options
context:
space:
mode:
authorLouis Gerbarg <lgg@apple.com>2014-07-07 21:37:51 +0000
committerLouis Gerbarg <lgg@apple.com>2014-07-07 21:37:51 +0000
commit4c5b4054b215cd66aaeca4485a3c24c4496b8a0e (patch)
tree3f93f82cf5205c717eaa566ae90038cb1c15134d /llvm/test/CodeGen
parent8bb347350a0b87062b5a88f5f97dd285734a942a (diff)
downloadbcm5719-llvm-4c5b4054b215cd66aaeca4485a3c24c4496b8a0e.tar.gz
bcm5719-llvm-4c5b4054b215cd66aaeca4485a3c24c4496b8a0e.zip
Allow AArch64FastISel to degrade graceully in the presence of an MVT::i128
Currently AArch64FastISel crashes if it tries to extend an integer into an MVT::i128. This can happen by creating 128 bit integers like so: typedef unsigned int uint128_t __attribute__((mode(TI))); typedef int sint128_t __attribute__((mode(TI))); This patch makes EmitIntExt check for their presence and then falls back to SelectionDAG. Tests included. rdar://17516686 llvm-svn: 212492
Diffstat (limited to 'llvm/test/CodeGen')
-rw-r--r--llvm/test/CodeGen/AArch64/i128-fast-isel-fallback.ll18
1 files changed, 18 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/AArch64/i128-fast-isel-fallback.ll b/llvm/test/CodeGen/AArch64/i128-fast-isel-fallback.ll
new file mode 100644
index 00000000000..1cffbf3de05
--- /dev/null
+++ b/llvm/test/CodeGen/AArch64/i128-fast-isel-fallback.ll
@@ -0,0 +1,18 @@
+; RUN: llc -O0 -mtriple=arm64-apple-ios7.0 -mcpu=generic < %s | FileCheck %s
+
+; Function Attrs: nounwind ssp
+define void @test1() {
+ %1 = sext i32 0 to i128
+ call void @test2(i128 %1)
+ ret void
+
+; The i128 is 0 so the we can test to make sure it is propogated into the x
+; registers that make up the i128 pair
+
+; CHECK: mov x0, xzr
+; CHECK: mov x1, x0
+; CHECK: bl _test2
+
+}
+
+declare void @test2(i128)
OpenPOWER on IntegriCloud