diff options
| author | Louis Gerbarg <lgg@apple.com> | 2014-07-07 21:37:51 +0000 |
|---|---|---|
| committer | Louis Gerbarg <lgg@apple.com> | 2014-07-07 21:37:51 +0000 |
| commit | 4c5b4054b215cd66aaeca4485a3c24c4496b8a0e (patch) | |
| tree | 3f93f82cf5205c717eaa566ae90038cb1c15134d /llvm/test/CodeGen | |
| parent | 8bb347350a0b87062b5a88f5f97dd285734a942a (diff) | |
| download | bcm5719-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.ll | 18 |
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) |

