OLD | NEW |
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 -i %s --args -O2 --verbose none \ | 3 ; RUN: %p2i -i %s --args -O2 --verbose none \ |
4 ; RUN: | llvm-mc -triple=i686-none-nacl -filetype=obj \ | 4 ; RUN: | llvm-mc -triple=i686-none-nacl -filetype=obj \ |
5 ; RUN: | llvm-objdump -d --symbolize -x86-asm-syntax=intel - | FileCheck %s | 5 ; RUN: | llvm-objdump -d --symbolize -x86-asm-syntax=intel - | FileCheck %s |
6 ; RUN: %p2i -i %s --args -Om1 --verbose none \ | 6 ; RUN: %p2i -i %s --args -Om1 --verbose none \ |
7 ; RUN: | llvm-mc -triple=i686-none-nacl -filetype=obj \ | 7 ; RUN: | llvm-mc -triple=i686-none-nacl -filetype=obj \ |
8 ; RUN: | llvm-objdump -d --symbolize -x86-asm-syntax=intel - | FileCheck %s | 8 ; RUN: | llvm-objdump -d --symbolize -x86-asm-syntax=intel - | FileCheck %s |
9 | 9 |
10 define internal i32 @add8Bit(i32 %a, i32 %b) { | 10 define internal i32 @add8Bit(i32 %a, i32 %b) { |
(...skipping 19 matching lines...) Expand all Loading... |
30 | 30 |
31 define internal i32 @sub8Bit(i32 %a, i32 %b) { | 31 define internal i32 @sub8Bit(i32 %a, i32 %b) { |
32 entry: | 32 entry: |
33 %a_8 = trunc i32 %a to i8 | 33 %a_8 = trunc i32 %a to i8 |
34 %b_8 = trunc i32 %b to i8 | 34 %b_8 = trunc i32 %b to i8 |
35 %sub = sub i8 %b_8, %a_8 | 35 %sub = sub i8 %b_8, %a_8 |
36 %ret = zext i8 %sub to i32 | 36 %ret = zext i8 %sub to i32 |
37 ret i32 %ret | 37 ret i32 %ret |
38 } | 38 } |
39 ; CHECK-LABEL: sub8Bit | 39 ; CHECK-LABEL: sub8Bit |
40 ; XCHECK: sub {{[abcd]l}} | 40 ; CHECK: sub {{[abcd]l}} |
41 | 41 |
42 define internal i32 @sub8BitConst(i32 %a) { | 42 define internal i32 @sub8BitConst(i32 %a) { |
43 entry: | 43 entry: |
44 %a_8 = trunc i32 %a to i8 | 44 %a_8 = trunc i32 %a to i8 |
45 %sub = sub i8 %a_8, 123 | 45 %sub = sub i8 %a_8, 123 |
46 %ret = zext i8 %sub to i32 | 46 %ret = zext i8 %sub to i32 |
47 ret i32 %ret | 47 ret i32 %ret |
48 } | 48 } |
49 ; CHECK-LABEL: sub8BitConst | 49 ; CHECK-LABEL: sub8BitConst |
50 ; XCHECK: sub {{[abcd]l}} | 50 ; CHECK: sub {{[abcd]l}} |
51 | 51 |
52 define internal i32 @mul8Bit(i32 %a, i32 %b) { | 52 define internal i32 @mul8Bit(i32 %a, i32 %b) { |
53 entry: | 53 entry: |
54 %a_8 = trunc i32 %a to i8 | 54 %a_8 = trunc i32 %a to i8 |
55 %b_8 = trunc i32 %b to i8 | 55 %b_8 = trunc i32 %b to i8 |
56 %mul = mul i8 %b_8, %a_8 | 56 %mul = mul i8 %b_8, %a_8 |
57 %ret = zext i8 %mul to i32 | 57 %ret = zext i8 %mul to i32 |
58 ret i32 %ret | 58 ret i32 %ret |
59 } | 59 } |
60 ; CHECK-LABEL: mul8Bit | 60 ; CHECK-LABEL: mul8Bit |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
361 ; CHECK: mov byte ptr {{.*}}, {{[a-d]l}} | 361 ; CHECK: mov byte ptr {{.*}}, {{[a-d]l}} |
362 | 362 |
363 define void @store_i8_const(i32 %addr_arg) { | 363 define void @store_i8_const(i32 %addr_arg) { |
364 entry: | 364 entry: |
365 %addr = inttoptr i32 %addr_arg to i8* | 365 %addr = inttoptr i32 %addr_arg to i8* |
366 store i8 123, i8* %addr, align 1 | 366 store i8 123, i8* %addr, align 1 |
367 ret void | 367 ret void |
368 } | 368 } |
369 ; CHECK-LABEL: store_i8_const | 369 ; CHECK-LABEL: store_i8_const |
370 ; CHECK: mov byte ptr {{.*}}, 123 | 370 ; CHECK: mov byte ptr {{.*}}, 123 |
OLD | NEW |