OLD | NEW |
1 ; Test that we correctly fix multiple forward branches. | 1 ; Test that we correctly fix multiple forward branches. |
2 | 2 |
3 ; Compile using standalone assembler. | 3 ; Compile using standalone assembler. |
4 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \ | 4 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \ |
5 ; RUN: | FileCheck %s --check-prefix=ASM | 5 ; RUN: | FileCheck %s --check-prefix=ASM |
6 | 6 |
7 ; Show bytes in assembled standalone code. | 7 ; Show bytes in assembled standalone code. |
8 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \ | 8 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \ |
9 ; RUN: --args -Om1 | FileCheck %s --check-prefix=DIS | 9 ; RUN: --args -Om1 | FileCheck %s --check-prefix=DIS |
10 | 10 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 ; IASM-NEXT: .byte 0xe5 | 46 ; IASM-NEXT: .byte 0xe5 |
47 | 47 |
48 ; IASM-NEXT: .byte 0x4 | 48 ; IASM-NEXT: .byte 0x4 |
49 ; IASM-NEXT: .byte 0x10 | 49 ; IASM-NEXT: .byte 0x10 |
50 ; IASM-NEXT: .byte 0x8d | 50 ; IASM-NEXT: .byte 0x8d |
51 ; IASM-NEXT: .byte 0xe5 | 51 ; IASM-NEXT: .byte 0xe5 |
52 | 52 |
53 %cmp = icmp slt i32 %a, %b | 53 %cmp = icmp slt i32 %a, %b |
54 | 54 |
55 ; ASM-NEXT: ldr r0, [sp, #8] | 55 ; ASM-NEXT: ldr r0, [sp, #8] |
56 ; ASM-NEXT: mov r1, #0 | 56 ; ASM-NEXT: ldr r1, [sp, #4] |
57 ; ASM-NEXT: ldr r2, [sp, #4] | 57 ; ASM-NEXT: cmp r0, r1 |
58 ; ASM-NEXT: cmp r0, r2 | 58 ; ASM-NEXT: movge r0, #0 |
59 ; ASM-NEXT: movlt r1, #1 | 59 ; ASM-NEXT: movlt r0, #1 |
60 ; ASM-NEXT: str r1, [sp] | 60 ; ASM-NEXT: str r0, [sp] |
61 | 61 |
62 ; DIS-NEXT: c: e59d0008 | 62 ; DIS-NEXT: c: e59d0008 |
63 ; DIS-NEXT: 10: e3a01000 | 63 ; DIS-NEXT: 10: e59d1004 |
64 ; DIS-NEXT: 14: e59d2004 | 64 ; DIS-NEXT: 14: e1500001 |
65 ; DIS-NEXT: 18: e1500002 | 65 ; DIS-NEXT: 18: a3a00000 |
66 ; DIS-NEXT: 1c: b3a01001 | 66 ; DIS-NEXT: 1c: b3a00001 |
67 ; DIS-NEXT: 20: e58d1000 | 67 ; DIS-NEXT: 20: e58d0000 |
68 | 68 |
69 ; IASM-NEXT: .byte 0x8 | 69 ; IASM-NEXT: .byte 0x8 |
70 ; IASM-NEXT: .byte 0x0 | 70 ; IASM-NEXT: .byte 0x0 |
71 ; IASM-NEXT: .byte 0x9d | 71 ; IASM-NEXT: .byte 0x9d |
72 ; IASM-NEXT: .byte 0xe5 | 72 ; IASM-NEXT: .byte 0xe5 |
73 | 73 |
74 ; IASM-NEXT: mov r1, #0 | |
75 | |
76 ; IASM-NEXT: .byte 0x4 | 74 ; IASM-NEXT: .byte 0x4 |
77 ; IASM-NEXT: .byte 0x20 | 75 ; IASM-NEXT: .byte 0x10 |
78 ; IASM-NEXT: .byte 0x9d | 76 ; IASM-NEXT: .byte 0x9d |
79 ; IASM-NEXT: .byte 0xe5 | 77 ; IASM-NEXT: .byte 0xe5 |
80 | 78 |
81 ; IASM-NEXT: .byte 0x2 | 79 ; IASM-NEXT: .byte 0x1 |
82 ; IASM-NEXT: .byte 0x0 | 80 ; IASM-NEXT: .byte 0x0 |
83 ; IASM-NEXT: .byte 0x50 | 81 ; IASM-NEXT: .byte 0x50 |
84 ; IASM-NEXT: .byte 0xe1 | 82 ; IASM-NEXT: .byte 0xe1 |
85 | 83 |
86 ; IASM-NEXT: movlt r1, #1 | 84 ; IASM-NEXT: movge r0, #0 |
| 85 |
| 86 ; IASM-NEXT: movlt r0, #1 |
87 | 87 |
88 ; IASM-NEXT: .byte 0x0 | 88 ; IASM-NEXT: .byte 0x0 |
89 ; IASM-NEXT: .byte 0x10 | 89 ; IASM-NEXT: .byte 0x0 |
90 ; IASM-NEXT: .byte 0x8d | 90 ; IASM-NEXT: .byte 0x8d |
91 ; IASM-NEXT: .byte 0xe5 | 91 ; IASM-NEXT: .byte 0xe5 |
92 | 92 |
93 br i1 %cmp, label %then, label %else | 93 br i1 %cmp, label %then, label %else |
94 | 94 |
95 ; ASM-NEXT: ldr r0, [sp] | 95 ; ASM-NEXT: ldr r0, [sp] |
96 ; ASM-NEXT: uxtb r0, r0 | 96 ; ASM-NEXT: uxtb r0, r0 |
97 ; ASM-NEXT: cmp r0, #0 | 97 ; ASM-NEXT: cmp r0, #0 |
98 ; ASM-NEXT: bne .Lmult_fwd_branches$then | 98 ; ASM-NEXT: bne .Lmult_fwd_branches$then |
99 ; ASM-NEXT: b .Lmult_fwd_branches$else | 99 ; ASM-NEXT: b .Lmult_fwd_branches$else |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
167 ; IASM-NEXT: .byte 0xd0 | 167 ; IASM-NEXT: .byte 0xd0 |
168 ; IASM-NEXT: .byte 0x8d | 168 ; IASM-NEXT: .byte 0x8d |
169 ; IASM-NEXT: .byte 0xe2 | 169 ; IASM-NEXT: .byte 0xe2 |
170 | 170 |
171 ; IASM-NEXT: .byte 0x1e | 171 ; IASM-NEXT: .byte 0x1e |
172 ; IASM-NEXT: .byte 0xff | 172 ; IASM-NEXT: .byte 0xff |
173 ; IASM-NEXT: .byte 0x2f | 173 ; IASM-NEXT: .byte 0x2f |
174 ; IASM-NEXT: .byte 0xe1 | 174 ; IASM-NEXT: .byte 0xe1 |
175 | 175 |
176 } | 176 } |
OLD | NEW |