1*9880d681SAndroid Build Coastguard Worker@--- 2*9880d681SAndroid Build Coastguard Worker@ Run these test in both Thumb1 and Thumb2 modes, as all of the encodings 3*9880d681SAndroid Build Coastguard Worker@ should be valid, and parse the same, in both. 4*9880d681SAndroid Build Coastguard Worker@--- 5*9880d681SAndroid Build Coastguard Worker@ RUN: llvm-mc -triple=thumbv6-apple-darwin -show-encoding < %s | FileCheck %s 6*9880d681SAndroid Build Coastguard Worker@ RUN: llvm-mc -triple=thumbv7-apple-darwin -show-encoding < %s | FileCheck %s 7*9880d681SAndroid Build Coastguard Worker@ RUN: llvm-mc -triple=thumbebv7-unknown-unknown -show-encoding < %s | FileCheck --check-prefix=CHECK-BE %s 8*9880d681SAndroid Build Coastguard Worker .syntax unified 9*9880d681SAndroid Build Coastguard Worker .globl _func 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker@ Check that the assembler can handle the documented syntax from the ARM ARM. 12*9880d681SAndroid Build Coastguard Worker@ For complex constructs like shifter operands, check more thoroughly for them 13*9880d681SAndroid Build Coastguard Worker@ once then spot check that following instructions accept the form generally. 14*9880d681SAndroid Build Coastguard Worker@ This gives us good coverage while keeping the overall size of the test 15*9880d681SAndroid Build Coastguard Worker@ more reasonable. 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker@ FIXME: Some 3-operand instructions have a 2-operand assembly syntax. 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker_func: 21*9880d681SAndroid Build Coastguard Worker@ CHECK: _func 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 24*9880d681SAndroid Build Coastguard Worker@ ADC (register) 25*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 26*9880d681SAndroid Build Coastguard Worker adcs r4, r6 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker@ CHECK: adcs r4, r6 @ encoding: [0x74,0x41] 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 32*9880d681SAndroid Build Coastguard Worker@ ADD (immediate) 33*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 34*9880d681SAndroid Build Coastguard Worker adds r1, r2, #3 35*9880d681SAndroid Build Coastguard Worker@ When Rd is not explicitly specified, encoding T2 is preferred even though 36*9880d681SAndroid Build Coastguard Worker@ the literal is in the range [0,7] which would allow encoding T1. 37*9880d681SAndroid Build Coastguard Worker adds r2, #3 38*9880d681SAndroid Build Coastguard Worker adds r2, #8 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker@ CHECK: adds r1, r2, #3 @ encoding: [0xd1,0x1c] 41*9880d681SAndroid Build Coastguard Worker@ CHECK: adds r2, #3 @ encoding: [0x03,0x32] 42*9880d681SAndroid Build Coastguard Worker@ CHECK: adds r2, #8 @ encoding: [0x08,0x32] 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 46*9880d681SAndroid Build Coastguard Worker@ ADD (register) 47*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 48*9880d681SAndroid Build Coastguard Worker adds r1, r2, r3 49*9880d681SAndroid Build Coastguard Worker add r2, r8 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Worker@ CHECK: adds r1, r2, r3 @ encoding: [0xd1,0x18] 52*9880d681SAndroid Build Coastguard Worker@ CHECK: add r2, r8 @ encoding: [0x42,0x44] 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 56*9880d681SAndroid Build Coastguard Worker@ ADD (SP plus immediate) 57*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 58*9880d681SAndroid Build Coastguard Worker add sp, #4 59*9880d681SAndroid Build Coastguard Worker add sp, #508 60*9880d681SAndroid Build Coastguard Worker add sp, sp, #4 61*9880d681SAndroid Build Coastguard Worker add r2, sp, #8 62*9880d681SAndroid Build Coastguard Worker add r2, sp, #1020 63*9880d681SAndroid Build Coastguard Worker add sp, sp, #-8 64*9880d681SAndroid Build Coastguard Worker add sp, #-8 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Worker@ CHECK: add sp, #4 @ encoding: [0x01,0xb0] 67*9880d681SAndroid Build Coastguard Worker@ CHECK: add sp, #508 @ encoding: [0x7f,0xb0] 68*9880d681SAndroid Build Coastguard Worker@ CHECK: add sp, #4 @ encoding: [0x01,0xb0] 69*9880d681SAndroid Build Coastguard Worker@ CHECK: add r2, sp, #8 @ encoding: [0x02,0xaa] 70*9880d681SAndroid Build Coastguard Worker@ CHECK: add r2, sp, #1020 @ encoding: [0xff,0xaa] 71*9880d681SAndroid Build Coastguard Worker@ CHECK: sub sp, #8 @ encoding: [0x82,0xb0] 72*9880d681SAndroid Build Coastguard Worker@ CHECK: sub sp, #8 @ encoding: [0x82,0xb0] 73*9880d681SAndroid Build Coastguard Worker 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 76*9880d681SAndroid Build Coastguard Worker@ ADD (SP plus register) 77*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 78*9880d681SAndroid Build Coastguard Worker add sp, r3 79*9880d681SAndroid Build Coastguard Worker add r2, sp, r2 80*9880d681SAndroid Build Coastguard Worker 81*9880d681SAndroid Build Coastguard Worker@ CHECK: add sp, r3 @ encoding: [0x9d,0x44] 82*9880d681SAndroid Build Coastguard Worker@ CHECK: add r2, sp, r2 @ encoding: [0x6a,0x44] 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 86*9880d681SAndroid Build Coastguard Worker@ ADR 87*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 88*9880d681SAndroid Build Coastguard Worker adr r2, _baz 89*9880d681SAndroid Build Coastguard Worker adr r5, #0 90*9880d681SAndroid Build Coastguard Worker adr r2, #4 91*9880d681SAndroid Build Coastguard Worker adr r3, #1020 92*9880d681SAndroid Build Coastguard Worker 93*9880d681SAndroid Build Coastguard Worker@ CHECK: adr r2, _baz @ encoding: [A,0xa2] 94*9880d681SAndroid Build Coastguard Worker@ CHECK: @ fixup A - offset: 0, value: _baz, kind: fixup_thumb_adr_pcrel_10 95*9880d681SAndroid Build Coastguard Worker@ CHECK-BE: adr r2, _baz @ encoding: [0xa2,A] 96*9880d681SAndroid Build Coastguard Worker@ CHECK-BE: @ fixup A - offset: 0, value: _baz, kind: fixup_thumb_adr_pcrel_10 97*9880d681SAndroid Build Coastguard Worker@ CHECK: adr r5, #0 @ encoding: [0x00,0xa5] 98*9880d681SAndroid Build Coastguard Worker@ CHECK: adr r2, #4 @ encoding: [0x01,0xa2] 99*9880d681SAndroid Build Coastguard Worker@ CHECK: adr r3, #1020 @ encoding: [0xff,0xa3] 100*9880d681SAndroid Build Coastguard Worker 101*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 102*9880d681SAndroid Build Coastguard Worker@ ASR (immediate) 103*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 104*9880d681SAndroid Build Coastguard Worker asrs r2, r3, #32 105*9880d681SAndroid Build Coastguard Worker asrs r2, r3, #5 106*9880d681SAndroid Build Coastguard Worker asrs r2, r3, #1 107*9880d681SAndroid Build Coastguard Worker asrs r5, #21 108*9880d681SAndroid Build Coastguard Worker asrs r5, r5, #21 109*9880d681SAndroid Build Coastguard Worker asrs r3, r5, #21 110*9880d681SAndroid Build Coastguard Worker 111*9880d681SAndroid Build Coastguard Worker@ CHECK: asrs r2, r3, #32 @ encoding: [0x1a,0x10] 112*9880d681SAndroid Build Coastguard Worker@ CHECK: asrs r2, r3, #5 @ encoding: [0x5a,0x11] 113*9880d681SAndroid Build Coastguard Worker@ CHECK: asrs r2, r3, #1 @ encoding: [0x5a,0x10] 114*9880d681SAndroid Build Coastguard Worker@ CHECK: asrs r5, r5, #21 @ encoding: [0x6d,0x15] 115*9880d681SAndroid Build Coastguard Worker@ CHECK: asrs r5, r5, #21 @ encoding: [0x6d,0x15] 116*9880d681SAndroid Build Coastguard Worker@ CHECK: asrs r3, r5, #21 @ encoding: [0x6b,0x15] 117*9880d681SAndroid Build Coastguard Worker 118*9880d681SAndroid Build Coastguard Worker 119*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 120*9880d681SAndroid Build Coastguard Worker@ ASR (register) 121*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 122*9880d681SAndroid Build Coastguard Worker asrs r5, r2 123*9880d681SAndroid Build Coastguard Worker 124*9880d681SAndroid Build Coastguard Worker@ CHECK: asrs r5, r2 @ encoding: [0x15,0x41] 125*9880d681SAndroid Build Coastguard Worker 126*9880d681SAndroid Build Coastguard Worker 127*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 128*9880d681SAndroid Build Coastguard Worker@ B 129*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 130*9880d681SAndroid Build Coastguard Worker b _baz 131*9880d681SAndroid Build Coastguard Worker beq _bar 132*9880d681SAndroid Build Coastguard Worker b #1838 133*9880d681SAndroid Build Coastguard Worker b #-420 134*9880d681SAndroid Build Coastguard Worker beq #-256 135*9880d681SAndroid Build Coastguard Worker beq #160 136*9880d681SAndroid Build Coastguard Worker 137*9880d681SAndroid Build Coastguard Worker@ CHECK: b _baz @ encoding: [A,0xe0'A'] 138*9880d681SAndroid Build Coastguard Worker@ CHECK: @ fixup A - offset: 0, value: _baz, kind: fixup_arm_thumb_br 139*9880d681SAndroid Build Coastguard Worker@ CHECK-BE: b _baz @ encoding: [0xe0'A',A] 140*9880d681SAndroid Build Coastguard Worker@ CHECK-BE: @ fixup A - offset: 0, value: _baz, kind: fixup_arm_thumb_br 141*9880d681SAndroid Build Coastguard Worker@ CHECK: beq _bar @ encoding: [A,0xd0] 142*9880d681SAndroid Build Coastguard Worker@ CHECK: @ fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_bcc 143*9880d681SAndroid Build Coastguard Worker@ CHECK-BE: beq _bar @ encoding: [0xd0,A] 144*9880d681SAndroid Build Coastguard Worker@ CHECK-BE: @ fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_bcc 145*9880d681SAndroid Build Coastguard Worker@ CHECK: b #1838 @ encoding: [0x97,0xe3] 146*9880d681SAndroid Build Coastguard Worker@ CHECK: b #-420 @ encoding: [0x2e,0xe7] 147*9880d681SAndroid Build Coastguard Worker@ CHECK: beq #-256 @ encoding: [0x80,0xd0] 148*9880d681SAndroid Build Coastguard Worker@ CHECK: beq #160 @ encoding: [0x50,0xd0] 149*9880d681SAndroid Build Coastguard Worker 150*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 151*9880d681SAndroid Build Coastguard Worker@ BL/BLX 152*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 153*9880d681SAndroid Build Coastguard Worker blx #884800 154*9880d681SAndroid Build Coastguard Worker blx #1769600 155*9880d681SAndroid Build Coastguard Worker 156*9880d681SAndroid Build Coastguard Worker@ CHECK: blx #884800 @ encoding: [0xd8,0xf0,0x20,0xe8] 157*9880d681SAndroid Build Coastguard Worker@ CHECK: blx #1769600 @ encoding: [0xb0,0xf1,0x40,0xe8] 158*9880d681SAndroid Build Coastguard Worker 159*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 160*9880d681SAndroid Build Coastguard Worker@ BICS 161*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 162*9880d681SAndroid Build Coastguard Worker bics r1, r6 163*9880d681SAndroid Build Coastguard Worker 164*9880d681SAndroid Build Coastguard Worker@ CHECK: bics r1, r6 @ encoding: [0xb1,0x43] 165*9880d681SAndroid Build Coastguard Worker 166*9880d681SAndroid Build Coastguard Worker 167*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 168*9880d681SAndroid Build Coastguard Worker@ BKPT 169*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 170*9880d681SAndroid Build Coastguard Worker bkpt #0 171*9880d681SAndroid Build Coastguard Worker bkpt #255 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Worker@ CHECK: bkpt #0 @ encoding: [0x00,0xbe] 174*9880d681SAndroid Build Coastguard Worker@ CHECK: bkpt #255 @ encoding: [0xff,0xbe] 175*9880d681SAndroid Build Coastguard Worker 176*9880d681SAndroid Build Coastguard Worker 177*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 178*9880d681SAndroid Build Coastguard Worker@ BL/BLX (immediate) 179*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 180*9880d681SAndroid Build Coastguard Worker bl _bar 181*9880d681SAndroid Build Coastguard Worker blx _baz 182*9880d681SAndroid Build Coastguard Worker 183*9880d681SAndroid Build Coastguard Worker@ CHECK: bl _bar @ encoding: [A,0xf0'A',A,0xd0'A'] 184*9880d681SAndroid Build Coastguard Worker@ CHECK: @ fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_bl 185*9880d681SAndroid Build Coastguard Worker@ CHECK-BE: bl _bar @ encoding: [0xf0'A',A,0xd0'A',A] 186*9880d681SAndroid Build Coastguard Worker@ CHECK-BE: @ fixup A - offset: 0, value: _bar, kind: fixup_arm_thumb_bl 187*9880d681SAndroid Build Coastguard Worker@ CHECK: blx _baz @ encoding: [A,0xf0'A',A,0xc0'A'] 188*9880d681SAndroid Build Coastguard Worker@ CHECK: @ fixup A - offset: 0, value: _baz, kind: fixup_arm_thumb_blx 189*9880d681SAndroid Build Coastguard Worker@ CHECK-BE: blx _baz @ encoding: [0xf0'A',A,0xc0'A',A] 190*9880d681SAndroid Build Coastguard Worker@ CHECK-BE: @ fixup A - offset: 0, value: _baz, kind: fixup_arm_thumb_blx 191*9880d681SAndroid Build Coastguard Worker 192*9880d681SAndroid Build Coastguard Worker 193*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 194*9880d681SAndroid Build Coastguard Worker@ BLX (register) 195*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 196*9880d681SAndroid Build Coastguard Worker blx r4 197*9880d681SAndroid Build Coastguard Worker 198*9880d681SAndroid Build Coastguard Worker@ CHECK: blx r4 @ encoding: [0xa0,0x47] 199*9880d681SAndroid Build Coastguard Worker 200*9880d681SAndroid Build Coastguard Worker 201*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 202*9880d681SAndroid Build Coastguard Worker@ BX 203*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 204*9880d681SAndroid Build Coastguard Worker bx r2 205*9880d681SAndroid Build Coastguard Worker 206*9880d681SAndroid Build Coastguard Worker@ CHECK: bx r2 @ encoding: [0x10,0x47] 207*9880d681SAndroid Build Coastguard Worker 208*9880d681SAndroid Build Coastguard Worker 209*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 210*9880d681SAndroid Build Coastguard Worker@ CMN 211*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 212*9880d681SAndroid Build Coastguard Worker 213*9880d681SAndroid Build Coastguard Worker cmn r5, r1 214*9880d681SAndroid Build Coastguard Worker 215*9880d681SAndroid Build Coastguard Worker@ CHECK: cmn r5, r1 @ encoding: [0xcd,0x42] 216*9880d681SAndroid Build Coastguard Worker 217*9880d681SAndroid Build Coastguard Worker 218*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 219*9880d681SAndroid Build Coastguard Worker@ CMP 220*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 221*9880d681SAndroid Build Coastguard Worker cmp r6, #32 222*9880d681SAndroid Build Coastguard Worker cmp r3, r4 223*9880d681SAndroid Build Coastguard Worker cmp r8, r1 224*9880d681SAndroid Build Coastguard Worker 225*9880d681SAndroid Build Coastguard Worker@ CHECK: cmp r6, #32 @ encoding: [0x20,0x2e] 226*9880d681SAndroid Build Coastguard Worker@ CHECK: cmp r3, r4 @ encoding: [0xa3,0x42] 227*9880d681SAndroid Build Coastguard Worker@ CHECK: cmp r8, r1 @ encoding: [0x88,0x45] 228*9880d681SAndroid Build Coastguard Worker 229*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 230*9880d681SAndroid Build Coastguard Worker@ CPS 231*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 232*9880d681SAndroid Build Coastguard Worker 233*9880d681SAndroid Build Coastguard Worker cpsie f 234*9880d681SAndroid Build Coastguard Worker cpsid a 235*9880d681SAndroid Build Coastguard Worker 236*9880d681SAndroid Build Coastguard Worker@ CHECK: cpsie f @ encoding: [0x61,0xb6] 237*9880d681SAndroid Build Coastguard Worker@ CHECK: cpsid a @ encoding: [0x74,0xb6] 238*9880d681SAndroid Build Coastguard Worker 239*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 240*9880d681SAndroid Build Coastguard Worker@ EOR 241*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 242*9880d681SAndroid Build Coastguard Worker eors r4, r5 243*9880d681SAndroid Build Coastguard Worker 244*9880d681SAndroid Build Coastguard Worker@ CHECK: eors r4, r5 @ encoding: [0x6c,0x40] 245*9880d681SAndroid Build Coastguard Worker 246*9880d681SAndroid Build Coastguard Worker 247*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 248*9880d681SAndroid Build Coastguard Worker@ LDM 249*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 250*9880d681SAndroid Build Coastguard Worker ldm r3, {r0, r1, r2, r3, r4, r5, r6, r7} 251*9880d681SAndroid Build Coastguard Worker ldm r2!, {r1, r3, r4, r5, r7} 252*9880d681SAndroid Build Coastguard Worker ldm r1, {r1} 253*9880d681SAndroid Build Coastguard Worker 254*9880d681SAndroid Build Coastguard Worker@ CHECK: ldm r3, {r0, r1, r2, r3, r4, r5, r6, r7} @ encoding: [0xff,0xcb] 255*9880d681SAndroid Build Coastguard Worker@ CHECK: ldm r2!, {r1, r3, r4, r5, r7} @ encoding: [0xba,0xca] 256*9880d681SAndroid Build Coastguard Worker@ CHECK: ldm r1, {r1} @ encoding: [0x02,0xc9] 257*9880d681SAndroid Build Coastguard Worker 258*9880d681SAndroid Build Coastguard Worker 259*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 260*9880d681SAndroid Build Coastguard Worker@ LDR (immediate) 261*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 262*9880d681SAndroid Build Coastguard Worker ldr r1, [r5] 263*9880d681SAndroid Build Coastguard Worker ldr r2, [r6, #32] 264*9880d681SAndroid Build Coastguard Worker ldr r3, [r7, #124] 265*9880d681SAndroid Build Coastguard Worker ldr r1, [sp] 266*9880d681SAndroid Build Coastguard Worker ldr r2, [sp, #24] 267*9880d681SAndroid Build Coastguard Worker ldr r3, [sp, #1020] 268*9880d681SAndroid Build Coastguard Worker 269*9880d681SAndroid Build Coastguard Worker 270*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r1, [r5] @ encoding: [0x29,0x68] 271*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r2, [r6, #32] @ encoding: [0x32,0x6a] 272*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r3, [r7, #124] @ encoding: [0xfb,0x6f] 273*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r1, [sp] @ encoding: [0x00,0x99] 274*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r2, [sp, #24] @ encoding: [0x06,0x9a] 275*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r3, [sp, #1020] @ encoding: [0xff,0x9b] 276*9880d681SAndroid Build Coastguard Worker 277*9880d681SAndroid Build Coastguard Worker 278*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 279*9880d681SAndroid Build Coastguard Worker@ LDR (literal) 280*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 281*9880d681SAndroid Build Coastguard Worker ldr r1, _foo 282*9880d681SAndroid Build Coastguard Worker ldr r3, #604 283*9880d681SAndroid Build Coastguard Worker ldr r3, #368 284*9880d681SAndroid Build Coastguard Worker 285*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r1, _foo @ encoding: [A,0x49] 286*9880d681SAndroid Build Coastguard Worker@ CHECK: @ fixup A - offset: 0, value: _foo, kind: fixup_arm_thumb_cp 287*9880d681SAndroid Build Coastguard Worker@ CHECK-BE: ldr r1, _foo @ encoding: [0x49,A] 288*9880d681SAndroid Build Coastguard Worker@ CHECK-BE: @ fixup A - offset: 0, value: _foo, kind: fixup_arm_thumb_cp 289*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r3, [pc, #604] @ encoding: [0x97,0x4b] 290*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r3, [pc, #368] @ encoding: [0x5c,0x4b] 291*9880d681SAndroid Build Coastguard Worker 292*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 293*9880d681SAndroid Build Coastguard Worker@ LDR (register) 294*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 295*9880d681SAndroid Build Coastguard Worker ldr r1, [r2, r3] 296*9880d681SAndroid Build Coastguard Worker 297*9880d681SAndroid Build Coastguard Worker@ CHECK: ldr r1, [r2, r3] @ encoding: [0xd1,0x58] 298*9880d681SAndroid Build Coastguard Worker 299*9880d681SAndroid Build Coastguard Worker 300*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 301*9880d681SAndroid Build Coastguard Worker@ LDRB (immediate) 302*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 303*9880d681SAndroid Build Coastguard Worker ldrb r4, [r3] 304*9880d681SAndroid Build Coastguard Worker ldrb r5, [r6, #0] 305*9880d681SAndroid Build Coastguard Worker ldrb r6, [r7, #31] 306*9880d681SAndroid Build Coastguard Worker 307*9880d681SAndroid Build Coastguard Worker@ CHECK: ldrb r4, [r3] @ encoding: [0x1c,0x78] 308*9880d681SAndroid Build Coastguard Worker@ CHECK: ldrb r5, [r6] @ encoding: [0x35,0x78] 309*9880d681SAndroid Build Coastguard Worker@ CHECK: ldrb r6, [r7, #31] @ encoding: [0xfe,0x7f] 310*9880d681SAndroid Build Coastguard Worker 311*9880d681SAndroid Build Coastguard Worker 312*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 313*9880d681SAndroid Build Coastguard Worker@ LDRB (register) 314*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 315*9880d681SAndroid Build Coastguard Worker ldrb r6, [r4, r5] 316*9880d681SAndroid Build Coastguard Worker 317*9880d681SAndroid Build Coastguard Worker@ CHECK: ldrb r6, [r4, r5] @ encoding: [0x66,0x5d] 318*9880d681SAndroid Build Coastguard Worker 319*9880d681SAndroid Build Coastguard Worker 320*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 321*9880d681SAndroid Build Coastguard Worker@ LDRH (immediate) 322*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 323*9880d681SAndroid Build Coastguard Worker ldrh r3, [r3] 324*9880d681SAndroid Build Coastguard Worker ldrh r4, [r6, #2] 325*9880d681SAndroid Build Coastguard Worker ldrh r5, [r7, #62] 326*9880d681SAndroid Build Coastguard Worker 327*9880d681SAndroid Build Coastguard Worker@ CHECK: ldrh r3, [r3] @ encoding: [0x1b,0x88] 328*9880d681SAndroid Build Coastguard Worker@ CHECK: ldrh r4, [r6, #2] @ encoding: [0x74,0x88] 329*9880d681SAndroid Build Coastguard Worker@ CHECK: ldrh r5, [r7, #62] @ encoding: [0xfd,0x8f] 330*9880d681SAndroid Build Coastguard Worker 331*9880d681SAndroid Build Coastguard Worker 332*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 333*9880d681SAndroid Build Coastguard Worker@ LDRH (register) 334*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 335*9880d681SAndroid Build Coastguard Worker ldrh r6, [r2, r6] 336*9880d681SAndroid Build Coastguard Worker 337*9880d681SAndroid Build Coastguard Worker@ CHECK: ldrh r6, [r2, r6] @ encoding: [0x96,0x5b] 338*9880d681SAndroid Build Coastguard Worker 339*9880d681SAndroid Build Coastguard Worker 340*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 341*9880d681SAndroid Build Coastguard Worker@ LDRSB/LDRSH 342*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 343*9880d681SAndroid Build Coastguard Worker ldrsb r6, [r2, r6] 344*9880d681SAndroid Build Coastguard Worker ldrsh r3, [r7, r1] 345*9880d681SAndroid Build Coastguard Worker 346*9880d681SAndroid Build Coastguard Worker@ CHECK: ldrsb r6, [r2, r6] @ encoding: [0x96,0x57] 347*9880d681SAndroid Build Coastguard Worker@ CHECK: ldrsh r3, [r7, r1] @ encoding: [0x7b,0x5e] 348*9880d681SAndroid Build Coastguard Worker 349*9880d681SAndroid Build Coastguard Worker 350*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 351*9880d681SAndroid Build Coastguard Worker@ LSL (immediate) 352*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 353*9880d681SAndroid Build Coastguard Worker lsls r4, r5, #0 354*9880d681SAndroid Build Coastguard Worker lsls r4, r5, #4 355*9880d681SAndroid Build Coastguard Worker lsls r3, #12 356*9880d681SAndroid Build Coastguard Worker lsls r3, r3, #12 357*9880d681SAndroid Build Coastguard Worker lsls r1, r3, #12 358*9880d681SAndroid Build Coastguard Worker 359*9880d681SAndroid Build Coastguard Worker@ CHECK: lsls r4, r5, #0 @ encoding: [0x2c,0x00] 360*9880d681SAndroid Build Coastguard Worker@ CHECK: lsls r4, r5, #4 @ encoding: [0x2c,0x01] 361*9880d681SAndroid Build Coastguard Worker@ CHECK: lsls r3, r3, #12 @ encoding: [0x1b,0x03] 362*9880d681SAndroid Build Coastguard Worker@ CHECK: lsls r3, r3, #12 @ encoding: [0x1b,0x03] 363*9880d681SAndroid Build Coastguard Worker@ CHECK: lsls r1, r3, #12 @ encoding: [0x19,0x03] 364*9880d681SAndroid Build Coastguard Worker 365*9880d681SAndroid Build Coastguard Worker 366*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 367*9880d681SAndroid Build Coastguard Worker@ LSL (register) 368*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 369*9880d681SAndroid Build Coastguard Worker lsls r2, r6 370*9880d681SAndroid Build Coastguard Worker 371*9880d681SAndroid Build Coastguard Worker@ CHECK: lsls r2, r6 @ encoding: [0xb2,0x40] 372*9880d681SAndroid Build Coastguard Worker 373*9880d681SAndroid Build Coastguard Worker 374*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 375*9880d681SAndroid Build Coastguard Worker@ LSR (immediate) 376*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 377*9880d681SAndroid Build Coastguard Worker lsrs r1, r3, #1 378*9880d681SAndroid Build Coastguard Worker lsrs r1, r3, #32 379*9880d681SAndroid Build Coastguard Worker lsrs r4, #20 380*9880d681SAndroid Build Coastguard Worker lsrs r4, r4, #20 381*9880d681SAndroid Build Coastguard Worker lsrs r2, r4, #20 382*9880d681SAndroid Build Coastguard Worker 383*9880d681SAndroid Build Coastguard Worker@ CHECK: lsrs r1, r3, #1 @ encoding: [0x59,0x08] 384*9880d681SAndroid Build Coastguard Worker@ CHECK: lsrs r1, r3, #32 @ encoding: [0x19,0x08] 385*9880d681SAndroid Build Coastguard Worker@ CHECK: lsrs r4, r4, #20 @ encoding: [0x24,0x0d] 386*9880d681SAndroid Build Coastguard Worker@ CHECK: lsrs r4, r4, #20 @ encoding: [0x24,0x0d] 387*9880d681SAndroid Build Coastguard Worker@ CHECK: lsrs r2, r4, #20 @ encoding: [0x22,0x0d] 388*9880d681SAndroid Build Coastguard Worker 389*9880d681SAndroid Build Coastguard Worker 390*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 391*9880d681SAndroid Build Coastguard Worker@ LSR (register) 392*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 393*9880d681SAndroid Build Coastguard Worker lsrs r2, r6 394*9880d681SAndroid Build Coastguard Worker 395*9880d681SAndroid Build Coastguard Worker@ CHECK: lsrs r2, r6 @ encoding: [0xf2,0x40] 396*9880d681SAndroid Build Coastguard Worker 397*9880d681SAndroid Build Coastguard Worker 398*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 399*9880d681SAndroid Build Coastguard Worker@ MOV (immediate) 400*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 401*9880d681SAndroid Build Coastguard Worker movs r2, #0 402*9880d681SAndroid Build Coastguard Worker movs r2, #255 403*9880d681SAndroid Build Coastguard Worker movs r2, #23 404*9880d681SAndroid Build Coastguard Worker 405*9880d681SAndroid Build Coastguard Worker@ CHECK: movs r2, #0 @ encoding: [0x00,0x22] 406*9880d681SAndroid Build Coastguard Worker@ CHECK: movs r2, #255 @ encoding: [0xff,0x22] 407*9880d681SAndroid Build Coastguard Worker@ CHECK: movs r2, #23 @ encoding: [0x17,0x22] 408*9880d681SAndroid Build Coastguard Worker 409*9880d681SAndroid Build Coastguard Worker 410*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 411*9880d681SAndroid Build Coastguard Worker@ MOV (register) 412*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 413*9880d681SAndroid Build Coastguard Worker mov r3, r4 414*9880d681SAndroid Build Coastguard Worker movs r1, r3 415*9880d681SAndroid Build Coastguard Worker 416*9880d681SAndroid Build Coastguard Worker@ CHECK: mov r3, r4 @ encoding: [0x23,0x46] 417*9880d681SAndroid Build Coastguard Worker@ CHECK: movs r1, r3 @ encoding: [0x19,0x00] 418*9880d681SAndroid Build Coastguard Worker 419*9880d681SAndroid Build Coastguard Worker 420*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 421*9880d681SAndroid Build Coastguard Worker@ MUL 422*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 423*9880d681SAndroid Build Coastguard Worker muls r1, r2, r1 424*9880d681SAndroid Build Coastguard Worker muls r2, r2, r3 425*9880d681SAndroid Build Coastguard Worker muls r3, r4 426*9880d681SAndroid Build Coastguard Worker 427*9880d681SAndroid Build Coastguard Worker@ CHECK: muls r1, r2, r1 @ encoding: [0x51,0x43] 428*9880d681SAndroid Build Coastguard Worker@ CHECK: muls r2, r3, r2 @ encoding: [0x5a,0x43] 429*9880d681SAndroid Build Coastguard Worker@ CHECK: muls r3, r4, r3 @ encoding: [0x63,0x43] 430*9880d681SAndroid Build Coastguard Worker 431*9880d681SAndroid Build Coastguard Worker 432*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 433*9880d681SAndroid Build Coastguard Worker@ MVN 434*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 435*9880d681SAndroid Build Coastguard Worker mvns r6, r3 436*9880d681SAndroid Build Coastguard Worker 437*9880d681SAndroid Build Coastguard Worker@ CHECK: mvns r6, r3 @ encoding: [0xde,0x43] 438*9880d681SAndroid Build Coastguard Worker 439*9880d681SAndroid Build Coastguard Worker 440*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 441*9880d681SAndroid Build Coastguard Worker@ NEG 442*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 443*9880d681SAndroid Build Coastguard Worker negs r3, r4 444*9880d681SAndroid Build Coastguard Worker 445*9880d681SAndroid Build Coastguard Worker@ CHECK: rsbs r3, r4, #0 @ encoding: [0x63,0x42] 446*9880d681SAndroid Build Coastguard Worker 447*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 448*9880d681SAndroid Build Coastguard Worker@ ORR 449*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 450*9880d681SAndroid Build Coastguard Worker orrs r3, r4 451*9880d681SAndroid Build Coastguard Worker 452*9880d681SAndroid Build Coastguard Worker@ CHECK-ERRORS: orrs r3, r4 @ encoding: [0x23,0x43] 453*9880d681SAndroid Build Coastguard Worker 454*9880d681SAndroid Build Coastguard Worker 455*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 456*9880d681SAndroid Build Coastguard Worker@ POP 457*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 458*9880d681SAndroid Build Coastguard Worker pop {r2, r3, r6} 459*9880d681SAndroid Build Coastguard Worker 460*9880d681SAndroid Build Coastguard Worker@ CHECK: pop {r2, r3, r6} @ encoding: [0x4c,0xbc] 461*9880d681SAndroid Build Coastguard Worker 462*9880d681SAndroid Build Coastguard Worker 463*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 464*9880d681SAndroid Build Coastguard Worker@ PUSH 465*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 466*9880d681SAndroid Build Coastguard Worker push {r1, r2, r7} 467*9880d681SAndroid Build Coastguard Worker 468*9880d681SAndroid Build Coastguard Worker@ CHECK: push {r1, r2, r7} @ encoding: [0x86,0xb4] 469*9880d681SAndroid Build Coastguard Worker 470*9880d681SAndroid Build Coastguard Worker 471*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 472*9880d681SAndroid Build Coastguard Worker@ REV/REV16/REVSH 473*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 474*9880d681SAndroid Build Coastguard Worker rev r6, r3 475*9880d681SAndroid Build Coastguard Worker rev16 r7, r2 476*9880d681SAndroid Build Coastguard Worker revsh r5, r1 477*9880d681SAndroid Build Coastguard Worker 478*9880d681SAndroid Build Coastguard Worker@ CHECK: rev r6, r3 @ encoding: [0x1e,0xba] 479*9880d681SAndroid Build Coastguard Worker@ CHECK: rev16 r7, r2 @ encoding: [0x57,0xba] 480*9880d681SAndroid Build Coastguard Worker@ CHECK: revsh r5, r1 @ encoding: [0xcd,0xba] 481*9880d681SAndroid Build Coastguard Worker 482*9880d681SAndroid Build Coastguard Worker 483*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 484*9880d681SAndroid Build Coastguard Worker@ ROR 485*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 486*9880d681SAndroid Build Coastguard Worker rors r2, r7 487*9880d681SAndroid Build Coastguard Worker 488*9880d681SAndroid Build Coastguard Worker@ CHECK: rors r2, r7 @ encoding: [0xfa,0x41] 489*9880d681SAndroid Build Coastguard Worker 490*9880d681SAndroid Build Coastguard Worker 491*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 492*9880d681SAndroid Build Coastguard Worker@ RSB 493*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 494*9880d681SAndroid Build Coastguard Worker rsbs r1, r3, #0 495*9880d681SAndroid Build Coastguard Worker 496*9880d681SAndroid Build Coastguard Worker@ CHECK: rsbs r1, r3, #0 @ encoding: [0x59,0x42] 497*9880d681SAndroid Build Coastguard Worker 498*9880d681SAndroid Build Coastguard Worker 499*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 500*9880d681SAndroid Build Coastguard Worker@ SBC 501*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 502*9880d681SAndroid Build Coastguard Worker sbcs r4, r3 503*9880d681SAndroid Build Coastguard Worker 504*9880d681SAndroid Build Coastguard Worker@ CHECK: sbcs r4, r3 @ encoding: [0x9c,0x41] 505*9880d681SAndroid Build Coastguard Worker 506*9880d681SAndroid Build Coastguard Worker 507*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 508*9880d681SAndroid Build Coastguard Worker@ SETEND 509*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 510*9880d681SAndroid Build Coastguard Worker setend be 511*9880d681SAndroid Build Coastguard Worker setend le 512*9880d681SAndroid Build Coastguard Worker 513*9880d681SAndroid Build Coastguard Worker@ CHECK: setend be @ encoding: [0x58,0xb6] 514*9880d681SAndroid Build Coastguard Worker@ CHECK: setend le @ encoding: [0x50,0xb6] 515*9880d681SAndroid Build Coastguard Worker 516*9880d681SAndroid Build Coastguard Worker 517*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 518*9880d681SAndroid Build Coastguard Worker@ STM 519*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 520*9880d681SAndroid Build Coastguard Worker stm r1!, {r2, r6} 521*9880d681SAndroid Build Coastguard Worker stm r1!, {r1, r2, r3, r7} 522*9880d681SAndroid Build Coastguard Worker 523*9880d681SAndroid Build Coastguard Worker@ CHECK: stm r1!, {r2, r6} @ encoding: [0x44,0xc1] 524*9880d681SAndroid Build Coastguard Worker@ CHECK: stm r1!, {r1, r2, r3, r7} @ encoding: [0x8e,0xc1] 525*9880d681SAndroid Build Coastguard Worker 526*9880d681SAndroid Build Coastguard Worker 527*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 528*9880d681SAndroid Build Coastguard Worker@ STR (immediate) 529*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 530*9880d681SAndroid Build Coastguard Worker str r2, [r7] 531*9880d681SAndroid Build Coastguard Worker str r2, [r7, #0] 532*9880d681SAndroid Build Coastguard Worker str r5, [r1, #4] 533*9880d681SAndroid Build Coastguard Worker str r3, [r7, #124] 534*9880d681SAndroid Build Coastguard Worker str r2, [sp] 535*9880d681SAndroid Build Coastguard Worker str r3, [sp, #0] 536*9880d681SAndroid Build Coastguard Worker str r4, [sp, #20] 537*9880d681SAndroid Build Coastguard Worker str r5, [sp, #1020] 538*9880d681SAndroid Build Coastguard Worker 539*9880d681SAndroid Build Coastguard Worker@ CHECK: str r2, [r7] @ encoding: [0x3a,0x60] 540*9880d681SAndroid Build Coastguard Worker@ CHECK: str r2, [r7] @ encoding: [0x3a,0x60] 541*9880d681SAndroid Build Coastguard Worker@ CHECK: str r5, [r1, #4] @ encoding: [0x4d,0x60] 542*9880d681SAndroid Build Coastguard Worker@ CHECK: str r3, [r7, #124] @ encoding: [0xfb,0x67] 543*9880d681SAndroid Build Coastguard Worker@ CHECK: str r2, [sp] @ encoding: [0x00,0x92] 544*9880d681SAndroid Build Coastguard Worker@ CHECK: str r3, [sp] @ encoding: [0x00,0x93] 545*9880d681SAndroid Build Coastguard Worker@ CHECK: str r4, [sp, #20] @ encoding: [0x05,0x94] 546*9880d681SAndroid Build Coastguard Worker@ CHECK: str r5, [sp, #1020] @ encoding: [0xff,0x95] 547*9880d681SAndroid Build Coastguard Worker 548*9880d681SAndroid Build Coastguard Worker 549*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 550*9880d681SAndroid Build Coastguard Worker@ STR (register) 551*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 552*9880d681SAndroid Build Coastguard Worker str r2, [r7, r3] 553*9880d681SAndroid Build Coastguard Worker 554*9880d681SAndroid Build Coastguard Worker@ CHECK: str r2, [r7, r3] @ encoding: [0xfa,0x50] 555*9880d681SAndroid Build Coastguard Worker 556*9880d681SAndroid Build Coastguard Worker 557*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 558*9880d681SAndroid Build Coastguard Worker@ STRB (immediate) 559*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 560*9880d681SAndroid Build Coastguard Worker strb r4, [r3] 561*9880d681SAndroid Build Coastguard Worker strb r5, [r6, #0] 562*9880d681SAndroid Build Coastguard Worker strb r6, [r7, #31] 563*9880d681SAndroid Build Coastguard Worker 564*9880d681SAndroid Build Coastguard Worker@ CHECK: strb r4, [r3] @ encoding: [0x1c,0x70] 565*9880d681SAndroid Build Coastguard Worker@ CHECK: strb r5, [r6] @ encoding: [0x35,0x70] 566*9880d681SAndroid Build Coastguard Worker@ CHECK: strb r6, [r7, #31] @ encoding: [0xfe,0x77] 567*9880d681SAndroid Build Coastguard Worker 568*9880d681SAndroid Build Coastguard Worker 569*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 570*9880d681SAndroid Build Coastguard Worker@ STRB (register) 571*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 572*9880d681SAndroid Build Coastguard Worker strb r6, [r4, r5] 573*9880d681SAndroid Build Coastguard Worker 574*9880d681SAndroid Build Coastguard Worker@ CHECK: strb r6, [r4, r5] @ encoding: [0x66,0x55] 575*9880d681SAndroid Build Coastguard Worker 576*9880d681SAndroid Build Coastguard Worker 577*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 578*9880d681SAndroid Build Coastguard Worker@ STRH (immediate) 579*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 580*9880d681SAndroid Build Coastguard Worker strh r3, [r3] 581*9880d681SAndroid Build Coastguard Worker strh r4, [r6, #2] 582*9880d681SAndroid Build Coastguard Worker strh r5, [r7, #62] 583*9880d681SAndroid Build Coastguard Worker 584*9880d681SAndroid Build Coastguard Worker@ CHECK: strh r3, [r3] @ encoding: [0x1b,0x80] 585*9880d681SAndroid Build Coastguard Worker@ CHECK: strh r4, [r6, #2] @ encoding: [0x74,0x80] 586*9880d681SAndroid Build Coastguard Worker@ CHECK: strh r5, [r7, #62] @ encoding: [0xfd,0x87] 587*9880d681SAndroid Build Coastguard Worker 588*9880d681SAndroid Build Coastguard Worker 589*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 590*9880d681SAndroid Build Coastguard Worker@ STRH (register) 591*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 592*9880d681SAndroid Build Coastguard Worker strh r6, [r2, r6] 593*9880d681SAndroid Build Coastguard Worker 594*9880d681SAndroid Build Coastguard Worker@ CHECK: strh r6, [r2, r6] @ encoding: [0x96,0x53] 595*9880d681SAndroid Build Coastguard Worker 596*9880d681SAndroid Build Coastguard Worker 597*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 598*9880d681SAndroid Build Coastguard Worker@ SUB (immediate) 599*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 600*9880d681SAndroid Build Coastguard Worker subs r1, r2, #3 601*9880d681SAndroid Build Coastguard Worker subs r2, #3 602*9880d681SAndroid Build Coastguard Worker subs r2, #8 603*9880d681SAndroid Build Coastguard Worker 604*9880d681SAndroid Build Coastguard Worker@ CHECK: subs r1, r2, #3 @ encoding: [0xd1,0x1e] 605*9880d681SAndroid Build Coastguard Worker@ CHECK: subs r2, #3 @ encoding: [0x03,0x3a] 606*9880d681SAndroid Build Coastguard Worker@ CHECK: subs r2, #8 @ encoding: [0x08,0x3a] 607*9880d681SAndroid Build Coastguard Worker 608*9880d681SAndroid Build Coastguard Worker 609*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 610*9880d681SAndroid Build Coastguard Worker@ SUB (SP minus immediate) 611*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 612*9880d681SAndroid Build Coastguard Worker sub sp, #12 613*9880d681SAndroid Build Coastguard Worker sub sp, sp, #508 614*9880d681SAndroid Build Coastguard Worker 615*9880d681SAndroid Build Coastguard Worker@ CHECK: sub sp, #12 @ encoding: [0x83,0xb0] 616*9880d681SAndroid Build Coastguard Worker@ CHECK: sub sp, #508 @ encoding: [0xff,0xb0] 617*9880d681SAndroid Build Coastguard Worker 618*9880d681SAndroid Build Coastguard Worker 619*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 620*9880d681SAndroid Build Coastguard Worker@ SUB (register) 621*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 622*9880d681SAndroid Build Coastguard Worker subs r1, r2, r3 623*9880d681SAndroid Build Coastguard Worker 624*9880d681SAndroid Build Coastguard Worker@ CHECK: subs r1, r2, r3 @ encoding: [0xd1,0x1a] 625*9880d681SAndroid Build Coastguard Worker 626*9880d681SAndroid Build Coastguard Worker 627*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 628*9880d681SAndroid Build Coastguard Worker@ SVC 629*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 630*9880d681SAndroid Build Coastguard Worker svc #0 631*9880d681SAndroid Build Coastguard Worker svc #255 632*9880d681SAndroid Build Coastguard Worker 633*9880d681SAndroid Build Coastguard Worker@ CHECK: svc #0 @ encoding: [0x00,0xdf] 634*9880d681SAndroid Build Coastguard Worker@ CHECK: svc #255 @ encoding: [0xff,0xdf] 635*9880d681SAndroid Build Coastguard Worker 636*9880d681SAndroid Build Coastguard Worker 637*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 638*9880d681SAndroid Build Coastguard Worker@ SXTB/SXTH 639*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 640*9880d681SAndroid Build Coastguard Worker sxtb r3, r5 641*9880d681SAndroid Build Coastguard Worker sxth r3, r5 642*9880d681SAndroid Build Coastguard Worker 643*9880d681SAndroid Build Coastguard Worker@ CHECK: sxtb r3, r5 @ encoding: [0x6b,0xb2] 644*9880d681SAndroid Build Coastguard Worker@ CHECK: sxth r3, r5 @ encoding: [0x2b,0xb2] 645*9880d681SAndroid Build Coastguard Worker 646*9880d681SAndroid Build Coastguard Worker 647*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 648*9880d681SAndroid Build Coastguard Worker@ TST 649*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 650*9880d681SAndroid Build Coastguard Worker tst r6, r1 651*9880d681SAndroid Build Coastguard Worker 652*9880d681SAndroid Build Coastguard Worker@ CHECK: tst r6, r1 @ encoding: [0x0e,0x42] 653*9880d681SAndroid Build Coastguard Worker 654*9880d681SAndroid Build Coastguard Worker 655*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 656*9880d681SAndroid Build Coastguard Worker@ UXTB/UXTH 657*9880d681SAndroid Build Coastguard Worker@------------------------------------------------------------------------------ 658*9880d681SAndroid Build Coastguard Worker uxtb r7, r2 659*9880d681SAndroid Build Coastguard Worker uxth r1, r4 660*9880d681SAndroid Build Coastguard Worker 661*9880d681SAndroid Build Coastguard Worker@ CHECK: uxtb r7, r2 @ encoding: [0xd7,0xb2] 662*9880d681SAndroid Build Coastguard Worker@ CHECK: uxth r1, r4 @ encoding: [0xa1,0xb2] 663*9880d681SAndroid Build Coastguard Worker 664*9880d681SAndroid Build Coastguard Worker 665