| OLD | NEW |
| 1 ; Simple test that returns various immediates. For fixed-width instruction | 1 ; Simple test that returns various immediates. For fixed-width instruction |
| 2 ; sets, some immediates are more complicated than others. | 2 ; sets, some immediates are more complicated than others. |
| 3 ; For x86-32, it shouldn't be a problem. | 3 ; For x86-32, it shouldn't be a problem. |
| 4 | 4 |
| 5 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 | FileCheck %s | 5 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \ |
| 6 ; RUN: -allow-externally-defined-symbols | FileCheck %s |
| 6 | 7 |
| 7 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented) | 8 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented) |
| 8 ; once enough infrastructure is in. Also, switch to --filetype=obj | 9 ; once enough infrastructure is in. Also, switch to --filetype=obj |
| 9 ; when possible. | 10 ; when possible. |
| 10 ; RUN: %if --need=target_ARM32 --need=allow_dump \ | 11 ; RUN: %if --need=target_ARM32 --need=allow_dump \ |
| 11 ; RUN: --command %p2i --filetype=asm --assemble \ | 12 ; RUN: --command %p2i --filetype=asm --assemble \ |
| 12 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \ | 13 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \ |
| 13 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ | 14 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ |
| 14 ; RUN: --command FileCheck --check-prefix ARM32 %s | 15 ; RUN: --command FileCheck --check-prefix ARM32 %s |
| 15 | 16 |
| 16 ; Test 8-bits of all ones rotated right by various amounts (even vs odd). | 17 ; Test 8-bits of all ones rotated right by various amounts (even vs odd). |
| 17 ; ARM has a shifter that allows encoding 8-bits rotated right by even amounts. | 18 ; ARM has a shifter that allows encoding 8-bits rotated right by even amounts. |
| 18 ; The first few "rotate right" test cases are expressed as shift-left. | 19 ; The first few "rotate right" test cases are expressed as shift-left. |
| 19 | 20 |
| 20 define i32 @ret_8bits_shift_left0() { | 21 define internal i32 @ret_8bits_shift_left0() { |
| 21 ret i32 255 | 22 ret i32 255 |
| 22 } | 23 } |
| 23 ; CHECK-LABEL: ret_8bits_shift_left0 | 24 ; CHECK-LABEL: ret_8bits_shift_left0 |
| 24 ; CHECK-NEXT: mov eax,0xff | 25 ; CHECK-NEXT: mov eax,0xff |
| 25 ; ARM32-LABEL: ret_8bits_shift_left0 | 26 ; ARM32-LABEL: ret_8bits_shift_left0 |
| 26 ; ARM32-NEXT: mov r0, #255 | 27 ; ARM32-NEXT: mov r0, #255 |
| 27 | 28 |
| 28 define i32 @ret_8bits_shift_left1() { | 29 define internal i32 @ret_8bits_shift_left1() { |
| 29 ret i32 510 | 30 ret i32 510 |
| 30 } | 31 } |
| 31 ; CHECK-LABEL: ret_8bits_shift_left1 | 32 ; CHECK-LABEL: ret_8bits_shift_left1 |
| 32 ; CHECK-NEXT: mov eax,0x1fe | 33 ; CHECK-NEXT: mov eax,0x1fe |
| 33 ; ARM32-LABEL: ret_8bits_shift_left1 | 34 ; ARM32-LABEL: ret_8bits_shift_left1 |
| 34 ; ARM32-NEXT: movw r0, #510 | 35 ; ARM32-NEXT: movw r0, #510 |
| 35 | 36 |
| 36 define i32 @ret_8bits_shift_left2() { | 37 define internal i32 @ret_8bits_shift_left2() { |
| 37 ret i32 1020 | 38 ret i32 1020 |
| 38 } | 39 } |
| 39 ; CHECK-LABEL: ret_8bits_shift_left2 | 40 ; CHECK-LABEL: ret_8bits_shift_left2 |
| 40 ; CHECK-NEXT: mov eax,0x3fc | 41 ; CHECK-NEXT: mov eax,0x3fc |
| 41 ; ARM32-LABEL: ret_8bits_shift_left2 | 42 ; ARM32-LABEL: ret_8bits_shift_left2 |
| 42 ; ARM32-NEXT: mov r0, #1020 | 43 ; ARM32-NEXT: mov r0, #1020 |
| 43 | 44 |
| 44 define i32 @ret_8bits_shift_left4() { | 45 define internal i32 @ret_8bits_shift_left4() { |
| 45 ret i32 4080 | 46 ret i32 4080 |
| 46 } | 47 } |
| 47 ; CHECK-LABEL: ret_8bits_shift_left4 | 48 ; CHECK-LABEL: ret_8bits_shift_left4 |
| 48 ; CHECK-NEXT: mov eax,0xff0 | 49 ; CHECK-NEXT: mov eax,0xff0 |
| 49 ; ARM32-LABEL: ret_8bits_shift_left4 | 50 ; ARM32-LABEL: ret_8bits_shift_left4 |
| 50 ; ARM32-NEXT: mov r0, #4080 | 51 ; ARM32-NEXT: mov r0, #4080 |
| 51 | 52 |
| 52 define i32 @ret_8bits_shift_left14() { | 53 define internal i32 @ret_8bits_shift_left14() { |
| 53 ret i32 4177920 | 54 ret i32 4177920 |
| 54 } | 55 } |
| 55 ; CHECK-LABEL: ret_8bits_shift_left14 | 56 ; CHECK-LABEL: ret_8bits_shift_left14 |
| 56 ; CHECK-NEXT: mov eax,0x3fc000 | 57 ; CHECK-NEXT: mov eax,0x3fc000 |
| 57 ; ARM32-LABEL: ret_8bits_shift_left14 | 58 ; ARM32-LABEL: ret_8bits_shift_left14 |
| 58 ; ARM32-NEXT: mov r0, #4177920 | 59 ; ARM32-NEXT: mov r0, #4177920 |
| 59 | 60 |
| 60 define i32 @ret_8bits_shift_left15() { | 61 define internal i32 @ret_8bits_shift_left15() { |
| 61 ret i32 8355840 | 62 ret i32 8355840 |
| 62 } | 63 } |
| 63 ; CHECK-LABEL: ret_8bits_shift_left15 | 64 ; CHECK-LABEL: ret_8bits_shift_left15 |
| 64 ; CHECK-NEXT: mov eax,0x7f8000 | 65 ; CHECK-NEXT: mov eax,0x7f8000 |
| 65 ; ARM32-LABEL: ret_8bits_shift_left15 | 66 ; ARM32-LABEL: ret_8bits_shift_left15 |
| 66 ; ARM32-NEXT: movw r0, #32768 | 67 ; ARM32-NEXT: movw r0, #32768 |
| 67 ; ARM32-NEXT: movt r0, #127 | 68 ; ARM32-NEXT: movt r0, #127 |
| 68 | 69 |
| 69 ; Shift 8 bits left by 24 to the i32 limit. This is also ror by 8 bits. | 70 ; Shift 8 bits left by 24 to the i32 limit. This is also ror by 8 bits. |
| 70 | 71 |
| 71 define i32 @ret_8bits_shift_left24() { | 72 define internal i32 @ret_8bits_shift_left24() { |
| 72 ret i32 4278190080 | 73 ret i32 4278190080 |
| 73 } | 74 } |
| 74 ; CHECK-LABEL: ret_8bits_shift_left24 | 75 ; CHECK-LABEL: ret_8bits_shift_left24 |
| 75 ; CHECK-NEXT: mov eax,0xff000000 | 76 ; CHECK-NEXT: mov eax,0xff000000 |
| 76 ; ARM32-LABEL: ret_8bits_shift_left24 | 77 ; ARM32-LABEL: ret_8bits_shift_left24 |
| 77 ; ARM32-NEXT: mov r0, #-16777216 | 78 ; ARM32-NEXT: mov r0, #-16777216 |
| 78 ; ARM32-NEXT: bx lr | 79 ; ARM32-NEXT: bx lr |
| 79 | 80 |
| 80 ; The next few cases wrap around and actually demonstrate the rotation. | 81 ; The next few cases wrap around and actually demonstrate the rotation. |
| 81 | 82 |
| 82 define i32 @ret_8bits_ror7() { | 83 define internal i32 @ret_8bits_ror7() { |
| 83 ret i32 4261412865 | 84 ret i32 4261412865 |
| 84 } | 85 } |
| 85 ; CHECK-LABEL: ret_8bits_ror7 | 86 ; CHECK-LABEL: ret_8bits_ror7 |
| 86 ; CHECK-NEXT: mov eax,0xfe000001 | 87 ; CHECK-NEXT: mov eax,0xfe000001 |
| 87 ; ARM32-LABEL: ret_8bits_ror7 | 88 ; ARM32-LABEL: ret_8bits_ror7 |
| 88 ; ARM32-NEXT: movw r0, #1 | 89 ; ARM32-NEXT: movw r0, #1 |
| 89 ; ARM32-NEXT: movt r0, #65024 | 90 ; ARM32-NEXT: movt r0, #65024 |
| 90 | 91 |
| 91 define i32 @ret_8bits_ror6() { | 92 define internal i32 @ret_8bits_ror6() { |
| 92 ret i32 4227858435 | 93 ret i32 4227858435 |
| 93 } | 94 } |
| 94 ; CHECK-LABEL: ret_8bits_ror6 | 95 ; CHECK-LABEL: ret_8bits_ror6 |
| 95 ; CHECK-NEXT: mov eax,0xfc000003 | 96 ; CHECK-NEXT: mov eax,0xfc000003 |
| 96 ; ARM32-LABEL: ret_8bits_ror6 | 97 ; ARM32-LABEL: ret_8bits_ror6 |
| 97 ; ARM32-NEXT: mov r0, #-67108861 | 98 ; ARM32-NEXT: mov r0, #-67108861 |
| 98 ; ARM32-NEXT: bx lr | 99 ; ARM32-NEXT: bx lr |
| 99 | 100 |
| 100 define i32 @ret_8bits_ror5() { | 101 define internal i32 @ret_8bits_ror5() { |
| 101 ret i32 4160749575 | 102 ret i32 4160749575 |
| 102 } | 103 } |
| 103 ; CHECK-LABEL: ret_8bits_ror5 | 104 ; CHECK-LABEL: ret_8bits_ror5 |
| 104 ; CHECK-NEXT: mov eax,0xf8000007 | 105 ; CHECK-NEXT: mov eax,0xf8000007 |
| 105 ; ARM32-LABEL: ret_8bits_ror5 | 106 ; ARM32-LABEL: ret_8bits_ror5 |
| 106 ; ARM32-NEXT: movw r0, #7 | 107 ; ARM32-NEXT: movw r0, #7 |
| 107 ; ARM32-NEXT: movt r0, #63488 | 108 ; ARM32-NEXT: movt r0, #63488 |
| 108 | 109 |
| 109 define i32 @ret_8bits_ror4() { | 110 define internal i32 @ret_8bits_ror4() { |
| 110 ret i32 4026531855 | 111 ret i32 4026531855 |
| 111 } | 112 } |
| 112 ; CHECK-LABEL: ret_8bits_ror4 | 113 ; CHECK-LABEL: ret_8bits_ror4 |
| 113 ; CHECK-NEXT: mov eax,0xf000000f | 114 ; CHECK-NEXT: mov eax,0xf000000f |
| 114 ; ARM32-LABEL: ret_8bits_ror4 | 115 ; ARM32-LABEL: ret_8bits_ror4 |
| 115 ; ARM32-NEXT: mov r0, #-268435441 | 116 ; ARM32-NEXT: mov r0, #-268435441 |
| 116 ; ARM32-NEXT: bx lr | 117 ; ARM32-NEXT: bx lr |
| 117 | 118 |
| 118 define i32 @ret_8bits_ror3() { | 119 define internal i32 @ret_8bits_ror3() { |
| 119 ret i32 3758096415 | 120 ret i32 3758096415 |
| 120 } | 121 } |
| 121 ; CHECK-LABEL: ret_8bits_ror3 | 122 ; CHECK-LABEL: ret_8bits_ror3 |
| 122 ; CHECK-NEXT: mov eax,0xe000001f | 123 ; CHECK-NEXT: mov eax,0xe000001f |
| 123 ; ARM32-LABEL: ret_8bits_ror3 | 124 ; ARM32-LABEL: ret_8bits_ror3 |
| 124 ; ARM32-NEXT: movw r0, #31 | 125 ; ARM32-NEXT: movw r0, #31 |
| 125 ; ARM32-NEXT: movt r0, #57344 | 126 ; ARM32-NEXT: movt r0, #57344 |
| 126 | 127 |
| 127 define i32 @ret_8bits_ror2() { | 128 define internal i32 @ret_8bits_ror2() { |
| 128 ret i32 3221225535 | 129 ret i32 3221225535 |
| 129 } | 130 } |
| 130 ; CHECK-LABEL: ret_8bits_ror2 | 131 ; CHECK-LABEL: ret_8bits_ror2 |
| 131 ; CHECK-NEXT: mov eax,0xc000003f | 132 ; CHECK-NEXT: mov eax,0xc000003f |
| 132 ; ARM32-LABEL: ret_8bits_ror2 | 133 ; ARM32-LABEL: ret_8bits_ror2 |
| 133 ; ARM32-NEXT: mov r0, #-1073741761 | 134 ; ARM32-NEXT: mov r0, #-1073741761 |
| 134 ; ARM32-NEXT: bx lr | 135 ; ARM32-NEXT: bx lr |
| 135 | 136 |
| 136 define i32 @ret_8bits_ror1() { | 137 define internal i32 @ret_8bits_ror1() { |
| 137 ret i32 2147483775 | 138 ret i32 2147483775 |
| 138 } | 139 } |
| 139 ; CHECK-LABEL: ret_8bits_ror1 | 140 ; CHECK-LABEL: ret_8bits_ror1 |
| 140 ; CHECK-NEXT: mov eax,0x8000007f | 141 ; CHECK-NEXT: mov eax,0x8000007f |
| 141 ; ARM32-LABEL: ret_8bits_ror1 | 142 ; ARM32-LABEL: ret_8bits_ror1 |
| 142 ; ARM32-NEXT: movw r0, #127 | 143 ; ARM32-NEXT: movw r0, #127 |
| 143 ; ARM32-NEXT: movt r0, #32768 | 144 ; ARM32-NEXT: movt r0, #32768 |
| 144 | 145 |
| 145 ; Some architectures can handle 16-bits at a time efficiently, | 146 ; Some architectures can handle 16-bits at a time efficiently, |
| 146 ; so also test those. | 147 ; so also test those. |
| 147 | 148 |
| 148 define i32 @ret_16bits_lower() { | 149 define internal i32 @ret_16bits_lower() { |
| 149 ret i32 65535 | 150 ret i32 65535 |
| 150 } | 151 } |
| 151 ; CHECK-LABEL: ret_16bits_lower | 152 ; CHECK-LABEL: ret_16bits_lower |
| 152 ; CHECK-NEXT: mov eax,0xffff | 153 ; CHECK-NEXT: mov eax,0xffff |
| 153 ; ARM32-LABEL: ret_16bits_lower | 154 ; ARM32-LABEL: ret_16bits_lower |
| 154 ; ARM32-NEXT: movw r0, #65535 | 155 ; ARM32-NEXT: movw r0, #65535 |
| 155 ; ARM32-NEXT: bx lr | 156 ; ARM32-NEXT: bx lr |
| 156 | 157 |
| 157 define i32 @ret_17bits_lower() { | 158 define internal i32 @ret_17bits_lower() { |
| 158 ret i32 131071 | 159 ret i32 131071 |
| 159 } | 160 } |
| 160 ; CHECK-LABEL: ret_17bits_lower | 161 ; CHECK-LABEL: ret_17bits_lower |
| 161 ; CHECK-NEXT: mov eax,0x1ffff | 162 ; CHECK-NEXT: mov eax,0x1ffff |
| 162 ; ARM32-LABEL: ret_17bits_lower | 163 ; ARM32-LABEL: ret_17bits_lower |
| 163 ; ARM32-NEXT: movw r0, #65535 | 164 ; ARM32-NEXT: movw r0, #65535 |
| 164 ; ARM32-NEXT: movt r0, #1 | 165 ; ARM32-NEXT: movt r0, #1 |
| 165 | 166 |
| 166 define i32 @ret_16bits_upper() { | 167 define internal i32 @ret_16bits_upper() { |
| 167 ret i32 4294901760 | 168 ret i32 4294901760 |
| 168 } | 169 } |
| 169 ; CHECK-LABEL: ret_16bits_upper | 170 ; CHECK-LABEL: ret_16bits_upper |
| 170 ; CHECK-NEXT: mov eax,0xffff0000 | 171 ; CHECK-NEXT: mov eax,0xffff0000 |
| 171 ; ARM32-LABEL: ret_16bits_upper | 172 ; ARM32-LABEL: ret_16bits_upper |
| 172 ; ARM32-NEXT: movw r0, #0 | 173 ; ARM32-NEXT: movw r0, #0 |
| 173 ; ARM32-NEXT: movt r0, #65535 | 174 ; ARM32-NEXT: movt r0, #65535 |
| 174 | 175 |
| 175 ; Some 32-bit immediates can be inverted, and moved in a single instruction. | 176 ; Some 32-bit immediates can be inverted, and moved in a single instruction. |
| 176 | 177 |
| 177 define i32 @ret_8bits_inverted_shift_left0() { | 178 define internal i32 @ret_8bits_inverted_shift_left0() { |
| 178 ret i32 4294967040 | 179 ret i32 4294967040 |
| 179 } | 180 } |
| 180 ; CHECK-LABEL: ret_8bits_inverted_shift_left0 | 181 ; CHECK-LABEL: ret_8bits_inverted_shift_left0 |
| 181 ; CHECK-NEXT: mov eax,0xffffff00 | 182 ; CHECK-NEXT: mov eax,0xffffff00 |
| 182 ; ARM32-LABEL: ret_8bits_inverted_shift_left0 | 183 ; ARM32-LABEL: ret_8bits_inverted_shift_left0 |
| 183 ; ARM32-NEXT: mvn r0, #255 | 184 ; ARM32-NEXT: mvn r0, #255 |
| 184 ; ARM32-NEXT: bx lr | 185 ; ARM32-NEXT: bx lr |
| 185 | 186 |
| 186 define i32 @ret_8bits_inverted_shift_left24() { | 187 define internal i32 @ret_8bits_inverted_shift_left24() { |
| 187 ret i32 16777215 | 188 ret i32 16777215 |
| 188 } | 189 } |
| 189 ; CHECK-LABEL: ret_8bits_inverted_shift_left24 | 190 ; CHECK-LABEL: ret_8bits_inverted_shift_left24 |
| 190 ; CHECK-NEXT: mov eax,0xffffff | 191 ; CHECK-NEXT: mov eax,0xffffff |
| 191 ; ARM32-LABEL: ret_8bits_inverted_shift_left24 | 192 ; ARM32-LABEL: ret_8bits_inverted_shift_left24 |
| 192 ; ARM32-NEXT: mvn r0, #-16777216 | 193 ; ARM32-NEXT: mvn r0, #-16777216 |
| 193 ; ARM32-NEXT: bx lr | 194 ; ARM32-NEXT: bx lr |
| 194 | 195 |
| 195 define i32 @ret_8bits_inverted_ror2() { | 196 define internal i32 @ret_8bits_inverted_ror2() { |
| 196 ret i32 1073741760 | 197 ret i32 1073741760 |
| 197 } | 198 } |
| 198 ; CHECK-LABEL: ret_8bits_inverted_ror2 | 199 ; CHECK-LABEL: ret_8bits_inverted_ror2 |
| 199 ; CHECK-NEXT: mov eax,0x3fffffc0 | 200 ; CHECK-NEXT: mov eax,0x3fffffc0 |
| 200 ; ARM32-LABEL: ret_8bits_inverted_ror2 | 201 ; ARM32-LABEL: ret_8bits_inverted_ror2 |
| 201 ; ARM32-NEXT: mvn r0, #-1073741761 | 202 ; ARM32-NEXT: mvn r0, #-1073741761 |
| 202 ; ARM32-NEXT: bx lr | 203 ; ARM32-NEXT: bx lr |
| 203 | 204 |
| 204 define i32 @ret_8bits_inverted_ror6() { | 205 define internal i32 @ret_8bits_inverted_ror6() { |
| 205 ret i32 67108860 | 206 ret i32 67108860 |
| 206 } | 207 } |
| 207 ; CHECK-LABEL: ret_8bits_inverted_ror6 | 208 ; CHECK-LABEL: ret_8bits_inverted_ror6 |
| 208 ; CHECK-NEXT: mov eax,0x3fffffc | 209 ; CHECK-NEXT: mov eax,0x3fffffc |
| 209 ; ARM32-LABEL: ret_8bits_inverted_ror6 | 210 ; ARM32-LABEL: ret_8bits_inverted_ror6 |
| 210 ; ARM32-NEXT: mvn r0, #-67108861 | 211 ; ARM32-NEXT: mvn r0, #-67108861 |
| 211 ; ARM32-NEXT: bx lr | 212 ; ARM32-NEXT: bx lr |
| 212 | 213 |
| 213 define i32 @ret_8bits_inverted_ror7() { | 214 define internal i32 @ret_8bits_inverted_ror7() { |
| 214 ret i32 33554430 | 215 ret i32 33554430 |
| 215 } | 216 } |
| 216 ; CHECK-LABEL: ret_8bits_inverted_ror7 | 217 ; CHECK-LABEL: ret_8bits_inverted_ror7 |
| 217 ; CHECK-NEXT: mov eax,0x1fffffe | 218 ; CHECK-NEXT: mov eax,0x1fffffe |
| 218 ; ARM32-LABEL: ret_8bits_inverted_ror7 | 219 ; ARM32-LABEL: ret_8bits_inverted_ror7 |
| 219 ; ARM32-NEXT: movw r0, #65534 | 220 ; ARM32-NEXT: movw r0, #65534 |
| 220 ; ARM32-NEXT: movt r0, #511 | 221 ; ARM32-NEXT: movt r0, #511 |
| 221 | 222 |
| 222 ; 64-bit immediates. | 223 ; 64-bit immediates. |
| 223 | 224 |
| 224 define i64 @ret_64bits_shift_left0() { | 225 define internal i64 @ret_64bits_shift_left0() { |
| 225 ret i64 1095216660735 | 226 ret i64 1095216660735 |
| 226 } | 227 } |
| 227 ; CHECK-LABEL: ret_64bits_shift_left0 | 228 ; CHECK-LABEL: ret_64bits_shift_left0 |
| 228 ; CHECK-NEXT: mov eax,0xff | 229 ; CHECK-NEXT: mov eax,0xff |
| 229 ; CHECK-NEXT: mov edx,0xff | 230 ; CHECK-NEXT: mov edx,0xff |
| 230 ; ARM32-LABEL: ret_64bits_shift_left0 | 231 ; ARM32-LABEL: ret_64bits_shift_left0 |
| 231 ; ARM32-NEXT: movw r0, #255 | 232 ; ARM32-NEXT: movw r0, #255 |
| 232 ; ARM32-NEXT: movw r1, #255 | 233 ; ARM32-NEXT: movw r1, #255 |
| 233 | 234 |
| 234 ; A relocatable constant is assumed to require 32-bits along with | 235 ; A relocatable constant is assumed to require 32-bits along with |
| 235 ; relocation directives. | 236 ; relocation directives. |
| 236 | 237 |
| 237 declare void @_start() | 238 declare void @_start() |
| 238 | 239 |
| 239 define i32 @ret_addr() { | 240 define internal i32 @ret_addr() { |
| 240 %ptr = ptrtoint void ()* @_start to i32 | 241 %ptr = ptrtoint void ()* @_start to i32 |
| 241 ret i32 %ptr | 242 ret i32 %ptr |
| 242 } | 243 } |
| 243 ; CHECK-LABEL: ret_addr | 244 ; CHECK-LABEL: ret_addr |
| 244 ; CHECK-NEXT: mov eax,0x0 {{.*}} R_386_32 _start | 245 ; CHECK-NEXT: mov eax,0x0 {{.*}} R_386_32 _start |
| 245 ; ARM32-LABEL: ret_addr | 246 ; ARM32-LABEL: ret_addr |
| 246 ; ARM32-NEXT: movw r0, #0 {{.*}} R_ARM_MOVW_ABS_NC _start | 247 ; ARM32-NEXT: movw r0, #0 {{.*}} R_ARM_MOVW_ABS_NC _start |
| 247 ; ARM32-NEXT: movt r0, #0 {{.*}} R_ARM_MOVT_ABS _start | 248 ; ARM32-NEXT: movt r0, #0 {{.*}} R_ARM_MOVT_ABS _start |
| OLD | NEW |