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

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

Issue 2478113003: [SubZero] Utilize instructions with immediate operands (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Addressed review comments Created 4 years, 1 month 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 tries to be a comprehensive test of i8 operations. 1 ; This tries to be a comprehensive test of i8 operations.
2 2
3 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \ 3 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \
4 ; RUN: -allow-externally-defined-symbols | FileCheck %s 4 ; RUN: -allow-externally-defined-symbols | FileCheck %s
5 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 \ 5 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 \
6 ; RUN: -allow-externally-defined-symbols | FileCheck %s 6 ; RUN: -allow-externally-defined-symbols | FileCheck %s
7 7
8 ; The following tests i8 srem/urem lowering on x86-64, specifically that the %ah 8 ; The following tests i8 srem/urem lowering on x86-64, specifically that the %ah
9 ; result gets copied into %al/%bl/%cl/%dl before moved into its final register. 9 ; result gets copied into %al/%bl/%cl/%dl before moved into its final register.
10 ; This extra copy is forced by excluding al/bl/cl/dl by default (-reg-exclude), 10 ; This extra copy is forced by excluding al/bl/cl/dl by default (-reg-exclude),
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 define internal i32 @add8BitConst(i32 %a) { 42 define internal i32 @add8BitConst(i32 %a) {
43 entry: 43 entry:
44 %a_8 = trunc i32 %a to i8 44 %a_8 = trunc i32 %a to i8
45 %add = add i8 %a_8, 123 45 %add = add i8 %a_8, 123
46 %ret = zext i8 %add to i32 46 %ret = zext i8 %add to i32
47 ret i32 %ret 47 ret i32 %ret
48 } 48 }
49 ; CHECK-LABEL: add8BitConst 49 ; CHECK-LABEL: add8BitConst
50 ; CHECK: add {{[abcd]l}} 50 ; CHECK: add {{[abcd]l}}
51 ; MIPS32-LABEL: add8BitConst 51 ; MIPS32-LABEL: add8BitConst
52 ; MIPS32: » li 52 ; MIPS32: » addiu
53 ; MIPS32: » addu
54 ; MIPS32: andi {{.*}},0xff 53 ; MIPS32: andi {{.*}},0xff
55 ; MIPS32: move 54 ; MIPS32: move
56 ; MIPS32: jr 55 ; MIPS32: jr
57 ; MIPS32: nop 56 ; MIPS32: nop
58 57
59 define internal i32 @sub8Bit(i32 %a, i32 %b) { 58 define internal i32 @sub8Bit(i32 %a, i32 %b) {
60 entry: 59 entry:
61 %a_8 = trunc i32 %a to i8 60 %a_8 = trunc i32 %a to i8
62 %b_8 = trunc i32 %b to i8 61 %b_8 = trunc i32 %b to i8
63 %sub = sub i8 %b_8, %a_8 62 %sub = sub i8 %b_8, %a_8
(...skipping 12 matching lines...) Expand all
76 define internal i32 @sub8BitConst(i32 %a) { 75 define internal i32 @sub8BitConst(i32 %a) {
77 entry: 76 entry:
78 %a_8 = trunc i32 %a to i8 77 %a_8 = trunc i32 %a to i8
79 %sub = sub i8 %a_8, 123 78 %sub = sub i8 %a_8, 123
80 %ret = zext i8 %sub to i32 79 %ret = zext i8 %sub to i32
81 ret i32 %ret 80 ret i32 %ret
82 } 81 }
83 ; CHECK-LABEL: sub8BitConst 82 ; CHECK-LABEL: sub8BitConst
84 ; CHECK: sub {{[abcd]l}} 83 ; CHECK: sub {{[abcd]l}}
85 ; MIPS32-LABEL: sub8BitConst 84 ; MIPS32-LABEL: sub8BitConst
86 ; MIPS32: » li 85 ; MIPS32: » addiu {{.*}},-123
87 ; MIPS32: » subu
88 ; MIPS32: andi {{.*}},0xff 86 ; MIPS32: andi {{.*}},0xff
89 ; MIPS32: move 87 ; MIPS32: move
90 ; MIPS32: jr 88 ; MIPS32: jr
91 ; MIPS32: nop 89 ; MIPS32: nop
92 90
93 define internal i32 @mul8Bit(i32 %a, i32 %b) { 91 define internal i32 @mul8Bit(i32 %a, i32 %b) {
94 entry: 92 entry:
95 %a_8 = trunc i32 %a to i8 93 %a_8 = trunc i32 %a to i8
96 %b_8 = trunc i32 %b to i8 94 %b_8 = trunc i32 %b to i8
97 %mul = mul i8 %b_8, %a_8 95 %mul = mul i8 %b_8, %a_8
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 define internal i32 @shl8BitConst(i32 %a, i32 %b) { 297 define internal i32 @shl8BitConst(i32 %a, i32 %b) {
300 entry: 298 entry:
301 %a_8 = trunc i32 %a to i8 299 %a_8 = trunc i32 %a to i8
302 %shl = shl i8 %a_8, 6 300 %shl = shl i8 %a_8, 6
303 %ret = zext i8 %shl to i32 301 %ret = zext i8 %shl to i32
304 ret i32 %ret 302 ret i32 %ret
305 } 303 }
306 ; CHECK-LABEL: shl8BitConst 304 ; CHECK-LABEL: shl8BitConst
307 ; CHECK: shl {{[abcd]l|BYTE PTR}},0x6 305 ; CHECK: shl {{[abcd]l|BYTE PTR}},0x6
308 ; MIPS32-LABEL: shl8BitConst 306 ; MIPS32-LABEL: shl8BitConst
309 ; MIPS32: » li 307 ; MIPS32: » sll
310 ; MIPS32: » sllv
311 ; MIPS32: andi {{.*}},0xff 308 ; MIPS32: andi {{.*}},0xff
312 ; MIPS32: move 309 ; MIPS32: move
313 ; MIPS32: jr 310 ; MIPS32: jr
314 ; MIPS32: nop 311 ; MIPS32: nop
315 312
316 define internal i32 @lshr8Bit(i32 %a, i32 %b) { 313 define internal i32 @lshr8Bit(i32 %a, i32 %b) {
317 entry: 314 entry:
318 %a_8 = trunc i32 %a to i8 315 %a_8 = trunc i32 %a to i8
319 %b_8 = trunc i32 %b to i8 316 %b_8 = trunc i32 %b to i8
320 %lshr = lshr i8 %b_8, %a_8 317 %lshr = lshr i8 %b_8, %a_8
(...skipping 12 matching lines...) Expand all
333 define internal i32 @lshr8BitConst(i32 %a, i32 %b) { 330 define internal i32 @lshr8BitConst(i32 %a, i32 %b) {
334 entry: 331 entry:
335 %a_8 = trunc i32 %a to i8 332 %a_8 = trunc i32 %a to i8
336 %lshr = lshr i8 %a_8, 6 333 %lshr = lshr i8 %a_8, 6
337 %ret = zext i8 %lshr to i32 334 %ret = zext i8 %lshr to i32
338 ret i32 %ret 335 ret i32 %ret
339 } 336 }
340 ; CHECK-LABEL: lshr8BitConst 337 ; CHECK-LABEL: lshr8BitConst
341 ; CHECK: shr {{[abcd]l|BYTE PTR}},0x6 338 ; CHECK: shr {{[abcd]l|BYTE PTR}},0x6
342 ; MIPS32-LABEL: lshr8BitConst 339 ; MIPS32-LABEL: lshr8BitConst
343 ; MIPS32: » li 340 ; MIPS32: » srl
344 ; MIPS32: » srlv
345 ; MIPS32: andi {{.*}},0xff 341 ; MIPS32: andi {{.*}},0xff
346 ; MIPS32: move 342 ; MIPS32: move
347 ; MIPS32: jr 343 ; MIPS32: jr
348 ; MIPS32: nop 344 ; MIPS32: nop
349 345
350 define internal i32 @ashr8Bit(i32 %a, i32 %b) { 346 define internal i32 @ashr8Bit(i32 %a, i32 %b) {
351 entry: 347 entry:
352 %a_8 = trunc i32 %a to i8 348 %a_8 = trunc i32 %a to i8
353 %b_8 = trunc i32 %b to i8 349 %b_8 = trunc i32 %b to i8
354 %ashr = ashr i8 %b_8, %a_8 350 %ashr = ashr i8 %b_8, %a_8
(...skipping 12 matching lines...) Expand all
367 define internal i32 @ashr8BitConst(i32 %a, i32 %b) { 363 define internal i32 @ashr8BitConst(i32 %a, i32 %b) {
368 entry: 364 entry:
369 %a_8 = trunc i32 %a to i8 365 %a_8 = trunc i32 %a to i8
370 %ashr = ashr i8 %a_8, 6 366 %ashr = ashr i8 %a_8, 6
371 %ret = zext i8 %ashr to i32 367 %ret = zext i8 %ashr to i32
372 ret i32 %ret 368 ret i32 %ret
373 } 369 }
374 ; CHECK-LABEL: ashr8BitConst 370 ; CHECK-LABEL: ashr8BitConst
375 ; CHECK: sar {{[abcd]l|BYTE PTR}},0x6 371 ; CHECK: sar {{[abcd]l|BYTE PTR}},0x6
376 ; MIPS32-LABEL: ashr8BitConst 372 ; MIPS32-LABEL: ashr8BitConst
377 ; MIPS32: » li 373 ; MIPS32: » sra
378 ; MIPS32: » srav
379 ; MIPS32: andi {{.*}},0xff 374 ; MIPS32: andi {{.*}},0xff
380 ; MIPS32: move 375 ; MIPS32: move
381 ; MIPS32: jr 376 ; MIPS32: jr
382 ; MIPS32: nop 377 ; MIPS32: nop
383 378
384 define internal i32 @icmp8Bit(i32 %a, i32 %b) { 379 define internal i32 @icmp8Bit(i32 %a, i32 %b) {
385 entry: 380 entry:
386 %a_8 = trunc i32 %a to i8 381 %a_8 = trunc i32 %a to i8
387 %b_8 = trunc i32 %b to i8 382 %b_8 = trunc i32 %b to i8
388 %icmp = icmp ne i8 %b_8, %a_8 383 %icmp = icmp ne i8 %b_8, %a_8
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
570 %addr = inttoptr i32 %addr_arg to i8* 565 %addr = inttoptr i32 %addr_arg to i8*
571 %ret = load i8, i8* %addr, align 1 566 %ret = load i8, i8* %addr, align 1
572 %ret2 = sub i8 %ret, 0 567 %ret2 = sub i8 %ret, 0
573 %ret_ext = zext i8 %ret2 to i32 568 %ret_ext = zext i8 %ret2 to i32
574 ret i32 %ret_ext 569 ret i32 %ret_ext
575 } 570 }
576 ; CHECK-LABEL: load_i8 571 ; CHECK-LABEL: load_i8
577 ; CHECK: mov {{[a-d]l}},BYTE PTR 572 ; CHECK: mov {{[a-d]l}},BYTE PTR
578 ; MIPS32-LABEL: load_i8 573 ; MIPS32-LABEL: load_i8
579 ; MIPS32: lb 574 ; MIPS32: lb
580 ; MIPS32: » li 575 ; MIPS32: » addiu» {{.*}},0
581 ; MIPS32: » subu
582 ; MIPS32: andi {{.*}},0xff 576 ; MIPS32: andi {{.*}},0xff
583 ; MIPS32: move 577 ; MIPS32: move
584 ; MIPS32: jr 578 ; MIPS32: jr
585 ; MIPS32: nop 579 ; MIPS32: nop
586 580
587 define i32 @load_i8_global(i32 %addr_arg) { 581 define i32 @load_i8_global(i32 %addr_arg) {
588 entry: 582 entry:
589 %addr = bitcast [1 x i8]* @global8 to i8* 583 %addr = bitcast [1 x i8]* @global8 to i8*
590 %ret = load i8, i8* %addr, align 1 584 %ret = load i8, i8* %addr, align 1
591 %ret2 = sub i8 %ret, 0 585 %ret2 = sub i8 %ret, 0
592 %ret_ext = zext i8 %ret2 to i32 586 %ret_ext = zext i8 %ret2 to i32
593 ret i32 %ret_ext 587 ret i32 %ret_ext
594 } 588 }
595 ; CHECK-LABEL: load_i8_global 589 ; CHECK-LABEL: load_i8_global
596 ; CHECK: mov {{[a-d]l}},{{(BYTE PTR)?}} 590 ; CHECK: mov {{[a-d]l}},{{(BYTE PTR)?}}
597 ; MIPS32-LABEL: load_i8_global 591 ; MIPS32-LABEL: load_i8_global
598 ; MIPS32: lui 592 ; MIPS32: lui
599 ; MIPS32: addiu 593 ; MIPS32: addiu
600 ; MIPS32: lb 594 ; MIPS32: lb
601 ; MIPS32: » li 595 ; MIPS32: » addiu» {{.*}},0
602 ; MIPS32: » subu
603 ; MIPS32: andi {{.*}},0xff 596 ; MIPS32: andi {{.*}},0xff
604 ; MIPS32: jr 597 ; MIPS32: jr
605 ; MIPS32: nop 598 ; MIPS32: nop
606 599
607 define void @store_i8(i32 %addr_arg, i32 %val) { 600 define void @store_i8(i32 %addr_arg, i32 %val) {
608 entry: 601 entry:
609 %val_trunc = trunc i32 %val to i8 602 %val_trunc = trunc i32 %val to i8
610 %addr = inttoptr i32 %addr_arg to i8* 603 %addr = inttoptr i32 %addr_arg to i8*
611 store i8 %val_trunc, i8* %addr, align 1 604 store i8 %val_trunc, i8* %addr, align 1
612 ret void 605 ret void
(...skipping 11 matching lines...) Expand all
624 store i8 123, i8* %addr, align 1 617 store i8 123, i8* %addr, align 1
625 ret void 618 ret void
626 } 619 }
627 ; CHECK-LABEL: store_i8_const 620 ; CHECK-LABEL: store_i8_const
628 ; CHECK: mov BYTE PTR {{.*}},0x7b 621 ; CHECK: mov BYTE PTR {{.*}},0x7b
629 ; MIPS32-LABEL: store_i8_const 622 ; MIPS32-LABEL: store_i8_const
630 ; MIPS32: li 623 ; MIPS32: li
631 ; MIPS32: sb 624 ; MIPS32: sb
632 ; MIPS32: jr 625 ; MIPS32: jr
633 ; MIPS32: nop 626 ; MIPS32: nop
OLDNEW
« no previous file with comments | « tests_lit/assembler/mips32/encoding_test_arith.ll ('k') | tests_lit/llvm2ice_tests/adv-switch-opt.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698