| OLD | NEW |
| 1 ; Show that we handle constants in a movw, when it isn't represented as | 1 ; Show that we handle constants in movw and mvt, when it isn't represented as |
| 2 ; ConstantRelocatable (see mov-imm.ll for the ConstantRelocatable case). | 2 ; ConstantRelocatable (see mov-imm.ll for the ConstantRelocatable case). |
| 3 | 3 |
| 4 ; REQUIRES: allow_dump | 4 ; REQUIRES: allow_dump |
| 5 | 5 |
| 6 ; Compile using standalone assembler. | 6 ; Compile using standalone assembler. |
| 7 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \ | 7 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \ |
| 8 ; RUN: --test-stack-extra 4084 | FileCheck %s --check-prefix=ASM | 8 ; RUN: --test-stack-extra 4084 | FileCheck %s --check-prefix=ASM |
| 9 | 9 |
| 10 ; Show bytes in assembled standalone code. | 10 ; Show bytes in assembled standalone code. |
| 11 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \ | 11 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \ |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 ; IASM-NEXT: .byte 0xd0 | 113 ; IASM-NEXT: .byte 0xd0 |
| 114 ; IASM-NEXT: .byte 0x8d | 114 ; IASM-NEXT: .byte 0x8d |
| 115 ; IASM-NEXT: .byte 0xe0 | 115 ; IASM-NEXT: .byte 0xe0 |
| 116 | 116 |
| 117 ; IASM-NEXT: .byte 0x1e | 117 ; IASM-NEXT: .byte 0x1e |
| 118 ; IASM-NEXT: .byte 0xff | 118 ; IASM-NEXT: .byte 0xff |
| 119 ; IASM-NEXT: .byte 0x2f | 119 ; IASM-NEXT: .byte 0x2f |
| 120 ; IASM-NEXT: .byte 0xe1 | 120 ; IASM-NEXT: .byte 0xe1 |
| 121 | 121 |
| 122 } | 122 } |
| 123 |
| 124 define internal void @saveMinus1(i32 %loc) { |
| 125 ; ASM-LABEL:saveMinus1: |
| 126 ; DIS-LABEL:00000030 <saveMinus1>: |
| 127 ; IASM-LABEL:saveMinus1: |
| 128 |
| 129 entry: |
| 130 ; ASM-NEXT:.LsaveMinus1$entry: |
| 131 ; ASM-NEXT: movw ip, #4088 |
| 132 ; DIS-NEXT: 30: e300cff8 |
| 133 ; IASM-NEXT:.LsaveMinus1$entry: |
| 134 |
| 135 ; ASM-NEXT: sub sp, sp, ip |
| 136 ; DIS-NEXT: 34: e04dd00c |
| 137 ; IASM-NEXT: .byte 0xf8 |
| 138 ; IASM-NEXT: .byte 0xcf |
| 139 ; IASM-NEXT: .byte 0x0 |
| 140 ; IASM-NEXT: .byte 0xe3 |
| 141 |
| 142 ; ASM-NEXT: str r0, [sp, #4084] |
| 143 ; ASM-NEXT: # [sp, #4084] = def.pseudo |
| 144 ; DIS-NEXT: 38: e58d0ff4 |
| 145 ; IASM-NEXT: .byte 0xc |
| 146 ; IASM-NEXT: .byte 0xd0 |
| 147 ; IASM-NEXT: .byte 0x4d |
| 148 ; IASM-NEXT: .byte 0xe0 |
| 149 |
| 150 %loc.asptr = inttoptr i32 %loc to i32* |
| 151 store i32 -1, i32* %loc.asptr, align 1 |
| 152 |
| 153 ; ASM-NEXT: ldr r0, [sp, #4084] |
| 154 ; DIS-NEXT: 3c: e59d0ff4 |
| 155 ; IASM-NEXT: .byte 0xf4 |
| 156 ; IASM-NEXT: .byte 0xf |
| 157 ; IASM-NEXT: .byte 0x8d |
| 158 ; IASM-NEXT: .byte 0xe5 |
| 159 |
| 160 ; ASM-NEXT: movw r1, #65535 |
| 161 ; DIS-NEXT: 40: e30f1fff |
| 162 ; IASM-NEXT: .byte 0xf4 |
| 163 ; IASM-NEXT: .byte 0xf |
| 164 ; IASM-NEXT: .byte 0x9d |
| 165 ; IASM-NEXT: .byte 0xe5 |
| 166 |
| 167 ; ASM-NEXT: movt r1, #65535 |
| 168 ; DIS-NEXT: 44: e34f1fff |
| 169 ; IASM-NEXT: .byte 0xff |
| 170 ; IASM-NEXT: .byte 0x1f |
| 171 ; IASM-NEXT: .byte 0xf |
| 172 ; IASM-NEXT: .byte 0xe3 |
| 173 |
| 174 ; ASM-NEXT: str r1, [r0] |
| 175 ; DIS-NEXT: 48: e5801000 |
| 176 ; IASM-NEXT: .byte 0xff |
| 177 ; IASM-NEXT: .byte 0x1f |
| 178 ; IASM-NEXT: .byte 0x4f |
| 179 ; IASM-NEXT: .byte 0xe3 |
| 180 |
| 181 ret void |
| 182 |
| 183 ; ASM-NEXT: movw ip, #4088 |
| 184 ; DIS-NEXT: 4c: e300cff8 |
| 185 ; IASM-NEXT: .byte 0x0 |
| 186 ; IASM-NEXT: .byte 0x10 |
| 187 ; IASM-NEXT: .byte 0x80 |
| 188 ; IASM-NEXT: .byte 0xe5 |
| 189 |
| 190 ; ASM-NEXT: add sp, sp, ip |
| 191 ; DIS-NEXT: 50: e08dd00c |
| 192 ; IASM-NEXT: .byte 0xf8 |
| 193 ; IASM-NEXT: .byte 0xcf |
| 194 ; IASM-NEXT: .byte 0x0 |
| 195 ; IASM-NEXT: .byte 0xe3 |
| 196 |
| 197 ; ASM-NEXT: bx lr |
| 198 ; DIS-NEXT: 54: e12fff1e |
| 199 ; IASM-NEXT: .byte 0xc |
| 200 ; IASM-NEXT: .byte 0xd0 |
| 201 ; IASM-NEXT: .byte 0x8d |
| 202 ; IASM-NEXT: .byte 0xe0 |
| 203 |
| 204 } |
| OLD | NEW |