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

Side by Side Diff: tests_lit/llvm2ice_tests/64bit.pnacl.ll

Issue 1687553002: Change all ARM calls into indirect calls. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fix nits. Created 4 years, 10 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
« no previous file with comments | « tests_lit/assembler/arm32/vpush.ll ('k') | tests_lit/llvm2ice_tests/alloc.ll » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 ; This tries to be a comprehensive test of i64 operations, in 1 ; This tries to be a comprehensive test of i64 operations, in
2 ; particular the patterns for lowering i64 operations into constituent 2 ; particular the patterns for lowering i64 operations into constituent
3 ; i32 operations on x86-32. 3 ; i32 operations on x86-32.
4 4
5 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ 5 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
6 ; RUN: --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \ 6 ; RUN: --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \
7 ; RUN: | %if --need=target_X8632 --command FileCheck %s 7 ; RUN: | %if --need=target_X8632 --command FileCheck %s
8 8
9 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ 9 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
10 ; RUN: --target x8632 -i %s --args -Om1 -allow-externally-defined-symbols \ 10 ; RUN: --target x8632 -i %s --args -Om1 -allow-externally-defined-symbols \
11 ; RUN: | %if --need=target_X8632 --command FileCheck --check-prefix=OPTM1 %s 11 ; RUN: | %if --need=target_X8632 --command FileCheck --check-prefix=OPTM1 %s
12 12
13 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented)
14 ; once enough infrastructure is in. Also, switch to --filetype=obj
15 ; when possible.
16 ; RUN: %if --need=target_ARM32 --need=allow_dump \ 13 ; RUN: %if --need=target_ARM32 --need=allow_dump \
17 ; RUN: --command %p2i --filetype=asm --assemble \ 14 ; RUN: --command %p2i --filetype=obj --assemble \
18 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \ 15 ; RUN: --disassemble --target arm32 -i %s --args -O2 \
19 ; RUN: -allow-externally-defined-symbols \ 16 ; RUN: -allow-externally-defined-symbols \
20 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ 17 ; RUN: | %if --need=target_ARM32 --need=allow_dump \
21 ; RUN: --command FileCheck --check-prefix ARM32 --check-prefix ARM32-O2 %s 18 ; RUN: --command FileCheck --check-prefix ARM32 --check-prefix ARM32-O2 %s
22 ; RUN: %if --need=target_ARM32 --need=allow_dump \ 19 ; RUN: %if --need=target_ARM32 --need=allow_dump \
23 ; RUN: --command %p2i --filetype=asm --assemble --disassemble --target arm32 \ 20 ; RUN: --command %p2i --filetype=obj --assemble --disassemble --target arm32 \
24 ; RUN: -i %s --args -Om1 --skip-unimplemented \ 21 ; RUN: -i %s --args -Om1 \
25 ; RUN: -allow-externally-defined-symbols \ 22 ; RUN: -allow-externally-defined-symbols \
26 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ 23 ; RUN: | %if --need=target_ARM32 --need=allow_dump \
27 ; RUN: --command FileCheck --check-prefix ARM32 --check-prefix ARM32-OM1 %s 24 ; RUN: --command FileCheck --check-prefix ARM32 --check-prefix ARM32-OM1 %s
28 25
29 ; TODO(rkotler): Stop skipping unimplemented parts (via --skip-unimplemented) 26 ; TODO(rkotler): Stop skipping unimplemented parts (via --skip-unimplemented)
30 ; once enough infrastructure is in. Also, switch to --filetype=obj 27 ; once enough infrastructure is in. Also, switch to --filetype=obj
31 ; when possible. 28 ; when possible.
32 ; RUN: %if --need=target_MIPS32 --need=allow_dump \ 29 ; RUN: %if --need=target_MIPS32 --need=allow_dump \
33 ; RUN: --command %p2i --filetype=asm --assemble \ 30 ; RUN: --command %p2i --filetype=asm --assemble \
34 ; RUN: --disassemble --target mips32 -i %s --args -O2 --skip-unimplemented \ 31 ; RUN: --disassemble --target mips32 -i %s --args -O2 --skip-unimplemented \
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 ; OPTM1: call {{.*}} R_{{.*}} ignore64BitArgNoInline 92 ; OPTM1: call {{.*}} R_{{.*}} ignore64BitArgNoInline
96 ; OPTM1: mov DWORD PTR [esp+0x4] 93 ; OPTM1: mov DWORD PTR [esp+0x4]
97 ; OPTM1: mov DWORD PTR [esp] 94 ; OPTM1: mov DWORD PTR [esp]
98 ; OPTM1: mov DWORD PTR [esp+0x8],0x7b 95 ; OPTM1: mov DWORD PTR [esp+0x8],0x7b
99 ; OPTM1: mov DWORD PTR [esp+0x10] 96 ; OPTM1: mov DWORD PTR [esp+0x10]
100 ; OPTM1: mov DWORD PTR [esp+0xc] 97 ; OPTM1: mov DWORD PTR [esp+0xc]
101 ; OPTM1: call {{.*}} R_{{.*}} ignore64BitArgNoInline 98 ; OPTM1: call {{.*}} R_{{.*}} ignore64BitArgNoInline
102 99
103 ; ARM32-LABEL: pass64BitArg 100 ; ARM32-LABEL: pass64BitArg
104 ; ARM32: str {{.*}}, [sp] 101 ; ARM32: str {{.*}}, [sp]
102 ; ARM32: movw [[CALL:r[0-9]]], {{.+}} ignore64BitArgNoInline
103 ; ARM32: movt [[CALL]], {{.+}} ignore64BitArgNoInline
105 ; ARM32: mov r2, #123 104 ; ARM32: mov r2, #123
106 ; ARM32: bl {{.*}} ignore64BitArgNoInline 105 ; ARM32: blx [[CALL]]
107 ; ARM32: str {{.*}}, [sp] 106 ; ARM32: str {{.*}}, [sp]
107 ; ARM32: movw [[CALL:r[0-9]]], {{.+}} ignore64BitArgNoInline
108 ; ARM32: movt [[CALL]], {{.+}} ignore64BitArgNoInline
108 ; ARM32: {{mov|ldr}} r0 109 ; ARM32: {{mov|ldr}} r0
109 ; ARM32: {{mov|ldr}} r1 110 ; ARM32: {{mov|ldr}} r1
110 ; ARM32: mov r2, #123 111 ; ARM32: mov r2, #123
111 ; ARM32: bl {{.*}} ignore64BitArgNoInline 112 ; ARM32: blx [[CALL]]
112 ; ARM32: str {{.*}}, [sp] 113 ; ARM32: str {{.*}}, [sp]
114 ; ARM32: movw [[CALL:r[0-9]]], {{.+}} ignore64BitArgNoInline
115 ; ARM32: movt [[CALL]], {{.+}} ignore64BitArgNoInline
113 ; ARM32: {{mov|ldr}} r0 116 ; ARM32: {{mov|ldr}} r0
114 ; ARM32: {{mov|ldr}} r1 117 ; ARM32: {{mov|ldr}} r1
115 ; ARM32: mov r2, #123 118 ; ARM32: mov r2, #123
116 ; ARM32: bl {{.*}} ignore64BitArgNoInline 119 ; ARM32: blx [[CALL]]
117 120
118 ; MIPS32-LABEL: pass64BitArg 121 ; MIPS32-LABEL: pass64BitArg
119 122
120 123
121 declare i32 @ignore64BitArgNoInline(i64, i32, i64) 124 declare i32 @ignore64BitArgNoInline(i64, i32, i64)
122 125
123 define internal i32 @pass64BitConstArg(i64 %a, i64 %b) { 126 define internal i32 @pass64BitConstArg(i64 %a, i64 %b) {
124 entry: 127 entry:
125 %call = call i32 @ignore64BitArgNoInline(i64 %b, i32 123, i64 -240105309230672 5256) 128 %call = call i32 @ignore64BitArgNoInline(i64 %b, i32 123, i64 -240105309230672 5256)
126 ret i32 %call 129 ret i32 %call
(...skipping 21 matching lines...) Expand all
148 ; OPTM1-NOT: mov 151 ; OPTM1-NOT: mov
149 ; OPTM1: call {{.*}} R_{{.*}} ignore64BitArgNoInline 152 ; OPTM1: call {{.*}} R_{{.*}} ignore64BitArgNoInline
150 153
151 ; ARM32-LABEL: pass64BitConstArg 154 ; ARM32-LABEL: pass64BitConstArg
152 ; ARM32: movw [[REG1:r.*]], {{.*}} ; 0xbeef 155 ; ARM32: movw [[REG1:r.*]], {{.*}} ; 0xbeef
153 ; ARM32: movt [[REG1]], {{.*}} ; 0xdead 156 ; ARM32: movt [[REG1]], {{.*}} ; 0xdead
154 ; ARM32: movw [[REG2:r.*]], {{.*}} ; 0x5678 157 ; ARM32: movw [[REG2:r.*]], {{.*}} ; 0x5678
155 ; ARM32: movt [[REG2]], {{.*}} ; 0x1234 158 ; ARM32: movt [[REG2]], {{.*}} ; 0x1234
156 ; ARM32: str [[REG1]], [sp, #4] 159 ; ARM32: str [[REG1]], [sp, #4]
157 ; ARM32: str [[REG2]], [sp] 160 ; ARM32: str [[REG2]], [sp]
161 ; ARM32: movw [[CALL:r[0-9]]], {{.+}} ignore64BitArgNoInline
162 ; ARM32: movt [[CALL]], {{.+}} ignore64BitArgNoInline
158 ; ARM32: {{mov|ldr}} r0 163 ; ARM32: {{mov|ldr}} r0
159 ; ARM32: {{mov|ldr}} r1 164 ; ARM32: {{mov|ldr}} r1
160 ; ARM32: mov r2, #123 165 ; ARM32: mov r2, #123
161 ; ARM32: bl {{.*}} ignore64BitArgNoInline 166 ; ARM32: blx [[CALL]]
167
162 168
163 define internal i32 @pass64BitUndefArg() { 169 define internal i32 @pass64BitUndefArg() {
164 entry: 170 entry:
165 %call = call i32 @ignore64BitArgNoInline(i64 0, i32 123, i64 undef) 171 %call = call i32 @ignore64BitArgNoInline(i64 0, i32 123, i64 undef)
166 ret i32 %call 172 ret i32 %call
167 } 173 }
168 ; CHECK-LABEL: pass64BitUndefArg 174 ; CHECK-LABEL: pass64BitUndefArg
169 ; CHECK: sub esp 175 ; CHECK: sub esp
170 ; CHECK: mov DWORD PTR{{.*}},0x7b 176 ; CHECK: mov DWORD PTR{{.*}},0x7b
171 ; CHECK: mov DWORD PTR{{.*}},0x0 177 ; CHECK: mov DWORD PTR{{.*}},0x0
172 ; CHECK: call {{.*}} R_{{.*}} ignore64BitArgNoInline 178 ; CHECK: call {{.*}} R_{{.*}} ignore64BitArgNoInline
173 ; OPTM1-LABEL: pass64BitUndefArg 179 ; OPTM1-LABEL: pass64BitUndefArg
174 ; OPTM1: sub esp 180 ; OPTM1: sub esp
175 ; OPTM1: mov DWORD PTR{{.*}},0x7b 181 ; OPTM1: mov DWORD PTR{{.*}},0x7b
176 ; OPTM1: mov DWORD PTR{{.*}},0x0 182 ; OPTM1: mov DWORD PTR{{.*}},0x0
177 ; OPTM1: call {{.*}} R_{{.*}} ignore64BitArgNoInline 183 ; OPTM1: call {{.*}} R_{{.*}} ignore64BitArgNoInline
178 ; ARM32-LABEL: pass64BitUndefArg 184 ; ARM32-LABEL: pass64BitUndefArg
179 ; ARM32: sub sp 185 ; ARM32: sub sp
180 ; ARM32: mov {{.*}}, #0 186 ; ARM32: mov {{.*}}, #0
181 ; ARM32: str 187 ; ARM32: str
188 ; ARM32: movw [[CALL:r[0-9]]], {{.+}} ignore64BitArgNoInline
189 ; ARM32: movt [[CALL]], {{.+}} ignore64BitArgNoInline
182 ; ARM32: mov {{.*}}, #123 190 ; ARM32: mov {{.*}}, #123
183 ; ARM32: bl {{.*}} ignore64BitArgNoInline 191 ; ARM32: blx [[CALL]]
184 192
185 ; MIPS32-LABEL: pass64BitUndefArg 193 ; MIPS32-LABEL: pass64BitUndefArg
186 ; MIPS32: jr ra 194 ; MIPS32: jr ra
187 195
188 define internal i64 @return64BitArg(i64 %padding, i64 %a) { 196 define internal i64 @return64BitArg(i64 %padding, i64 %a) {
189 entry: 197 entry:
190 ret i64 %a 198 ret i64 %a
191 } 199 }
192 ; CHECK-LABEL: return64BitArg 200 ; CHECK-LABEL: return64BitArg
193 ; CHECK: mov {{.*}},DWORD PTR [esp+0xc] 201 ; CHECK: mov {{.*}},DWORD PTR [esp+0xc]
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 } 389 }
382 ; CHECK-LABEL: div64BitSigned 390 ; CHECK-LABEL: div64BitSigned
383 ; CHECK: call {{.*}} R_{{.*}} __divdi3 391 ; CHECK: call {{.*}} R_{{.*}} __divdi3
384 392
385 ; OPTM1-LABEL: div64BitSigned 393 ; OPTM1-LABEL: div64BitSigned
386 ; OPTM1: call {{.*}} R_{{.*}} __divdi3 394 ; OPTM1: call {{.*}} R_{{.*}} __divdi3
387 ; 395 ;
388 ; ARM32-LABEL: div64BitSigned 396 ; ARM32-LABEL: div64BitSigned
389 ; ARM32: orrs {{r.*}}, {{r.*}} 397 ; ARM32: orrs {{r.*}}, {{r.*}}
390 ; ARM32: bne 398 ; ARM32: bne
391 ; ARM32: bl {{.*}} __divdi3 399 ; ARM32: movw» [[CALL:r[0-9]]], {{.+}} __divdi3
400 ; ARM32: movt» [[CALL]], {{.+}} __divdi3
401 ; ARM32: blx [[CALL]]
392 402
393 define internal i64 @div64BitSignedConst(i64 %a) { 403 define internal i64 @div64BitSignedConst(i64 %a) {
394 entry: 404 entry:
395 %div = sdiv i64 %a, 12345678901234 405 %div = sdiv i64 %a, 12345678901234
396 ret i64 %div 406 ret i64 %div
397 } 407 }
398 ; CHECK-LABEL: div64BitSignedConst 408 ; CHECK-LABEL: div64BitSignedConst
399 ; CHECK: mov DWORD PTR [esp+0xc],0xb3a 409 ; CHECK: mov DWORD PTR [esp+0xc],0xb3a
400 ; CHECK: mov DWORD PTR [esp+0x8],0x73ce2ff2 410 ; CHECK: mov DWORD PTR [esp+0x8],0x73ce2ff2
401 ; CHECK: call {{.*}} R_{{.*}} __divdi3 411 ; CHECK: call {{.*}} R_{{.*}} __divdi3
402 ; 412 ;
403 ; OPTM1-LABEL: div64BitSignedConst 413 ; OPTM1-LABEL: div64BitSignedConst
404 ; OPTM1: mov DWORD PTR [esp+0xc],0xb3a 414 ; OPTM1: mov DWORD PTR [esp+0xc],0xb3a
405 ; OPTM1: mov DWORD PTR [esp+0x8],0x73ce2ff2 415 ; OPTM1: mov DWORD PTR [esp+0x8],0x73ce2ff2
406 ; OPTM1: call {{.*}} R_{{.*}} __divdi3 416 ; OPTM1: call {{.*}} R_{{.*}} __divdi3
407 ; 417 ;
408 ; ARM32-LABEL: div64BitSignedConst 418 ; ARM32-LABEL: div64BitSignedConst
409 ; For a constant, we should be able to optimize-out the divide by zero check. 419 ; For a constant, we should be able to optimize-out the divide by zero check.
410 ; ARM32-NOT: orrs 420 ; ARM32-NOT: orrs
421 ; ARM32: movw [[CALL:r[0-9]]], {{.+}} __divdi3
422 ; ARM32: movt [[CALL]], {{.+}} __divdi3
411 ; ARM32: movw {{.*}} ; 0x2ff2 423 ; ARM32: movw {{.*}} ; 0x2ff2
412 ; ARM32: movt {{.*}} ; 0x73ce 424 ; ARM32: movt {{.*}} ; 0x73ce
413 ; ARM32: movw {{.*}} ; 0xb3a 425 ; ARM32: movw {{.*}} ; 0xb3a
414 ; ARM32: bl {{.*}} __divdi3 426 ; ARM32: blx [[CALL]]
415 427
416 define internal i64 @div64BitUnsigned(i64 %a, i64 %b) { 428 define internal i64 @div64BitUnsigned(i64 %a, i64 %b) {
417 entry: 429 entry:
418 %div = udiv i64 %a, %b 430 %div = udiv i64 %a, %b
419 ret i64 %div 431 ret i64 %div
420 } 432 }
421 ; CHECK-LABEL: div64BitUnsigned 433 ; CHECK-LABEL: div64BitUnsigned
422 ; CHECK: call {{.*}} R_{{.*}} __udivdi3 434 ; CHECK: call {{.*}} R_{{.*}} __udivdi3
423 ; 435 ;
424 ; OPTM1-LABEL: div64BitUnsigned 436 ; OPTM1-LABEL: div64BitUnsigned
425 ; OPTM1: call {{.*}} R_{{.*}} __udivdi3 437 ; OPTM1: call {{.*}} R_{{.*}} __udivdi3
426 ; 438 ;
427 ; ARM32-LABEL: div64BitUnsigned 439 ; ARM32-LABEL: div64BitUnsigned
428 ; ARM32: orrs {{r.*}}, {{r.*}} 440 ; ARM32: orrs {{r.*}}, {{r.*}}
429 ; ARM32: bne 441 ; ARM32: bne
430 ; ARM32: bl {{.*}} __udivdi3 442 ; ARM32: movw [[CALL:r[0-9]]], {{.+}} __udivdi3
443 ; ARM32: movt [[CALL]], {{.+}} __udivdi3
444 ; ARM32: blx [[CALL]]
431 445
432 define internal i64 @rem64BitSigned(i64 %a, i64 %b) { 446 define internal i64 @rem64BitSigned(i64 %a, i64 %b) {
433 entry: 447 entry:
434 %rem = srem i64 %a, %b 448 %rem = srem i64 %a, %b
435 ret i64 %rem 449 ret i64 %rem
436 } 450 }
437 ; CHECK-LABEL: rem64BitSigned 451 ; CHECK-LABEL: rem64BitSigned
438 ; CHECK: call {{.*}} R_{{.*}} __moddi3 452 ; CHECK: call {{.*}} R_{{.*}} __moddi3
439 ; 453 ;
440 ; OPTM1-LABEL: rem64BitSigned 454 ; OPTM1-LABEL: rem64BitSigned
441 ; OPTM1: call {{.*}} R_{{.*}} __moddi3 455 ; OPTM1: call {{.*}} R_{{.*}} __moddi3
442 ; 456 ;
443 ; ARM32-LABEL: rem64BitSigned 457 ; ARM32-LABEL: rem64BitSigned
444 ; ARM32: orrs {{r.*}}, {{r.*}} 458 ; ARM32: orrs {{r.*}}, {{r.*}}
445 ; ARM32: bne 459 ; ARM32: bne
446 ; ARM32: bl {{.*}} __moddi3 460 ; ARM32: movw [[CALL:r[0-9]]], {{.+}} __moddi3
461 ; ARM32: movt [[CALL]], {{.+}} __moddi3
462 ; ARM32: blx [[CALL]]
447 463
448 define internal i64 @rem64BitUnsigned(i64 %a, i64 %b) { 464 define internal i64 @rem64BitUnsigned(i64 %a, i64 %b) {
449 entry: 465 entry:
450 %rem = urem i64 %a, %b 466 %rem = urem i64 %a, %b
451 ret i64 %rem 467 ret i64 %rem
452 } 468 }
453 ; CHECK-LABEL: rem64BitUnsigned 469 ; CHECK-LABEL: rem64BitUnsigned
454 ; CHECK: call {{.*}} R_{{.*}} __umoddi3 470 ; CHECK: call {{.*}} R_{{.*}} __umoddi3
455 ; 471 ;
456 ; OPTM1-LABEL: rem64BitUnsigned 472 ; OPTM1-LABEL: rem64BitUnsigned
457 ; OPTM1: call {{.*}} R_{{.*}} __umoddi3 473 ; OPTM1: call {{.*}} R_{{.*}} __umoddi3
458 ; 474 ;
459 ; ARM32-LABEL: rem64BitUnsigned 475 ; ARM32-LABEL: rem64BitUnsigned
460 ; ARM32: orrs {{r.*}}, {{r.*}} 476 ; ARM32: orrs {{r.*}}, {{r.*}}
461 ; ARM32: bne 477 ; ARM32: bne
462 ; ARM32: bl {{.*}} __umoddi3 478 ; ARM32: movw [[CALL:r[0-9]]], {{.+}} __umoddi3
479 ; ARM32: movt [[CALL]], {{.+}} __umoddi3
480 ; ARM32: blx [[CALL]]
463 481
464 define internal i64 @shl64BitSigned(i64 %a, i64 %b) { 482 define internal i64 @shl64BitSigned(i64 %a, i64 %b) {
465 entry: 483 entry:
466 %shl = shl i64 %a, %b 484 %shl = shl i64 %a, %b
467 ret i64 %shl 485 ret i64 %shl
468 } 486 }
469 ; CHECK-LABEL: shl64BitSigned 487 ; CHECK-LABEL: shl64BitSigned
470 ; CHECK: shld 488 ; CHECK: shld
471 ; CHECK: shl e 489 ; CHECK: shl e
472 ; CHECK: test {{.*}},0x20 490 ; CHECK: test {{.*}},0x20
(...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after
1115 ; OPTM1-NEXT: cmp [[RESULT]],0x0 1133 ; OPTM1-NEXT: cmp [[RESULT]],0x0
1116 ; OPTM1-NEXT: jne 1134 ; OPTM1-NEXT: jne
1117 ; OPTM1-NEXT: jmp 1135 ; OPTM1-NEXT: jmp
1118 ; OPTM1-NEXT: call 1136 ; OPTM1-NEXT: call
1119 1137
1120 ; ARM32-LABEL: icmpEq64 1138 ; ARM32-LABEL: icmpEq64
1121 ; ARM32: cmp 1139 ; ARM32: cmp
1122 ; ARM32: cmpeq 1140 ; ARM32: cmpeq
1123 ; ARM32-OM1: tst 1141 ; ARM32-OM1: tst
1124 ; ARM32: bne 1142 ; ARM32: bne
1125 ; ARM32: bl {{.*}} <func> 1143 ; ARM32: movw [[CALL:r[0-9]]], {{.+}} func
1144 ; ARM32: movt [[CALL]], {{.+}} func
1145 ; ARM32: blx [[CALL]]
1126 ; ARM32: cmp 1146 ; ARM32: cmp
1127 ; ARM32: cmpeq 1147 ; ARM32: cmpeq
1128 ; ARM32-OM1: tst 1148 ; ARM32-OM1: tst
1129 ; ARM32: bne 1149 ; ARM32: bne
1130 ; ARM32: bl {{.*}} <func> 1150 ; ARM32: movw [[CALL:r[0-9]]], {{.+}} func
1151 ; ARM32: movt [[CALL]], {{.+}} func
1152 ; ARM32: blx [[CALL]]
1131 ; ARM32: bx 1153 ; ARM32: bx
1132 1154
1133 declare void @func() 1155 declare void @func()
1134 1156
1135 define internal void @icmpNe64(i64 %a, i64 %b, i64 %c, i64 %d) { 1157 define internal void @icmpNe64(i64 %a, i64 %b, i64 %c, i64 %d) {
1136 entry: 1158 entry:
1137 %cmp = icmp ne i64 %a, %b 1159 %cmp = icmp ne i64 %a, %b
1138 br i1 %cmp, label %if.then, label %if.end 1160 br i1 %cmp, label %if.then, label %if.end
1139 1161
1140 if.then: ; preds = %entry 1162 if.then: ; preds = %entry
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1185 ; OPTM1-NEXT: jne {{.*}} 1207 ; OPTM1-NEXT: jne {{.*}}
1186 ; OPTM1-NEXT: jmp {{.*}} 1208 ; OPTM1-NEXT: jmp {{.*}}
1187 ; OPTM1-NEXT: call 1209 ; OPTM1-NEXT: call
1188 1210
1189 ; ARM32-LABEL: icmpNe64 1211 ; ARM32-LABEL: icmpNe64
1190 ; ARM32: cmp 1212 ; ARM32: cmp
1191 ; ARM32: cmpeq 1213 ; ARM32: cmpeq
1192 ; ARM32-OM1: tst 1214 ; ARM32-OM1: tst
1193 ; ARM32-OM1: bne 1215 ; ARM32-OM1: bne
1194 ; ARM32-O2: beq 1216 ; ARM32-O2: beq
1195 ; ARM32: bl {{.*}} <func> 1217 ; ARM32: movw [[CALL:r[0-9]]], {{.+}} func
1218 ; ARM32: movt [[CALL]], {{.+}} func
1219 ; ARM32: blx [[CALL]]
1196 ; ARM32: cmp 1220 ; ARM32: cmp
1197 ; ARM32: cmpeq 1221 ; ARM32: cmpeq
1198 ; ARM32-OM1: tst 1222 ; ARM32-OM1: tst
1199 ; ARM32-OM1: bne 1223 ; ARM32-OM1: bne
1200 ; ARM32-O2: beq 1224 ; ARM32-O2: beq
1201 ; ARM32: bl 1225 ; ARM32: bl
1202 1226
1203 define internal void @icmpGt64(i64 %a, i64 %b, i64 %c, i64 %d) { 1227 define internal void @icmpGt64(i64 %a, i64 %b, i64 %c, i64 %d) {
1204 entry: 1228 entry:
1205 %cmp = icmp ugt i64 %a, %b 1229 %cmp = icmp ugt i64 %a, %b
(...skipping 724 matching lines...) Expand 10 before | Expand all | Expand 10 after
1930 ; CHECK-LABEL: phi64Undef 1954 ; CHECK-LABEL: phi64Undef
1931 ; CHECK: mov {{.*}},0x0 1955 ; CHECK: mov {{.*}},0x0
1932 ; CHECK: mov {{.*}},0x0 1956 ; CHECK: mov {{.*}},0x0
1933 ; OPTM1-LABEL: phi64Undef 1957 ; OPTM1-LABEL: phi64Undef
1934 ; OPTM1: mov {{.*}},0x0 1958 ; OPTM1: mov {{.*}},0x0
1935 ; OPTM1: mov {{.*}},0x0 1959 ; OPTM1: mov {{.*}},0x0
1936 ; ARM32-LABEL: phi64Undef 1960 ; ARM32-LABEL: phi64Undef
1937 ; ARM32: mov {{.*}} #0 1961 ; ARM32: mov {{.*}} #0
1938 ; ARM32: mov {{.*}} #0 1962 ; ARM32: mov {{.*}} #0
1939 1963
OLDNEW
« no previous file with comments | « tests_lit/assembler/arm32/vpush.ll ('k') | tests_lit/llvm2ice_tests/alloc.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698