1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -triple thumbv7 -show-encoding < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker// Test each of the Thumb1 data-processing instructions 4*9880d681SAndroid Build Coastguard Worker// The assembly syntax for these instructions allows an optional Rd register 5*9880d681SAndroid Build Coastguard Worker// OP{S}{<c>}{<q>} {<Rd>,} <Rn>, <Rm> 6*9880d681SAndroid Build Coastguard Worker// Assemblers should chose the narrow thumb encoding when possible, i.e. 7*9880d681SAndroid Build Coastguard Worker// - Rd == Rn 8*9880d681SAndroid Build Coastguard Worker// - Rd, Rn and Rm are < r8 9*9880d681SAndroid Build Coastguard Worker// In addition, some operations are commutative, allowing the transformation 10*9880d681SAndroid Build Coastguard Worker// when: 11*9880d681SAndroid Build Coastguard Worker// - Rd == Rn || Rd == Rm 12*9880d681SAndroid Build Coastguard Worker// - Rd, Rn and Rm are < r8 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker// ADD immediate (not SP) A8.8.4 15*9880d681SAndroid Build Coastguard Worker ADDS r0, r0, #5 // T1 16*9880d681SAndroid Build Coastguard Worker// CHECK: adds r0, r0, #5 @ encoding: [0x40,0x1d] 17*9880d681SAndroid Build Coastguard Worker ADDS r1, r1, #8 // T2 18*9880d681SAndroid Build Coastguard Worker// CHECK: adds r1, #8 @ encoding: [0x08,0x31] 19*9880d681SAndroid Build Coastguard Worker ADDS.W r1, r1, #8 // .w => T3 20*9880d681SAndroid Build Coastguard Worker// CHECK: adds.w r1, r1, #8 @ encoding: [0x11,0xf1,0x08,0x01] 21*9880d681SAndroid Build Coastguard Worker ADDS r8, r8, #8 // T3 22*9880d681SAndroid Build Coastguard Worker// CHECK: adds.w r8, r8, #8 @ encoding: [0x18,0xf1,0x08,0x08] 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker IT EQ 25*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 26*9880d681SAndroid Build Coastguard Worker ADDEQ r0, r0, #5 // T1 27*9880d681SAndroid Build Coastguard Worker// CHECK: addeq r0, r0, #5 @ encoding: [0x40,0x1d] 28*9880d681SAndroid Build Coastguard Worker IT EQ 29*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 30*9880d681SAndroid Build Coastguard Worker ADDEQ r1, r1, #8 // T2 31*9880d681SAndroid Build Coastguard Worker// CHECK: addeq r1, #8 @ encoding: [0x08,0x31] 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker IT EQ 34*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 35*9880d681SAndroid Build Coastguard Worker ADDSEQ r0, r0, #5 // T3 36*9880d681SAndroid Build Coastguard Worker// CHECK: addseq.w r0, r0, #5 @ encoding: [0x10,0xf1,0x05,0x00] 37*9880d681SAndroid Build Coastguard Worker IT EQ 38*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 39*9880d681SAndroid Build Coastguard Worker ADDSEQ r1, r1, #8 // T3 40*9880d681SAndroid Build Coastguard Worker// CHECK: addseq.w r1, r1, #8 @ encoding: [0x11,0xf1,0x08,0x01] 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker// ADD register (not SP) A8.8.6 (commutative) 43*9880d681SAndroid Build Coastguard Worker ADDS r0, r2, r1 // ADDS has T1 narrow 3 operand 44*9880d681SAndroid Build Coastguard Worker// CHECK: adds r0, r2, r1 @ encoding: [0x50,0x18] 45*9880d681SAndroid Build Coastguard Worker ADDS r2, r2, r1 // ADDS has T1 narrow 3 operand 46*9880d681SAndroid Build Coastguard Worker// CHECK: adds r2, r2, r1 @ encoding: [0x52,0x18] 47*9880d681SAndroid Build Coastguard Worker ADD r3, r1, r3 // T2 48*9880d681SAndroid Build Coastguard Worker// CHECK: add r3, r1 @ encoding: [0x0b,0x44] 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Worker IT EQ 51*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 52*9880d681SAndroid Build Coastguard Worker ADDEQ r0, r2, r1 // (In IT) ADD has T1 narrow 3 operand 53*9880d681SAndroid Build Coastguard Worker// CHECK: addeq r0, r2, r1 @ encoding: [0x50,0x18] 54*9880d681SAndroid Build Coastguard Worker IT EQ 55*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 56*9880d681SAndroid Build Coastguard Worker ADDEQ r2, r2, r1 // (In IT) ADD has T1 narrow 3 operand 57*9880d681SAndroid Build Coastguard Worker// CHECK: addeq r2, r2, r1 @ encoding: [0x52,0x18] 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Worker IT EQ 60*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 61*9880d681SAndroid Build Coastguard Worker ADDSEQ r0, r2, r1 // T3 62*9880d681SAndroid Build Coastguard Worker// CHECK: addseq.w r0, r2, r1 @ encoding: [0x12,0xeb,0x01,0x00] 63*9880d681SAndroid Build Coastguard Worker IT EQ 64*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 65*9880d681SAndroid Build Coastguard Worker ADDSEQ r2, r2, r1 // T3 66*9880d681SAndroid Build Coastguard Worker// CHECK: addseq.w r2, r2, r1 @ encoding: [0x12,0xeb,0x01,0x02] 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker ADD r3, r3, r1 // T2 69*9880d681SAndroid Build Coastguard Worker// CHECK: add r3, r1 @ encoding: [0x0b,0x44] 70*9880d681SAndroid Build Coastguard Worker ADD r4, r4, pc // T2 71*9880d681SAndroid Build Coastguard Worker// CHECK: add r4, pc @ encoding: [0x7c,0x44] 72*9880d681SAndroid Build Coastguard Worker ADD r4, pc, r4 // T2 73*9880d681SAndroid Build Coastguard Worker// CHECK: add r4, pc @ encoding: [0x7c,0x44] 74*9880d681SAndroid Build Coastguard Worker ADD pc, pc, r2 // T2 75*9880d681SAndroid Build Coastguard Worker// CHECK: add pc, r2 @ encoding: [0x97,0x44] 76*9880d681SAndroid Build Coastguard Worker ADD pc, r2, pc // T2 77*9880d681SAndroid Build Coastguard Worker// CHECK: add pc, r2 @ encoding: [0x97,0x44] 78*9880d681SAndroid Build Coastguard Worker ADD pc, pc, sp // T2 79*9880d681SAndroid Build Coastguard Worker// CHECK: add pc, sp @ encoding: [0xef,0x44] 80*9880d681SAndroid Build Coastguard Worker ADD pc, sp, pc // T2 81*9880d681SAndroid Build Coastguard Worker// CHECK: add pc, sp, pc @ encoding: [0xef,0x44] 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Worker// ADD (SP plus immediate) A8.8.9 84*9880d681SAndroid Build Coastguard Worker ADD sp, sp, #20 // T2 85*9880d681SAndroid Build Coastguard Worker// FIXME: ARMARM says 'add sp, sp, #20' 86*9880d681SAndroid Build Coastguard Worker// CHECK: add sp, #20 @ encoding: [0x05,0xb0] 87*9880d681SAndroid Build Coastguard Worker ADD sp, sp, #508 // T2 88*9880d681SAndroid Build Coastguard Worker// CHECK: add sp, #508 @ encoding: [0x7f,0xb0] 89*9880d681SAndroid Build Coastguard Worker ADD sp, sp, #512 // T3 90*9880d681SAndroid Build Coastguard Worker// CHECK: add.w sp, sp, #512 @ encoding: [0x0d,0xf5,0x00,0x7d] 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Worker// ADD (SP plus register) A8.8.10 (commutative) 93*9880d681SAndroid Build Coastguard Worker ADD r9, sp, r9 // T1 94*9880d681SAndroid Build Coastguard Worker// CHECK: add r9, sp, r9 @ encoding: [0xe9,0x44] 95*9880d681SAndroid Build Coastguard Worker ADD r9, r9, sp // T1 96*9880d681SAndroid Build Coastguard Worker// FIXME: ARMARM says 'add r9, sp, r9' 97*9880d681SAndroid Build Coastguard Worker// CHECK: add r9, sp @ encoding: [0xe9,0x44] 98*9880d681SAndroid Build Coastguard Worker ADD sp, sp, r10 // T2 99*9880d681SAndroid Build Coastguard Worker// CHECK: add sp, r10 @ encoding: [0xd5,0x44] 100*9880d681SAndroid Build Coastguard Worker ADD sp, r10, sp // T2 101*9880d681SAndroid Build Coastguard Worker// CHECK: add sp, r10 @ encoding: [0xd5,0x44] 102*9880d681SAndroid Build Coastguard Worker ADD sp, sp, pc // T2 103*9880d681SAndroid Build Coastguard Worker// CHECK: add sp, pc @ encoding: [0xfd,0x44] 104*9880d681SAndroid Build Coastguard Worker 105*9880d681SAndroid Build Coastguard Worker// AND (commutative) 106*9880d681SAndroid Build Coastguard Worker ANDS r0, r2, r1 // Must be wide - 3 distinct registers 107*9880d681SAndroid Build Coastguard Worker ANDS r2, r2, r1 // Should choose narrow 108*9880d681SAndroid Build Coastguard Worker ANDS r2, r1, r2 // Should choose narrow - commutative 109*9880d681SAndroid Build Coastguard Worker ANDS.W r0, r0, r1 // Explicitly wide 110*9880d681SAndroid Build Coastguard Worker ANDS.W r3, r1, r3 111*9880d681SAndroid Build Coastguard Worker AND r0, r1, r0 // Must use wide encoding as not flag-setting 112*9880d681SAndroid Build Coastguard Worker ANDS r7, r7, r1 // Should use narrow 113*9880d681SAndroid Build Coastguard Worker ANDS r7, r1, r7 // Commutative 114*9880d681SAndroid Build Coastguard Worker ANDS r8, r1, r8 // high registers so must use wide encoding 115*9880d681SAndroid Build Coastguard Worker ANDS r8, r8, r1 116*9880d681SAndroid Build Coastguard Worker ANDS r0, r8, r0 117*9880d681SAndroid Build Coastguard Worker ANDS r1, r1, r8 118*9880d681SAndroid Build Coastguard Worker ANDS r2, r2, r1, lsl #1 // Must use wide - shifted register 119*9880d681SAndroid Build Coastguard Worker ANDS r0, r1, r0, lsr #1 120*9880d681SAndroid Build Coastguard Worker// CHECK: ands.w r0, r2, r1 @ encoding: [0x12,0xea,0x01,0x00] 121*9880d681SAndroid Build Coastguard Worker// CHECK: ands r2, r1 @ encoding: [0x0a,0x40] 122*9880d681SAndroid Build Coastguard Worker// CHECK: ands r2, r1 @ encoding: [0x0a,0x40] 123*9880d681SAndroid Build Coastguard Worker// CHECK: ands.w r0, r0, r1 @ encoding: [0x10,0xea,0x01,0x00] 124*9880d681SAndroid Build Coastguard Worker// CHECK: ands.w r3, r1, r3 @ encoding: [0x11,0xea,0x03,0x03] 125*9880d681SAndroid Build Coastguard Worker// CHECK: and.w r0, r1, r0 @ encoding: [0x01,0xea,0x00,0x00] 126*9880d681SAndroid Build Coastguard Worker// CHECK: ands r7, r1 @ encoding: [0x0f,0x40] 127*9880d681SAndroid Build Coastguard Worker// CHECK: ands r7, r1 @ encoding: [0x0f,0x40] 128*9880d681SAndroid Build Coastguard Worker// CHECK: ands.w r8, r1, r8 @ encoding: [0x11,0xea,0x08,0x08] 129*9880d681SAndroid Build Coastguard Worker// CHECK: ands.w r8, r8, r1 @ encoding: [0x18,0xea,0x01,0x08] 130*9880d681SAndroid Build Coastguard Worker// CHECK: ands.w r0, r8, r0 @ encoding: [0x18,0xea,0x00,0x00] 131*9880d681SAndroid Build Coastguard Worker// CHECK: ands.w r1, r1, r8 @ encoding: [0x11,0xea,0x08,0x01] 132*9880d681SAndroid Build Coastguard Worker// CHECK: ands.w r2, r2, r1, lsl #1 @ encoding: [0x12,0xea,0x41,0x02] 133*9880d681SAndroid Build Coastguard Worker// CHECK: ands.w r0, r1, r0, lsr #1 @ encoding: [0x11,0xea,0x50,0x00] 134*9880d681SAndroid Build Coastguard Worker 135*9880d681SAndroid Build Coastguard Worker IT EQ 136*9880d681SAndroid Build Coastguard Worker ANDEQ r0, r2, r1 // Must be wide - 3 distinct registers 137*9880d681SAndroid Build Coastguard Worker IT EQ 138*9880d681SAndroid Build Coastguard Worker ANDEQ r3, r3, r1 // Should choose narrow 139*9880d681SAndroid Build Coastguard Worker IT EQ 140*9880d681SAndroid Build Coastguard Worker ANDEQ r3, r1, r3 // Should choose narrow - commutative 141*9880d681SAndroid Build Coastguard Worker IT EQ 142*9880d681SAndroid Build Coastguard Worker ANDEQ.W r0, r0, r1 // Explicitly wide 143*9880d681SAndroid Build Coastguard Worker IT EQ 144*9880d681SAndroid Build Coastguard Worker ANDEQ.W r2, r1, r2 145*9880d681SAndroid Build Coastguard Worker IT EQ 146*9880d681SAndroid Build Coastguard Worker ANDSEQ r0, r1, r0 // Must use wide encoding as flag-setting 147*9880d681SAndroid Build Coastguard Worker IT EQ 148*9880d681SAndroid Build Coastguard Worker ANDEQ r7, r7, r1 // Should use narrow 149*9880d681SAndroid Build Coastguard Worker IT EQ 150*9880d681SAndroid Build Coastguard Worker ANDEQ r7, r1, r7 // Commutative 151*9880d681SAndroid Build Coastguard Worker IT EQ 152*9880d681SAndroid Build Coastguard Worker ANDEQ r8, r1, r8 // high registers so must use wide encoding 153*9880d681SAndroid Build Coastguard Worker IT EQ 154*9880d681SAndroid Build Coastguard Worker ANDEQ r8, r8, r1 155*9880d681SAndroid Build Coastguard Worker IT EQ 156*9880d681SAndroid Build Coastguard Worker ANDEQ r4, r8, r4 157*9880d681SAndroid Build Coastguard Worker IT EQ 158*9880d681SAndroid Build Coastguard Worker ANDEQ r4, r4, r8 159*9880d681SAndroid Build Coastguard Worker IT EQ 160*9880d681SAndroid Build Coastguard Worker ANDEQ r0, r0, r1, lsl #1 // Must use wide - shifted register 161*9880d681SAndroid Build Coastguard Worker IT EQ 162*9880d681SAndroid Build Coastguard Worker ANDEQ r5, r1, r5, lsr #1 163*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 164*9880d681SAndroid Build Coastguard Worker// CHECK: andeq.w r0, r2, r1 @ encoding: [0x02,0xea,0x01,0x00] 165*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 166*9880d681SAndroid Build Coastguard Worker// CHECK: andeq r3, r1 @ encoding: [0x0b,0x40] 167*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 168*9880d681SAndroid Build Coastguard Worker// CHECK: andeq r3, r1 @ encoding: [0x0b,0x40] 169*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 170*9880d681SAndroid Build Coastguard Worker// CHECK: andeq.w r0, r0, r1 @ encoding: [0x00,0xea,0x01,0x00] 171*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 172*9880d681SAndroid Build Coastguard Worker// CHECK: andeq.w r2, r1, r2 @ encoding: [0x01,0xea,0x02,0x02] 173*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 174*9880d681SAndroid Build Coastguard Worker// CHECK: andseq.w r0, r1, r0 @ encoding: [0x11,0xea,0x00,0x00] 175*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 176*9880d681SAndroid Build Coastguard Worker// CHECK: andeq r7, r1 @ encoding: [0x0f,0x40] 177*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 178*9880d681SAndroid Build Coastguard Worker// CHECK: andeq r7, r1 @ encoding: [0x0f,0x40] 179*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 180*9880d681SAndroid Build Coastguard Worker// CHECK: andeq.w r8, r1, r8 @ encoding: [0x01,0xea,0x08,0x08] 181*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 182*9880d681SAndroid Build Coastguard Worker// CHECK: andeq.w r8, r8, r1 @ encoding: [0x08,0xea,0x01,0x08] 183*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 184*9880d681SAndroid Build Coastguard Worker// CHECK: andeq.w r4, r8, r4 @ encoding: [0x08,0xea,0x04,0x04] 185*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 186*9880d681SAndroid Build Coastguard Worker// CHECK: andeq.w r4, r4, r8 @ encoding: [0x04,0xea,0x08,0x04] 187*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 188*9880d681SAndroid Build Coastguard Worker// CHECK: andeq.w r0, r0, r1, lsl #1 @ encoding: [0x00,0xea,0x41,0x00] 189*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 190*9880d681SAndroid Build Coastguard Worker// CHECK: andeq.w r5, r1, r5, lsr #1 @ encoding: [0x01,0xea,0x55,0x05] 191*9880d681SAndroid Build Coastguard Worker 192*9880d681SAndroid Build Coastguard Worker// EOR (commutative) 193*9880d681SAndroid Build Coastguard Worker EORS r0, r2, r1 // Must be wide - 3 distinct registers 194*9880d681SAndroid Build Coastguard Worker EORS r5, r5, r1 // Should choose narrow 195*9880d681SAndroid Build Coastguard Worker EORS r5, r1, r5 // Should choose narrow - commutative 196*9880d681SAndroid Build Coastguard Worker EORS.W r0, r0, r1 // Explicitly wide 197*9880d681SAndroid Build Coastguard Worker EORS.W r2, r1, r2 198*9880d681SAndroid Build Coastguard Worker EOR r1, r1, r1 // Must use wide encoding as not flag-setting 199*9880d681SAndroid Build Coastguard Worker EORS r7, r7, r1 // Should use narrow 200*9880d681SAndroid Build Coastguard Worker EORS r7, r1, r7 // Commutative 201*9880d681SAndroid Build Coastguard Worker EORS r8, r1, r8 // high registers so must use wide encoding 202*9880d681SAndroid Build Coastguard Worker EORS r8, r8, r1 203*9880d681SAndroid Build Coastguard Worker EORS r6, r8, r6 204*9880d681SAndroid Build Coastguard Worker EORS r0, r0, r8 205*9880d681SAndroid Build Coastguard Worker EORS r2, r2, r1, lsl #1 // Must use wide - shifted register 206*9880d681SAndroid Build Coastguard Worker EORS r0, r1, r0, lsr #1 207*9880d681SAndroid Build Coastguard Worker// CHECK: eors.w r0, r2, r1 @ encoding: [0x92,0xea,0x01,0x00] 208*9880d681SAndroid Build Coastguard Worker// CHECK: eors r5, r1 @ encoding: [0x4d,0x40] 209*9880d681SAndroid Build Coastguard Worker// CHECK: eors r5, r1 @ encoding: [0x4d,0x40] 210*9880d681SAndroid Build Coastguard Worker// CHECK: eors.w r0, r0, r1 @ encoding: [0x90,0xea,0x01,0x00] 211*9880d681SAndroid Build Coastguard Worker// CHECK: eors.w r2, r1, r2 @ encoding: [0x91,0xea,0x02,0x02] 212*9880d681SAndroid Build Coastguard Worker// CHECK: eor.w r1, r1, r1 @ encoding: [0x81,0xea,0x01,0x01] 213*9880d681SAndroid Build Coastguard Worker// CHECK: eors r7, r1 @ encoding: [0x4f,0x40] 214*9880d681SAndroid Build Coastguard Worker// CHECK: eors r7, r1 @ encoding: [0x4f,0x40] 215*9880d681SAndroid Build Coastguard Worker// CHECK: eors.w r8, r1, r8 @ encoding: [0x91,0xea,0x08,0x08] 216*9880d681SAndroid Build Coastguard Worker// CHECK: eors.w r8, r8, r1 @ encoding: [0x98,0xea,0x01,0x08] 217*9880d681SAndroid Build Coastguard Worker// CHECK: eors.w r6, r8, r6 @ encoding: [0x98,0xea,0x06,0x06] 218*9880d681SAndroid Build Coastguard Worker// CHECK: eors.w r0, r0, r8 @ encoding: [0x90,0xea,0x08,0x00] 219*9880d681SAndroid Build Coastguard Worker// CHECK: eors.w r2, r2, r1, lsl #1 @ encoding: [0x92,0xea,0x41,0x02] 220*9880d681SAndroid Build Coastguard Worker// CHECK: eors.w r0, r1, r0, lsr #1 @ encoding: [0x91,0xea,0x50,0x00] 221*9880d681SAndroid Build Coastguard Worker 222*9880d681SAndroid Build Coastguard Worker IT EQ 223*9880d681SAndroid Build Coastguard Worker EOREQ r3, r2, r1 // Must be wide - 3 distinct registers 224*9880d681SAndroid Build Coastguard Worker IT EQ 225*9880d681SAndroid Build Coastguard Worker EOREQ r0, r0, r1 // Should choose narrow 226*9880d681SAndroid Build Coastguard Worker IT EQ 227*9880d681SAndroid Build Coastguard Worker EOREQ r2, r1, r2 // Should choose narrow - commutative 228*9880d681SAndroid Build Coastguard Worker IT EQ 229*9880d681SAndroid Build Coastguard Worker EOREQ.W r3, r3, r1 // Explicitly wide 230*9880d681SAndroid Build Coastguard Worker IT EQ 231*9880d681SAndroid Build Coastguard Worker EOREQ.W r0, r1, r0 232*9880d681SAndroid Build Coastguard Worker IT EQ 233*9880d681SAndroid Build Coastguard Worker EORSEQ r1, r1, r1 // Must use wide encoding as flag-setting 234*9880d681SAndroid Build Coastguard Worker IT EQ 235*9880d681SAndroid Build Coastguard Worker EOREQ r7, r7, r1 // Should use narrow 236*9880d681SAndroid Build Coastguard Worker IT EQ 237*9880d681SAndroid Build Coastguard Worker EOREQ r7, r1, r7 // Commutative 238*9880d681SAndroid Build Coastguard Worker IT EQ 239*9880d681SAndroid Build Coastguard Worker EOREQ r8, r1, r8 // high registers so must use wide encoding 240*9880d681SAndroid Build Coastguard Worker IT EQ 241*9880d681SAndroid Build Coastguard Worker EOREQ r8, r8, r1 242*9880d681SAndroid Build Coastguard Worker IT EQ 243*9880d681SAndroid Build Coastguard Worker EOREQ r0, r8, r0 244*9880d681SAndroid Build Coastguard Worker IT EQ 245*9880d681SAndroid Build Coastguard Worker EOREQ r3, r3, r8 246*9880d681SAndroid Build Coastguard Worker IT EQ 247*9880d681SAndroid Build Coastguard Worker EOREQ r4, r4, r1, lsl #1 // Must use wide - shifted register 248*9880d681SAndroid Build Coastguard Worker IT EQ 249*9880d681SAndroid Build Coastguard Worker EOREQ r0, r1, r0, lsr #1 250*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 251*9880d681SAndroid Build Coastguard Worker// CHECK: eoreq.w r3, r2, r1 @ encoding: [0x82,0xea,0x01,0x03] 252*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 253*9880d681SAndroid Build Coastguard Worker// CHECK: eoreq r0, r1 @ encoding: [0x48,0x40] 254*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 255*9880d681SAndroid Build Coastguard Worker// CHECK: eoreq r2, r1 @ encoding: [0x4a,0x40] 256*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 257*9880d681SAndroid Build Coastguard Worker// CHECK: eoreq.w r3, r3, r1 @ encoding: [0x83,0xea,0x01,0x03] 258*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 259*9880d681SAndroid Build Coastguard Worker// CHECK: eoreq.w r0, r1, r0 @ encoding: [0x81,0xea,0x00,0x00] 260*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 261*9880d681SAndroid Build Coastguard Worker// CHECK: eorseq.w r1, r1, r1 @ encoding: [0x91,0xea,0x01,0x01] 262*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 263*9880d681SAndroid Build Coastguard Worker// CHECK: eoreq r7, r1 @ encoding: [0x4f,0x40] 264*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 265*9880d681SAndroid Build Coastguard Worker// CHECK: eoreq r7, r1 @ encoding: [0x4f,0x40] 266*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 267*9880d681SAndroid Build Coastguard Worker// CHECK: eoreq.w r8, r1, r8 @ encoding: [0x81,0xea,0x08,0x08] 268*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 269*9880d681SAndroid Build Coastguard Worker// CHECK: eoreq.w r8, r8, r1 @ encoding: [0x88,0xea,0x01,0x08] 270*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 271*9880d681SAndroid Build Coastguard Worker// CHECK: eoreq.w r0, r8, r0 @ encoding: [0x88,0xea,0x00,0x00] 272*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 273*9880d681SAndroid Build Coastguard Worker// CHECK: eoreq.w r3, r3, r8 @ encoding: [0x83,0xea,0x08,0x03] 274*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 275*9880d681SAndroid Build Coastguard Worker// CHECK: eoreq.w r4, r4, r1, lsl #1 @ encoding: [0x84,0xea,0x41,0x04] 276*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 277*9880d681SAndroid Build Coastguard Worker// CHECK: eoreq.w r0, r1, r0, lsr #1 @ encoding: [0x81,0xea,0x50,0x00] 278*9880d681SAndroid Build Coastguard Worker 279*9880d681SAndroid Build Coastguard Worker// LSL 280*9880d681SAndroid Build Coastguard Worker LSLS r0, r2, r1 // Must be wide - 3 distinct registers 281*9880d681SAndroid Build Coastguard Worker LSLS r2, r2, r1 // Should choose narrow 282*9880d681SAndroid Build Coastguard Worker LSLS r2, r1, r2 // Should choose wide - not commutative 283*9880d681SAndroid Build Coastguard Worker LSLS.W r0, r0, r1 // Explicitly wide 284*9880d681SAndroid Build Coastguard Worker LSLS.W r4, r1, r4 285*9880d681SAndroid Build Coastguard Worker LSL r4, r1, r4 // Must use wide encoding as not flag-setting 286*9880d681SAndroid Build Coastguard Worker LSLS r7, r7, r1 // Should use narrow 287*9880d681SAndroid Build Coastguard Worker LSLS r8, r1, r8 // high registers so must use wide encoding 288*9880d681SAndroid Build Coastguard Worker LSLS r8, r8, r1 289*9880d681SAndroid Build Coastguard Worker LSLS r3, r8, r3 290*9880d681SAndroid Build Coastguard Worker LSLS r5, r5, r8 291*9880d681SAndroid Build Coastguard Worker// CHECK: lsls.w r0, r2, r1 @ encoding: [0x12,0xfa,0x01,0xf0] 292*9880d681SAndroid Build Coastguard Worker// CHECK: lsls r2, r1 @ encoding: [0x8a,0x40] 293*9880d681SAndroid Build Coastguard Worker// CHECK: lsls.w r2, r1, r2 @ encoding: [0x11,0xfa,0x02,0xf2] 294*9880d681SAndroid Build Coastguard Worker// CHECK: lsls.w r0, r0, r1 @ encoding: [0x10,0xfa,0x01,0xf0] 295*9880d681SAndroid Build Coastguard Worker// CHECK: lsls.w r4, r1, r4 @ encoding: [0x11,0xfa,0x04,0xf4] 296*9880d681SAndroid Build Coastguard Worker// CHECK: lsl.w r4, r1, r4 @ encoding: [0x01,0xfa,0x04,0xf4] 297*9880d681SAndroid Build Coastguard Worker// CHECK: lsls r7, r1 @ encoding: [0x8f,0x40] 298*9880d681SAndroid Build Coastguard Worker// CHECK: lsls.w r8, r1, r8 @ encoding: [0x11,0xfa,0x08,0xf8] 299*9880d681SAndroid Build Coastguard Worker// CHECK: lsls.w r8, r8, r1 @ encoding: [0x18,0xfa,0x01,0xf8] 300*9880d681SAndroid Build Coastguard Worker// CHECK: lsls.w r3, r8, r3 @ encoding: [0x18,0xfa,0x03,0xf3] 301*9880d681SAndroid Build Coastguard Worker// CHECK: lsls.w r5, r5, r8 @ encoding: [0x15,0xfa,0x08,0xf5] 302*9880d681SAndroid Build Coastguard Worker 303*9880d681SAndroid Build Coastguard Worker IT EQ 304*9880d681SAndroid Build Coastguard Worker LSLEQ r0, r2, r1 // Must be wide - 3 distinct registers 305*9880d681SAndroid Build Coastguard Worker IT EQ 306*9880d681SAndroid Build Coastguard Worker LSLEQ r2, r2, r1 // Should choose narrow 307*9880d681SAndroid Build Coastguard Worker IT EQ 308*9880d681SAndroid Build Coastguard Worker LSLEQ r2, r1, r2 // Should choose wide - not commutative 309*9880d681SAndroid Build Coastguard Worker IT EQ 310*9880d681SAndroid Build Coastguard Worker LSLEQ.W r0, r0, r1 // Explicitly wide 311*9880d681SAndroid Build Coastguard Worker IT EQ 312*9880d681SAndroid Build Coastguard Worker LSLEQ.W r3, r1, r3 313*9880d681SAndroid Build Coastguard Worker IT EQ 314*9880d681SAndroid Build Coastguard Worker LSLSEQ r4, r1, r4 // Must use wide encoding as flag-setting 315*9880d681SAndroid Build Coastguard Worker IT EQ 316*9880d681SAndroid Build Coastguard Worker LSLEQ r7, r7, r1 // Should use narrow 317*9880d681SAndroid Build Coastguard Worker IT EQ 318*9880d681SAndroid Build Coastguard Worker LSLEQ r8, r1, r8 // high registers so must use wide encoding 319*9880d681SAndroid Build Coastguard Worker IT EQ 320*9880d681SAndroid Build Coastguard Worker LSLEQ r8, r8, r1 321*9880d681SAndroid Build Coastguard Worker IT EQ 322*9880d681SAndroid Build Coastguard Worker LSLEQ r0, r8, r0 323*9880d681SAndroid Build Coastguard Worker IT EQ 324*9880d681SAndroid Build Coastguard Worker LSLEQ r3, r3, r8 325*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 326*9880d681SAndroid Build Coastguard Worker// CHECK: lsleq.w r0, r2, r1 @ encoding: [0x02,0xfa,0x01,0xf0] 327*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 328*9880d681SAndroid Build Coastguard Worker// CHECK: lsleq r2, r1 @ encoding: [0x8a,0x40] 329*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 330*9880d681SAndroid Build Coastguard Worker// CHECK: lsleq.w r2, r1, r2 @ encoding: [0x01,0xfa,0x02,0xf2] 331*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 332*9880d681SAndroid Build Coastguard Worker// CHECK: lsleq.w r0, r0, r1 @ encoding: [0x00,0xfa,0x01,0xf0] 333*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 334*9880d681SAndroid Build Coastguard Worker// CHECK: lsleq.w r3, r1, r3 @ encoding: [0x01,0xfa,0x03,0xf3] 335*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 336*9880d681SAndroid Build Coastguard Worker// CHECK: lslseq.w r4, r1, r4 @ encoding: [0x11,0xfa,0x04,0xf4] 337*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 338*9880d681SAndroid Build Coastguard Worker// CHECK: lsleq r7, r1 @ encoding: [0x8f,0x40] 339*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 340*9880d681SAndroid Build Coastguard Worker// CHECK: lsleq.w r8, r1, r8 @ encoding: [0x01,0xfa,0x08,0xf8] 341*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 342*9880d681SAndroid Build Coastguard Worker// CHECK: lsleq.w r8, r8, r1 @ encoding: [0x08,0xfa,0x01,0xf8] 343*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 344*9880d681SAndroid Build Coastguard Worker// CHECK: lsleq.w r0, r8, r0 @ encoding: [0x08,0xfa,0x00,0xf0] 345*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 346*9880d681SAndroid Build Coastguard Worker// CHECK: lsleq.w r3, r3, r8 @ encoding: [0x03,0xfa,0x08,0xf3] 347*9880d681SAndroid Build Coastguard Worker 348*9880d681SAndroid Build Coastguard Worker// LSR 349*9880d681SAndroid Build Coastguard Worker LSRS r6, r2, r1 // Must be wide - 3 distinct registers 350*9880d681SAndroid Build Coastguard Worker LSRS r2, r2, r1 // Should choose narrow 351*9880d681SAndroid Build Coastguard Worker LSRS r2, r1, r2 // Should choose wide - not commutative 352*9880d681SAndroid Build Coastguard Worker LSRS.W r2, r2, r1 // Explicitly wide 353*9880d681SAndroid Build Coastguard Worker LSRS.W r3, r1, r3 354*9880d681SAndroid Build Coastguard Worker LSR r4, r1, r4 // Must use wide encoding as not flag-setting 355*9880d681SAndroid Build Coastguard Worker LSRS r7, r7, r1 // Should use narrow 356*9880d681SAndroid Build Coastguard Worker LSRS r8, r1, r8 // high registers so must use wide encoding 357*9880d681SAndroid Build Coastguard Worker LSRS r8, r8, r1 358*9880d681SAndroid Build Coastguard Worker LSRS r2, r8, r2 359*9880d681SAndroid Build Coastguard Worker LSRS r5, r5, r8 360*9880d681SAndroid Build Coastguard Worker// CHECK: lsrs.w r6, r2, r1 @ encoding: [0x32,0xfa,0x01,0xf6] 361*9880d681SAndroid Build Coastguard Worker// CHECK: lsrs r2, r1 @ encoding: [0xca,0x40] 362*9880d681SAndroid Build Coastguard Worker// CHECK: lsrs.w r2, r1, r2 @ encoding: [0x31,0xfa,0x02,0xf2] 363*9880d681SAndroid Build Coastguard Worker// CHECK: lsrs.w r2, r2, r1 @ encoding: [0x32,0xfa,0x01,0xf2] 364*9880d681SAndroid Build Coastguard Worker// CHECK: lsrs.w r3, r1, r3 @ encoding: [0x31,0xfa,0x03,0xf3] 365*9880d681SAndroid Build Coastguard Worker// CHECK: lsr.w r4, r1, r4 @ encoding: [0x21,0xfa,0x04,0xf4] 366*9880d681SAndroid Build Coastguard Worker// CHECK: lsrs r7, r1 @ encoding: [0xcf,0x40] 367*9880d681SAndroid Build Coastguard Worker// CHECK: lsrs.w r8, r1, r8 @ encoding: [0x31,0xfa,0x08,0xf8] 368*9880d681SAndroid Build Coastguard Worker// CHECK: lsrs.w r8, r8, r1 @ encoding: [0x38,0xfa,0x01,0xf8] 369*9880d681SAndroid Build Coastguard Worker// CHECK: lsrs.w r2, r8, r2 @ encoding: [0x38,0xfa,0x02,0xf2] 370*9880d681SAndroid Build Coastguard Worker// CHECK: lsrs.w r5, r5, r8 @ encoding: [0x35,0xfa,0x08,0xf5] 371*9880d681SAndroid Build Coastguard Worker 372*9880d681SAndroid Build Coastguard Worker IT EQ 373*9880d681SAndroid Build Coastguard Worker LSREQ r6, r2, r1 // Must be wide - 3 distinct registers 374*9880d681SAndroid Build Coastguard Worker IT EQ 375*9880d681SAndroid Build Coastguard Worker LSREQ r7, r7, r1 // Should choose narrow 376*9880d681SAndroid Build Coastguard Worker IT EQ 377*9880d681SAndroid Build Coastguard Worker LSREQ r7, r1, r7 // Should choose wide - not commutative 378*9880d681SAndroid Build Coastguard Worker IT EQ 379*9880d681SAndroid Build Coastguard Worker LSREQ.W r7, r7, r1 // Explicitly wide 380*9880d681SAndroid Build Coastguard Worker IT EQ 381*9880d681SAndroid Build Coastguard Worker LSREQ.W r2, r1, r2 382*9880d681SAndroid Build Coastguard Worker IT EQ 383*9880d681SAndroid Build Coastguard Worker LSRSEQ r0, r1, r0 // Must use wide encoding as flag-setting 384*9880d681SAndroid Build Coastguard Worker IT EQ 385*9880d681SAndroid Build Coastguard Worker LSREQ r7, r7, r1 // Should use narrow 386*9880d681SAndroid Build Coastguard Worker IT EQ 387*9880d681SAndroid Build Coastguard Worker LSREQ r8, r1, r8 // high registers so must use wide encoding 388*9880d681SAndroid Build Coastguard Worker IT EQ 389*9880d681SAndroid Build Coastguard Worker LSREQ r8, r8, r1 390*9880d681SAndroid Build Coastguard Worker IT EQ 391*9880d681SAndroid Build Coastguard Worker LSREQ r1, r8, r1 392*9880d681SAndroid Build Coastguard Worker IT EQ 393*9880d681SAndroid Build Coastguard Worker LSREQ r4, r4, r8 394*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 395*9880d681SAndroid Build Coastguard Worker// CHECK: lsreq.w r6, r2, r1 @ encoding: [0x22,0xfa,0x01,0xf6] 396*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 397*9880d681SAndroid Build Coastguard Worker// CHECK: lsreq r7, r1 @ encoding: [0xcf,0x40] 398*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 399*9880d681SAndroid Build Coastguard Worker// CHECK: lsreq.w r7, r1, r7 @ encoding: [0x21,0xfa,0x07,0xf7] 400*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 401*9880d681SAndroid Build Coastguard Worker// CHECK: lsreq.w r7, r7, r1 @ encoding: [0x27,0xfa,0x01,0xf7] 402*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 403*9880d681SAndroid Build Coastguard Worker// CHECK: lsreq.w r2, r1, r2 @ encoding: [0x21,0xfa,0x02,0xf2] 404*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 405*9880d681SAndroid Build Coastguard Worker// CHECK: lsrseq.w r0, r1, r0 @ encoding: [0x31,0xfa,0x00,0xf0] 406*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 407*9880d681SAndroid Build Coastguard Worker// CHECK: lsreq r7, r1 @ encoding: [0xcf,0x40] 408*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 409*9880d681SAndroid Build Coastguard Worker// CHECK: lsreq.w r8, r1, r8 @ encoding: [0x21,0xfa,0x08,0xf8] 410*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 411*9880d681SAndroid Build Coastguard Worker// CHECK: lsreq.w r8, r8, r1 @ encoding: [0x28,0xfa,0x01,0xf8] 412*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 413*9880d681SAndroid Build Coastguard Worker// CHECK: lsreq.w r1, r8, r1 @ encoding: [0x28,0xfa,0x01,0xf1] 414*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 415*9880d681SAndroid Build Coastguard Worker// CHECK: lsreq.w r4, r4, r8 @ encoding: [0x24,0xfa,0x08,0xf4] 416*9880d681SAndroid Build Coastguard Worker 417*9880d681SAndroid Build Coastguard Worker// ASR 418*9880d681SAndroid Build Coastguard Worker ASRS r7, r6, r5 // Must be wide - 3 distinct registers 419*9880d681SAndroid Build Coastguard Worker ASRS r0, r0, r1 // Should choose narrow 420*9880d681SAndroid Build Coastguard Worker ASRS r0, r1, r0 // Should choose wide - not commutative 421*9880d681SAndroid Build Coastguard Worker ASRS.W r3, r3, r1 // Explicitly wide 422*9880d681SAndroid Build Coastguard Worker ASRS.W r1, r1, r1 423*9880d681SAndroid Build Coastguard Worker ASR r0, r1, r0 // Must use wide encoding as not flag-setting 424*9880d681SAndroid Build Coastguard Worker ASRS r7, r7, r1 // Should use narrow 425*9880d681SAndroid Build Coastguard Worker ASRS r8, r1, r8 // high registers so must use wide encoding 426*9880d681SAndroid Build Coastguard Worker ASRS r8, r8, r1 427*9880d681SAndroid Build Coastguard Worker ASRS r5, r8, r5 428*9880d681SAndroid Build Coastguard Worker ASRS r5, r5, r8 429*9880d681SAndroid Build Coastguard Worker// CHECK: asrs.w r7, r6, r5 @ encoding: [0x56,0xfa,0x05,0xf7] 430*9880d681SAndroid Build Coastguard Worker// CHECK: asrs r0, r1 @ encoding: [0x08,0x41] 431*9880d681SAndroid Build Coastguard Worker// CHECK: asrs.w r0, r1, r0 @ encoding: [0x51,0xfa,0x00,0xf0] 432*9880d681SAndroid Build Coastguard Worker// CHECK: asrs.w r3, r3, r1 @ encoding: [0x53,0xfa,0x01,0xf3] 433*9880d681SAndroid Build Coastguard Worker// CHECK: asrs.w r1, r1, r1 @ encoding: [0x51,0xfa,0x01,0xf1] 434*9880d681SAndroid Build Coastguard Worker// CHECK: asr.w r0, r1, r0 @ encoding: [0x41,0xfa,0x00,0xf0] 435*9880d681SAndroid Build Coastguard Worker// CHECK: asrs r7, r1 @ encoding: [0x0f,0x41] 436*9880d681SAndroid Build Coastguard Worker// CHECK: asrs.w r8, r1, r8 @ encoding: [0x51,0xfa,0x08,0xf8] 437*9880d681SAndroid Build Coastguard Worker// CHECK: asrs.w r8, r8, r1 @ encoding: [0x58,0xfa,0x01,0xf8] 438*9880d681SAndroid Build Coastguard Worker// CHECK: asrs.w r5, r8, r5 @ encoding: [0x58,0xfa,0x05,0xf5] 439*9880d681SAndroid Build Coastguard Worker// CHECK: asrs.w r5, r5, r8 @ encoding: [0x55,0xfa,0x08,0xf5] 440*9880d681SAndroid Build Coastguard Worker 441*9880d681SAndroid Build Coastguard Worker IT EQ 442*9880d681SAndroid Build Coastguard Worker ASREQ r0, r2, r1 // Must be wide - 3 distinct registers 443*9880d681SAndroid Build Coastguard Worker IT EQ 444*9880d681SAndroid Build Coastguard Worker ASREQ r2, r2, r1 // Should choose narrow 445*9880d681SAndroid Build Coastguard Worker IT EQ 446*9880d681SAndroid Build Coastguard Worker ASREQ r1, r2, r1 // Should choose wide - not commutative 447*9880d681SAndroid Build Coastguard Worker IT EQ 448*9880d681SAndroid Build Coastguard Worker ASREQ.W r4, r4, r1 // Explicitly wide 449*9880d681SAndroid Build Coastguard Worker IT EQ 450*9880d681SAndroid Build Coastguard Worker ASREQ.W r6, r1, r6 451*9880d681SAndroid Build Coastguard Worker IT EQ 452*9880d681SAndroid Build Coastguard Worker ASRSEQ r3, r1, r3 // Must use wide encoding as flag-setting 453*9880d681SAndroid Build Coastguard Worker IT EQ 454*9880d681SAndroid Build Coastguard Worker ASREQ r7, r7, r1 // Should use narrow 455*9880d681SAndroid Build Coastguard Worker IT EQ 456*9880d681SAndroid Build Coastguard Worker ASREQ r8, r1, r8 // high registers so must use wide encoding 457*9880d681SAndroid Build Coastguard Worker IT EQ 458*9880d681SAndroid Build Coastguard Worker ASREQ r8, r8, r1 459*9880d681SAndroid Build Coastguard Worker IT EQ 460*9880d681SAndroid Build Coastguard Worker ASREQ r1, r8, r1 461*9880d681SAndroid Build Coastguard Worker IT EQ 462*9880d681SAndroid Build Coastguard Worker ASREQ r3, r3, r8 463*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 464*9880d681SAndroid Build Coastguard Worker// CHECK: asreq.w r0, r2, r1 @ encoding: [0x42,0xfa,0x01,0xf0] 465*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 466*9880d681SAndroid Build Coastguard Worker// CHECK: asreq r2, r1 @ encoding: [0x0a,0x41] 467*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 468*9880d681SAndroid Build Coastguard Worker// CHECK: asreq.w r1, r2, r1 @ encoding: [0x42,0xfa,0x01,0xf1] 469*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 470*9880d681SAndroid Build Coastguard Worker// CHECK: asreq.w r4, r4, r1 @ encoding: [0x44,0xfa,0x01,0xf4] 471*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 472*9880d681SAndroid Build Coastguard Worker// CHECK: asreq.w r6, r1, r6 @ encoding: [0x41,0xfa,0x06,0xf6] 473*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 474*9880d681SAndroid Build Coastguard Worker// CHECK: asrseq.w r3, r1, r3 @ encoding: [0x51,0xfa,0x03,0xf3] 475*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 476*9880d681SAndroid Build Coastguard Worker// CHECK: asreq r7, r1 @ encoding: [0x0f,0x41] 477*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 478*9880d681SAndroid Build Coastguard Worker// CHECK: asreq.w r8, r1, r8 @ encoding: [0x41,0xfa,0x08,0xf8] 479*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 480*9880d681SAndroid Build Coastguard Worker// CHECK: asreq.w r8, r8, r1 @ encoding: [0x48,0xfa,0x01,0xf8] 481*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 482*9880d681SAndroid Build Coastguard Worker// CHECK: asreq.w r1, r8, r1 @ encoding: [0x48,0xfa,0x01,0xf1] 483*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 484*9880d681SAndroid Build Coastguard Worker// CHECK: asreq.w r3, r3, r8 @ encoding: [0x43,0xfa,0x08,0xf3] 485*9880d681SAndroid Build Coastguard Worker 486*9880d681SAndroid Build Coastguard Worker// ADC (commutative) 487*9880d681SAndroid Build Coastguard Worker ADCS r5, r2, r1 // Must be wide - 3 distinct registers 488*9880d681SAndroid Build Coastguard Worker ADCS r5, r5, r1 // Should choose narrow 489*9880d681SAndroid Build Coastguard Worker ADCS r3, r1, r3 // Should choose narrow - commutative 490*9880d681SAndroid Build Coastguard Worker ADCS.W r2, r2, r1 // Explicitly wide 491*9880d681SAndroid Build Coastguard Worker ADCS.W r3, r1, r3 492*9880d681SAndroid Build Coastguard Worker ADC r0, r1, r0 // Must use wide encoding as not flag-setting 493*9880d681SAndroid Build Coastguard Worker ADCS r7, r7, r1 // Should use narrow 494*9880d681SAndroid Build Coastguard Worker ADCS r7, r1, r7 // Commutative 495*9880d681SAndroid Build Coastguard Worker ADCS r8, r1, r8 // high registers so must use wide encoding 496*9880d681SAndroid Build Coastguard Worker ADCS r8, r8, r1 497*9880d681SAndroid Build Coastguard Worker ADCS r5, r8, r5 498*9880d681SAndroid Build Coastguard Worker ADCS r2, r2, r8 499*9880d681SAndroid Build Coastguard Worker ADCS r3, r3, r1, lsl #1 // Must use wide - shifted register 500*9880d681SAndroid Build Coastguard Worker ADCS r4, r1, r4, lsr #1 501*9880d681SAndroid Build Coastguard Worker// CHECK: adcs.w r5, r2, r1 @ encoding: [0x52,0xeb,0x01,0x05] 502*9880d681SAndroid Build Coastguard Worker// CHECK: adcs r5, r1 @ encoding: [0x4d,0x41] 503*9880d681SAndroid Build Coastguard Worker// CHECK: adcs r3, r1 @ encoding: [0x4b,0x41] 504*9880d681SAndroid Build Coastguard Worker// CHECK: adcs.w r2, r2, r1 @ encoding: [0x52,0xeb,0x01,0x02] 505*9880d681SAndroid Build Coastguard Worker// CHECK: adcs.w r3, r1, r3 @ encoding: [0x51,0xeb,0x03,0x03] 506*9880d681SAndroid Build Coastguard Worker// CHECK: adc.w r0, r1, r0 @ encoding: [0x41,0xeb,0x00,0x00] 507*9880d681SAndroid Build Coastguard Worker// CHECK: adcs r7, r1 @ encoding: [0x4f,0x41] 508*9880d681SAndroid Build Coastguard Worker// CHECK: adcs r7, r1 @ encoding: [0x4f,0x41] 509*9880d681SAndroid Build Coastguard Worker// CHECK: adcs.w r8, r1, r8 @ encoding: [0x51,0xeb,0x08,0x08] 510*9880d681SAndroid Build Coastguard Worker// CHECK: adcs.w r8, r8, r1 @ encoding: [0x58,0xeb,0x01,0x08] 511*9880d681SAndroid Build Coastguard Worker// CHECK: adcs.w r5, r8, r5 @ encoding: [0x58,0xeb,0x05,0x05] 512*9880d681SAndroid Build Coastguard Worker// CHECK: adcs.w r2, r2, r8 @ encoding: [0x52,0xeb,0x08,0x02] 513*9880d681SAndroid Build Coastguard Worker// CHECK: adcs.w r3, r3, r1, lsl #1 @ encoding: [0x53,0xeb,0x41,0x03] 514*9880d681SAndroid Build Coastguard Worker// CHECK: adcs.w r4, r1, r4, lsr #1 @ encoding: [0x51,0xeb,0x54,0x04] 515*9880d681SAndroid Build Coastguard Worker 516*9880d681SAndroid Build Coastguard Worker IT EQ 517*9880d681SAndroid Build Coastguard Worker ADCEQ r1, r2, r3 // Must be wide - 3 distinct registers 518*9880d681SAndroid Build Coastguard Worker IT EQ 519*9880d681SAndroid Build Coastguard Worker ADCEQ r1, r1, r1 // Should choose narrow 520*9880d681SAndroid Build Coastguard Worker IT EQ 521*9880d681SAndroid Build Coastguard Worker ADCEQ r3, r1, r3 // Should choose narrow - commutative 522*9880d681SAndroid Build Coastguard Worker IT EQ 523*9880d681SAndroid Build Coastguard Worker ADCEQ.W r3, r3, r1 // Explicitly wide 524*9880d681SAndroid Build Coastguard Worker IT EQ 525*9880d681SAndroid Build Coastguard Worker ADCEQ.W r0, r1, r0 526*9880d681SAndroid Build Coastguard Worker IT EQ 527*9880d681SAndroid Build Coastguard Worker ADCSEQ r3, r1, r3 // Must use wide encoding as flag-setting 528*9880d681SAndroid Build Coastguard Worker IT EQ 529*9880d681SAndroid Build Coastguard Worker ADCEQ r7, r7, r1 // Should use narrow 530*9880d681SAndroid Build Coastguard Worker IT EQ 531*9880d681SAndroid Build Coastguard Worker ADCEQ r7, r1, r7 // Commutative 532*9880d681SAndroid Build Coastguard Worker IT EQ 533*9880d681SAndroid Build Coastguard Worker ADCEQ r8, r1, r8 // high registers so must use wide encoding 534*9880d681SAndroid Build Coastguard Worker IT EQ 535*9880d681SAndroid Build Coastguard Worker ADCEQ r8, r8, r1 536*9880d681SAndroid Build Coastguard Worker IT EQ 537*9880d681SAndroid Build Coastguard Worker ADCEQ r3, r8, r3 538*9880d681SAndroid Build Coastguard Worker IT EQ 539*9880d681SAndroid Build Coastguard Worker ADCEQ r1, r1, r8 540*9880d681SAndroid Build Coastguard Worker IT EQ 541*9880d681SAndroid Build Coastguard Worker ADCEQ r2, r2, r1, lsl #1 // Must use wide - shifted register 542*9880d681SAndroid Build Coastguard Worker IT EQ 543*9880d681SAndroid Build Coastguard Worker ADCEQ r1, r1, r1, lsr #1 544*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 545*9880d681SAndroid Build Coastguard Worker// CHECK: adceq.w r1, r2, r3 @ encoding: [0x42,0xeb,0x03,0x01] 546*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 547*9880d681SAndroid Build Coastguard Worker// CHECK: adceq r1, r1 @ encoding: [0x49,0x41] 548*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 549*9880d681SAndroid Build Coastguard Worker// CHECK: adceq r3, r1 @ encoding: [0x4b,0x41] 550*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 551*9880d681SAndroid Build Coastguard Worker// CHECK: adceq.w r3, r3, r1 @ encoding: [0x43,0xeb,0x01,0x03] 552*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 553*9880d681SAndroid Build Coastguard Worker// CHECK: adceq.w r0, r1, r0 @ encoding: [0x41,0xeb,0x00,0x00] 554*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 555*9880d681SAndroid Build Coastguard Worker// CHECK: adcseq.w r3, r1, r3 @ encoding: [0x51,0xeb,0x03,0x03] 556*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 557*9880d681SAndroid Build Coastguard Worker// CHECK: adceq r7, r1 @ encoding: [0x4f,0x41] 558*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 559*9880d681SAndroid Build Coastguard Worker// CHECK: adceq r7, r1 @ encoding: [0x4f,0x41] 560*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 561*9880d681SAndroid Build Coastguard Worker// CHECK: adceq.w r8, r1, r8 @ encoding: [0x41,0xeb,0x08,0x08] 562*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 563*9880d681SAndroid Build Coastguard Worker// CHECK: adceq.w r8, r8, r1 @ encoding: [0x48,0xeb,0x01,0x08] 564*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 565*9880d681SAndroid Build Coastguard Worker// CHECK: adceq.w r3, r8, r3 @ encoding: [0x48,0xeb,0x03,0x03] 566*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 567*9880d681SAndroid Build Coastguard Worker// CHECK: adceq.w r1, r1, r8 @ encoding: [0x41,0xeb,0x08,0x01] 568*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 569*9880d681SAndroid Build Coastguard Worker// CHECK: adceq.w r2, r2, r1, lsl #1 @ encoding: [0x42,0xeb,0x41,0x02] 570*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 571*9880d681SAndroid Build Coastguard Worker// CHECK: adceq.w r1, r1, r1, lsr #1 @ encoding: [0x41,0xeb,0x51,0x01] 572*9880d681SAndroid Build Coastguard Worker 573*9880d681SAndroid Build Coastguard Worker// SBC 574*9880d681SAndroid Build Coastguard Worker SBCS r3, r2, r1 // Must be wide - 3 distinct registers 575*9880d681SAndroid Build Coastguard Worker SBCS r4, r4, r1 // Should choose narrow 576*9880d681SAndroid Build Coastguard Worker SBCS r1, r4, r1 // Should choose wide - not commutative 577*9880d681SAndroid Build Coastguard Worker SBCS.W r4, r4, r1 // Explicitly wide 578*9880d681SAndroid Build Coastguard Worker SBCS.W r2, r1, r2 579*9880d681SAndroid Build Coastguard Worker SBC r0, r1, r0 // Must use wide encoding as not flag-setting 580*9880d681SAndroid Build Coastguard Worker SBCS r7, r7, r1 // Should use narrow 581*9880d681SAndroid Build Coastguard Worker SBCS r8, r1, r8 // high registers so must use wide encoding 582*9880d681SAndroid Build Coastguard Worker SBCS r8, r8, r1 583*9880d681SAndroid Build Coastguard Worker SBCS r4, r8, r4 584*9880d681SAndroid Build Coastguard Worker SBCS r3, r3, r8 585*9880d681SAndroid Build Coastguard Worker SBCS r2, r2, r1, lsl #1 // Must use wide - shifted register 586*9880d681SAndroid Build Coastguard Worker SBCS r5, r1, r5, lsr #1 587*9880d681SAndroid Build Coastguard Worker// CHECK: sbcs.w r3, r2, r1 @ encoding: [0x72,0xeb,0x01,0x03] 588*9880d681SAndroid Build Coastguard Worker// CHECK: sbcs r4, r1 @ encoding: [0x8c,0x41] 589*9880d681SAndroid Build Coastguard Worker// CHECK: sbcs.w r1, r4, r1 @ encoding: [0x74,0xeb,0x01,0x01] 590*9880d681SAndroid Build Coastguard Worker// CHECK: sbcs.w r4, r4, r1 @ encoding: [0x74,0xeb,0x01,0x04] 591*9880d681SAndroid Build Coastguard Worker// CHECK: sbcs.w r2, r1, r2 @ encoding: [0x71,0xeb,0x02,0x02] 592*9880d681SAndroid Build Coastguard Worker// CHECK: sbc.w r0, r1, r0 @ encoding: [0x61,0xeb,0x00,0x00] 593*9880d681SAndroid Build Coastguard Worker// CHECK: sbcs r7, r1 @ encoding: [0x8f,0x41] 594*9880d681SAndroid Build Coastguard Worker// CHECK: sbcs.w r8, r1, r8 @ encoding: [0x71,0xeb,0x08,0x08] 595*9880d681SAndroid Build Coastguard Worker// CHECK: sbcs.w r8, r8, r1 @ encoding: [0x78,0xeb,0x01,0x08] 596*9880d681SAndroid Build Coastguard Worker// CHECK: sbcs.w r4, r8, r4 @ encoding: [0x78,0xeb,0x04,0x04] 597*9880d681SAndroid Build Coastguard Worker// CHECK: sbcs.w r3, r3, r8 @ encoding: [0x73,0xeb,0x08,0x03] 598*9880d681SAndroid Build Coastguard Worker// CHECK: sbcs.w r2, r2, r1, lsl #1 @ encoding: [0x72,0xeb,0x41,0x02] 599*9880d681SAndroid Build Coastguard Worker// CHECK: sbcs.w r5, r1, r5, lsr #1 @ encoding: [0x71,0xeb,0x55,0x05] 600*9880d681SAndroid Build Coastguard Worker 601*9880d681SAndroid Build Coastguard Worker IT EQ 602*9880d681SAndroid Build Coastguard Worker SBCEQ r5, r2, r1 // Must be wide - 3 distinct registers 603*9880d681SAndroid Build Coastguard Worker IT EQ 604*9880d681SAndroid Build Coastguard Worker SBCEQ r5, r5, r1 // Should choose narrow 605*9880d681SAndroid Build Coastguard Worker IT EQ 606*9880d681SAndroid Build Coastguard Worker SBCEQ r1, r5, r1 // Should choose narrow 607*9880d681SAndroid Build Coastguard Worker IT EQ 608*9880d681SAndroid Build Coastguard Worker SBCEQ.W r5, r5, r1 // Explicitly wide 609*9880d681SAndroid Build Coastguard Worker IT EQ 610*9880d681SAndroid Build Coastguard Worker SBCEQ.W r0, r1, r0 611*9880d681SAndroid Build Coastguard Worker IT EQ 612*9880d681SAndroid Build Coastguard Worker SBCSEQ r2, r1, r2 // Must use wide encoding as flag-setting 613*9880d681SAndroid Build Coastguard Worker IT EQ 614*9880d681SAndroid Build Coastguard Worker SBCEQ r7, r7, r1 // Should use narrow 615*9880d681SAndroid Build Coastguard Worker IT EQ 616*9880d681SAndroid Build Coastguard Worker SBCEQ r8, r1, r8 // high registers so must use wide encoding 617*9880d681SAndroid Build Coastguard Worker IT EQ 618*9880d681SAndroid Build Coastguard Worker SBCEQ r8, r8, r1 619*9880d681SAndroid Build Coastguard Worker IT EQ 620*9880d681SAndroid Build Coastguard Worker SBCEQ r7, r8, r7 621*9880d681SAndroid Build Coastguard Worker IT EQ 622*9880d681SAndroid Build Coastguard Worker SBCEQ r7, r7, r8 623*9880d681SAndroid Build Coastguard Worker IT EQ 624*9880d681SAndroid Build Coastguard Worker SBCEQ r2, r2, r1, lsl #1 // Must use wide - shifted register 625*9880d681SAndroid Build Coastguard Worker IT EQ 626*9880d681SAndroid Build Coastguard Worker SBCEQ r5, r1, r5, lsr #1 627*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 628*9880d681SAndroid Build Coastguard Worker// CHECK: sbceq.w r5, r2, r1 @ encoding: [0x62,0xeb,0x01,0x05] 629*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 630*9880d681SAndroid Build Coastguard Worker// CHECK: sbceq r5, r1 @ encoding: [0x8d,0x41] 631*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 632*9880d681SAndroid Build Coastguard Worker// CHECK: sbceq.w r1, r5, r1 @ encoding: [0x65,0xeb,0x01,0x01] 633*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 634*9880d681SAndroid Build Coastguard Worker// CHECK: sbceq.w r5, r5, r1 @ encoding: [0x65,0xeb,0x01,0x05] 635*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 636*9880d681SAndroid Build Coastguard Worker// CHECK: sbceq.w r0, r1, r0 @ encoding: [0x61,0xeb,0x00,0x00] 637*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 638*9880d681SAndroid Build Coastguard Worker// CHECK: sbcseq.w r2, r1, r2 @ encoding: [0x71,0xeb,0x02,0x02] 639*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 640*9880d681SAndroid Build Coastguard Worker// CHECK: sbceq r7, r1 @ encoding: [0x8f,0x41] 641*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 642*9880d681SAndroid Build Coastguard Worker// CHECK: sbceq.w r8, r1, r8 @ encoding: [0x61,0xeb,0x08,0x08] 643*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 644*9880d681SAndroid Build Coastguard Worker// CHECK: sbceq.w r8, r8, r1 @ encoding: [0x68,0xeb,0x01,0x08] 645*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 646*9880d681SAndroid Build Coastguard Worker// CHECK: sbceq.w r7, r8, r7 @ encoding: [0x68,0xeb,0x07,0x07] 647*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 648*9880d681SAndroid Build Coastguard Worker// CHECK: sbceq.w r7, r7, r8 @ encoding: [0x67,0xeb,0x08,0x07] 649*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 650*9880d681SAndroid Build Coastguard Worker// CHECK: sbceq.w r2, r2, r1, lsl #1 @ encoding: [0x62,0xeb,0x41,0x02] 651*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 652*9880d681SAndroid Build Coastguard Worker// CHECK: sbceq.w r5, r1, r5, lsr #1 @ encoding: [0x61,0xeb,0x55,0x05] 653*9880d681SAndroid Build Coastguard Worker 654*9880d681SAndroid Build Coastguard Worker// ROR 655*9880d681SAndroid Build Coastguard Worker RORS r3, r2, r1 // Must be wide - 3 distinct registers 656*9880d681SAndroid Build Coastguard Worker RORS r0, r0, r1 // Should choose narrow 657*9880d681SAndroid Build Coastguard Worker RORS r1, r0, r1 // Should choose wide - not commutative 658*9880d681SAndroid Build Coastguard Worker RORS.W r2, r2, r1 // Explicitly wide 659*9880d681SAndroid Build Coastguard Worker RORS.W r2, r1, r2 660*9880d681SAndroid Build Coastguard Worker ROR r5, r1, r5 // Must use wide encoding as not flag-setting 661*9880d681SAndroid Build Coastguard Worker RORS r7, r7, r1 // Should use narrow 662*9880d681SAndroid Build Coastguard Worker RORS r8, r1, r8 // high registers so must use wide encoding 663*9880d681SAndroid Build Coastguard Worker RORS r8, r8, r1 664*9880d681SAndroid Build Coastguard Worker RORS r6, r8, r6 665*9880d681SAndroid Build Coastguard Worker RORS r6, r6, r8 666*9880d681SAndroid Build Coastguard Worker// CHECK: rors.w r3, r2, r1 @ encoding: [0x72,0xfa,0x01,0xf3] 667*9880d681SAndroid Build Coastguard Worker// CHECK: rors r0, r1 @ encoding: [0xc8,0x41] 668*9880d681SAndroid Build Coastguard Worker// CHECK: rors.w r1, r0, r1 @ encoding: [0x70,0xfa,0x01,0xf1] 669*9880d681SAndroid Build Coastguard Worker// CHECK: rors.w r2, r2, r1 @ encoding: [0x72,0xfa,0x01,0xf2] 670*9880d681SAndroid Build Coastguard Worker// CHECK: rors.w r2, r1, r2 @ encoding: [0x71,0xfa,0x02,0xf2] 671*9880d681SAndroid Build Coastguard Worker// CHECK: ror.w r5, r1, r5 @ encoding: [0x61,0xfa,0x05,0xf5] 672*9880d681SAndroid Build Coastguard Worker// CHECK: rors r7, r1 @ encoding: [0xcf,0x41] 673*9880d681SAndroid Build Coastguard Worker// CHECK: rors.w r8, r1, r8 @ encoding: [0x71,0xfa,0x08,0xf8] 674*9880d681SAndroid Build Coastguard Worker// CHECK: rors.w r8, r8, r1 @ encoding: [0x78,0xfa,0x01,0xf8] 675*9880d681SAndroid Build Coastguard Worker// CHECK: rors.w r6, r8, r6 @ encoding: [0x78,0xfa,0x06,0xf6] 676*9880d681SAndroid Build Coastguard Worker// CHECK: rors.w r6, r6, r8 @ encoding: [0x76,0xfa,0x08,0xf6] 677*9880d681SAndroid Build Coastguard Worker 678*9880d681SAndroid Build Coastguard Worker IT EQ 679*9880d681SAndroid Build Coastguard Worker ROREQ r4, r2, r1 // Must be wide - 3 distinct registers 680*9880d681SAndroid Build Coastguard Worker IT EQ 681*9880d681SAndroid Build Coastguard Worker ROREQ r4, r4, r1 // Should choose narrow 682*9880d681SAndroid Build Coastguard Worker IT EQ 683*9880d681SAndroid Build Coastguard Worker ROREQ r1, r4, r1 // Should choose wide - not commutative 684*9880d681SAndroid Build Coastguard Worker IT EQ 685*9880d681SAndroid Build Coastguard Worker ROREQ.W r4, r4, r1 // Explicitly wide 686*9880d681SAndroid Build Coastguard Worker IT EQ 687*9880d681SAndroid Build Coastguard Worker ROREQ.W r0, r1, r0 688*9880d681SAndroid Build Coastguard Worker IT EQ 689*9880d681SAndroid Build Coastguard Worker RORSEQ r0, r1, r0 // Must use wide encoding as flag-setting 690*9880d681SAndroid Build Coastguard Worker IT EQ 691*9880d681SAndroid Build Coastguard Worker ROREQ r7, r7, r1 // Should use narrow 692*9880d681SAndroid Build Coastguard Worker IT EQ 693*9880d681SAndroid Build Coastguard Worker ROREQ r8, r1, r8 // high registers so must use wide encoding 694*9880d681SAndroid Build Coastguard Worker IT EQ 695*9880d681SAndroid Build Coastguard Worker ROREQ r8, r8, r1 696*9880d681SAndroid Build Coastguard Worker IT EQ 697*9880d681SAndroid Build Coastguard Worker ROREQ r3, r8, r3 698*9880d681SAndroid Build Coastguard Worker IT EQ 699*9880d681SAndroid Build Coastguard Worker ROREQ r1, r1, r8 700*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 701*9880d681SAndroid Build Coastguard Worker// CHECK: roreq.w r4, r2, r1 @ encoding: [0x62,0xfa,0x01,0xf4] 702*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 703*9880d681SAndroid Build Coastguard Worker// CHECK: roreq r4, r1 @ encoding: [0xcc,0x41] 704*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 705*9880d681SAndroid Build Coastguard Worker// CHECK: roreq.w r1, r4, r1 @ encoding: [0x64,0xfa,0x01,0xf1] 706*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 707*9880d681SAndroid Build Coastguard Worker// CHECK: roreq.w r4, r4, r1 @ encoding: [0x64,0xfa,0x01,0xf4] 708*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 709*9880d681SAndroid Build Coastguard Worker// CHECK: roreq.w r0, r1, r0 @ encoding: [0x61,0xfa,0x00,0xf0] 710*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 711*9880d681SAndroid Build Coastguard Worker// CHECK: rorseq.w r0, r1, r0 @ encoding: [0x71,0xfa,0x00,0xf0] 712*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 713*9880d681SAndroid Build Coastguard Worker// CHECK: roreq r7, r1 @ encoding: [0xcf,0x41] 714*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 715*9880d681SAndroid Build Coastguard Worker// CHECK: roreq.w r8, r1, r8 @ encoding: [0x61,0xfa,0x08,0xf8] 716*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 717*9880d681SAndroid Build Coastguard Worker// CHECK: roreq.w r8, r8, r1 @ encoding: [0x68,0xfa,0x01,0xf8] 718*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 719*9880d681SAndroid Build Coastguard Worker// CHECK: roreq.w r3, r8, r3 @ encoding: [0x68,0xfa,0x03,0xf3] 720*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 721*9880d681SAndroid Build Coastguard Worker// CHECK: roreq.w r1, r1, r8 @ encoding: [0x61,0xfa,0x08,0xf1] 722*9880d681SAndroid Build Coastguard Worker 723*9880d681SAndroid Build Coastguard Worker// TST - only two register version available 724*9880d681SAndroid Build Coastguard Worker// RSB - only two register version available 725*9880d681SAndroid Build Coastguard Worker// CMP - only two register version available 726*9880d681SAndroid Build Coastguard Worker// CMN - only two register version available 727*9880d681SAndroid Build Coastguard Worker 728*9880d681SAndroid Build Coastguard Worker// ORR (commutative) 729*9880d681SAndroid Build Coastguard Worker ORRS r7, r2, r1 // Must be wide - 3 distinct registers 730*9880d681SAndroid Build Coastguard Worker ORRS r2, r2, r1 // Should choose narrow 731*9880d681SAndroid Build Coastguard Worker ORRS r3, r1, r3 // Should choose narrow - commutative 732*9880d681SAndroid Build Coastguard Worker ORRS.W r4, r4, r1 // Explicitly wide 733*9880d681SAndroid Build Coastguard Worker ORRS.W r5, r1, r5 734*9880d681SAndroid Build Coastguard Worker ORR r2, r1, r2 // Must use wide encoding as not flag-setting 735*9880d681SAndroid Build Coastguard Worker ORRS r7, r7, r1 // Should use narrow 736*9880d681SAndroid Build Coastguard Worker ORRS r7, r1, r7 // Commutative 737*9880d681SAndroid Build Coastguard Worker ORRS r8, r1, r8 // high registers so must use wide encoding 738*9880d681SAndroid Build Coastguard Worker ORRS r8, r8, r1 739*9880d681SAndroid Build Coastguard Worker ORRS r1, r8, r1 740*9880d681SAndroid Build Coastguard Worker ORRS r0, r0, r8 741*9880d681SAndroid Build Coastguard Worker ORRS r1, r1, r1, lsl #1 // Must use wide - shifted register 742*9880d681SAndroid Build Coastguard Worker ORRS r0, r1, r0, lsr #1 743*9880d681SAndroid Build Coastguard Worker// CHECK: orrs.w r7, r2, r1 @ encoding: [0x52,0xea,0x01,0x07] 744*9880d681SAndroid Build Coastguard Worker// CHECK: orrs r2, r1 @ encoding: [0x0a,0x43] 745*9880d681SAndroid Build Coastguard Worker// CHECK: orrs r3, r1 @ encoding: [0x0b,0x43] 746*9880d681SAndroid Build Coastguard Worker// CHECK: orrs.w r4, r4, r1 @ encoding: [0x54,0xea,0x01,0x04] 747*9880d681SAndroid Build Coastguard Worker// CHECK: orrs.w r5, r1, r5 @ encoding: [0x51,0xea,0x05,0x05] 748*9880d681SAndroid Build Coastguard Worker// CHECK: orr.w r2, r1, r2 @ encoding: [0x41,0xea,0x02,0x02] 749*9880d681SAndroid Build Coastguard Worker// CHECK: orrs r7, r1 @ encoding: [0x0f,0x43] 750*9880d681SAndroid Build Coastguard Worker// CHECK: orrs r7, r1 @ encoding: [0x0f,0x43] 751*9880d681SAndroid Build Coastguard Worker// CHECK: orrs.w r8, r1, r8 @ encoding: [0x51,0xea,0x08,0x08] 752*9880d681SAndroid Build Coastguard Worker// CHECK: orrs.w r8, r8, r1 @ encoding: [0x58,0xea,0x01,0x08] 753*9880d681SAndroid Build Coastguard Worker// CHECK: orrs.w r1, r8, r1 @ encoding: [0x58,0xea,0x01,0x01] 754*9880d681SAndroid Build Coastguard Worker// CHECK: orrs.w r0, r0, r8 @ encoding: [0x50,0xea,0x08,0x00] 755*9880d681SAndroid Build Coastguard Worker// CHECK: orrs.w r1, r1, r1, lsl #1 @ encoding: [0x51,0xea,0x41,0x01] 756*9880d681SAndroid Build Coastguard Worker// CHECK: orrs.w r0, r1, r0, lsr #1 @ encoding: [0x51,0xea,0x50,0x00] 757*9880d681SAndroid Build Coastguard Worker 758*9880d681SAndroid Build Coastguard Worker IT EQ 759*9880d681SAndroid Build Coastguard Worker ORREQ r0, r2, r1 // Must be wide - 3 distinct registers 760*9880d681SAndroid Build Coastguard Worker IT EQ 761*9880d681SAndroid Build Coastguard Worker ORREQ r5, r5, r1 // Should choose narrow 762*9880d681SAndroid Build Coastguard Worker IT EQ 763*9880d681SAndroid Build Coastguard Worker ORREQ r5, r1, r5 // Should choose narrow - commutative 764*9880d681SAndroid Build Coastguard Worker IT EQ 765*9880d681SAndroid Build Coastguard Worker ORREQ.W r2, r2, r1 // Explicitly wide 766*9880d681SAndroid Build Coastguard Worker IT EQ 767*9880d681SAndroid Build Coastguard Worker ORREQ.W r3, r1, r3 768*9880d681SAndroid Build Coastguard Worker IT EQ 769*9880d681SAndroid Build Coastguard Worker ORRSEQ r4, r1, r4 // Must use wide encoding as flag-setting 770*9880d681SAndroid Build Coastguard Worker IT EQ 771*9880d681SAndroid Build Coastguard Worker ORREQ r7, r7, r1 // Should use narrow 772*9880d681SAndroid Build Coastguard Worker IT EQ 773*9880d681SAndroid Build Coastguard Worker ORREQ r7, r1, r7 // Commutative 774*9880d681SAndroid Build Coastguard Worker IT EQ 775*9880d681SAndroid Build Coastguard Worker ORREQ r8, r1, r8 // high registers so must use wide encoding 776*9880d681SAndroid Build Coastguard Worker IT EQ 777*9880d681SAndroid Build Coastguard Worker ORREQ r8, r8, r1 778*9880d681SAndroid Build Coastguard Worker IT EQ 779*9880d681SAndroid Build Coastguard Worker ORREQ r0, r8, r0 780*9880d681SAndroid Build Coastguard Worker IT EQ 781*9880d681SAndroid Build Coastguard Worker ORREQ r0, r0, r8 782*9880d681SAndroid Build Coastguard Worker IT EQ 783*9880d681SAndroid Build Coastguard Worker ORREQ r2, r2, r1, lsl #1 // Must use wide - shifted register 784*9880d681SAndroid Build Coastguard Worker IT EQ 785*9880d681SAndroid Build Coastguard Worker ORREQ r2, r1, r2, lsr #1 786*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 787*9880d681SAndroid Build Coastguard Worker// CHECK: orreq.w r0, r2, r1 @ encoding: [0x42,0xea,0x01,0x00] 788*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 789*9880d681SAndroid Build Coastguard Worker// CHECK: orreq r5, r1 @ encoding: [0x0d,0x43] 790*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 791*9880d681SAndroid Build Coastguard Worker// CHECK: orreq r5, r1 @ encoding: [0x0d,0x43] 792*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 793*9880d681SAndroid Build Coastguard Worker// CHECK: orreq.w r2, r2, r1 @ encoding: [0x42,0xea,0x01,0x02] 794*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 795*9880d681SAndroid Build Coastguard Worker// CHECK: orreq.w r3, r1, r3 @ encoding: [0x41,0xea,0x03,0x03] 796*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 797*9880d681SAndroid Build Coastguard Worker// CHECK: orrseq.w r4, r1, r4 @ encoding: [0x51,0xea,0x04,0x04] 798*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 799*9880d681SAndroid Build Coastguard Worker// CHECK: orreq r7, r1 @ encoding: [0x0f,0x43] 800*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 801*9880d681SAndroid Build Coastguard Worker// CHECK: orreq r7, r1 @ encoding: [0x0f,0x43] 802*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 803*9880d681SAndroid Build Coastguard Worker// CHECK: orreq.w r8, r1, r8 @ encoding: [0x41,0xea,0x08,0x08] 804*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 805*9880d681SAndroid Build Coastguard Worker// CHECK: orreq.w r8, r8, r1 @ encoding: [0x48,0xea,0x01,0x08] 806*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 807*9880d681SAndroid Build Coastguard Worker// CHECK: orreq.w r0, r8, r0 @ encoding: [0x48,0xea,0x00,0x00] 808*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 809*9880d681SAndroid Build Coastguard Worker// CHECK: orreq.w r0, r0, r8 @ encoding: [0x40,0xea,0x08,0x00] 810*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 811*9880d681SAndroid Build Coastguard Worker// CHECK: orreq.w r2, r2, r1, lsl #1 @ encoding: [0x42,0xea,0x41,0x02] 812*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 813*9880d681SAndroid Build Coastguard Worker// CHECK: orreq.w r2, r1, r2, lsr #1 @ encoding: [0x41,0xea,0x52,0x02] 814*9880d681SAndroid Build Coastguard Worker 815*9880d681SAndroid Build Coastguard Worker// MUL - not affected by this change 816*9880d681SAndroid Build Coastguard Worker 817*9880d681SAndroid Build Coastguard Worker// BIC 818*9880d681SAndroid Build Coastguard Worker BICS r3, r2, r1 // Must be wide - 3 distinct registers 819*9880d681SAndroid Build Coastguard Worker BICS r2, r2, r1 // Should choose narrow 820*9880d681SAndroid Build Coastguard Worker BICS r1, r2, r1 // Should choose wide - not commutative 821*9880d681SAndroid Build Coastguard Worker BICS.W r2, r2, r1 // Explicitly wide 822*9880d681SAndroid Build Coastguard Worker BICS.W r0, r1, r0 823*9880d681SAndroid Build Coastguard Worker BIC r0, r1, r0 // Must use wide encoding as not flag-setting 824*9880d681SAndroid Build Coastguard Worker BICS r7, r7, r1 // Should use narrow 825*9880d681SAndroid Build Coastguard Worker BICS r8, r1, r8 // high registers so must use wide encoding 826*9880d681SAndroid Build Coastguard Worker BICS r8, r8, r1 827*9880d681SAndroid Build Coastguard Worker BICS r7, r8, r7 828*9880d681SAndroid Build Coastguard Worker BICS r5, r5, r8 829*9880d681SAndroid Build Coastguard Worker BICS r3, r3, r1, lsl #1 // Must use wide - shifted register 830*9880d681SAndroid Build Coastguard Worker BICS r4, r1, r4, lsr #1 831*9880d681SAndroid Build Coastguard Worker// CHECK: bics.w r3, r2, r1 @ encoding: [0x32,0xea,0x01,0x03] 832*9880d681SAndroid Build Coastguard Worker// CHECK: bics r2, r1 @ encoding: [0x8a,0x43] 833*9880d681SAndroid Build Coastguard Worker// CHECK: bics.w r1, r2, r1 @ encoding: [0x32,0xea,0x01,0x01] 834*9880d681SAndroid Build Coastguard Worker// CHECK: bics.w r2, r2, r1 @ encoding: [0x32,0xea,0x01,0x02] 835*9880d681SAndroid Build Coastguard Worker// CHECK: bics.w r0, r1, r0 @ encoding: [0x31,0xea,0x00,0x00] 836*9880d681SAndroid Build Coastguard Worker// CHECK: bic.w r0, r1, r0 @ encoding: [0x21,0xea,0x00,0x00] 837*9880d681SAndroid Build Coastguard Worker// CHECK: bics r7, r1 @ encoding: [0x8f,0x43] 838*9880d681SAndroid Build Coastguard Worker// CHECK: bics.w r8, r1, r8 @ encoding: [0x31,0xea,0x08,0x08] 839*9880d681SAndroid Build Coastguard Worker// CHECK: bics.w r8, r8, r1 @ encoding: [0x38,0xea,0x01,0x08] 840*9880d681SAndroid Build Coastguard Worker// CHECK: bics.w r7, r8, r7 @ encoding: [0x38,0xea,0x07,0x07] 841*9880d681SAndroid Build Coastguard Worker// CHECK: bics.w r5, r5, r8 @ encoding: [0x35,0xea,0x08,0x05] 842*9880d681SAndroid Build Coastguard Worker// CHECK: bics.w r3, r3, r1, lsl #1 @ encoding: [0x33,0xea,0x41,0x03] 843*9880d681SAndroid Build Coastguard Worker// CHECK: bics.w r4, r1, r4, lsr #1 @ encoding: [0x31,0xea,0x54,0x04] 844*9880d681SAndroid Build Coastguard Worker 845*9880d681SAndroid Build Coastguard Worker IT EQ 846*9880d681SAndroid Build Coastguard Worker BICEQ r0, r2, r1 // Must be wide - 3 distinct registers 847*9880d681SAndroid Build Coastguard Worker IT EQ 848*9880d681SAndroid Build Coastguard Worker BICEQ r5, r5, r1 // Should choose narrow 849*9880d681SAndroid Build Coastguard Worker IT EQ 850*9880d681SAndroid Build Coastguard Worker BICEQ r1, r5, r1 // Should choose wide - not commutative 851*9880d681SAndroid Build Coastguard Worker IT EQ 852*9880d681SAndroid Build Coastguard Worker BICEQ.W r4, r4, r1 // Explicitly wide 853*9880d681SAndroid Build Coastguard Worker IT EQ 854*9880d681SAndroid Build Coastguard Worker BICEQ.W r2, r1, r2 855*9880d681SAndroid Build Coastguard Worker IT EQ 856*9880d681SAndroid Build Coastguard Worker BICSEQ r5, r1, r5 // Must use wide encoding as flag-setting 857*9880d681SAndroid Build Coastguard Worker IT EQ 858*9880d681SAndroid Build Coastguard Worker BICEQ r7, r7, r1 // Should use narrow 859*9880d681SAndroid Build Coastguard Worker IT EQ 860*9880d681SAndroid Build Coastguard Worker BICEQ r8, r1, r8 // high registers so must use wide encoding 861*9880d681SAndroid Build Coastguard Worker IT EQ 862*9880d681SAndroid Build Coastguard Worker BICEQ r8, r8, r1 863*9880d681SAndroid Build Coastguard Worker IT EQ 864*9880d681SAndroid Build Coastguard Worker BICEQ r0, r8, r0 865*9880d681SAndroid Build Coastguard Worker IT EQ 866*9880d681SAndroid Build Coastguard Worker BICEQ r2, r2, r8 867*9880d681SAndroid Build Coastguard Worker IT EQ 868*9880d681SAndroid Build Coastguard Worker BICEQ r4, r4, r1, lsl #1 // Must use wide - shifted register 869*9880d681SAndroid Build Coastguard Worker IT EQ 870*9880d681SAndroid Build Coastguard Worker BICEQ r5, r1, r5, lsr #1 871*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 872*9880d681SAndroid Build Coastguard Worker// CHECK: biceq.w r0, r2, r1 @ encoding: [0x22,0xea,0x01,0x00] 873*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 874*9880d681SAndroid Build Coastguard Worker// CHECK: biceq r5, r1 @ encoding: [0x8d,0x43] 875*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 876*9880d681SAndroid Build Coastguard Worker// CHECK: biceq.w r1, r5, r1 @ encoding: [0x25,0xea,0x01,0x01] 877*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 878*9880d681SAndroid Build Coastguard Worker// CHECK: biceq.w r4, r4, r1 @ encoding: [0x24,0xea,0x01,0x04] 879*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 880*9880d681SAndroid Build Coastguard Worker// CHECK: biceq.w r2, r1, r2 @ encoding: [0x21,0xea,0x02,0x02] 881*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 882*9880d681SAndroid Build Coastguard Worker// CHECK: bicseq.w r5, r1, r5 @ encoding: [0x31,0xea,0x05,0x05] 883*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 884*9880d681SAndroid Build Coastguard Worker// CHECK: biceq r7, r1 @ encoding: [0x8f,0x43] 885*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 886*9880d681SAndroid Build Coastguard Worker// CHECK: biceq.w r8, r1, r8 @ encoding: [0x21,0xea,0x08,0x08] 887*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 888*9880d681SAndroid Build Coastguard Worker// CHECK: biceq.w r8, r8, r1 @ encoding: [0x28,0xea,0x01,0x08] 889*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 890*9880d681SAndroid Build Coastguard Worker// CHECK: biceq.w r0, r8, r0 @ encoding: [0x28,0xea,0x00,0x00] 891*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 892*9880d681SAndroid Build Coastguard Worker// CHECK: biceq.w r2, r2, r8 @ encoding: [0x22,0xea,0x08,0x02] 893*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 894*9880d681SAndroid Build Coastguard Worker// CHECK: biceq.w r4, r4, r1, lsl #1 @ encoding: [0x24,0xea,0x41,0x04] 895*9880d681SAndroid Build Coastguard Worker// CHECK: it eq @ encoding: [0x08,0xbf] 896*9880d681SAndroid Build Coastguard Worker// CHECK: biceq.w r5, r1, r5, lsr #1 @ encoding: [0x21,0xea,0x55,0x05] 897*9880d681SAndroid Build Coastguard Worker 898*9880d681SAndroid Build Coastguard Worker// CMN - only two register version available 899