OLD | NEW |
1 ; Show that we know how to translate rbit. | 1 ; Show that we know how to translate vadd. |
2 | 2 |
3 ; NOTE: We use -O2 to get rid of memory stores. | 3 ; NOTE: We use -O2 to get rid of memory stores. |
4 | 4 |
5 ; REQUIRES: allow_dump | 5 ; REQUIRES: allow_dump |
6 | 6 |
7 ; Compile using standalone assembler. | 7 ; Compile using standalone assembler. |
8 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \ | 8 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \ |
9 ; RUN: | FileCheck %s --check-prefix=ASM | 9 ; RUN: | FileCheck %s --check-prefix=ASM |
10 | 10 |
11 ; Show bytes in assembled standalone code. | 11 ; Show bytes in assembled standalone code. |
12 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \ | 12 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \ |
13 ; RUN: --args -O2 | FileCheck %s --check-prefix=DIS | 13 ; RUN: --args -O2 | FileCheck %s --check-prefix=DIS |
14 | 14 |
15 ; Compile using integrated assembler. | 15 ; Compile using integrated assembler. |
16 ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \ | 16 ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \ |
17 ; RUN: | FileCheck %s --check-prefix=IASM | 17 ; RUN: | FileCheck %s --check-prefix=IASM |
18 | 18 |
19 ; Show bytes in assembled integrated code. | 19 ; Show bytes in assembled integrated code. |
20 ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \ | 20 ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \ |
21 ; RUN: --args -O2 | FileCheck %s --check-prefix=DIS | 21 ; RUN: --args -O2 | FileCheck %s --check-prefix=DIS |
22 | 22 |
23 declare i32 @llvm.cttz.i32(i32, i1) | 23 define internal float @testVadd(float %v1, float %v2) { |
24 | 24 ; ASM-LABEL: testVadd: |
25 define internal i32 @testRbit(i32 %a) { | 25 ; DIS-LABEL: 00000000 <testVadd>: |
26 ; ASM-LABEL: testRbit: | 26 ; IASM-LABEL: testVadd: |
27 ; DIS-LABEL: 00000000 <testRbit>: | |
28 ; IASM-LABEL: testRbit: | |
29 | 27 |
30 entry: | 28 entry: |
31 ; ASM-NEXT: .LtestRbit$entry: | 29 ; ASM-NEXT: .LtestVadd$entry: |
32 ; IASM-NEXT: .LtestRbit$entry: | 30 ; IASM-NEXT: .LtestVadd$entry: |
33 | 31 |
34 %x = call i32 @llvm.cttz.i32(i32 %a, i1 0) | 32 %res = fadd float %v1, %v2 |
35 | 33 |
36 ; ASM-NEXT: rbit r0, r0 | 34 ; ASM-NEXT: vadd.f32 s0, s0, s1 |
37 ; DIS-NEXT: 0: e6ff0f30 | 35 ; DIS-NEXT: 0: ee300a20 |
| 36 ; IASM-NEXT: .byte 0x20 |
| 37 ; IASM-NEXT: .byte 0xa |
38 ; IASM-NEXT: .byte 0x30 | 38 ; IASM-NEXT: .byte 0x30 |
39 ; IASM-NEXT: .byte 0xf | 39 ; IASM-NEXT: .byte 0xee |
40 ; IASM-NEXT: .byte 0xff | |
41 ; IASM-NEXT: .byte 0xe6 | |
42 | 40 |
43 ret i32 %x | 41 ret float %res |
44 } | 42 } |
OLD | NEW |