OSDN Git Service

[fast-isel] Add the -verify-machineinstrs to these test cases. The remaining
[android-x86/external-llvm.git] / test / CodeGen / ARM / fast-isel-frameaddr.ll
1 ; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -mtriple=armv7-apple-darwin | FileCheck %s --check-prefix=DARWIN-ARM
2 ; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=LINUX-ARM
3 ; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -mtriple=thumbv7-apple-darwin | FileCheck %s --check-prefix=DARWIN-THUMB2
4 ; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -mtriple=thumbv7-linux-gnueabi | FileCheck %s --check-prefix=LINUX-THUMB2
5
6 define i8* @frameaddr_index0() nounwind {
7 entry:
8 ; DARWIN-ARM: frameaddr_index0:
9 ; DARWIN-ARM: push {r7}
10 ; DARWIN-ARM: mov r7, sp
11 ; DARWIN-ARM: mov r0, r7
12
13 ; DARWIN-THUMB2: frameaddr_index0:
14 ; DARWIN-THUMB2: str r7, [sp, #-4]!
15 ; DARWIN-THUMB2: mov r7, sp
16 ; DARWIN-THUMB2: mov r0, r7
17
18 ; LINUX-ARM: frameaddr_index0:
19 ; LINUX-ARM: push {r11}
20 ; LINUX-ARM: mov r11, sp
21 ; LINUX-ARM: mov r0, r11
22
23 ; LINUX-THUMB2: frameaddr_index0:
24 ; LINUX-THUMB2: str r7, [sp, #-4]!
25 ; LINUX-THUMB2: mov r7, sp
26 ; LINUX-THUMB2: mov r0, r7
27
28   %0 = call i8* @llvm.frameaddress(i32 0)
29   ret i8* %0
30 }
31
32 define i8* @frameaddr_index1() nounwind {
33 entry:
34 ; DARWIN-ARM: frameaddr_index1:
35 ; DARWIN-ARM: push {r7}
36 ; DARWIN-ARM: mov r7, sp
37 ; DARWIN-ARM: mov r0, r7
38 ; DARWIN-ARM: ldr r0, [r0]
39
40 ; DARWIN-THUMB2: frameaddr_index1:
41 ; DARWIN-THUMB2: str r7, [sp, #-4]!
42 ; DARWIN-THUMB2: mov r7, sp
43 ; DARWIN-THUMB2: mov r0, r7
44 ; DARWIN-THUMB2: ldr r0, [r0]
45
46 ; LINUX-ARM: frameaddr_index1:
47 ; LINUX-ARM: push {r11}
48 ; LINUX-ARM: mov r11, sp
49 ; LINUX-ARM: mov r0, r11
50 ; LINUX-ARM: ldr r0, [r0]
51
52 ; LINUX-THUMB2: frameaddr_index1:
53 ; LINUX-THUMB2: str r7, [sp, #-4]!
54 ; LINUX-THUMB2: mov r7, sp
55 ; LINUX-THUMB2: mov r0, r7
56 ; LINUX-THUMB2: ldr r0, [r0]
57
58   %0 = call i8* @llvm.frameaddress(i32 1)
59   ret i8* %0
60 }
61
62 define i8* @frameaddr_index3() nounwind {
63 entry:
64 ; DARWIN-ARM: frameaddr_index3:
65 ; DARWIN-ARM: push {r7}
66 ; DARWIN-ARM: mov r7, sp
67 ; DARWIN-ARM: mov r0, r7
68 ; DARWIN-ARM: ldr r0, [r0]
69 ; DARWIN-ARM: ldr r0, [r0]
70 ; DARWIN-ARM: ldr r0, [r0]
71
72 ; DARWIN-THUMB2: frameaddr_index3:
73 ; DARWIN-THUMB2: str r7, [sp, #-4]!
74 ; DARWIN-THUMB2: mov r7, sp
75 ; DARWIN-THUMB2: mov r0, r7
76 ; DARWIN-THUMB2: ldr r0, [r0]
77 ; DARWIN-THUMB2: ldr r0, [r0]
78 ; DARWIN-THUMB2: ldr r0, [r0]
79
80 ; LINUX-ARM: frameaddr_index3:
81 ; LINUX-ARM: push {r11}
82 ; LINUX-ARM: mov r11, sp
83 ; LINUX-ARM: mov r0, r11
84 ; LINUX-ARM: ldr r0, [r0]
85 ; LINUX-ARM: ldr r0, [r0]
86 ; LINUX-ARM: ldr r0, [r0]
87
88 ; LINUX-THUMB2: frameaddr_index3:
89 ; LINUX-THUMB2: str r7, [sp, #-4]!
90 ; LINUX-THUMB2: mov r7, sp
91 ; LINUX-THUMB2: mov r0, r7
92 ; LINUX-THUMB2: ldr r0, [r0]
93 ; LINUX-THUMB2: ldr r0, [r0]
94 ; LINUX-THUMB2: ldr r0, [r0]
95
96   %0 = call i8* @llvm.frameaddress(i32 3)
97   ret i8* %0
98 }
99
100 declare i8* @llvm.frameaddress(i32) nounwind readnone