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

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

Issue 1640913004: Subzero: Mips: Lower some i64 arithmetic instructions (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: changes suggested by stichnot and jpp 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 | « src/IceTargetLoweringMIPS32.cpp ('k') | no next file » | 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) 13 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented)
14 ; once enough infrastructure is in. Also, switch to --filetype=obj 14 ; once enough infrastructure is in. Also, switch to --filetype=obj
15 ; when possible. 15 ; when possible.
16 ; RUN: %if --need=target_ARM32 --need=allow_dump \ 16 ; RUN: %if --need=target_ARM32 --need=allow_dump \
17 ; RUN: --command %p2i --filetype=asm --assemble \ 17 ; RUN: --command %p2i --filetype=asm --assemble \
18 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \ 18 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \
19 ; RUN: -allow-externally-defined-symbols \ 19 ; RUN: -allow-externally-defined-symbols \
20 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ 20 ; RUN: | %if --need=target_ARM32 --need=allow_dump \
21 ; RUN: --command FileCheck --check-prefix ARM32 --check-prefix ARM32-O2 %s 21 ; RUN: --command FileCheck --check-prefix ARM32 --check-prefix ARM32-O2 %s
22 ; RUN: %if --need=target_ARM32 --need=allow_dump \ 22 ; RUN: %if --need=target_ARM32 --need=allow_dump \
23 ; RUN: --command %p2i --filetype=asm --assemble --disassemble --target arm32 \ 23 ; RUN: --command %p2i --filetype=asm --assemble --disassemble --target arm32 \
24 ; RUN: -i %s --args -Om1 --skip-unimplemented \ 24 ; RUN: -i %s --args -Om1 --skip-unimplemented \
25 ; RUN: -allow-externally-defined-symbols \ 25 ; RUN: -allow-externally-defined-symbols \
26 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ 26 ; RUN: | %if --need=target_ARM32 --need=allow_dump \
27 ; RUN: --command FileCheck --check-prefix ARM32 --check-prefix ARM32-OM1 %s 27 ; RUN: --command FileCheck --check-prefix ARM32 --check-prefix ARM32-OM1 %s
28 28
29 ; TODO(rkotler): Stop skipping unimplemented parts (via --skip-unimplemented)
30 ; once enough infrastructure is in. Also, switch to --filetype=obj
31 ; when possible.
32 ; RUN: %if --need=target_MIPS32 --need=allow_dump \
33 ; RUN: --command %p2i --filetype=asm --assemble \
34 ; RUN: --disassemble --target mips32 -i %s --args -O2 --skip-unimplemented \
35 ; RUN: -allow-externally-defined-symbols \
36 ; RUN: | %if --need=target_MIPS32 --need=allow_dump \
37 ; RUN: --command FileCheck --check-prefix MIPS32 %s
38
29 @__init_array_start = internal constant [0 x i8] zeroinitializer, align 4 39 @__init_array_start = internal constant [0 x i8] zeroinitializer, align 4
30 @__fini_array_start = internal constant [0 x i8] zeroinitializer, align 4 40 @__fini_array_start = internal constant [0 x i8] zeroinitializer, align 4
31 @__tls_template_start = internal constant [0 x i8] zeroinitializer, align 8 41 @__tls_template_start = internal constant [0 x i8] zeroinitializer, align 8
32 @__tls_template_alignment = internal constant [4 x i8] c"\01\00\00\00", align 4 42 @__tls_template_alignment = internal constant [4 x i8] c"\01\00\00\00", align 4
33 43
34 define internal i32 @ignore64BitArg(i64 %a, i32 %b, i64 %c) { 44 define internal i32 @ignore64BitArg(i64 %a, i32 %b, i64 %c) {
35 entry: 45 entry:
36 ret i32 %b 46 ret i32 %b
37 } 47 }
38 48
49 ; MIPS32-LABEL: ignore64BitArg
50 ; MIPS32: move v0,a2
51
39 define internal i32 @pass64BitArg(i64 %a, i64 %b, i64 %c, i64 %d, i64 %e, i64 %f ) { 52 define internal i32 @pass64BitArg(i64 %a, i64 %b, i64 %c, i64 %d, i64 %e, i64 %f ) {
40 entry: 53 entry:
41 %call = call i32 @ignore64BitArgNoInline(i64 %a, i32 123, i64 %b) 54 %call = call i32 @ignore64BitArgNoInline(i64 %a, i32 123, i64 %b)
42 %call1 = call i32 @ignore64BitArgNoInline(i64 %c, i32 123, i64 %d) 55 %call1 = call i32 @ignore64BitArgNoInline(i64 %c, i32 123, i64 %d)
43 %call2 = call i32 @ignore64BitArgNoInline(i64 %e, i32 123, i64 %f) 56 %call2 = call i32 @ignore64BitArgNoInline(i64 %e, i32 123, i64 %f)
44 %add = add i32 %call1, %call 57 %add = add i32 %call1, %call
45 %add3 = add i32 %add, %call2 58 %add3 = add i32 %add, %call2
46 ret i32 %add3 59 ret i32 %add3
47 } 60 }
48 ; CHECK-LABEL: pass64BitArg 61 ; CHECK-LABEL: pass64BitArg
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 ; ARM32: {{mov|ldr}} r0 108 ; ARM32: {{mov|ldr}} r0
96 ; ARM32: {{mov|ldr}} r1 109 ; ARM32: {{mov|ldr}} r1
97 ; ARM32: mov r2, #123 110 ; ARM32: mov r2, #123
98 ; ARM32: bl {{.*}} ignore64BitArgNoInline 111 ; ARM32: bl {{.*}} ignore64BitArgNoInline
99 ; ARM32: str {{.*}}, [sp] 112 ; ARM32: str {{.*}}, [sp]
100 ; ARM32: {{mov|ldr}} r0 113 ; ARM32: {{mov|ldr}} r0
101 ; ARM32: {{mov|ldr}} r1 114 ; ARM32: {{mov|ldr}} r1
102 ; ARM32: mov r2, #123 115 ; ARM32: mov r2, #123
103 ; ARM32: bl {{.*}} ignore64BitArgNoInline 116 ; ARM32: bl {{.*}} ignore64BitArgNoInline
104 117
118 ; MIPS32-LABEL: pass64BitArg
119
105 120
106 declare i32 @ignore64BitArgNoInline(i64, i32, i64) 121 declare i32 @ignore64BitArgNoInline(i64, i32, i64)
107 122
108 define internal i32 @pass64BitConstArg(i64 %a, i64 %b) { 123 define internal i32 @pass64BitConstArg(i64 %a, i64 %b) {
109 entry: 124 entry:
110 %call = call i32 @ignore64BitArgNoInline(i64 %b, i32 123, i64 -240105309230672 5256) 125 %call = call i32 @ignore64BitArgNoInline(i64 %b, i32 123, i64 -240105309230672 5256)
111 ret i32 %call 126 ret i32 %call
112 } 127 }
113 ; CHECK-LABEL: pass64BitConstArg 128 ; CHECK-LABEL: pass64BitConstArg
114 ; CHECK: sub esp 129 ; CHECK: sub esp
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 ; OPTM1: mov DWORD PTR{{.*}},0x7b 175 ; OPTM1: mov DWORD PTR{{.*}},0x7b
161 ; OPTM1: mov DWORD PTR{{.*}},0x0 176 ; OPTM1: mov DWORD PTR{{.*}},0x0
162 ; OPTM1: call {{.*}} R_{{.*}} ignore64BitArgNoInline 177 ; OPTM1: call {{.*}} R_{{.*}} ignore64BitArgNoInline
163 ; ARM32-LABEL: pass64BitUndefArg 178 ; ARM32-LABEL: pass64BitUndefArg
164 ; ARM32: sub sp 179 ; ARM32: sub sp
165 ; ARM32: mov {{.*}}, #0 180 ; ARM32: mov {{.*}}, #0
166 ; ARM32: str 181 ; ARM32: str
167 ; ARM32: mov {{.*}}, #123 182 ; ARM32: mov {{.*}}, #123
168 ; ARM32: bl {{.*}} ignore64BitArgNoInline 183 ; ARM32: bl {{.*}} ignore64BitArgNoInline
169 184
185 ; MIPS32-LABEL: pass64BitUndefArg
186 ; MIPS32: jr ra
187
170 define internal i64 @return64BitArg(i64 %padding, i64 %a) { 188 define internal i64 @return64BitArg(i64 %padding, i64 %a) {
171 entry: 189 entry:
172 ret i64 %a 190 ret i64 %a
173 } 191 }
174 ; CHECK-LABEL: return64BitArg 192 ; CHECK-LABEL: return64BitArg
175 ; CHECK: mov {{.*}},DWORD PTR [esp+0xc] 193 ; CHECK: mov {{.*}},DWORD PTR [esp+0xc]
176 ; CHECK: mov {{.*}},DWORD PTR [esp+0x10] 194 ; CHECK: mov {{.*}},DWORD PTR [esp+0x10]
177 ; 195 ;
178 ; OPTM1-LABEL: return64BitArg 196 ; OPTM1-LABEL: return64BitArg
179 ; OPTM1: mov {{.*}},DWORD PTR [esp+0xc] 197 ; OPTM1: mov {{.*}},DWORD PTR [esp+0xc]
180 ; OPTM1: mov {{.*}},DWORD PTR [esp+0x10] 198 ; OPTM1: mov {{.*}},DWORD PTR [esp+0x10]
181 199
182 ; ARM32-LABEL: return64BitArg 200 ; ARM32-LABEL: return64BitArg
183 ; ARM32: mov {{.*}}, r2 201 ; ARM32: mov {{.*}}, r2
184 ; ARM32: mov {{.*}}, r3 202 ; ARM32: mov {{.*}}, r3
185 ; ARM32: bx lr 203 ; ARM32: bx lr
186 204
205 ; MIPS32-LABEL; return64BitArg
206 ; MIPS32: move v0,a2
207 ; MIPS32: move v1,a3
208 ; MIPS32: jr ra
209
187 define internal i64 @return64BitConst() { 210 define internal i64 @return64BitConst() {
188 entry: 211 entry:
189 ret i64 -2401053092306725256 212 ret i64 -2401053092306725256
190 } 213 }
191 ; CHECK-LABEL: return64BitConst 214 ; CHECK-LABEL: return64BitConst
192 ; CHECK: mov eax,0x12345678 215 ; CHECK: mov eax,0x12345678
193 ; CHECK: mov edx,0xdeadbeef 216 ; CHECK: mov edx,0xdeadbeef
194 ; 217 ;
195 ; OPTM1-LABEL: return64BitConst 218 ; OPTM1-LABEL: return64BitConst
196 ; OPTM1: mov eax,0x12345678 219 ; OPTM1: mov eax,0x12345678
197 ; OPTM1: mov edx,0xdeadbeef 220 ; OPTM1: mov edx,0xdeadbeef
198 221
199 ; ARM32-LABEL: return64BitConst 222 ; ARM32-LABEL: return64BitConst
200 ; ARM32: movw r0, #22136 ; 0x5678 223 ; ARM32: movw r0, #22136 ; 0x5678
201 ; ARM32: movt r0, #4660 ; 0x1234 224 ; ARM32: movt r0, #4660 ; 0x1234
202 ; ARM32: movw r1, #48879 ; 0xbeef 225 ; ARM32: movw r1, #48879 ; 0xbeef
203 ; ARM32: movt r1, #57005 ; 0xdead 226 ; ARM32: movt r1, #57005 ; 0xdead
204 227
228 ; MIPS32-LABEL: return64BitConst
229 ; MIPS32: lui v0,0x1234
230 ; MIPS32: ori v0,v0,0x5678
231 ; MIPS32: lui v1,0xdead
232 ; MIPS32: ori v1,v1,0xbeef
233 ; MIPS32: jr ra
234
205 define internal i64 @add64BitSigned(i64 %a, i64 %b) { 235 define internal i64 @add64BitSigned(i64 %a, i64 %b) {
206 entry: 236 entry:
207 %add = add i64 %b, %a 237 %add = add i64 %b, %a
208 ret i64 %add 238 ret i64 %add
209 } 239 }
210 ; CHECK-LABEL: add64BitSigned 240 ; CHECK-LABEL: add64BitSigned
211 ; CHECK: add 241 ; CHECK: add
212 ; CHECK: adc 242 ; CHECK: adc
213 ; 243 ;
214 ; OPTM1-LABEL: add64BitSigned 244 ; OPTM1-LABEL: add64BitSigned
215 ; OPTM1: add 245 ; OPTM1: add
216 ; OPTM1: adc 246 ; OPTM1: adc
217 247
218 ; ARM32-LABEL: add64BitSigned 248 ; ARM32-LABEL: add64BitSigned
219 ; ARM32: adds 249 ; ARM32: adds
220 ; ARM32: adc 250 ; ARM32: adc
221 251
252 ; MIPS32-LABEL: add64BitSigned
253 ; MIPS32: addu
254 ; MIPS32: sltu
255 ; MIPS32: addu
256 ; MIPS32: addu
257
222 define internal i64 @add64BitUnsigned(i64 %a, i64 %b) { 258 define internal i64 @add64BitUnsigned(i64 %a, i64 %b) {
223 entry: 259 entry:
224 %add = add i64 %b, %a 260 %add = add i64 %b, %a
225 ret i64 %add 261 ret i64 %add
226 } 262 }
227 ; CHECK-LABEL: add64BitUnsigned 263 ; CHECK-LABEL: add64BitUnsigned
228 ; CHECK: add 264 ; CHECK: add
229 ; CHECK: adc 265 ; CHECK: adc
230 ; 266 ;
231 ; OPTM1-LABEL: add64BitUnsigned 267 ; OPTM1-LABEL: add64BitUnsigned
232 ; OPTM1: add 268 ; OPTM1: add
233 ; OPTM1: adc 269 ; OPTM1: adc
234 270
235 ; ARM32-LABEL: add64BitUnsigned 271 ; ARM32-LABEL: add64BitUnsigned
236 ; ARM32: adds 272 ; ARM32: adds
237 ; ARM32: adc 273 ; ARM32: adc
238 274
275 ; MIPS32-LABEL: add64BitUnsigned
276 ; MIPS32: addu
277 ; MIPS32: sltu
278 ; MIPS32: addu
279 ; MIPS32: addu
280
239 define internal i64 @sub64BitSigned(i64 %a, i64 %b) { 281 define internal i64 @sub64BitSigned(i64 %a, i64 %b) {
240 entry: 282 entry:
241 %sub = sub i64 %a, %b 283 %sub = sub i64 %a, %b
242 ret i64 %sub 284 ret i64 %sub
243 } 285 }
244 ; CHECK-LABEL: sub64BitSigned 286 ; CHECK-LABEL: sub64BitSigned
245 ; CHECK: sub 287 ; CHECK: sub
246 ; CHECK: sbb 288 ; CHECK: sbb
247 ; 289 ;
248 ; OPTM1-LABEL: sub64BitSigned 290 ; OPTM1-LABEL: sub64BitSigned
249 ; OPTM1: sub 291 ; OPTM1: sub
250 ; OPTM1: sbb 292 ; OPTM1: sbb
251 293
252 ; ARM32-LABEL: sub64BitSigned 294 ; ARM32-LABEL: sub64BitSigned
253 ; ARM32: subs 295 ; ARM32: subs
254 ; ARM32: sbc 296 ; ARM32: sbc
255 297
298 ; MIPS32-LABEL: sub64BitSigned
299 ; MIPS32: subu
300 ; MIPS32: sltu
301 ; MIPS32: addu
302 ; MIPS32: subu
303
256 define internal i64 @sub64BitUnsigned(i64 %a, i64 %b) { 304 define internal i64 @sub64BitUnsigned(i64 %a, i64 %b) {
257 entry: 305 entry:
258 %sub = sub i64 %a, %b 306 %sub = sub i64 %a, %b
259 ret i64 %sub 307 ret i64 %sub
260 } 308 }
261 ; CHECK-LABEL: sub64BitUnsigned 309 ; CHECK-LABEL: sub64BitUnsigned
262 ; CHECK: sub 310 ; CHECK: sub
263 ; CHECK: sbb 311 ; CHECK: sbb
264 ; 312 ;
265 ; OPTM1-LABEL: sub64BitUnsigned 313 ; OPTM1-LABEL: sub64BitUnsigned
266 ; OPTM1: sub 314 ; OPTM1: sub
267 ; OPTM1: sbb 315 ; OPTM1: sbb
268 316
269 ; ARM32-LABEL: sub64BitUnsigned 317 ; ARM32-LABEL: sub64BitUnsigned
270 ; ARM32: subs 318 ; ARM32: subs
271 ; ARM32: sbc 319 ; ARM32: sbc
272 320
321 ; MIPS32-LABEL: sub64BitUnsigned
322 ; MIPS32: subu
323 ; MIPS32: sltu
324 ; MIPS32: addu
325 ; MIPS32: subu
326
273 define internal i64 @mul64BitSigned(i64 %a, i64 %b) { 327 define internal i64 @mul64BitSigned(i64 %a, i64 %b) {
274 entry: 328 entry:
275 %mul = mul i64 %b, %a 329 %mul = mul i64 %b, %a
276 ret i64 %mul 330 ret i64 %mul
277 } 331 }
278 ; CHECK-LABEL: mul64BitSigned 332 ; CHECK-LABEL: mul64BitSigned
279 ; CHECK: imul 333 ; CHECK: imul
280 ; CHECK: mul 334 ; CHECK: mul
281 ; CHECK: add 335 ; CHECK: add
282 ; CHECK: imul 336 ; CHECK: imul
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
597 ; CHECK: and 651 ; CHECK: and
598 ; 652 ;
599 ; OPTM1-LABEL: and64BitSigned 653 ; OPTM1-LABEL: and64BitSigned
600 ; OPTM1: and 654 ; OPTM1: and
601 ; OPTM1: and 655 ; OPTM1: and
602 656
603 ; ARM32-LABEL: and64BitSigned 657 ; ARM32-LABEL: and64BitSigned
604 ; ARM32: and 658 ; ARM32: and
605 ; ARM32: and 659 ; ARM32: and
606 660
661 ; MIPS32-LABEL: and64BitSigned
662 ; MIPS32: and
663 ; MIPS32: and
664
607 define internal i64 @and64BitUnsigned(i64 %a, i64 %b) { 665 define internal i64 @and64BitUnsigned(i64 %a, i64 %b) {
608 entry: 666 entry:
609 %and = and i64 %b, %a 667 %and = and i64 %b, %a
610 ret i64 %and 668 ret i64 %and
611 } 669 }
612 ; CHECK-LABEL: and64BitUnsigned 670 ; CHECK-LABEL: and64BitUnsigned
613 ; CHECK: and 671 ; CHECK: and
614 ; CHECK: and 672 ; CHECK: and
615 ; 673 ;
616 ; OPTM1-LABEL: and64BitUnsigned 674 ; OPTM1-LABEL: and64BitUnsigned
617 ; OPTM1: and 675 ; OPTM1: and
618 ; OPTM1: and 676 ; OPTM1: and
619 677
620 ; ARM32-LABEL: and64BitUnsigned 678 ; ARM32-LABEL: and64BitUnsigned
621 ; ARM32: and 679 ; ARM32: and
622 ; ARM32: and 680 ; ARM32: and
623 681
682 ; MIPS32-LABEL: and64BitUnsigned
683 ; MIPS32: and
684 ; MIPS32: and
685
624 define internal i64 @or64BitSigned(i64 %a, i64 %b) { 686 define internal i64 @or64BitSigned(i64 %a, i64 %b) {
625 entry: 687 entry:
626 %or = or i64 %b, %a 688 %or = or i64 %b, %a
627 ret i64 %or 689 ret i64 %or
628 } 690 }
629 ; CHECK-LABEL: or64BitSigned 691 ; CHECK-LABEL: or64BitSigned
630 ; CHECK: or 692 ; CHECK: or
631 ; CHECK: or 693 ; CHECK: or
632 ; 694 ;
633 ; OPTM1-LABEL: or64BitSigned 695 ; OPTM1-LABEL: or64BitSigned
634 ; OPTM1: or 696 ; OPTM1: or
635 ; OPTM1: or 697 ; OPTM1: or
636 698
637 ; ARM32-LABEL: or64BitSigned 699 ; ARM32-LABEL: or64BitSigned
638 ; ARM32: orr 700 ; ARM32: orr
639 ; ARM32: orr 701 ; ARM32: orr
640 702
703 ; MIPS32-LABEL: or64BitSigned
704 ; MIPS32: or
705 ; MIPS32: or
706
641 define internal i64 @or64BitUnsigned(i64 %a, i64 %b) { 707 define internal i64 @or64BitUnsigned(i64 %a, i64 %b) {
642 entry: 708 entry:
643 %or = or i64 %b, %a 709 %or = or i64 %b, %a
644 ret i64 %or 710 ret i64 %or
645 } 711 }
646 ; CHECK-LABEL: or64BitUnsigned 712 ; CHECK-LABEL: or64BitUnsigned
647 ; CHECK: or 713 ; CHECK: or
648 ; CHECK: or 714 ; CHECK: or
649 ; 715 ;
650 ; OPTM1-LABEL: or64BitUnsigned 716 ; OPTM1-LABEL: or64BitUnsigned
651 ; OPTM1: or 717 ; OPTM1: or
652 ; OPTM1: or 718 ; OPTM1: or
653 719
654 ; ARM32-LABEL: or64BitUnsigned 720 ; ARM32-LABEL: or64BitUnsigned
655 ; ARM32: orr 721 ; ARM32: orr
656 ; ARM32: orr 722 ; ARM32: orr
657 723
724 ; MIPS32-LABEL: or64BitUnsigned
725 ; MIPS32: or
726 ; MIPS32: or
727
658 define internal i64 @xor64BitSigned(i64 %a, i64 %b) { 728 define internal i64 @xor64BitSigned(i64 %a, i64 %b) {
659 entry: 729 entry:
660 %xor = xor i64 %b, %a 730 %xor = xor i64 %b, %a
661 ret i64 %xor 731 ret i64 %xor
662 } 732 }
663 ; CHECK-LABEL: xor64BitSigned 733 ; CHECK-LABEL: xor64BitSigned
664 ; CHECK: xor 734 ; CHECK: xor
665 ; CHECK: xor 735 ; CHECK: xor
666 ; 736 ;
667 ; OPTM1-LABEL: xor64BitSigned 737 ; OPTM1-LABEL: xor64BitSigned
668 ; OPTM1: xor 738 ; OPTM1: xor
669 ; OPTM1: xor 739 ; OPTM1: xor
670 740
671 ; ARM32-LABEL: xor64BitSigned 741 ; ARM32-LABEL: xor64BitSigned
672 ; ARM32: eor 742 ; ARM32: eor
673 ; ARM32: eor 743 ; ARM32: eor
674 744
745 ; MIPS32-LABEL: xor64BitSigned
746 ; MIPS32: xor
747 ; MIPS32: xor
748
675 define internal i64 @xor64BitUnsigned(i64 %a, i64 %b) { 749 define internal i64 @xor64BitUnsigned(i64 %a, i64 %b) {
676 entry: 750 entry:
677 %xor = xor i64 %b, %a 751 %xor = xor i64 %b, %a
678 ret i64 %xor 752 ret i64 %xor
679 } 753 }
680 ; CHECK-LABEL: xor64BitUnsigned 754 ; CHECK-LABEL: xor64BitUnsigned
681 ; CHECK: xor 755 ; CHECK: xor
682 ; CHECK: xor 756 ; CHECK: xor
683 ; 757 ;
684 ; OPTM1-LABEL: xor64BitUnsigned 758 ; OPTM1-LABEL: xor64BitUnsigned
685 ; OPTM1: xor 759 ; OPTM1: xor
686 ; OPTM1: xor 760 ; OPTM1: xor
687 761
688 ; ARM32-LABEL: xor64BitUnsigned 762 ; ARM32-LABEL: xor64BitUnsigned
689 ; ARM32: eor 763 ; ARM32: eor
690 ; ARM32: eor 764 ; ARM32: eor
691 765
766 ; MIPS32-LABEL: xor64BitUnsigned
767 ; MIPS32: xor
768 ; MIPS32: xor
769
692 define internal i32 @trunc64To32Signed(i64 %padding, i64 %a) { 770 define internal i32 @trunc64To32Signed(i64 %padding, i64 %a) {
693 entry: 771 entry:
694 %conv = trunc i64 %a to i32 772 %conv = trunc i64 %a to i32
695 ret i32 %conv 773 ret i32 %conv
696 } 774 }
697 ; CHECK-LABEL: trunc64To32Signed 775 ; CHECK-LABEL: trunc64To32Signed
698 ; CHECK: mov eax,DWORD PTR [esp+0xc] 776 ; CHECK: mov eax,DWORD PTR [esp+0xc]
699 ; 777 ;
700 ; OPTM1-LABEL: trunc64To32Signed 778 ; OPTM1-LABEL: trunc64To32Signed
701 ; OPTM1: mov eax,DWORD PTR [esp+ 779 ; OPTM1: mov eax,DWORD PTR [esp+
(...skipping 1150 matching lines...) Expand 10 before | Expand all | Expand 10 after
1852 ; CHECK-LABEL: phi64Undef 1930 ; CHECK-LABEL: phi64Undef
1853 ; CHECK: mov {{.*}},0x0 1931 ; CHECK: mov {{.*}},0x0
1854 ; CHECK: mov {{.*}},0x0 1932 ; CHECK: mov {{.*}},0x0
1855 ; OPTM1-LABEL: phi64Undef 1933 ; OPTM1-LABEL: phi64Undef
1856 ; OPTM1: mov {{.*}},0x0 1934 ; OPTM1: mov {{.*}},0x0
1857 ; OPTM1: mov {{.*}},0x0 1935 ; OPTM1: mov {{.*}},0x0
1858 ; ARM32-LABEL: phi64Undef 1936 ; ARM32-LABEL: phi64Undef
1859 ; ARM32: mov {{.*}} #0 1937 ; ARM32: mov {{.*}} #0
1860 ; ARM32: mov {{.*}} #0 1938 ; ARM32: mov {{.*}} #0
1861 1939
OLDNEW
« no previous file with comments | « src/IceTargetLoweringMIPS32.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698