[fast-isel] Add support for indirect branches.
[oota-llvm.git] / test / CodeGen / ARM / fast-isel-ret.ll
1 ; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s
2 ; RUN: llc < %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s
3
4 ; Sign-extend of i1 currently not supported by fast-isel
5 ;define signext i1 @ret0(i1 signext %a) nounwind uwtable ssp {
6 ;entry:
7 ;  ret i1 %a
8 ;}
9
10 define zeroext i1 @ret1(i1 signext %a) nounwind uwtable ssp {
11 entry:
12 ; CHECK: ret1
13 ; CHECK: and r0, r0, #1
14 ; CHECK: bx lr
15   ret i1 %a
16 }
17
18 define signext i8 @ret2(i8 signext %a) nounwind uwtable ssp {
19 entry:
20 ; CHECK: ret2
21 ; CHECK: sxtb r0, r0
22 ; CHECK: bx lr
23   ret i8 %a
24 }
25
26 define zeroext i8 @ret3(i8 signext %a) nounwind uwtable ssp {
27 entry:
28 ; CHECK: ret3
29 ; CHECK: uxtb r0, r0
30 ; CHECK: bx lr
31   ret i8 %a
32 }
33
34 define signext i16 @ret4(i16 signext %a) nounwind uwtable ssp {
35 entry:
36 ; CHECK: ret4
37 ; CHECK: sxth r0, r0
38 ; CHECK: bx lr
39   ret i16 %a
40 }
41
42 define zeroext i16 @ret5(i16 signext %a) nounwind uwtable ssp {
43 entry:
44 ; CHECK: ret5
45 ; CHECK: uxth r0, r0
46 ; CHECK: bx lr
47   ret i16 %a
48 }