OLD | NEW |
---|---|
1 ; Show that we know how to translate vadd. | 1 ; Show that we know how to translate vadd. |
2 | 2 |
3 ; NOTE: We use -O2 to get rid of memory stores. | 3 ; NOTE: Restricts S and D registers to ones that will better test S/D |
4 ; register encodings. | |
4 | 5 |
5 ; REQUIRES: allow_dump | 6 ; REQUIRES: allow_dump |
6 | 7 |
7 ; Compile using standalone assembler. | 8 ; Compile using standalone assembler. |
8 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \ | 9 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \ |
10 ; RUN: -use-registers s20,s22,d20,d22 \ | |
9 ; RUN: | FileCheck %s --check-prefix=ASM | 11 ; RUN: | FileCheck %s --check-prefix=ASM |
10 | 12 |
11 ; Show bytes in assembled standalone code. | 13 ; Show bytes in assembled standalone code. |
12 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \ | 14 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \ |
13 ; RUN: --args -O2 | FileCheck %s --check-prefix=DIS | 15 ; RUN: --args -Om1 \ |
16 ; RUN: -use-registers s20,s22,d20,d22 \ | |
17 ; RUN: | FileCheck %s --check-prefix=DIS | |
14 | 18 |
15 ; Compile using integrated assembler. | 19 ; Compile using integrated assembler. |
16 ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \ | 20 ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \ |
21 ; RUN: -use-registers s20,s22,d20,d22 \ | |
17 ; RUN: | FileCheck %s --check-prefix=IASM | 22 ; RUN: | FileCheck %s --check-prefix=IASM |
18 | 23 |
19 ; Show bytes in assembled integrated code. | 24 ; Show bytes in assembled integrated code. |
20 ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \ | 25 ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \ |
21 ; RUN: --args -O2 | FileCheck %s --check-prefix=DIS | 26 ; RUN: --args -Om1 \ |
27 ; RUN: -use-registers s20,s22,d20,d22 \ | |
28 ; RUN: | FileCheck %s --check-prefix=DIS | |
22 | 29 |
23 define internal float @testVaddFloat(float %v1, float %v2) { | 30 define internal float @testVaddFloat(float %v1, float %v2) { |
24 ; ASM-LABEL: testVaddFloat: | 31 ; ASM-LABEL: testVaddFloat: |
25 ; DIS-LABEL: 00000000 <testVaddFloat>: | 32 ; DIS-LABEL: 00000000 <testVaddFloat>: |
26 ; IASM-LABEL: testVaddFloat: | 33 ; IASM-LABEL: testVaddFloat: |
27 | 34 |
28 entry: | 35 entry: |
29 ; ASM-NEXT: .LtestVaddFloat$entry: | 36 ; ASM-NEXT: .LtestVaddFloat$entry: |
30 ; IASM-NEXT: .LtestVaddFloat$entry: | 37 ; IASM-NEXT: .LtestVaddFloat$entry: |
31 | 38 |
39 ; ASM-NEXT: vpush {s20} | |
40 ; DIS-NEXT: 0: ed2daa01 | |
41 ; IASM-NEXT: .byte 0x1 | |
42 ; IASM-NEXT: .byte 0xaa | |
43 ; IASM-NEXT: .byte 0x2d | |
44 ; IASM-NEXT: .byte 0xed | |
45 | |
46 ; ASM-NEXT: vpush {s22} | |
47 ; DIS-NEXT: 4: ed2dba01 | |
48 ; IASM-NEXT: .byte 0x1 | |
49 ; IASM-NEXT: .byte 0xba | |
50 ; IASM-NEXT: .byte 0x2d | |
51 ; IASM-NEXT: .byte 0xed | |
52 | |
53 ; ASM-NEXT: sub sp, sp, #12 | |
54 ; DIS-NEXT: 8: e24dd00c | |
55 ; IASM-NEXT: .byte 0xc | |
56 ; IASM-NEXT: .byte 0xd0 | |
57 ; IASM-NEXT: .byte 0x4d | |
58 ; IASM-NEXT: .byte 0xe2 | |
59 | |
60 ; ASM-NEXT: vstr s0, [sp, #8] | |
61 ; ASM-NEXT: # [sp, #8] = def.pseudo | |
Jim Stichnoth
2016/01/10 16:51:26
Trailing whitespace here and 3 other places.
Actu
Karl
2016/01/12 23:44:05
Acknowledged.
| |
62 ; DIS-NEXT: c: ed8d0a02 | |
63 ; IASM-NEXT: vstr s0, [sp, #8] | |
64 | |
65 ; ASM-NEXT: vstr s1, [sp, #4] | |
66 ; ASM-NEXT: # [sp, #4] = def.pseudo | |
67 ; DIS-NEXT: 10: edcd0a01 | |
68 ; IASM-NEXT: vstr s1, [sp, #4] | |
69 | |
32 %res = fadd float %v1, %v2 | 70 %res = fadd float %v1, %v2 |
33 | 71 |
34 ; ASM-NEXT: vadd.f32 s0, s0, s1 | 72 ; ASM-NEXT: vldr s20, [sp, #8] |
35 ; DIS-NEXT: 0: ee300a20 | 73 ; DIS-NEXT: 14:» ed9daa02 |
Jim Stichnoth
2016/01/10 16:51:26
untabify
Karl
2016/01/14 18:27:19
Done.
| |
36 ; IASM-NEXT: .byte 0x20 | 74 ; IASM-NEXT: » vldr» s20, [sp, #8] |
37 ; IASM-NEXT: .byte 0xa | 75 |
38 ; IASM-NEXT: .byte 0x30 | 76 ; ASM-NEXT: vldr s22, [sp, #4] |
39 ; IASM-NEXT: .byte 0xee | 77 ; DIS-NEXT: 18:» ed9dba01 |
78 ; IASM-NEXT: » vldr» s22, [sp, #4] | |
79 | |
80 ; ASM-NEXT: vadd.f32 s20, s20, s22 | |
81 ; DIS-NEXT: 1c:» ee3aaa0b | |
82 ; IASM-NEXT: » .byte 0xb | |
83 ; IASM-NEXT: » .byte 0xaa | |
84 ; IASM-NEXT: » .byte 0x3a | |
85 ; IASM-NEXT: » .byte 0xee | |
40 | 86 |
41 ret float %res | 87 ret float %res |
42 } | 88 } |
43 | 89 |
44 define internal double @testVaddDouble(double %v1, double %v2) { | 90 define internal double @testVaddDouble(double %v1, double %v2) { |
45 ; ASM-LABEL: testVaddDouble: | 91 ; ASM-LABEL: testVaddDouble: |
46 ; DIS-LABEL: 00000010 <testVaddDouble>: | 92 ; DIS-LABEL: 00000040 <testVaddDouble>: |
47 ; IASM-LABEL: testVaddDouble: | 93 ; IASM-LABEL: .LtestVaddDouble$entry: |
48 | 94 |
49 entry: | 95 entry: |
50 ; ASM-NEXT: .LtestVaddDouble$entry: | 96 ; ASM-NEXT: .LtestVaddDouble$entry: |
51 ; IASM-NEXT: .LtestVaddDouble$entry: | 97 |
98 ; ASM-NEXT: sub sp, sp, #24 | |
99 ; DIS-NEXT: 40:» e24dd018 | |
100 ; IASM-NEXT: » .byte 0x18 | |
101 ; IASM-NEXT: » .byte 0xd0 | |
102 ; IASM-NEXT: » .byte 0x4d | |
103 ; IASM-NEXT: » .byte 0xe2 | |
104 | |
105 ; ASM-NEXT: vstr d0, [sp, #16] | |
106 ; ASM-NEXT: # [sp, #16] = def.pseudo | |
107 ; DIS-NEXT: 44:» ed8d0b04 | |
108 ; IASM-NEXT: » vstr» d0, [sp, #16] | |
109 | |
110 ; ASM-NEXT: vstr d1, [sp, #8] | |
111 ; ASM-NEXT: # [sp, #8] = def.pseudo | |
112 ; DIS-NEXT: 48:» ed8d1b02 | |
113 ; IASM-NEXT: » vstr» d1, [sp, #8] | |
52 | 114 |
53 %res = fadd double %v1, %v2 | 115 %res = fadd double %v1, %v2 |
54 | 116 |
55 ; ASM-NEXT: vadd.f64 d0, d0, d1 | 117 ; ASM-NEXT: vldr d22, [sp, #16] |
56 ; DIS-NEXT: 10: ee300b01 | 118 ; DIS-NEXT: 4c:» eddd6b04 |
57 ; IASM-NEXT: .byte 0x1 | 119 ; IASM-NEXT: » vldr» d22, [sp, #16] |
58 ; IASM-NEXT: .byte 0xb | 120 |
59 ; IASM-NEXT: .byte 0x30 | 121 ; ASM-NEXT: vldr d20, [sp, #8] |
60 ; IASM-NEXT: .byte 0xee | 122 ; DIS-NEXT: 50:» eddd4b02 |
123 ; IASM-NEXT: » vldr» d20, [sp, #8] | |
124 | |
125 ; ASM-NEXT: vadd.f64 d22, d22, d20 | |
126 ; DIS-NEXT: 54:» ee766ba4 | |
127 ; IASM-NEXT: » .byte 0xa4 | |
128 ; IASM-NEXT: » .byte 0x6b | |
129 ; IASM-NEXT: » .byte 0x76 | |
130 ; IASM-NEXT: » .byte 0xee | |
61 | 131 |
62 ret double %res | 132 ret double %res |
63 } | 133 } |
OLD | NEW |