xref: /aosp_15_r20/external/llvm/test/MC/Hexagon/instructions/ld.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker# RUN: llvm-mc -triple hexagon -filetype=obj -o - %s | llvm-objdump -d - | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker# Hexagon Programmer's Reference Manual 11.5 LD
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker# CHECK: 02 40 00 00
5*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 10 c5 c0 49
6*9880d681SAndroid Build Coastguard Workerr17:16 = memd(##168)
7*9880d681SAndroid Build Coastguard Worker# CHECK: d0 c0 d5 91
8*9880d681SAndroid Build Coastguard Workerr17:16 = memd(r21 + #48)
9*9880d681SAndroid Build Coastguard Worker# CHECK: b0 e0 d5 99
10*9880d681SAndroid Build Coastguard Workerr17:16 = memd(r21 ++ #40:circ(m1))
11*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e2 d5 99
12*9880d681SAndroid Build Coastguard Workerr17:16 = memd(r21 ++ I:circ(m1))
13*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00
14*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 70 d7 d5 9b
15*9880d681SAndroid Build Coastguard Workerr17:16 = memd(r21 = ##31)
16*9880d681SAndroid Build Coastguard Worker# CHECK: b0 c0 d5 9b
17*9880d681SAndroid Build Coastguard Workerr17:16 = memd(r21++#40)
18*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e0 d5 9d
19*9880d681SAndroid Build Coastguard Workerr17:16 = memd(r21++m1)
20*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e0 d5 9f
21*9880d681SAndroid Build Coastguard Workerr17:16 = memd(r21 ++ m1:brev)
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Worker# Load doubleword conditionally
24*9880d681SAndroid Build Coastguard Worker# CHECK: f0 ff d5 30
25*9880d681SAndroid Build Coastguard Workerif (p3) r17:16 = memd(r21+r31<<#3)
26*9880d681SAndroid Build Coastguard Worker# CHECK: f0 ff d5 31
27*9880d681SAndroid Build Coastguard Workerif (!p3) r17:16 = memd(r21+r31<<#3)
28*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
29*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f0 ff d5 32
30*9880d681SAndroid Build Coastguard Worker{ p3 = r5
31*9880d681SAndroid Build Coastguard Worker  if (p3.new) r17:16 = memd(r21+r31<<#3) }
32*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
33*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f0 ff d5 33
34*9880d681SAndroid Build Coastguard Worker{ p3 = r5
35*9880d681SAndroid Build Coastguard Worker  if (!p3.new) r17:16 = memd(r21+r31<<#3) }
36*9880d681SAndroid Build Coastguard Worker# CHECK: 70 d8 d5 41
37*9880d681SAndroid Build Coastguard Workerif (p3) r17:16 = memd(r21 + #24)
38*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
39*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 70 d8 d5 43
40*9880d681SAndroid Build Coastguard Worker{ p3 = r5
41*9880d681SAndroid Build Coastguard Worker  if (p3.new) r17:16 = memd(r21 + #24) }
42*9880d681SAndroid Build Coastguard Worker# CHECK: 70 d8 d5 45
43*9880d681SAndroid Build Coastguard Workerif (!p3) r17:16 = memd(r21 + #24)
44*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
45*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 70 d8 d5 47
46*9880d681SAndroid Build Coastguard Worker{ p3 = r5
47*9880d681SAndroid Build Coastguard Worker  if (!p3.new) r17:16 = memd(r21 + #24) }
48*9880d681SAndroid Build Coastguard Worker# CHECK: b0 e6 d5 9b
49*9880d681SAndroid Build Coastguard Workerif (p3) r17:16 = memd(r21++#40)
50*9880d681SAndroid Build Coastguard Worker# CHECK: b0 ee d5 9b
51*9880d681SAndroid Build Coastguard Workerif (!p3) r17:16 = memd(r21++#40)
52*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
53*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b0 f6 d5 9b
54*9880d681SAndroid Build Coastguard Worker{ p3 = r5
55*9880d681SAndroid Build Coastguard Worker  if (p3.new) r17:16 = memd(r21++#40) }
56*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
57*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b0 fe d5 9b
58*9880d681SAndroid Build Coastguard Worker{ p3 = r5
59*9880d681SAndroid Build Coastguard Worker  if (!p3.new) r17:16 = memd(r21++#40) }
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Worker# Load byte
62*9880d681SAndroid Build Coastguard Worker# CHECK: 91 ff 15 3a
63*9880d681SAndroid Build Coastguard Workerr17 = memb(r21 + r31<<#3)
64*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c2 00 49
65*9880d681SAndroid Build Coastguard Workerr17 = memb(#21)
66*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00
67*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 c2 00 49
68*9880d681SAndroid Build Coastguard Workerr17 = memb(##21)
69*9880d681SAndroid Build Coastguard Worker# CHECK: f1 c3 15 91
70*9880d681SAndroid Build Coastguard Workerr17 = memb(r21 + #31)
71*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e0 15 99
72*9880d681SAndroid Build Coastguard Workerr17 = memb(r21 ++ #5:circ(m1))
73*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e2 15 99
74*9880d681SAndroid Build Coastguard Workerr17 = memb(r21 ++ I:circ(m1))
75*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00
76*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 71 d7 15 9b
77*9880d681SAndroid Build Coastguard Workerr17 = memb(r21 = ##31)
78*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c0 15 9b
79*9880d681SAndroid Build Coastguard Workerr17 = memb(r21++#5)
80*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 15 9d
81*9880d681SAndroid Build Coastguard Workerr17 = memb(r21++m1)
82*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 15 9f
83*9880d681SAndroid Build Coastguard Workerr17 = memb(r21 ++ m1:brev)
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Worker# Load byte conditionally
86*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 15 30
87*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memb(r21+r31<<#3)
88*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 15 31
89*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memb(r21+r31<<#3)
90*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
91*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 15 32
92*9880d681SAndroid Build Coastguard Worker{ p3 = r5
93*9880d681SAndroid Build Coastguard Worker  if (p3.new) r17 = memb(r21+r31<<#3) }
94*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
95*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 15 33
96*9880d681SAndroid Build Coastguard Worker{ p3 = r5
97*9880d681SAndroid Build Coastguard Worker  if (!p3.new) r17 = memb(r21+r31<<#3) }
98*9880d681SAndroid Build Coastguard Worker# CHECK: 91 dd 15 41
99*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memb(r21 + #44)
100*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
101*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 91 dd 15 43
102*9880d681SAndroid Build Coastguard Worker{ p3 = r5
103*9880d681SAndroid Build Coastguard Worker  if (p3.new) r17 = memb(r21 + #44) }
104*9880d681SAndroid Build Coastguard Worker# CHECK: 91 dd 15 45
105*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memb(r21 + #44)
106*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
107*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 91 dd 15 47
108*9880d681SAndroid Build Coastguard Worker{ p3 = r5
109*9880d681SAndroid Build Coastguard Worker  if (!p3.new) r17 = memb(r21 + #44) }
110*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e6 15 9b
111*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memb(r21++#5)
112*9880d681SAndroid Build Coastguard Worker# CHECK: b1 ee 15 9b
113*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memb(r21++#5)
114*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
115*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 f6 15 9b
116*9880d681SAndroid Build Coastguard Worker{ p3 = r5
117*9880d681SAndroid Build Coastguard Worker  if (p3.new) r17 = memb(r21++#5) }
118*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
119*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 fe 15 9b
120*9880d681SAndroid Build Coastguard Worker{ p3 = r5
121*9880d681SAndroid Build Coastguard Worker  if (!p3.new) r17 = memb(r21++#5) }
122*9880d681SAndroid Build Coastguard Worker
123*9880d681SAndroid Build Coastguard Worker# Load byte into shifted vector
124*9880d681SAndroid Build Coastguard Worker# CHECK: f0 c3 95 90
125*9880d681SAndroid Build Coastguard Workerr17:16 = memb_fifo(r21 + #31)
126*9880d681SAndroid Build Coastguard Worker# CHECK: b0 e0 95 98
127*9880d681SAndroid Build Coastguard Workerr17:16 = memb_fifo(r21 ++ #5:circ(m1))
128*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e2 95 98
129*9880d681SAndroid Build Coastguard Workerr17:16 = memb_fifo(r21 ++ I:circ(m1))
130*9880d681SAndroid Build Coastguard Worker
131*9880d681SAndroid Build Coastguard Worker# Load half into shifted vector
132*9880d681SAndroid Build Coastguard Worker# CHECK: f0 c3 55 90
133*9880d681SAndroid Build Coastguard Workerr17:16 = memh_fifo(r21 + #62)
134*9880d681SAndroid Build Coastguard Worker# CHECK: b0 e0 55 98
135*9880d681SAndroid Build Coastguard Workerr17:16 = memh_fifo(r21 ++ #10:circ(m1))
136*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e2 55 98
137*9880d681SAndroid Build Coastguard Workerr17:16 = memh_fifo(r21 ++ I:circ(m1))
138*9880d681SAndroid Build Coastguard Worker
139*9880d681SAndroid Build Coastguard Worker# Load halfword
140*9880d681SAndroid Build Coastguard Worker# CHECK: 91 ff 55 3a
141*9880d681SAndroid Build Coastguard Workerr17 = memh(r21 + r31<<#3)
142*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c2 40 49
143*9880d681SAndroid Build Coastguard Workerr17 = memh(#42)
144*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00
145*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 51 c5 40 49
146*9880d681SAndroid Build Coastguard Workerr17 = memh(##42)
147*9880d681SAndroid Build Coastguard Worker# CHECK: f1 c3 55 91
148*9880d681SAndroid Build Coastguard Workerr17 = memh(r21 + #62)
149*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e0 55 99
150*9880d681SAndroid Build Coastguard Workerr17 = memh(r21 ++ #10:circ(m1))
151*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e2 55 99
152*9880d681SAndroid Build Coastguard Workerr17 = memh(r21 ++ I:circ(m1))
153*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00
154*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 71 d7 55 9b
155*9880d681SAndroid Build Coastguard Workerr17 = memh(r21 = ##31)
156*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c0 55 9b
157*9880d681SAndroid Build Coastguard Workerr17 = memh(r21++#10)
158*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 55 9d
159*9880d681SAndroid Build Coastguard Workerr17 = memh(r21++m1)
160*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 55 9f
161*9880d681SAndroid Build Coastguard Workerr17 = memh(r21 ++ m1:brev)
162*9880d681SAndroid Build Coastguard Worker
163*9880d681SAndroid Build Coastguard Worker# Load halfword conditionally
164*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 55 30
165*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memh(r21+r31<<#3)
166*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 55 31
167*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memh(r21+r31<<#3)
168*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
169*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 55 32
170*9880d681SAndroid Build Coastguard Worker{ p3 = r5
171*9880d681SAndroid Build Coastguard Worker  if (p3.new) r17 = memh(r21+r31<<#3) }
172*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
173*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 55 33
174*9880d681SAndroid Build Coastguard Worker{ p3 = r5
175*9880d681SAndroid Build Coastguard Worker  if (!p3.new) r17 = memh(r21+r31<<#3) }
176*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e6 55 9b
177*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memh(r21++#10)
178*9880d681SAndroid Build Coastguard Worker# CHECK: b1 ee 55 9b
179*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memh(r21++#10)
180*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
181*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 f6 55 9b
182*9880d681SAndroid Build Coastguard Worker{ p3 = r5
183*9880d681SAndroid Build Coastguard Worker  if (p3.new) r17 = memh(r21++#10) }
184*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
185*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 fe 55 9b
186*9880d681SAndroid Build Coastguard Worker{ p3 = r5
187*9880d681SAndroid Build Coastguard Worker  if (!p3.new) r17 = memh(r21++#10) }
188*9880d681SAndroid Build Coastguard Worker# CHECK: f1 db 55 41
189*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memh(r21 + #62)
190*9880d681SAndroid Build Coastguard Worker# CHECK: f1 db 55 45
191*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memh(r21 + #62)
192*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
193*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 db 55 43
194*9880d681SAndroid Build Coastguard Worker{ p3 = r5
195*9880d681SAndroid Build Coastguard Worker  if (p3.new) r17 = memh(r21 + #62) }
196*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
197*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 db 55 47
198*9880d681SAndroid Build Coastguard Worker{ p3 = r5
199*9880d681SAndroid Build Coastguard Worker  if (!p3.new) r17 = memh(r21 + #62) }
200*9880d681SAndroid Build Coastguard Worker
201*9880d681SAndroid Build Coastguard Worker# Load unsigned byte
202*9880d681SAndroid Build Coastguard Worker# CHECK: 91 ff 35 3a
203*9880d681SAndroid Build Coastguard Workerr17 = memub(r21 + r31<<#3)
204*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c2 20 49
205*9880d681SAndroid Build Coastguard Workerr17 = memub(#21)
206*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00
207*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 c2 20 49
208*9880d681SAndroid Build Coastguard Workerr17 = memub(##21)
209*9880d681SAndroid Build Coastguard Worker# CHECK: f1 c3 35 91
210*9880d681SAndroid Build Coastguard Workerr17 = memub(r21 + #31)
211*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e0 35 99
212*9880d681SAndroid Build Coastguard Workerr17 = memub(r21 ++ #5:circ(m1))
213*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e2 35 99
214*9880d681SAndroid Build Coastguard Workerr17 = memub(r21 ++ I:circ(m1))
215*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00
216*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 71 d7 35 9b
217*9880d681SAndroid Build Coastguard Workerr17 = memub(r21 = ##31)
218*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c0 35 9b
219*9880d681SAndroid Build Coastguard Workerr17 = memub(r21++#5)
220*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 35 9d
221*9880d681SAndroid Build Coastguard Workerr17 = memub(r21++m1)
222*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 35 9f
223*9880d681SAndroid Build Coastguard Workerr17 = memub(r21 ++ m1:brev)
224*9880d681SAndroid Build Coastguard Worker
225*9880d681SAndroid Build Coastguard Worker# Load unsigned byte conditionally
226*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 35 30
227*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memub(r21+r31<<#3)
228*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 35 31
229*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memub(r21+r31<<#3)
230*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
231*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 35 32
232*9880d681SAndroid Build Coastguard Worker{ p3 = r5
233*9880d681SAndroid Build Coastguard Worker  if (p3.new) r17 = memub(r21+r31<<#3) }
234*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
235*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 35 33
236*9880d681SAndroid Build Coastguard Worker{ p3 = r5
237*9880d681SAndroid Build Coastguard Worker  if (!p3.new) r17 = memub(r21+r31<<#3) }
238*9880d681SAndroid Build Coastguard Worker# CHECK: f1 db 35 41
239*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memub(r21 + #31)
240*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
241*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 db 35 43
242*9880d681SAndroid Build Coastguard Worker{ p3 = r5
243*9880d681SAndroid Build Coastguard Worker  if (p3.new) r17 = memub(r21 + #31) }
244*9880d681SAndroid Build Coastguard Worker# CHECK: f1 db 35 45
245*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memub(r21 + #31)
246*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
247*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 db 35 47
248*9880d681SAndroid Build Coastguard Worker{ p3 = r5
249*9880d681SAndroid Build Coastguard Worker  if (!p3.new) r17 = memub(r21 + #31) }
250*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e6 35 9b
251*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memub(r21++#5)
252*9880d681SAndroid Build Coastguard Worker# CHECK: b1 ee 35 9b
253*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memub(r21++#5)
254*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
255*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 f6 35 9b
256*9880d681SAndroid Build Coastguard Worker{ p3 = r5
257*9880d681SAndroid Build Coastguard Worker  if (p3.new) r17 = memub(r21++#5) }
258*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
259*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 fe 35 9b
260*9880d681SAndroid Build Coastguard Worker{ p3 = r5
261*9880d681SAndroid Build Coastguard Worker  if (!p3.new) r17 = memub(r21++#5) }
262*9880d681SAndroid Build Coastguard Worker
263*9880d681SAndroid Build Coastguard Worker# Load unsigned halfword
264*9880d681SAndroid Build Coastguard Worker# CHECK: 91 ff 75 3a
265*9880d681SAndroid Build Coastguard Workerr17 = memuh(r21 + r31<<#3)
266*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c2 60 49
267*9880d681SAndroid Build Coastguard Workerr17 = memuh(#42)
268*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00
269*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 51 c5 60 49
270*9880d681SAndroid Build Coastguard Workerr17 = memuh(##42)
271*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c2 75 91
272*9880d681SAndroid Build Coastguard Workerr17 = memuh(r21 + #42)
273*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e0 75 99
274*9880d681SAndroid Build Coastguard Workerr17 = memuh(r21 ++ #10:circ(m1))
275*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e2 75 99
276*9880d681SAndroid Build Coastguard Workerr17 = memuh(r21 ++ I:circ(m1))
277*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00
278*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 71 d7 75 9b
279*9880d681SAndroid Build Coastguard Workerr17 = memuh(r21 = ##31)
280*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c0 75 9b
281*9880d681SAndroid Build Coastguard Workerr17 = memuh(r21++#10)
282*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 75 9d
283*9880d681SAndroid Build Coastguard Workerr17 = memuh(r21++m1)
284*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 75 9f
285*9880d681SAndroid Build Coastguard Workerr17 = memuh(r21 ++ m1:brev)
286*9880d681SAndroid Build Coastguard Worker
287*9880d681SAndroid Build Coastguard Worker# Load unsigned halfword conditionally
288*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 75 30
289*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memuh(r21+r31<<#3)
290*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 75 31
291*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memuh(r21+r31<<#3)
292*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
293*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 75 32
294*9880d681SAndroid Build Coastguard Worker{ p3 = r5
295*9880d681SAndroid Build Coastguard Worker  if (p3.new) r17 = memuh(r21+r31<<#3) }
296*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
297*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 75 33
298*9880d681SAndroid Build Coastguard Worker{ p3 = r5
299*9880d681SAndroid Build Coastguard Worker  if (!p3.new) r17 = memuh(r21+r31<<#3) }
300*9880d681SAndroid Build Coastguard Worker# CHECK: b1 da 75 41
301*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memuh(r21 + #42)
302*9880d681SAndroid Build Coastguard Worker# CHECK: b1 da 75 45
303*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memuh(r21 + #42)
304*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
305*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 da 75 43
306*9880d681SAndroid Build Coastguard Worker{ p3 = r5
307*9880d681SAndroid Build Coastguard Worker  if (p3.new) r17 = memuh(r21 + #42) }
308*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
309*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 da 75 47
310*9880d681SAndroid Build Coastguard Worker{ p3 = r5
311*9880d681SAndroid Build Coastguard Worker  if (!p3.new) r17 = memuh(r21 + #42) }
312*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e6 75 9b
313*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memuh(r21++#10)
314*9880d681SAndroid Build Coastguard Worker# CHECK: b1 ee 75 9b
315*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memuh(r21++#10)
316*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
317*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 f6 75 9b
318*9880d681SAndroid Build Coastguard Worker{ p3 = r5
319*9880d681SAndroid Build Coastguard Worker  if (p3.new) r17 = memuh(r21++#10) }
320*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
321*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 fe 75 9b
322*9880d681SAndroid Build Coastguard Worker{ p3 = r5
323*9880d681SAndroid Build Coastguard Worker  if (!p3.new) r17 = memuh(r21++#10) }
324*9880d681SAndroid Build Coastguard Worker
325*9880d681SAndroid Build Coastguard Worker# Load word
326*9880d681SAndroid Build Coastguard Worker# CHECK: 91 ff 95 3a
327*9880d681SAndroid Build Coastguard Workerr17 = memw(r21 + r31<<#3)
328*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c2 80 49
329*9880d681SAndroid Build Coastguard Workerr17 = memw(#84)
330*9880d681SAndroid Build Coastguard Worker# CHECK: 01 40 00 00
331*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 91 c2 80 49
332*9880d681SAndroid Build Coastguard Workerr17 = memw(##84)
333*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c2 95 91
334*9880d681SAndroid Build Coastguard Workerr17 = memw(r21 + #84)
335*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e0 95 99
336*9880d681SAndroid Build Coastguard Workerr17 = memw(r21 ++ #20:circ(m1))
337*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e2 95 99
338*9880d681SAndroid Build Coastguard Workerr17 = memw(r21 ++ I:circ(m1))
339*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00
340*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 71 d7 95 9b
341*9880d681SAndroid Build Coastguard Workerr17 = memw(r21 = ##31)
342*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c0 95 9b
343*9880d681SAndroid Build Coastguard Workerr17 = memw(r21++#20)
344*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 95 9d
345*9880d681SAndroid Build Coastguard Workerr17 = memw(r21++m1)
346*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 95 9f
347*9880d681SAndroid Build Coastguard Workerr17 = memw(r21 ++ m1:brev)
348*9880d681SAndroid Build Coastguard Worker
349*9880d681SAndroid Build Coastguard Worker# Load word conditionally
350*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 95 30
351*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memw(r21+r31<<#3)
352*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 95 31
353*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memw(r21+r31<<#3)
354*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
355*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 95 32
356*9880d681SAndroid Build Coastguard Worker{ p3 = r5
357*9880d681SAndroid Build Coastguard Worker  if (p3.new) r17 = memw(r21+r31<<#3) }
358*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
359*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 95 33
360*9880d681SAndroid Build Coastguard Worker{ p3 = r5
361*9880d681SAndroid Build Coastguard Worker  if (!p3.new) r17 = memw(r21+r31<<#3) }
362*9880d681SAndroid Build Coastguard Worker# CHECK: b1 da 95 41
363*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memw(r21 + #84)
364*9880d681SAndroid Build Coastguard Worker# CHECK: b1 da 95 45
365*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memw(r21 + #84)
366*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
367*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 da 95 43
368*9880d681SAndroid Build Coastguard Worker{ p3 = r5
369*9880d681SAndroid Build Coastguard Worker  if (p3.new) r17 = memw(r21 + #84) }
370*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
371*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 da 95 47
372*9880d681SAndroid Build Coastguard Worker{ p3 = r5
373*9880d681SAndroid Build Coastguard Worker  if (!p3.new) r17 = memw(r21 + #84) }
374*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e6 95 9b
375*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memw(r21++#20)
376*9880d681SAndroid Build Coastguard Worker# CHECK: b1 ee 95 9b
377*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memw(r21++#20)
378*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
379*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 f6 95 9b
380*9880d681SAndroid Build Coastguard Worker{ p3 = r5
381*9880d681SAndroid Build Coastguard Worker  if (p3.new) r17 = memw(r21++#20) }
382*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
383*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 fe 95 9b
384*9880d681SAndroid Build Coastguard Worker{ p3 = r5
385*9880d681SAndroid Build Coastguard Worker  if (!p3.new) r17 = memw(r21++#20) }
386*9880d681SAndroid Build Coastguard Worker
387*9880d681SAndroid Build Coastguard Worker# Deallocate stack frame
388*9880d681SAndroid Build Coastguard Worker# CHECK: 1e c0 1e 90
389*9880d681SAndroid Build Coastguard Workerdeallocframe
390*9880d681SAndroid Build Coastguard Worker
391*9880d681SAndroid Build Coastguard Worker# Deallocate stack frame and return
392*9880d681SAndroid Build Coastguard Worker# CHECK: 1e c0 1e 96
393*9880d681SAndroid Build Coastguard Workerdealloc_return
394*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
395*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 1e cb 1e 96
396*9880d681SAndroid Build Coastguard Worker{ p3 = r5
397*9880d681SAndroid Build Coastguard Worker  if (p3.new) dealloc_return:nt }
398*9880d681SAndroid Build Coastguard Worker# CHECK: 1e d3 1e 96
399*9880d681SAndroid Build Coastguard Workerif (p3) dealloc_return
400*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
401*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 1e db 1e 96
402*9880d681SAndroid Build Coastguard Worker{ p3 = r5
403*9880d681SAndroid Build Coastguard Worker  if (p3.new) dealloc_return:t }
404*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
405*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 1e eb 1e 96
406*9880d681SAndroid Build Coastguard Worker{ p3 = r5
407*9880d681SAndroid Build Coastguard Worker  if (!p3.new) dealloc_return:nt }
408*9880d681SAndroid Build Coastguard Worker# CHECK: 1e f3 1e 96
409*9880d681SAndroid Build Coastguard Workerif (!p3) dealloc_return
410*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85
411*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 1e fb 1e 96
412*9880d681SAndroid Build Coastguard Worker{ p3 = r5
413*9880d681SAndroid Build Coastguard Worker  if (!p3.new) dealloc_return:t }
414*9880d681SAndroid Build Coastguard Worker
415*9880d681SAndroid Build Coastguard Worker# Load and unpack bytes to halfwords
416*9880d681SAndroid Build Coastguard Worker# CHECK: f1 c3 35 90
417*9880d681SAndroid Build Coastguard Workerr17 = membh(r21 + #62)
418*9880d681SAndroid Build Coastguard Worker# CHECK: f1 c3 75 90
419*9880d681SAndroid Build Coastguard Workerr17 = memubh(r21 + #62)
420*9880d681SAndroid Build Coastguard Worker# CHECK: f0 c3 b5 90
421*9880d681SAndroid Build Coastguard Workerr17:16 = memubh(r21 + #124)
422*9880d681SAndroid Build Coastguard Worker# CHECK: f0 c3 f5 90
423*9880d681SAndroid Build Coastguard Workerr17:16 = membh(r21 + #124)
424*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e0 35 98
425*9880d681SAndroid Build Coastguard Workerr17 = membh(r21 ++ #10:circ(m1))
426*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e2 35 98
427*9880d681SAndroid Build Coastguard Workerr17 = membh(r21 ++ I:circ(m1))
428*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e0 75 98
429*9880d681SAndroid Build Coastguard Workerr17 = memubh(r21 ++ #10:circ(m1))
430*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e2 75 98
431*9880d681SAndroid Build Coastguard Workerr17 = memubh(r21 ++ I:circ(m1))
432*9880d681SAndroid Build Coastguard Worker# CHECK: b0 e0 f5 98
433*9880d681SAndroid Build Coastguard Workerr17:16 = membh(r21 ++ #20:circ(m1))
434*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e2 f5 98
435*9880d681SAndroid Build Coastguard Workerr17:16 = membh(r21 ++ I:circ(m1))
436*9880d681SAndroid Build Coastguard Worker# CHECK: b0 e0 b5 98
437*9880d681SAndroid Build Coastguard Workerr17:16 = memubh(r21 ++ #20:circ(m1))
438*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e2 b5 98
439*9880d681SAndroid Build Coastguard Workerr17:16 = memubh(r21 ++ I:circ(m1))
440*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00
441*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 71 d7 35 9a
442*9880d681SAndroid Build Coastguard Workerr17 = membh(r21 = ##31)
443*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c0 35 9a
444*9880d681SAndroid Build Coastguard Workerr17 = membh(r21++#10)
445*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00
446*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 71 d7 75 9a
447*9880d681SAndroid Build Coastguard Workerr17 = memubh(r21 = ##31)
448*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c0 75 9a
449*9880d681SAndroid Build Coastguard Workerr17 = memubh(r21++#10)
450*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00
451*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 70 d7 b5 9a
452*9880d681SAndroid Build Coastguard Workerr17:16 = memubh(r21 = ##31)
453*9880d681SAndroid Build Coastguard Worker# CHECK: b0 c0 b5 9a
454*9880d681SAndroid Build Coastguard Workerr17:16 = memubh(r21++#20)
455*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00
456*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 70 d7 f5 9a
457*9880d681SAndroid Build Coastguard Workerr17:16 = membh(r21 = ##31)
458*9880d681SAndroid Build Coastguard Worker# CHECK: b0 c0 f5 9a
459*9880d681SAndroid Build Coastguard Workerr17:16 = membh(r21++#20)
460*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00
461*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 f7 35 9c
462*9880d681SAndroid Build Coastguard Workerr17 = membh(r21<<#3 + ##31)
463*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 35 9c
464*9880d681SAndroid Build Coastguard Workerr17 = membh(r21++m1)
465*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00
466*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 f7 75 9c
467*9880d681SAndroid Build Coastguard Workerr17 = memubh(r21<<#3 + ##31)
468*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 75 9c
469*9880d681SAndroid Build Coastguard Workerr17 = memubh(r21++m1)
470*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00
471*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f0 f7 f5 9c
472*9880d681SAndroid Build Coastguard Workerr17:16 = membh(r21<<#3 + ##31)
473*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e0 f5 9c
474*9880d681SAndroid Build Coastguard Workerr17:16 = membh(r21++m1)
475*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00
476*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f0 f7 b5 9c
477*9880d681SAndroid Build Coastguard Workerr17:16 = memubh(r21<<#3 + ##31)
478*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 35 9c
479*9880d681SAndroid Build Coastguard Workerr17 = membh(r21++m1)
480*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 75 9c
481*9880d681SAndroid Build Coastguard Workerr17 = memubh(r21++m1)
482*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e0 f5 9c
483*9880d681SAndroid Build Coastguard Workerr17:16 = membh(r21++m1)
484*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e0 b5 9c
485*9880d681SAndroid Build Coastguard Workerr17:16 = memubh(r21++m1)
486*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 35 9e
487*9880d681SAndroid Build Coastguard Workerr17 = membh(r21 ++ m1:brev)
488*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 75 9e
489*9880d681SAndroid Build Coastguard Workerr17 = memubh(r21 ++ m1:brev)
490*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e0 b5 9e
491*9880d681SAndroid Build Coastguard Workerr17:16 = memubh(r21 ++ m1:brev)
492*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e0 f5 9e
493*9880d681SAndroid Build Coastguard Workerr17:16 = membh(r21 ++ m1:brev)
494