Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Side by Side Diff: tests_lit/llvm2ice_tests/int-arg.ll

Issue 1416493002: Implements simple returns and call args for Mips. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 ; This file checks that Subzero generates code in accordance with the 1 ; This file checks that Subzero generates code in accordance with the
2 ; calling convention for integers. 2 ; calling convention for integers.
3 3
4 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ 4 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
5 ; RUN: --target x8632 -i %s --args -O2 \ 5 ; RUN: --target x8632 -i %s --args -O2 \
6 ; RUN: | %if --need=target_X8632 --command FileCheck %s 6 ; RUN: | %if --need=target_X8632 --command FileCheck %s
7 7
8 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented) 8 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented)
9 ; once enough infrastructure is in. Also, switch to --filetype=obj 9 ; once enough infrastructure is in. Also, switch to --filetype=obj
10 ; when possible. 10 ; when possible.
11 ; RUN: %if --need=target_ARM32 --need=allow_dump \ 11 ; RUN: %if --need=target_ARM32 --need=allow_dump \
12 ; RUN: --command %p2i --filetype=asm --assemble \ 12 ; RUN: --command %p2i --filetype=asm --assemble \
13 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \ 13 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \
14 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ 14 ; RUN: | %if --need=target_ARM32 --need=allow_dump \
15 ; RUN: --command FileCheck --check-prefix ARM32 %s 15 ; RUN: --command FileCheck --check-prefix ARM32 %s
16 16
17 ; TODO(RKotler): Stop skipping unimplemented parts (via --skip-unimplemented)
18 ; once enough infrastructure is in. Also, switch to --filetype=obj
19 ; when possible.
20 ; RUN: %if --need=target_MIPS32 --need=allow_dump \
21 ; RUN: --command %p2i --filetype=asm --assemble \
22 ; RUN: --disassemble --target mips32 -i %s --args -O2 --skip-unimplemented \
23 ; RUN: | %if --need=target_MIPS32 --need=allow_dump \
24 ; RUN: --command FileCheck --check-prefix MIPS32 %s
25
17 ; For x86-32, integer arguments use the stack. 26 ; For x86-32, integer arguments use the stack.
18 ; For ARM32, integer arguments can be r0-r3. i64 arguments occupy two 27 ; For ARM32, integer arguments can be r0-r3. i64 arguments occupy two
19 ; adjacent 32-bit registers, and require the first to be an even register. 28 ; adjacent 32-bit registers, and require the first to be an even register.
20 29
21 30
22 ; i32 31 ; i32
23 32
24 define i32 @test_returning32_arg0(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i3 2 %arg4, i32 %arg5, i32 %arg6, i32 %arg7) { 33 define i32 @test_returning32_arg0(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i3 2 %arg4, i32 %arg5, i32 %arg6, i32 %arg7) {
25 entry: 34 entry:
26 ret i32 %arg0 35 ret i32 %arg0
27 } 36 }
28 ; CHECK-LABEL: test_returning32_arg0 37 ; CHECK-LABEL: test_returning32_arg0
29 ; CHECK-NEXT: mov eax,{{.*}} [esp+0x4] 38 ; CHECK-NEXT: mov eax,{{.*}} [esp+0x4]
30 ; CHECK-NEXT: ret 39 ; CHECK-NEXT: ret
31 ; ARM32-LABEL: test_returning32_arg0 40 ; ARM32-LABEL: test_returning32_arg0
32 ; ARM32-NEXT: bx lr 41 ; ARM32-NEXT: bx lr
42 ; MIPS32-LABEL: <test_returning32_arg0>
43 ; MIPS32: move v0,a0
44 ; MIPS32-NEXT: jr ra
33 45
34 define i32 @test_returning32_arg1(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i3 2 %arg4, i32 %arg5, i32 %arg6, i32 %arg7) { 46 define i32 @test_returning32_arg1(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i3 2 %arg4, i32 %arg5, i32 %arg6, i32 %arg7) {
35 entry: 47 entry:
36 ret i32 %arg1 48 ret i32 %arg1
37 } 49 }
38 ; CHECK-LABEL: test_returning32_arg1 50 ; CHECK-LABEL: test_returning32_arg1
39 ; CHECK-NEXT: mov eax,{{.*}} [esp+0x8] 51 ; CHECK-NEXT: mov eax,{{.*}} [esp+0x8]
40 ; CHECK-NEXT: ret 52 ; CHECK-NEXT: ret
41 ; ARM32-LABEL: test_returning32_arg1 53 ; ARM32-LABEL: test_returning32_arg1
42 ; ARM32-NEXT: mov r0, r1 54 ; ARM32-NEXT: mov r0, r1
43 ; ARM32-NEXT: bx lr 55 ; ARM32-NEXT: bx lr
44 56 ; MIPS32-LABEL: <test_returning32_arg1>
57 ; MIPS32: move» v0,a1
Jim Stichnoth 2015/10/18 11:48:40 remove tab characters
rkotlerimgtec 2015/10/19 00:12:01 Done.
58 ; MIPS32-NEXT: jr» ra
45 59
46 define i32 @test_returning32_arg2(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i3 2 %arg4, i32 %arg5, i32 %arg6, i32 %arg7) { 60 define i32 @test_returning32_arg2(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i3 2 %arg4, i32 %arg5, i32 %arg6, i32 %arg7) {
47 entry: 61 entry:
48 ret i32 %arg2 62 ret i32 %arg2
49 } 63 }
50 ; CHECK-LABEL: test_returning32_arg2 64 ; CHECK-LABEL: test_returning32_arg2
51 ; CHECK-NEXT: mov eax,{{.*}} [esp+0xc] 65 ; CHECK-NEXT: mov eax,{{.*}} [esp+0xc]
52 ; CHECK-NEXT: ret 66 ; CHECK-NEXT: ret
53 ; ARM32-LABEL: test_returning32_arg2 67 ; ARM32-LABEL: test_returning32_arg2
54 ; ARM32-NEXT: mov r0, r2 68 ; ARM32-NEXT: mov r0, r2
55 ; ARM32-NEXT: bx lr 69 ; ARM32-NEXT: bx lr
70 ; MIPS32-LABEL: <test_returning32_arg2>
71 ; MIPS32: move v0,a2
72 ; MIPS32-NEXT: jr ra
56 73
57 74
58 define i32 @test_returning32_arg3(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i3 2 %arg4, i32 %arg5, i32 %arg6, i32 %arg7) { 75 define i32 @test_returning32_arg3(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i3 2 %arg4, i32 %arg5, i32 %arg6, i32 %arg7) {
59 entry: 76 entry:
60 ret i32 %arg3 77 ret i32 %arg3
61 } 78 }
62 ; CHECK-LABEL: test_returning32_arg3 79 ; CHECK-LABEL: test_returning32_arg3
63 ; CHECK-NEXT: mov eax,{{.*}} [esp+0x10] 80 ; CHECK-NEXT: mov eax,{{.*}} [esp+0x10]
64 ; CHECK-NEXT: ret 81 ; CHECK-NEXT: ret
65 ; ARM32-LABEL: test_returning32_arg3 82 ; ARM32-LABEL: test_returning32_arg3
(...skipping 29 matching lines...) Expand all
95 define i64 @test_returning64_arg0(i64 %arg0, i64 %arg1, i64 %arg2, i64 %arg3) { 112 define i64 @test_returning64_arg0(i64 %arg0, i64 %arg1, i64 %arg2, i64 %arg3) {
96 entry: 113 entry:
97 ret i64 %arg0 114 ret i64 %arg0
98 } 115 }
99 ; CHECK-LABEL: test_returning64_arg0 116 ; CHECK-LABEL: test_returning64_arg0
100 ; CHECK-NEXT: mov {{.*}} [esp+0x4] 117 ; CHECK-NEXT: mov {{.*}} [esp+0x4]
101 ; CHECK-NEXT: mov {{.*}} [esp+0x8] 118 ; CHECK-NEXT: mov {{.*}} [esp+0x8]
102 ; CHECK: ret 119 ; CHECK: ret
103 ; ARM32-LABEL: test_returning64_arg0 120 ; ARM32-LABEL: test_returning64_arg0
104 ; ARM32-NEXT: bx lr 121 ; ARM32-NEXT: bx lr
122 ; MIPS32-LABEL: <test_returning64_arg0>
123 ; MIPS32-NEXT: move v0,a0
124 ; MIPS32-NEXT: move v1,a1
125
105 126
106 define i64 @test_returning64_arg1(i64 %arg0, i64 %arg1, i64 %arg2, i64 %arg3) { 127 define i64 @test_returning64_arg1(i64 %arg0, i64 %arg1, i64 %arg2, i64 %arg3) {
107 entry: 128 entry:
108 ret i64 %arg1 129 ret i64 %arg1
109 } 130 }
110 ; CHECK-LABEL: test_returning64_arg1 131 ; CHECK-LABEL: test_returning64_arg1
111 ; CHECK-NEXT: mov {{.*}} [esp+0xc] 132 ; CHECK-NEXT: mov {{.*}} [esp+0xc]
112 ; CHECK-NEXT: mov {{.*}} [esp+0x10] 133 ; CHECK-NEXT: mov {{.*}} [esp+0x10]
113 ; CHECK: ret 134 ; CHECK: ret
114 ; ARM32-LABEL: test_returning64_arg1 135 ; ARM32-LABEL: test_returning64_arg1
115 ; ARM32-NEXT: mov r0, r2 136 ; ARM32-NEXT: mov r0, r2
116 ; ARM32-NEXT: mov r1, r3 137 ; ARM32-NEXT: mov r1, r3
117 ; ARM32-NEXT: bx lr 138 ; ARM32-NEXT: bx lr
139 ; MIPS32-LABEL: <test_returning64_arg1>
140 ; MIPS32-NEXT: move v0,a2
141 ; MIPS32-NEXT: move v1,a3
118 142
119 define i64 @test_returning64_arg2(i64 %arg0, i64 %arg1, i64 %arg2, i64 %arg3) { 143 define i64 @test_returning64_arg2(i64 %arg0, i64 %arg1, i64 %arg2, i64 %arg3) {
120 entry: 144 entry:
121 ret i64 %arg2 145 ret i64 %arg2
122 } 146 }
123 ; CHECK-LABEL: test_returning64_arg2 147 ; CHECK-LABEL: test_returning64_arg2
124 ; CHECK-NEXT: mov {{.*}} [esp+0x14] 148 ; CHECK-NEXT: mov {{.*}} [esp+0x14]
125 ; CHECK-NEXT: mov {{.*}} [esp+0x18] 149 ; CHECK-NEXT: mov {{.*}} [esp+0x18]
126 ; CHECK: ret 150 ; CHECK: ret
127 ; ARM32-LABEL: test_returning64_arg2 151 ; ARM32-LABEL: test_returning64_arg2
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 ; ARM32-DAG: mov [[REG1:.*]], r1 291 ; ARM32-DAG: mov [[REG1:.*]], r1
268 ; ARM32-DAG: mov [[REG2:.*]], r2 292 ; ARM32-DAG: mov [[REG2:.*]], r2
269 ; ARM32-DAG: mov [[REG3:.*]], r3 293 ; ARM32-DAG: mov [[REG3:.*]], r3
270 ; ARM32: str [[REG2]], [sp] 294 ; ARM32: str [[REG2]], [sp]
271 ; ARM32: str [[REG1]], [sp, #4] 295 ; ARM32: str [[REG1]], [sp, #4]
272 ; ARM32-DAG: mov r0 296 ; ARM32-DAG: mov r0
273 ; ARM32-DAG: mov r1 297 ; ARM32-DAG: mov r1
274 ; ARM32-DAG: mov r2 298 ; ARM32-DAG: mov r2
275 ; ARM32-DAG: mov r3, [[REG3]] 299 ; ARM32-DAG: mov r3, [[REG3]]
276 ; ARM32: bl 300 ; ARM32: bl
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698