1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00
llvm-mirror/test/CodeGen/AArch64/i128-fast-isel-fallback.ll
Louis Gerbarg 30a2dcd984 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
2014-07-07 21:37:51 +00:00

19 lines
411 B
LLVM

; 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)