1 @ RUN: llvm-mc -triple=armv7-apple-darwin -show-encoding < %s | FileCheck %s 2 .syntax unified 3 .globl _func 4 5 @ Check that the assembler can handle the documented syntax from the ARM ARM 6 @ for loads and stores. 7 8 _func: 9 @ CHECK: _func 10 11 @------------------------------------------------------------------------------ 12 @ LDR (immediate) 13 @------------------------------------------------------------------------------ 14 ldr r5, [r7] 15 ldr r6, [r3, #63] 16 ldr r2, [r4, #4095]! 17 ldr r1, [r2], #30 18 ldr r3, [r1], #-30 19 ldr r9, [r2], #-0 20 21 @ CHECK: ldr r5, [r7] @ encoding: [0x00,0x50,0x97,0xe5] 22 @ CHECK: ldr r6, [r3, #63] @ encoding: [0x3f,0x60,0x93,0xe5] 23 @ CHECK: ldr r2, [r4, #4095]! @ encoding: [0xff,0x2f,0xb4,0xe5] 24 @ CHECK: ldr r1, [r2], #30 @ encoding: [0x1e,0x10,0x92,0xe4] 25 @ CHECK: ldr r3, [r1], #-30 @ encoding: [0x1e,0x30,0x11,0xe4] 26 @ CHECK: ldr r9, [r2], #-0 @ encoding: [0x00,0x90,0x12,0xe4] 27 28 @------------------------------------------------------------------------------ 29 @ FIXME: LDR (literal) 30 @------------------------------------------------------------------------------ 31 @ label operands currently assert the show-encoding asm comment helper due 32 @ to the use of non-contiguous bit ranges for fixups in ARM. Once that's 33 @ cleaned up, we can write useful assembly testcases for these sorts of 34 @ instructions. 35 36 @------------------------------------------------------------------------------ 37 @ LDR (register) 38 @------------------------------------------------------------------------------ 39 ldr r3, [r8, r1] 40 ldr r2, [r5, -r3] 41 ldr r1, [r5, r9]! 42 ldr r6, [r7, -r8]! 43 ldr r1, [r0, r2, lsr #3]! 44 ldr r5, [r9], r2 45 ldr r4, [r3], -r6 46 ldr r3, [r8, -r2, lsl #15] 47 ldr r1, [r5], r3, asr #15 48 49 @ CHECK: ldr r3, [r8, r1] @ encoding: [0x01,0x30,0x98,0xe7] 50 @ CHECK: ldr r2, [r5, -r3] @ encoding: [0x03,0x20,0x15,0xe7] 51 @ CHECK: ldr r1, [r5, r9]! @ encoding: [0x09,0x10,0xb5,0xe7] 52 @ CHECK: ldr r6, [r7, -r8]! @ encoding: [0x08,0x60,0x37,0xe7] 53 @ CHECK: ldr r1, [r0, r2, lsr #3]! @ encoding: [0xa2,0x11,0xb0,0xe7] 54 @ CHECK: ldr r5, [r9], r2 @ encoding: [0x02,0x50,0x99,0xe6] 55 @ CHECK: ldr r4, [r3], -r6 @ encoding: [0x06,0x40,0x13,0xe6] 56 @ CHECK: ldr r3, [r8, -r2, lsl #15] @ encoding: [0x82,0x37,0x18,0xe7] 57 @ CHECK: ldr r1, [r5], r3, asr #15 @ encoding: [0xc3,0x17,0x95,0xe6] 58 59 60 @------------------------------------------------------------------------------ 61 @ LDRB (immediate) 62 @------------------------------------------------------------------------------ 63 ldrb r3, [r8] 64 ldrb r1, [sp, #63] 65 ldrb r9, [r3, #4095]! 66 ldrb r8, [r1], #22 67 ldrb r2, [r7], #-19 68 69 @ CHECK: ldrb r3, [r8] @ encoding: [0x00,0x30,0xd8,0xe5] 70 @ CHECK: ldrb r1, [sp, #63] @ encoding: [0x3f,0x10,0xdd,0xe5] 71 @ CHECK: ldrb r9, [r3, #4095]! @ encoding: [0xff,0x9f,0xf3,0xe5] 72 @ CHECK: ldrb r8, [r1], #22 @ encoding: [0x16,0x80,0xd1,0xe4] 73 @ CHECK: ldrb r2, [r7], #-19 @ encoding: [0x13,0x20,0x57,0xe4] 74 75 76 @------------------------------------------------------------------------------ 77 @ LDRB (register) 78 @------------------------------------------------------------------------------ 79 ldrb r9, [r8, r5] 80 ldrb r1, [r5, -r1] 81 ldrb r3, [r5, r2]! 82 ldrb r6, [r9, -r3]! 83 ldrb r2, [r1], r4 84 ldrb r8, [r4], -r5 85 ldrb r7, [r12, -r1, lsl #15] 86 ldrb r5, [r2], r9, asr #15 87 88 @ CHECK: ldrb r9, [r8, r5] @ encoding: [0x05,0x90,0xd8,0xe7] 89 @ CHECK: ldrb r1, [r5, -r1] @ encoding: [0x01,0x10,0x55,0xe7] 90 @ CHECK: ldrb r3, [r5, r2]! @ encoding: [0x02,0x30,0xf5,0xe7] 91 @ CHECK: ldrb r6, [r9, -r3]! @ encoding: [0x03,0x60,0x79,0xe7] 92 @ CHECK: ldrb r2, [r1], r4 @ encoding: [0x04,0x20,0xd1,0xe6] 93 @ CHECK: ldrb r8, [r4], -r5 @ encoding: [0x05,0x80,0x54,0xe6] 94 @ CHECK: ldrb r7, [r12, -r1, lsl #15] @ encoding: [0x81,0x77,0x5c,0xe7] 95 @ CHECK: ldrb r5, [r2], r9, asr #15 @ encoding: [0xc9,0x57,0xd2,0xe6] 96 97 98 @------------------------------------------------------------------------------ 99 @ LDRBT 100 @------------------------------------------------------------------------------ 101 @ FIXME: Optional offset operand. 102 ldrbt r3, [r1], #4 103 ldrbt r2, [r8], #-8 104 ldrbt r8, [r7], r6 105 ldrbt r1, [r2], -r6, lsl #12 106 107 108 @ CHECK: ldrbt r3, [r1], #4 @ encoding: [0x04,0x30,0xf1,0xe4] 109 @ CHECK: ldrbt r2, [r8], #-8 @ encoding: [0x08,0x20,0x78,0xe4] 110 @ CHECK: ldrbt r8, [r7], r6 @ encoding: [0x06,0x80,0xf7,0xe6] 111 @ CHECK: ldrbt r1, [r2], -r6, lsl #12 @ encoding: [0x06,0x16,0x72,0xe6] 112 113 114 @------------------------------------------------------------------------------ 115 @ LDRD (immediate) 116 @------------------------------------------------------------------------------ 117 ldrd r2, r3, [r5] 118 ldrd r6, r7, [r2, #15] 119 ldrd r0, r1, [r9, #32]! 120 ldrd r6, r7, [r1], #8 121 ldrd r0, r1, [r8], #0 122 ldrd r0, r1, [r8], #+0 123 ldrd r0, r1, [r8], #-0 124 125 @ CHECK: ldrd r2, r3, [r5] @ encoding: [0xd0,0x20,0xc5,0xe1] 126 @ CHECK: ldrd r6, r7, [r2, #15] @ encoding: [0xdf,0x60,0xc2,0xe1] 127 @ CHECK: ldrd r0, r1, [r9, #32]! @ encoding: [0xd0,0x02,0xe9,0xe1] 128 @ CHECK: ldrd r6, r7, [r1], #8 @ encoding: [0xd8,0x60,0xc1,0xe0] 129 @ CHECK: ldrd r0, r1, [r8], #0 @ encoding: [0xd0,0x00,0xc8,0xe0] 130 @ CHECK: ldrd r0, r1, [r8], #0 @ encoding: [0xd0,0x00,0xc8,0xe0] 131 @ CHECK: ldrd r0, r1, [r8], #-0 @ encoding: [0xd0,0x00,0x48,0xe0] 132 133 134 @------------------------------------------------------------------------------ 135 @ LDRD (label) 136 @------------------------------------------------------------------------------ 137 ldrd r2, r3, Lbaz 138 Lbaz: .quad 0 139 140 @ CHECK: ldrd r2, r3, Lbaz @ encoding: [0xd0'A',0x20'A',0x4f'A',0xe1'A'] 141 142 143 @------------------------------------------------------------------------------ 144 @ LDRD (register) 145 @------------------------------------------------------------------------------ 146 ldrd r4, r5, [r1, r3] 147 ldrd r4, r5, [r7, r2]! 148 ldrd r0, r1, [r8], r12 149 ldrd r0, r1, [r8], -r12 150 151 @ CHECK: ldrd r4, r5, [r1, r3] @ encoding: [0xd3,0x40,0x81,0xe1] 152 @ CHECK: ldrd r4, r5, [r7, r2]! @ encoding: [0xd2,0x40,0xa7,0xe1] 153 @ CHECK: ldrd r0, r1, [r8], r12 @ encoding: [0xdc,0x00,0x88,0xe0] 154 @ CHECK: ldrd r0, r1, [r8], -r12 @ encoding: [0xdc,0x00,0x08,0xe0] 155 156 157 @------------------------------------------------------------------------------ 158 @ LDRH (immediate) 159 @------------------------------------------------------------------------------ 160 ldrh r3, [r4] 161 ldrh r2, [r7, #4] 162 ldrh r1, [r8, #64]! 163 ldrh r12, [sp], #4 164 165 @ CHECK: ldrh r3, [r4] @ encoding: [0xb0,0x30,0xd4,0xe1] 166 @ CHECK: ldrh r2, [r7, #4] @ encoding: [0xb4,0x20,0xd7,0xe1] 167 @ CHECK: ldrh r1, [r8, #64]! @ encoding: [0xb0,0x14,0xf8,0xe1] 168 @ CHECK: ldrh r12, [sp], #4 @ encoding: [0xb4,0xc0,0xdd,0xe0] 169 170 171 @------------------------------------------------------------------------------ 172 @ FIXME: LDRH (label) 173 @------------------------------------------------------------------------------ 174 175 176 @------------------------------------------------------------------------------ 177 @ LDRH (register) 178 @------------------------------------------------------------------------------ 179 ldrh r6, [r5, r4] 180 ldrh r3, [r8, r11]! 181 ldrh r1, [r2, -r1]! 182 ldrh r9, [r7], r2 183 ldrh r4, [r3], -r2 184 185 @ CHECK: ldrh r6, [r5, r4] @ encoding: [0xb4,0x60,0x95,0xe1] 186 @ CHECK: ldrh r3, [r8, r11]! @ encoding: [0xbb,0x30,0xb8,0xe1] 187 @ CHECK: ldrh r1, [r2, -r1]! @ encoding: [0xb1,0x10,0x32,0xe1] 188 @ CHECK: ldrh r9, [r7], r2 @ encoding: [0xb2,0x90,0x97,0xe0] 189 @ CHECK: ldrh r4, [r3], -r2 @ encoding: [0xb2,0x40,0x13,0xe0] 190 191 192 @------------------------------------------------------------------------------ 193 @ LDRHT 194 @------------------------------------------------------------------------------ 195 ldrht r9, [r7], #128 196 ldrht r4, [r3], #-75 197 ldrht r9, [r7], r2 198 ldrht r4, [r3], -r2 199 200 @ CHECK: ldrht r9, [r7], #128 @ encoding: [0xb0,0x98,0xf7,0xe0] 201 @ CHECK: ldrht r4, [r3], #-75 @ encoding: [0xbb,0x44,0x73,0xe0] 202 @ CHECK: ldrht r9, [r7], r2 @ encoding: [0xb2,0x90,0xb7,0xe0] 203 @ CHECK: ldrht r4, [r3], -r2 @ encoding: [0xb2,0x40,0x33,0xe0] 204 205 206 @------------------------------------------------------------------------------ 207 @ LDRSB (immediate) 208 @------------------------------------------------------------------------------ 209 ldrsb r3, [r4] 210 ldrsb r2, [r7, #17] 211 ldrsb r1, [r8, #255]! 212 ldrsb r12, [sp], #9 213 214 @ CHECK: ldrsb r3, [r4] @ encoding: [0xd0,0x30,0xd4,0xe1] 215 @ CHECK: ldrsb r2, [r7, #17] @ encoding: [0xd1,0x21,0xd7,0xe1] 216 @ CHECK: ldrsb r1, [r8, #255]! @ encoding: [0xdf,0x1f,0xf8,0xe1] 217 @ CHECK: ldrsb r12, [sp], #9 @ encoding: [0xd9,0xc0,0xdd,0xe0] 218 219 220 @------------------------------------------------------------------------------ 221 @ FIXME: LDRSB (label) 222 @------------------------------------------------------------------------------ 223 224 225 @------------------------------------------------------------------------------ 226 @ LDRSB (register) 227 @------------------------------------------------------------------------------ 228 ldrsb r6, [r5, r4] 229 ldrsb r3, [r8, r11]! 230 ldrsb r1, [r2, -r1]! 231 ldrsb r9, [r7], r2 232 ldrsb r4, [r3], -r2 233 234 235 @ CHECK: ldrsb r6, [r5, r4] @ encoding: [0xd4,0x60,0x95,0xe1] 236 @ CHECK: ldrsb r3, [r8, r11]! @ encoding: [0xdb,0x30,0xb8,0xe1] 237 @ CHECK: ldrsb r1, [r2, -r1]! @ encoding: [0xd1,0x10,0x32,0xe1] 238 @ CHECK: ldrsb r9, [r7], r2 @ encoding: [0xd2,0x90,0x97,0xe0] 239 @ CHECK: ldrsb r4, [r3], -r2 @ encoding: [0xd2,0x40,0x13,0xe0] 240 241 242 @------------------------------------------------------------------------------ 243 @ LDRSBT 244 @------------------------------------------------------------------------------ 245 ldrsbt r5, [r6], #1 246 ldrsbt r3, [r8], #-12 247 ldrsbt r8, [r9], r5 248 ldrsbt r2, [r1], -r4 249 250 @ CHECK: ldrsbt r5, [r6], #1 @ encoding: [0xd1,0x50,0xf6,0xe0] 251 @ CHECK: ldrsbt r3, [r8], #-12 @ encoding: [0xdc,0x30,0x78,0xe0] 252 @ CHECK: ldrsbt r8, [r9], r5 @ encoding: [0xd5,0x80,0xb9,0xe0] 253 @ CHECK: ldrsbt r2, [r1], -r4 @ encoding: [0xd4,0x20,0x31,0xe0] 254 255 256 @------------------------------------------------------------------------------ 257 @ LDRSH (immediate) 258 @------------------------------------------------------------------------------ 259 ldrsh r5, [r9] 260 ldrsh r4, [r5, #7] 261 ldrsh r3, [r6, #55]! 262 ldrsh r2, [r7], #-9 263 264 @ CHECK: ldrsh r5, [r9] @ encoding: [0xf0,0x50,0xd9,0xe1] 265 @ CHECK: ldrsh r4, [r5, #7] @ encoding: [0xf7,0x40,0xd5,0xe1] 266 @ CHECK: ldrsh r3, [r6, #55]! @ encoding: [0xf7,0x33,0xf6,0xe1] 267 @ CHECK: ldrsh r2, [r7], #-9 @ encoding: [0xf9,0x20,0x57,0xe0] 268 269 270 @------------------------------------------------------------------------------ 271 @ FIXME: LDRSH (label) 272 @------------------------------------------------------------------------------ 273 274 275 @------------------------------------------------------------------------------ 276 @ LDRSH (register) 277 @------------------------------------------------------------------------------ 278 ldrsh r3, [r1, r5] 279 ldrsh r4, [r6, r1]! 280 ldrsh r5, [r3, -r6]! 281 ldrsh r6, [r9], r8 282 ldrsh r7, [r8], -r3 283 284 @ CHECK: ldrsh r3, [r1, r5] @ encoding: [0xf5,0x30,0x91,0xe1] 285 @ CHECK: ldrsh r4, [r6, r1]! @ encoding: [0xf1,0x40,0xb6,0xe1] 286 @ CHECK: ldrsh r5, [r3, -r6]! @ encoding: [0xf6,0x50,0x33,0xe1] 287 @ CHECK: ldrsh r6, [r9], r8 @ encoding: [0xf8,0x60,0x99,0xe0] 288 @ CHECK: ldrsh r7, [r8], -r3 @ encoding: [0xf3,0x70,0x18,0xe0] 289 290 291 @------------------------------------------------------------------------------ 292 @ LDRSHT 293 @------------------------------------------------------------------------------ 294 ldrsht r5, [r6], #1 295 ldrsht r3, [r8], #-12 296 ldrsht r8, [r9], r5 297 ldrsht r2, [r1], -r4 298 299 @ CHECK: ldrsht r5, [r6], #1 @ encoding: [0xf1,0x50,0xf6,0xe0] 300 @ CHECK: ldrsht r3, [r8], #-12 @ encoding: [0xfc,0x30,0x78,0xe0] 301 @ CHECK: ldrsht r8, [r9], r5 @ encoding: [0xf5,0x80,0xb9,0xe0] 302 @ CHECK: ldrsht r2, [r1], -r4 @ encoding: [0xf4,0x20,0x31,0xe0] 303 304 305 @------------------------------------------------------------------------------ 306 @ STR (immediate) 307 @------------------------------------------------------------------------------ 308 str r8, [r12] 309 str r7, [r1, #12] 310 str r3, [r5, #40]! 311 str r9, [sp], #4095 312 str r1, [r7], #-128 313 str r1, [r0], #-0 314 315 @ CHECK: str r8, [r12] @ encoding: [0x00,0x80,0x8c,0xe5] 316 @ CHECK: str r7, [r1, #12] @ encoding: [0x0c,0x70,0x81,0xe5] 317 @ CHECK: str r3, [r5, #40]! @ encoding: [0x28,0x30,0xa5,0xe5] 318 @ CHECK: str r9, [sp], #4095 @ encoding: [0xff,0x9f,0x8d,0xe4] 319 @ CHECK: str r1, [r7], #-128 @ encoding: [0x80,0x10,0x07,0xe4] 320 @ CHECK: str r1, [r0], #-0 @ encoding: [0x00,0x10,0x00,0xe4] 321 322 @------------------------------------------------------------------------------ 323 @ FIXME: STR (literal) 324 @------------------------------------------------------------------------------ 325 326 @------------------------------------------------------------------------------ 327 @ STR (register) 328 @------------------------------------------------------------------------------ 329 str r9, [r6, r3] 330 str r8, [r0, -r2] 331 str r7, [r1, r6]! 332 str r6, [sp, -r1]! 333 str r5, [r3], r9 334 str r4, [r2], -r5 335 str r3, [r4, -r2, lsl #2] 336 str r2, [r7], r3, asr #24 337 338 @ CHECK: str r9, [r6, r3] @ encoding: [0x03,0x90,0x86,0xe7] 339 @ CHECK: str r8, [r0, -r2] @ encoding: [0x02,0x80,0x00,0xe7] 340 @ CHECK: str r7, [r1, r6]! @ encoding: [0x06,0x70,0xa1,0xe7] 341 @ CHECK: str r6, [sp, -r1]! @ encoding: [0x01,0x60,0x2d,0xe7] 342 @ CHECK: str r5, [r3], r9 @ encoding: [0x09,0x50,0x83,0xe6] 343 @ CHECK: str r4, [r2], -r5 @ encoding: [0x05,0x40,0x02,0xe6] 344 @ CHECK: str r3, [r4, -r2, lsl #2] @ encoding: [0x02,0x31,0x04,0xe7] 345 @ CHECK: str r2, [r7], r3, asr #24 @ encoding: [0x43,0x2c,0x87,0xe6] 346 347 348 @------------------------------------------------------------------------------ 349 @ STRB (immediate) 350 @------------------------------------------------------------------------------ 351 strb r9, [r2] 352 strb r7, [r1, #3] 353 strb r6, [r4, #405]! 354 strb r5, [r7], #72 355 strb r1, [sp], #-1 356 357 @ CHECK: strb r9, [r2] @ encoding: [0x00,0x90,0xc2,0xe5] 358 @ CHECK: strb r7, [r1, #3] @ encoding: [0x03,0x70,0xc1,0xe5] 359 @ CHECK: strb r6, [r4, #405]! @ encoding: [0x95,0x61,0xe4,0xe5] 360 @ CHECK: strb r5, [r7], #72 @ encoding: [0x48,0x50,0xc7,0xe4] 361 @ CHECK: strb r1, [sp], #-1 @ encoding: [0x01,0x10,0x4d,0xe4] 362 363 @------------------------------------------------------------------------------ 364 @ FIXME: STRB (literal) 365 @------------------------------------------------------------------------------ 366 367 @------------------------------------------------------------------------------ 368 @ STRB (register) 369 @------------------------------------------------------------------------------ 370 strb r1, [r2, r9] 371 strb r2, [r3, -r8] 372 strb r3, [r4, r7]! 373 strb r4, [r5, -r6]! 374 strb r5, [r6], r5 375 strb r6, [r2], -r4 376 strb r7, [r12, -r3, lsl #5] 377 strb sp, [r7], r2, asr #12 378 379 @ CHECK: strb r1, [r2, r9] @ encoding: [0x09,0x10,0xc2,0xe7] 380 @ CHECK: strb r2, [r3, -r8] @ encoding: [0x08,0x20,0x43,0xe7] 381 @ CHECK: strb r3, [r4, r7]! @ encoding: [0x07,0x30,0xe4,0xe7] 382 @ CHECK: strb r4, [r5, -r6]! @ encoding: [0x06,0x40,0x65,0xe7] 383 @ CHECK: strb r5, [r6], r5 @ encoding: [0x05,0x50,0xc6,0xe6] 384 @ CHECK: strb r6, [r2], -r4 @ encoding: [0x04,0x60,0x42,0xe6] 385 @ CHECK: strb r7, [r12, -r3, lsl #5] @ encoding: [0x83,0x72,0x4c,0xe7] 386 @ CHECK: strb sp, [r7], r2, asr #12 @ encoding: [0x42,0xd6,0xc7,0xe6] 387 388 389 @------------------------------------------------------------------------------ 390 @ STRBT 391 @------------------------------------------------------------------------------ 392 @ FIXME: Optional offset operand. 393 strbt r6, [r2], #12 394 strbt r5, [r6], #-13 395 strbt r4, [r9], r5 396 strbt r3, [r8], -r2, lsl #3 397 398 @ CHECK: strbt r6, [r2], #12 @ encoding: [0x0c,0x60,0xe2,0xe4] 399 @ CHECK: strbt r5, [r6], #-13 @ encoding: [0x0d,0x50,0x66,0xe4] 400 @ CHECK: strbt r4, [r9], r5 @ encoding: [0x05,0x40,0xe9,0xe6] 401 @ CHECK: strbt r3, [r8], -r2, lsl #3 @ encoding: [0x82,0x31,0x68,0xe6] 402 403 404 @------------------------------------------------------------------------------ 405 @ STRD (immediate) 406 @------------------------------------------------------------------------------ 407 strd r1, r2, [r4] 408 strd r2, r3, [r6, #1] 409 strd r3, r4, [r7, #22]! 410 strd r4, r5, [r8], #7 411 strd r5, r6, [sp], #0 412 strd r6, r7, [lr], #+0 413 strd r7, r8, [r9], #-0 414 415 @ CHECK: strd r1, r2, [r4] @ encoding: [0xf0,0x10,0xc4,0xe1] 416 @ CHECK: strd r2, r3, [r6, #1] @ encoding: [0xf1,0x20,0xc6,0xe1] 417 @ CHECK: strd r3, r4, [r7, #22]! @ encoding: [0xf6,0x31,0xe7,0xe1] 418 @ CHECK: strd r4, r5, [r8], #7 @ encoding: [0xf7,0x40,0xc8,0xe0] 419 @ CHECK: strd r5, r6, [sp], #0 @ encoding: [0xf0,0x50,0xcd,0xe0] 420 @ CHECK: strd r6, r7, [lr], #0 @ encoding: [0xf0,0x60,0xce,0xe0] 421 @ CHECK: strd r7, r8, [r9], #-0 @ encoding: [0xf0,0x70,0x49,0xe0] 422 423 424 @------------------------------------------------------------------------------ 425 @ FIXME: STRD (label) 426 @------------------------------------------------------------------------------ 427 428 @------------------------------------------------------------------------------ 429 @ STRD (register) 430 @------------------------------------------------------------------------------ 431 strd r8, r9, [r4, r1] 432 strd r7, r8, [r3, r9]! 433 strd r6, r7, [r5], r8 434 strd r5, r6, [r12], -r10 435 436 @ CHECK: strd r8, r9, [r4, r1] @ encoding: [0xf1,0x80,0x84,0xe1] 437 @ CHECK: strd r7, r8, [r3, r9]! @ encoding: [0xf9,0x70,0xa3,0xe1] 438 @ CHECK: strd r6, r7, [r5], r8 @ encoding: [0xf8,0x60,0x85,0xe0] 439 @ CHECK: strd r5, r6, [r12], -r10 @ encoding: [0xfa,0x50,0x0c,0xe0] 440 441 442 @------------------------------------------------------------------------------ 443 @ STRH (immediate) 444 @------------------------------------------------------------------------------ 445 strh r3, [r4] 446 strh r2, [r7, #4] 447 strh r1, [r8, #64]! 448 strh r12, [sp], #4 449 450 @ CHECK: strh r3, [r4] @ encoding: [0xb0,0x30,0xc4,0xe1] 451 @ CHECK: strh r2, [r7, #4] @ encoding: [0xb4,0x20,0xc7,0xe1] 452 @ CHECK: strh r1, [r8, #64]! @ encoding: [0xb0,0x14,0xe8,0xe1] 453 @ CHECK: strh r12, [sp], #4 @ encoding: [0xb4,0xc0,0xcd,0xe0] 454 455 456 @------------------------------------------------------------------------------ 457 @ FIXME: STRH (label) 458 @------------------------------------------------------------------------------ 459 460 461 @------------------------------------------------------------------------------ 462 @ STRH (register) 463 @------------------------------------------------------------------------------ 464 strh r6, [r5, r4] 465 strh r3, [r8, r11]! 466 strh r1, [r2, -r1]! 467 strh r9, [r7], r2 468 strh r4, [r3], -r2 469 470 @ CHECK: strh r6, [r5, r4] @ encoding: [0xb4,0x60,0x85,0xe1] 471 @ CHECK: strh r3, [r8, r11]! @ encoding: [0xbb,0x30,0xa8,0xe1] 472 @ CHECK: strh r1, [r2, -r1]! @ encoding: [0xb1,0x10,0x22,0xe1] 473 @ CHECK: strh r9, [r7], r2 @ encoding: [0xb2,0x90,0x87,0xe0] 474 @ CHECK: strh r4, [r3], -r2 @ encoding: [0xb2,0x40,0x03,0xe0] 475 476 @------------------------------------------------------------------------------ 477 @ STRHT 478 @------------------------------------------------------------------------------ 479 strht r2, [r5], #76 480 strht r8, [r1], #-25 481 strht r5, [r3], r4 482 strht r6, [r8], -r0 483 484 @ CHECK: strht r2, [r5], #76 @ encoding: [0xbc,0x24,0xe5,0xe0] 485 @ CHECK: strht r8, [r1], #-25 @ encoding: [0xb9,0x81,0x61,0xe0] 486 @ CHECK: strht r5, [r3], r4 @ encoding: [0xb4,0x50,0xa3,0xe0] 487 @ CHECK: strht r6, [r8], -r0 @ encoding: [0xb0,0x60,0x28,0xe0] 488 489 @------------------------------------------------------------------------------ 490 @ GNU Assembler Compatibility 491 @------------------------------------------------------------------------------ 492 493 ldrd r0, [sp] 494 strd r0, [sp] 495 496 @ CHECK: ldrd r0, r1, [sp] @ encoding: [0xd0,0x00,0xcd,0xe1] 497 @ CHECK: strd r0, r1, [sp] @ encoding: [0xf0,0x00,0xcd,0xe1] 498 499