xref: /aosp_15_r20/external/llvm/test/MC/ARM/thumb2-narrow-dp.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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