Home | History | Annotate | Download | only in ARM
      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