xref: /aosp_15_r20/external/llvm/test/MC/AArch64/arm64-memory.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llvm-mc -triple arm64-apple-darwin -show-encoding < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerfoo:
4*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
5*9880d681SAndroid Build Coastguard Worker; Indexed loads
6*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Worker  ldr    w5, [x4, #20]
9*9880d681SAndroid Build Coastguard Worker  ldr    x4, [x3]
10*9880d681SAndroid Build Coastguard Worker  ldr    x2, [sp, #32]
11*9880d681SAndroid Build Coastguard Worker  ldr    b5, [sp, #1]
12*9880d681SAndroid Build Coastguard Worker  ldr    h6, [sp, #2]
13*9880d681SAndroid Build Coastguard Worker  ldr    s7, [sp, #4]
14*9880d681SAndroid Build Coastguard Worker  ldr    d8, [sp, #8]
15*9880d681SAndroid Build Coastguard Worker  ldr    q9, [sp, #16]
16*9880d681SAndroid Build Coastguard Worker  ldrb   w4, [x3]
17*9880d681SAndroid Build Coastguard Worker  ldrb   w5, [x4, #20]
18*9880d681SAndroid Build Coastguard Worker  ldrb	 w2, [x3, _foo@pageoff]
19*9880d681SAndroid Build Coastguard Worker  ldrb   w3, [x2, "+[Test method].var"@PAGEOFF]
20*9880d681SAndroid Build Coastguard Worker  ldrsb  w9, [x3]
21*9880d681SAndroid Build Coastguard Worker  ldrsb  x2, [sp, #128]
22*9880d681SAndroid Build Coastguard Worker  ldrh   w2, [sp, #32]
23*9880d681SAndroid Build Coastguard Worker  ldrsh  w3, [sp, #32]
24*9880d681SAndroid Build Coastguard Worker  ldrsh  x5, [x9, #24]
25*9880d681SAndroid Build Coastguard Worker  ldrsw  x9, [sp, #512]
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Worker  prfm   #5, [sp, #32]
28*9880d681SAndroid Build Coastguard Worker  prfm   #31, [sp, #32]
29*9880d681SAndroid Build Coastguard Worker  prfm   pldl1keep, [x2]
30*9880d681SAndroid Build Coastguard Worker  prfm   pldl1strm, [x2]
31*9880d681SAndroid Build Coastguard Worker  prfm   pldl2keep, [x2]
32*9880d681SAndroid Build Coastguard Worker  prfm   pldl2strm, [x2]
33*9880d681SAndroid Build Coastguard Worker  prfm   pldl3keep, [x2]
34*9880d681SAndroid Build Coastguard Worker  prfm   pldl3strm, [x2]
35*9880d681SAndroid Build Coastguard Worker  prfm   pstl1keep, [x2]
36*9880d681SAndroid Build Coastguard Worker  prfm   pstl1strm, [x2]
37*9880d681SAndroid Build Coastguard Worker  prfm   pstl2keep, [x2]
38*9880d681SAndroid Build Coastguard Worker  prfm   pstl2strm, [x2]
39*9880d681SAndroid Build Coastguard Worker  prfm   pstl3keep, [x2]
40*9880d681SAndroid Build Coastguard Worker  prfm   pstl3strm, [x2]
41*9880d681SAndroid Build Coastguard Worker  prfm  pstl3strm, [x4, x5, lsl #3]
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Worker; CHECK: ldr    w5, [x4, #20]           ; encoding: [0x85,0x14,0x40,0xb9]
44*9880d681SAndroid Build Coastguard Worker; CHECK: ldr    x4, [x3]                ; encoding: [0x64,0x00,0x40,0xf9]
45*9880d681SAndroid Build Coastguard Worker; CHECK: ldr    x2, [sp, #32]           ; encoding: [0xe2,0x13,0x40,0xf9]
46*9880d681SAndroid Build Coastguard Worker; CHECK: ldr    b5, [sp, #1]            ; encoding: [0xe5,0x07,0x40,0x3d]
47*9880d681SAndroid Build Coastguard Worker; CHECK: ldr    h6, [sp, #2]            ; encoding: [0xe6,0x07,0x40,0x7d]
48*9880d681SAndroid Build Coastguard Worker; CHECK: ldr    s7, [sp, #4]            ; encoding: [0xe7,0x07,0x40,0xbd]
49*9880d681SAndroid Build Coastguard Worker; CHECK: ldr    d8, [sp, #8]            ; encoding: [0xe8,0x07,0x40,0xfd]
50*9880d681SAndroid Build Coastguard Worker; CHECK: ldr    q9, [sp, #16]           ; encoding: [0xe9,0x07,0xc0,0x3d]
51*9880d681SAndroid Build Coastguard Worker; CHECK: ldrb   w4, [x3]                ; encoding: [0x64,0x00,0x40,0x39]
52*9880d681SAndroid Build Coastguard Worker; CHECK: ldrb   w5, [x4, #20]           ; encoding: [0x85,0x50,0x40,0x39]
53*9880d681SAndroid Build Coastguard Worker; CHECK: ldrb	w2, [x3, _foo@PAGEOFF]  ; encoding: [0x62,0bAAAAAA00,0b01AAAAAA,0x39]
54*9880d681SAndroid Build Coastguard Worker; CHECK: ldrb	w3, [x2, "+[Test method].var"@PAGEOFF] ; encoding: [0x43,0bAAAAAA00,0b01AAAAAA,0x39]
55*9880d681SAndroid Build Coastguard Worker; CHECK: ldrsb  w9, [x3]                ; encoding: [0x69,0x00,0xc0,0x39]
56*9880d681SAndroid Build Coastguard Worker; CHECK: ldrsb  x2, [sp, #128]          ; encoding: [0xe2,0x03,0x82,0x39]
57*9880d681SAndroid Build Coastguard Worker; CHECK: ldrh   w2, [sp, #32]           ; encoding: [0xe2,0x43,0x40,0x79]
58*9880d681SAndroid Build Coastguard Worker; CHECK: ldrsh  w3, [sp, #32]           ; encoding: [0xe3,0x43,0xc0,0x79]
59*9880d681SAndroid Build Coastguard Worker; CHECK: ldrsh  x5, [x9, #24]           ; encoding: [0x25,0x31,0x80,0x79]
60*9880d681SAndroid Build Coastguard Worker; CHECK: ldrsw  x9, [sp, #512]          ; encoding: [0xe9,0x03,0x82,0xb9]
61*9880d681SAndroid Build Coastguard Worker; CHECK: prfm   pldl3strm, [sp, #32]    ; encoding: [0xe5,0x13,0x80,0xf9]
62*9880d681SAndroid Build Coastguard Worker; CHECK: prfm	#31, [sp, #32]          ; encoding: [0xff,0x13,0x80,0xf9]
63*9880d681SAndroid Build Coastguard Worker; CHECK: prfm   pldl1keep, [x2]         ; encoding: [0x40,0x00,0x80,0xf9]
64*9880d681SAndroid Build Coastguard Worker; CHECK: prfm   pldl1strm, [x2]         ; encoding: [0x41,0x00,0x80,0xf9]
65*9880d681SAndroid Build Coastguard Worker; CHECK: prfm   pldl2keep, [x2]         ; encoding: [0x42,0x00,0x80,0xf9]
66*9880d681SAndroid Build Coastguard Worker; CHECK: prfm   pldl2strm, [x2]         ; encoding: [0x43,0x00,0x80,0xf9]
67*9880d681SAndroid Build Coastguard Worker; CHECK: prfm   pldl3keep, [x2]         ; encoding: [0x44,0x00,0x80,0xf9]
68*9880d681SAndroid Build Coastguard Worker; CHECK: prfm   pldl3strm, [x2]         ; encoding: [0x45,0x00,0x80,0xf9]
69*9880d681SAndroid Build Coastguard Worker; CHECK: prfm   pstl1keep, [x2]         ; encoding: [0x50,0x00,0x80,0xf9]
70*9880d681SAndroid Build Coastguard Worker; CHECK: prfm   pstl1strm, [x2]         ; encoding: [0x51,0x00,0x80,0xf9]
71*9880d681SAndroid Build Coastguard Worker; CHECK: prfm   pstl2keep, [x2]         ; encoding: [0x52,0x00,0x80,0xf9]
72*9880d681SAndroid Build Coastguard Worker; CHECK: prfm   pstl2strm, [x2]         ; encoding: [0x53,0x00,0x80,0xf9]
73*9880d681SAndroid Build Coastguard Worker; CHECK: prfm   pstl3keep, [x2]         ; encoding: [0x54,0x00,0x80,0xf9]
74*9880d681SAndroid Build Coastguard Worker; CHECK: prfm   pstl3strm, [x2]         ; encoding: [0x55,0x00,0x80,0xf9]
75*9880d681SAndroid Build Coastguard Worker; CHECK: prfm	pstl3strm, [x4, x5, lsl #3] ; encoding: [0x95,0x78,0xa5,0xf8]
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
78*9880d681SAndroid Build Coastguard Worker; Indexed stores
79*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
80*9880d681SAndroid Build Coastguard Worker
81*9880d681SAndroid Build Coastguard Worker  str   x4, [x3]
82*9880d681SAndroid Build Coastguard Worker  str   x2, [sp, #32]
83*9880d681SAndroid Build Coastguard Worker  str   w5, [x4, #20]
84*9880d681SAndroid Build Coastguard Worker  str   b5, [sp, #1]
85*9880d681SAndroid Build Coastguard Worker  str   h6, [sp, #2]
86*9880d681SAndroid Build Coastguard Worker  str   s7, [sp, #4]
87*9880d681SAndroid Build Coastguard Worker  str   d8, [sp, #8]
88*9880d681SAndroid Build Coastguard Worker  str   q9, [sp, #16]
89*9880d681SAndroid Build Coastguard Worker  strb  w4, [x3]
90*9880d681SAndroid Build Coastguard Worker  strb  w5, [x4, #20]
91*9880d681SAndroid Build Coastguard Worker  strh  w2, [sp, #32]
92*9880d681SAndroid Build Coastguard Worker
93*9880d681SAndroid Build Coastguard Worker; CHECK: str   x4, [x3]                 ; encoding: [0x64,0x00,0x00,0xf9]
94*9880d681SAndroid Build Coastguard Worker; CHECK: str   x2, [sp, #32]            ; encoding: [0xe2,0x13,0x00,0xf9]
95*9880d681SAndroid Build Coastguard Worker; CHECK: str   w5, [x4, #20]            ; encoding: [0x85,0x14,0x00,0xb9]
96*9880d681SAndroid Build Coastguard Worker; CHECK: str   b5, [sp, #1]             ; encoding: [0xe5,0x07,0x00,0x3d]
97*9880d681SAndroid Build Coastguard Worker; CHECK: str   h6, [sp, #2]             ; encoding: [0xe6,0x07,0x00,0x7d]
98*9880d681SAndroid Build Coastguard Worker; CHECK: str   s7, [sp, #4]             ; encoding: [0xe7,0x07,0x00,0xbd]
99*9880d681SAndroid Build Coastguard Worker; CHECK: str   d8, [sp, #8]             ; encoding: [0xe8,0x07,0x00,0xfd]
100*9880d681SAndroid Build Coastguard Worker; CHECK: str   q9, [sp, #16]            ; encoding: [0xe9,0x07,0x80,0x3d]
101*9880d681SAndroid Build Coastguard Worker; CHECK: strb  w4, [x3]                 ; encoding: [0x64,0x00,0x00,0x39]
102*9880d681SAndroid Build Coastguard Worker; CHECK: strb  w5, [x4, #20]            ; encoding: [0x85,0x50,0x00,0x39]
103*9880d681SAndroid Build Coastguard Worker; CHECK: strh  w2, [sp, #32]            ; encoding: [0xe2,0x43,0x00,0x79]
104*9880d681SAndroid Build Coastguard Worker
105*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
106*9880d681SAndroid Build Coastguard Worker; Unscaled immediate loads and stores
107*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
108*9880d681SAndroid Build Coastguard Worker
109*9880d681SAndroid Build Coastguard Worker  ldur    w2, [x3]
110*9880d681SAndroid Build Coastguard Worker  ldur    w2, [sp, #24]
111*9880d681SAndroid Build Coastguard Worker  ldur    x2, [x3]
112*9880d681SAndroid Build Coastguard Worker  ldur    x2, [sp, #24]
113*9880d681SAndroid Build Coastguard Worker  ldur    b5, [sp, #1]
114*9880d681SAndroid Build Coastguard Worker  ldur    h6, [sp, #2]
115*9880d681SAndroid Build Coastguard Worker  ldur    s7, [sp, #4]
116*9880d681SAndroid Build Coastguard Worker  ldur    d8, [sp, #8]
117*9880d681SAndroid Build Coastguard Worker  ldur    q9, [sp, #16]
118*9880d681SAndroid Build Coastguard Worker  ldursb  w9, [x3]
119*9880d681SAndroid Build Coastguard Worker  ldursb  x2, [sp, #128]
120*9880d681SAndroid Build Coastguard Worker  ldursh  w3, [sp, #32]
121*9880d681SAndroid Build Coastguard Worker  ldursh  x5, [x9, #24]
122*9880d681SAndroid Build Coastguard Worker  ldursw  x9, [sp, #-128]
123*9880d681SAndroid Build Coastguard Worker
124*9880d681SAndroid Build Coastguard Worker; CHECK: ldur    w2, [x3]               ; encoding: [0x62,0x00,0x40,0xb8]
125*9880d681SAndroid Build Coastguard Worker; CHECK: ldur    w2, [sp, #24]          ; encoding: [0xe2,0x83,0x41,0xb8]
126*9880d681SAndroid Build Coastguard Worker; CHECK: ldur    x2, [x3]               ; encoding: [0x62,0x00,0x40,0xf8]
127*9880d681SAndroid Build Coastguard Worker; CHECK: ldur    x2, [sp, #24]          ; encoding: [0xe2,0x83,0x41,0xf8]
128*9880d681SAndroid Build Coastguard Worker; CHECK: ldur    b5, [sp, #1]           ; encoding: [0xe5,0x13,0x40,0x3c]
129*9880d681SAndroid Build Coastguard Worker; CHECK: ldur    h6, [sp, #2]           ; encoding: [0xe6,0x23,0x40,0x7c]
130*9880d681SAndroid Build Coastguard Worker; CHECK: ldur    s7, [sp, #4]           ; encoding: [0xe7,0x43,0x40,0xbc]
131*9880d681SAndroid Build Coastguard Worker; CHECK: ldur    d8, [sp, #8]           ; encoding: [0xe8,0x83,0x40,0xfc]
132*9880d681SAndroid Build Coastguard Worker; CHECK: ldur    q9, [sp, #16]          ; encoding: [0xe9,0x03,0xc1,0x3c]
133*9880d681SAndroid Build Coastguard Worker; CHECK: ldursb  w9, [x3]               ; encoding: [0x69,0x00,0xc0,0x38]
134*9880d681SAndroid Build Coastguard Worker; CHECK: ldursb  x2, [sp, #128]         ; encoding: [0xe2,0x03,0x88,0x38]
135*9880d681SAndroid Build Coastguard Worker; CHECK: ldursh  w3, [sp, #32]          ; encoding: [0xe3,0x03,0xc2,0x78]
136*9880d681SAndroid Build Coastguard Worker; CHECK: ldursh  x5, [x9, #24]          ; encoding: [0x25,0x81,0x81,0x78]
137*9880d681SAndroid Build Coastguard Worker; CHECK: ldursw  x9, [sp, #-128]        ; encoding: [0xe9,0x03,0x98,0xb8]
138*9880d681SAndroid Build Coastguard Worker
139*9880d681SAndroid Build Coastguard Worker  stur    w4, [x3]
140*9880d681SAndroid Build Coastguard Worker  stur    w2, [sp, #32]
141*9880d681SAndroid Build Coastguard Worker  stur    x4, [x3]
142*9880d681SAndroid Build Coastguard Worker  stur    x2, [sp, #32]
143*9880d681SAndroid Build Coastguard Worker  stur    w5, [x4, #20]
144*9880d681SAndroid Build Coastguard Worker  stur    b5, [sp, #1]
145*9880d681SAndroid Build Coastguard Worker  stur    h6, [sp, #2]
146*9880d681SAndroid Build Coastguard Worker  stur    s7, [sp, #4]
147*9880d681SAndroid Build Coastguard Worker  stur    d8, [sp, #8]
148*9880d681SAndroid Build Coastguard Worker  stur    q9, [sp, #16]
149*9880d681SAndroid Build Coastguard Worker  sturb   w4, [x3]
150*9880d681SAndroid Build Coastguard Worker  sturb   w5, [x4, #20]
151*9880d681SAndroid Build Coastguard Worker  sturh   w2, [sp, #32]
152*9880d681SAndroid Build Coastguard Worker  prfum   #5, [sp, #32]
153*9880d681SAndroid Build Coastguard Worker
154*9880d681SAndroid Build Coastguard Worker; CHECK: stur    w4, [x3]               ; encoding: [0x64,0x00,0x00,0xb8]
155*9880d681SAndroid Build Coastguard Worker; CHECK: stur    w2, [sp, #32]          ; encoding: [0xe2,0x03,0x02,0xb8]
156*9880d681SAndroid Build Coastguard Worker; CHECK: stur    x4, [x3]               ; encoding: [0x64,0x00,0x00,0xf8]
157*9880d681SAndroid Build Coastguard Worker; CHECK: stur    x2, [sp, #32]          ; encoding: [0xe2,0x03,0x02,0xf8]
158*9880d681SAndroid Build Coastguard Worker; CHECK: stur    w5, [x4, #20]          ; encoding: [0x85,0x40,0x01,0xb8]
159*9880d681SAndroid Build Coastguard Worker; CHECK: stur    b5, [sp, #1]           ; encoding: [0xe5,0x13,0x00,0x3c]
160*9880d681SAndroid Build Coastguard Worker; CHECK: stur    h6, [sp, #2]           ; encoding: [0xe6,0x23,0x00,0x7c]
161*9880d681SAndroid Build Coastguard Worker; CHECK: stur    s7, [sp, #4]           ; encoding: [0xe7,0x43,0x00,0xbc]
162*9880d681SAndroid Build Coastguard Worker; CHECK: stur    d8, [sp, #8]           ; encoding: [0xe8,0x83,0x00,0xfc]
163*9880d681SAndroid Build Coastguard Worker; CHECK: stur    q9, [sp, #16]          ; encoding: [0xe9,0x03,0x81,0x3c]
164*9880d681SAndroid Build Coastguard Worker; CHECK: sturb   w4, [x3]               ; encoding: [0x64,0x00,0x00,0x38]
165*9880d681SAndroid Build Coastguard Worker; CHECK: sturb   w5, [x4, #20]          ; encoding: [0x85,0x40,0x01,0x38]
166*9880d681SAndroid Build Coastguard Worker; CHECK: sturh   w2, [sp, #32]          ; encoding: [0xe2,0x03,0x02,0x78]
167*9880d681SAndroid Build Coastguard Worker; CHECK: prfum   pldl3strm, [sp, #32]   ; encoding: [0xe5,0x03,0x82,0xf8]
168*9880d681SAndroid Build Coastguard Worker
169*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
170*9880d681SAndroid Build Coastguard Worker; Unprivileged loads and stores
171*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
172*9880d681SAndroid Build Coastguard Worker
173*9880d681SAndroid Build Coastguard Worker  ldtr    w3, [x4, #16]
174*9880d681SAndroid Build Coastguard Worker  ldtr    x3, [x4, #16]
175*9880d681SAndroid Build Coastguard Worker  ldtrb   w3, [x4, #16]
176*9880d681SAndroid Build Coastguard Worker  ldtrsb  w9, [x3]
177*9880d681SAndroid Build Coastguard Worker  ldtrsb  x2, [sp, #128]
178*9880d681SAndroid Build Coastguard Worker  ldtrh   w3, [x4, #16]
179*9880d681SAndroid Build Coastguard Worker  ldtrsh  w3, [sp, #32]
180*9880d681SAndroid Build Coastguard Worker  ldtrsh  x5, [x9, #24]
181*9880d681SAndroid Build Coastguard Worker  ldtrsw  x9, [sp, #-128]
182*9880d681SAndroid Build Coastguard Worker
183*9880d681SAndroid Build Coastguard Worker; CHECK: ldtr   w3, [x4, #16]           ; encoding: [0x83,0x08,0x41,0xb8]
184*9880d681SAndroid Build Coastguard Worker; CHECK: ldtr   x3, [x4, #16]           ; encoding: [0x83,0x08,0x41,0xf8]
185*9880d681SAndroid Build Coastguard Worker; CHECK: ldtrb  w3, [x4, #16]           ; encoding: [0x83,0x08,0x41,0x38]
186*9880d681SAndroid Build Coastguard Worker; CHECK: ldtrsb w9, [x3]                ; encoding: [0x69,0x08,0xc0,0x38]
187*9880d681SAndroid Build Coastguard Worker; CHECK: ldtrsb x2, [sp, #128]          ; encoding: [0xe2,0x0b,0x88,0x38]
188*9880d681SAndroid Build Coastguard Worker; CHECK: ldtrh  w3, [x4, #16]           ; encoding: [0x83,0x08,0x41,0x78]
189*9880d681SAndroid Build Coastguard Worker; CHECK: ldtrsh w3, [sp, #32]           ; encoding: [0xe3,0x0b,0xc2,0x78]
190*9880d681SAndroid Build Coastguard Worker; CHECK: ldtrsh x5, [x9, #24]           ; encoding: [0x25,0x89,0x81,0x78]
191*9880d681SAndroid Build Coastguard Worker; CHECK: ldtrsw x9, [sp, #-128]         ; encoding: [0xe9,0x0b,0x98,0xb8]
192*9880d681SAndroid Build Coastguard Worker
193*9880d681SAndroid Build Coastguard Worker  sttr    w5, [x4, #20]
194*9880d681SAndroid Build Coastguard Worker  sttr    x4, [x3]
195*9880d681SAndroid Build Coastguard Worker  sttr    x2, [sp, #32]
196*9880d681SAndroid Build Coastguard Worker  sttrb   w4, [x3]
197*9880d681SAndroid Build Coastguard Worker  sttrb   w5, [x4, #20]
198*9880d681SAndroid Build Coastguard Worker  sttrh   w2, [sp, #32]
199*9880d681SAndroid Build Coastguard Worker
200*9880d681SAndroid Build Coastguard Worker; CHECK: sttr   w5, [x4, #20]           ; encoding: [0x85,0x48,0x01,0xb8]
201*9880d681SAndroid Build Coastguard Worker; CHECK: sttr   x4, [x3]                ; encoding: [0x64,0x08,0x00,0xf8]
202*9880d681SAndroid Build Coastguard Worker; CHECK: sttr   x2, [sp, #32]           ; encoding: [0xe2,0x0b,0x02,0xf8]
203*9880d681SAndroid Build Coastguard Worker; CHECK: sttrb  w4, [x3]                ; encoding: [0x64,0x08,0x00,0x38]
204*9880d681SAndroid Build Coastguard Worker; CHECK: sttrb  w5, [x4, #20]           ; encoding: [0x85,0x48,0x01,0x38]
205*9880d681SAndroid Build Coastguard Worker; CHECK: sttrh  w2, [sp, #32]           ; encoding: [0xe2,0x0b,0x02,0x78]
206*9880d681SAndroid Build Coastguard Worker
207*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
208*9880d681SAndroid Build Coastguard Worker; Pre-indexed loads and stores
209*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
210*9880d681SAndroid Build Coastguard Worker
211*9880d681SAndroid Build Coastguard Worker  ldr   x29, [x7, #8]!
212*9880d681SAndroid Build Coastguard Worker  ldr   x30, [x7, #8]!
213*9880d681SAndroid Build Coastguard Worker  ldr   b5, [x0, #1]!
214*9880d681SAndroid Build Coastguard Worker  ldr   h6, [x0, #2]!
215*9880d681SAndroid Build Coastguard Worker  ldr   s7, [x0, #4]!
216*9880d681SAndroid Build Coastguard Worker  ldr   d8, [x0, #8]!
217*9880d681SAndroid Build Coastguard Worker  ldr   q9, [x0, #16]!
218*9880d681SAndroid Build Coastguard Worker
219*9880d681SAndroid Build Coastguard Worker  str   x30, [x7, #-8]!
220*9880d681SAndroid Build Coastguard Worker  str   x29, [x7, #-8]!
221*9880d681SAndroid Build Coastguard Worker  str   b5, [x0, #-1]!
222*9880d681SAndroid Build Coastguard Worker  str   h6, [x0, #-2]!
223*9880d681SAndroid Build Coastguard Worker  str   s7, [x0, #-4]!
224*9880d681SAndroid Build Coastguard Worker  str   d8, [x0, #-8]!
225*9880d681SAndroid Build Coastguard Worker  str   q9, [x0, #-16]!
226*9880d681SAndroid Build Coastguard Worker
227*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  x29, [x7, #8]!             ; encoding: [0xfd,0x8c,0x40,0xf8]
228*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  x30, [x7, #8]!             ; encoding: [0xfe,0x8c,0x40,0xf8]
229*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  b5, [x0, #1]!             ; encoding: [0x05,0x1c,0x40,0x3c]
230*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  h6, [x0, #2]!             ; encoding: [0x06,0x2c,0x40,0x7c]
231*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  s7, [x0, #4]!             ; encoding: [0x07,0x4c,0x40,0xbc]
232*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  d8, [x0, #8]!             ; encoding: [0x08,0x8c,0x40,0xfc]
233*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  q9, [x0, #16]!            ; encoding: [0x09,0x0c,0xc1,0x3c]
234*9880d681SAndroid Build Coastguard Worker
235*9880d681SAndroid Build Coastguard Worker; CHECK: str  x30, [x7, #-8]!            ; encoding: [0xfe,0x8c,0x1f,0xf8]
236*9880d681SAndroid Build Coastguard Worker; CHECK: str  x29, [x7, #-8]!            ; encoding: [0xfd,0x8c,0x1f,0xf8]
237*9880d681SAndroid Build Coastguard Worker; CHECK: str  b5, [x0, #-1]!            ; encoding: [0x05,0xfc,0x1f,0x3c]
238*9880d681SAndroid Build Coastguard Worker; CHECK: str  h6, [x0, #-2]!            ; encoding: [0x06,0xec,0x1f,0x7c]
239*9880d681SAndroid Build Coastguard Worker; CHECK: str  s7, [x0, #-4]!            ; encoding: [0x07,0xcc,0x1f,0xbc]
240*9880d681SAndroid Build Coastguard Worker; CHECK: str  d8, [x0, #-8]!            ; encoding: [0x08,0x8c,0x1f,0xfc]
241*9880d681SAndroid Build Coastguard Worker; CHECK: str  q9, [x0, #-16]!           ; encoding: [0x09,0x0c,0x9f,0x3c]
242*9880d681SAndroid Build Coastguard Worker
243*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
244*9880d681SAndroid Build Coastguard Worker; post-indexed loads and stores
245*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
246*9880d681SAndroid Build Coastguard Worker  str x30, [x7], #-8
247*9880d681SAndroid Build Coastguard Worker  str x29, [x7], #-8
248*9880d681SAndroid Build Coastguard Worker  str b5, [x0], #-1
249*9880d681SAndroid Build Coastguard Worker  str h6, [x0], #-2
250*9880d681SAndroid Build Coastguard Worker  str s7, [x0], #-4
251*9880d681SAndroid Build Coastguard Worker  str d8, [x0], #-8
252*9880d681SAndroid Build Coastguard Worker  str q9, [x0], #-16
253*9880d681SAndroid Build Coastguard Worker
254*9880d681SAndroid Build Coastguard Worker  ldr x29, [x7], #8
255*9880d681SAndroid Build Coastguard Worker  ldr x30, [x7], #8
256*9880d681SAndroid Build Coastguard Worker  ldr b5, [x0], #1
257*9880d681SAndroid Build Coastguard Worker  ldr h6, [x0], #2
258*9880d681SAndroid Build Coastguard Worker  ldr s7, [x0], #4
259*9880d681SAndroid Build Coastguard Worker  ldr d8, [x0], #8
260*9880d681SAndroid Build Coastguard Worker  ldr q9, [x0], #16
261*9880d681SAndroid Build Coastguard Worker
262*9880d681SAndroid Build Coastguard Worker; CHECK: str x30, [x7], #-8             ; encoding: [0xfe,0x84,0x1f,0xf8]
263*9880d681SAndroid Build Coastguard Worker; CHECK: str x29, [x7], #-8             ; encoding: [0xfd,0x84,0x1f,0xf8]
264*9880d681SAndroid Build Coastguard Worker; CHECK: str b5, [x0], #-1             ; encoding: [0x05,0xf4,0x1f,0x3c]
265*9880d681SAndroid Build Coastguard Worker; CHECK: str h6, [x0], #-2             ; encoding: [0x06,0xe4,0x1f,0x7c]
266*9880d681SAndroid Build Coastguard Worker; CHECK: str s7, [x0], #-4             ; encoding: [0x07,0xc4,0x1f,0xbc]
267*9880d681SAndroid Build Coastguard Worker; CHECK: str d8, [x0], #-8             ; encoding: [0x08,0x84,0x1f,0xfc]
268*9880d681SAndroid Build Coastguard Worker; CHECK: str q9, [x0], #-16            ; encoding: [0x09,0x04,0x9f,0x3c]
269*9880d681SAndroid Build Coastguard Worker
270*9880d681SAndroid Build Coastguard Worker; CHECK: ldr x29, [x7], #8              ; encoding: [0xfd,0x84,0x40,0xf8]
271*9880d681SAndroid Build Coastguard Worker; CHECK: ldr x30, [x7], #8              ; encoding: [0xfe,0x84,0x40,0xf8]
272*9880d681SAndroid Build Coastguard Worker; CHECK: ldr b5, [x0], #1              ; encoding: [0x05,0x14,0x40,0x3c]
273*9880d681SAndroid Build Coastguard Worker; CHECK: ldr h6, [x0], #2              ; encoding: [0x06,0x24,0x40,0x7c]
274*9880d681SAndroid Build Coastguard Worker; CHECK: ldr s7, [x0], #4              ; encoding: [0x07,0x44,0x40,0xbc]
275*9880d681SAndroid Build Coastguard Worker; CHECK: ldr d8, [x0], #8              ; encoding: [0x08,0x84,0x40,0xfc]
276*9880d681SAndroid Build Coastguard Worker; CHECK: ldr q9, [x0], #16             ; encoding: [0x09,0x04,0xc1,0x3c]
277*9880d681SAndroid Build Coastguard Worker
278*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
279*9880d681SAndroid Build Coastguard Worker; Load/Store pair (indexed, offset)
280*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
281*9880d681SAndroid Build Coastguard Worker
282*9880d681SAndroid Build Coastguard Worker  ldp    w3, w2, [x15, #16]
283*9880d681SAndroid Build Coastguard Worker  ldp    x4, x9, [sp, #-16]
284*9880d681SAndroid Build Coastguard Worker  ldpsw  x2, x3, [x14, #16]
285*9880d681SAndroid Build Coastguard Worker  ldpsw  x2, x3, [sp, #-16]
286*9880d681SAndroid Build Coastguard Worker  ldp    s10, s1, [x2, #64]
287*9880d681SAndroid Build Coastguard Worker  ldp    d10, d1, [x2]
288*9880d681SAndroid Build Coastguard Worker  ldp    q2, q3, [x0, #32]
289*9880d681SAndroid Build Coastguard Worker
290*9880d681SAndroid Build Coastguard Worker; CHECK: ldp    w3, w2, [x15, #16]      ; encoding: [0xe3,0x09,0x42,0x29]
291*9880d681SAndroid Build Coastguard Worker; CHECK: ldp    x4, x9, [sp, #-16]      ; encoding: [0xe4,0x27,0x7f,0xa9]
292*9880d681SAndroid Build Coastguard Worker; CHECK: ldpsw  x2, x3, [x14, #16]      ; encoding: [0xc2,0x0d,0x42,0x69]
293*9880d681SAndroid Build Coastguard Worker; CHECK: ldpsw  x2, x3, [sp, #-16]      ; encoding: [0xe2,0x0f,0x7e,0x69]
294*9880d681SAndroid Build Coastguard Worker; CHECK: ldp    s10, s1, [x2, #64]      ; encoding: [0x4a,0x04,0x48,0x2d]
295*9880d681SAndroid Build Coastguard Worker; CHECK: ldp    d10, d1, [x2]           ; encoding: [0x4a,0x04,0x40,0x6d]
296*9880d681SAndroid Build Coastguard Worker; CHECK: ldp    q2, q3, [x0, #32]       ; encoding: [0x02,0x0c,0x41,0xad]
297*9880d681SAndroid Build Coastguard Worker
298*9880d681SAndroid Build Coastguard Worker  stp    w3, w2, [x15, #16]
299*9880d681SAndroid Build Coastguard Worker  stp    x4, x9, [sp, #-16]
300*9880d681SAndroid Build Coastguard Worker  stp    s10, s1, [x2, #64]
301*9880d681SAndroid Build Coastguard Worker  stp    d10, d1, [x2]
302*9880d681SAndroid Build Coastguard Worker  stp    q2, q3, [x0, #32]
303*9880d681SAndroid Build Coastguard Worker
304*9880d681SAndroid Build Coastguard Worker; CHECK: stp    w3, w2, [x15, #16]      ; encoding: [0xe3,0x09,0x02,0x29]
305*9880d681SAndroid Build Coastguard Worker; CHECK: stp    x4, x9, [sp, #-16]      ; encoding: [0xe4,0x27,0x3f,0xa9]
306*9880d681SAndroid Build Coastguard Worker; CHECK: stp    s10, s1, [x2, #64]      ; encoding: [0x4a,0x04,0x08,0x2d]
307*9880d681SAndroid Build Coastguard Worker; CHECK: stp    d10, d1, [x2]           ; encoding: [0x4a,0x04,0x00,0x6d]
308*9880d681SAndroid Build Coastguard Worker; CHECK: stp    q2, q3, [x0, #32]       ; encoding: [0x02,0x0c,0x01,0xad]
309*9880d681SAndroid Build Coastguard Worker
310*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
311*9880d681SAndroid Build Coastguard Worker; Load/Store pair (pre-indexed)
312*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
313*9880d681SAndroid Build Coastguard Worker
314*9880d681SAndroid Build Coastguard Worker  ldp    w3, w2, [x15, #16]!
315*9880d681SAndroid Build Coastguard Worker  ldp    x4, x9, [sp, #-16]!
316*9880d681SAndroid Build Coastguard Worker  ldpsw  x2, x3, [x14, #16]!
317*9880d681SAndroid Build Coastguard Worker  ldpsw  x2, x3, [sp, #-16]!
318*9880d681SAndroid Build Coastguard Worker  ldp    s10, s1, [x2, #64]!
319*9880d681SAndroid Build Coastguard Worker  ldp    d10, d1, [x2, #16]!
320*9880d681SAndroid Build Coastguard Worker
321*9880d681SAndroid Build Coastguard Worker; CHECK: ldp  w3, w2, [x15, #16]!       ; encoding: [0xe3,0x09,0xc2,0x29]
322*9880d681SAndroid Build Coastguard Worker; CHECK: ldp  x4, x9, [sp, #-16]!       ; encoding: [0xe4,0x27,0xff,0xa9]
323*9880d681SAndroid Build Coastguard Worker; CHECK: ldpsw	x2, x3, [x14, #16]!     ; encoding: [0xc2,0x0d,0xc2,0x69]
324*9880d681SAndroid Build Coastguard Worker; CHECK: ldpsw	x2, x3, [sp, #-16]!     ; encoding: [0xe2,0x0f,0xfe,0x69]
325*9880d681SAndroid Build Coastguard Worker; CHECK: ldp  s10, s1, [x2, #64]!       ; encoding: [0x4a,0x04,0xc8,0x2d]
326*9880d681SAndroid Build Coastguard Worker; CHECK: ldp  d10, d1, [x2, #16]!       ; encoding: [0x4a,0x04,0xc1,0x6d]
327*9880d681SAndroid Build Coastguard Worker
328*9880d681SAndroid Build Coastguard Worker  stp    w3, w2, [x15, #16]!
329*9880d681SAndroid Build Coastguard Worker  stp    x4, x9, [sp, #-16]!
330*9880d681SAndroid Build Coastguard Worker  stp    s10, s1, [x2, #64]!
331*9880d681SAndroid Build Coastguard Worker  stp    d10, d1, [x2, #16]!
332*9880d681SAndroid Build Coastguard Worker
333*9880d681SAndroid Build Coastguard Worker; CHECK: stp  w3, w2, [x15, #16]!       ; encoding: [0xe3,0x09,0x82,0x29]
334*9880d681SAndroid Build Coastguard Worker; CHECK: stp  x4, x9, [sp, #-16]!       ; encoding: [0xe4,0x27,0xbf,0xa9]
335*9880d681SAndroid Build Coastguard Worker; CHECK: stp  s10, s1, [x2, #64]!       ; encoding: [0x4a,0x04,0x88,0x2d]
336*9880d681SAndroid Build Coastguard Worker; CHECK: stp  d10, d1, [x2, #16]!       ; encoding: [0x4a,0x04,0x81,0x6d]
337*9880d681SAndroid Build Coastguard Worker
338*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
339*9880d681SAndroid Build Coastguard Worker; Load/Store pair (post-indexed)
340*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
341*9880d681SAndroid Build Coastguard Worker
342*9880d681SAndroid Build Coastguard Worker  ldp    w3, w2, [x15], #16
343*9880d681SAndroid Build Coastguard Worker  ldp    x4, x9, [sp], #-16
344*9880d681SAndroid Build Coastguard Worker  ldpsw  x2, x3, [x14], #16
345*9880d681SAndroid Build Coastguard Worker  ldpsw  x2, x3, [sp], #-16
346*9880d681SAndroid Build Coastguard Worker  ldp    s10, s1, [x2], #64
347*9880d681SAndroid Build Coastguard Worker  ldp    d10, d1, [x2], #16
348*9880d681SAndroid Build Coastguard Worker
349*9880d681SAndroid Build Coastguard Worker; CHECK: ldp  w3, w2, [x15], #16        ; encoding: [0xe3,0x09,0xc2,0x28]
350*9880d681SAndroid Build Coastguard Worker; CHECK: ldp  x4, x9, [sp], #-16        ; encoding: [0xe4,0x27,0xff,0xa8]
351*9880d681SAndroid Build Coastguard Worker; CHECK: ldpsw	x2, x3, [x14], #16      ; encoding: [0xc2,0x0d,0xc2,0x68]
352*9880d681SAndroid Build Coastguard Worker; CHECK: ldpsw	x2, x3, [sp], #-16      ; encoding: [0xe2,0x0f,0xfe,0x68]
353*9880d681SAndroid Build Coastguard Worker; CHECK: ldp  s10, s1, [x2], #64        ; encoding: [0x4a,0x04,0xc8,0x2c]
354*9880d681SAndroid Build Coastguard Worker; CHECK: ldp  d10, d1, [x2], #16        ; encoding: [0x4a,0x04,0xc1,0x6c]
355*9880d681SAndroid Build Coastguard Worker
356*9880d681SAndroid Build Coastguard Worker  stp    w3, w2, [x15], #16
357*9880d681SAndroid Build Coastguard Worker  stp    x4, x9, [sp], #-16
358*9880d681SAndroid Build Coastguard Worker  stp    s10, s1, [x2], #64
359*9880d681SAndroid Build Coastguard Worker  stp    d10, d1, [x2], #16
360*9880d681SAndroid Build Coastguard Worker
361*9880d681SAndroid Build Coastguard Worker; CHECK: stp  w3, w2, [x15], #16        ; encoding: [0xe3,0x09,0x82,0x28]
362*9880d681SAndroid Build Coastguard Worker; CHECK: stp  x4, x9, [sp], #-16        ; encoding: [0xe4,0x27,0xbf,0xa8]
363*9880d681SAndroid Build Coastguard Worker; CHECK: stp  s10, s1, [x2], #64        ; encoding: [0x4a,0x04,0x88,0x2c]
364*9880d681SAndroid Build Coastguard Worker; CHECK: stp  d10, d1, [x2], #16        ; encoding: [0x4a,0x04,0x81,0x6c]
365*9880d681SAndroid Build Coastguard Worker
366*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
367*9880d681SAndroid Build Coastguard Worker; Load/Store pair (no-allocate)
368*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
369*9880d681SAndroid Build Coastguard Worker
370*9880d681SAndroid Build Coastguard Worker  ldnp  w3, w2, [x15, #16]
371*9880d681SAndroid Build Coastguard Worker  ldnp  x4, x9, [sp, #-16]
372*9880d681SAndroid Build Coastguard Worker  ldnp  s10, s1, [x2, #64]
373*9880d681SAndroid Build Coastguard Worker  ldnp  d10, d1, [x2]
374*9880d681SAndroid Build Coastguard Worker
375*9880d681SAndroid Build Coastguard Worker; CHECK: ldnp  w3, w2, [x15, #16]       ; encoding: [0xe3,0x09,0x42,0x28]
376*9880d681SAndroid Build Coastguard Worker; CHECK: ldnp  x4, x9, [sp, #-16]       ; encoding: [0xe4,0x27,0x7f,0xa8]
377*9880d681SAndroid Build Coastguard Worker; CHECK: ldnp  s10, s1, [x2, #64]       ; encoding: [0x4a,0x04,0x48,0x2c]
378*9880d681SAndroid Build Coastguard Worker; CHECK: ldnp  d10, d1, [x2]            ; encoding: [0x4a,0x04,0x40,0x6c]
379*9880d681SAndroid Build Coastguard Worker
380*9880d681SAndroid Build Coastguard Worker  stnp  w3, w2, [x15, #16]
381*9880d681SAndroid Build Coastguard Worker  stnp  x4, x9, [sp, #-16]
382*9880d681SAndroid Build Coastguard Worker  stnp  s10, s1, [x2, #64]
383*9880d681SAndroid Build Coastguard Worker  stnp  d10, d1, [x2]
384*9880d681SAndroid Build Coastguard Worker
385*9880d681SAndroid Build Coastguard Worker; CHECK: stnp  w3, w2, [x15, #16]       ; encoding: [0xe3,0x09,0x02,0x28]
386*9880d681SAndroid Build Coastguard Worker; CHECK: stnp  x4, x9, [sp, #-16]       ; encoding: [0xe4,0x27,0x3f,0xa8]
387*9880d681SAndroid Build Coastguard Worker; CHECK: stnp  s10, s1, [x2, #64]       ; encoding: [0x4a,0x04,0x08,0x2c]
388*9880d681SAndroid Build Coastguard Worker; CHECK: stnp  d10, d1, [x2]            ; encoding: [0x4a,0x04,0x00,0x6c]
389*9880d681SAndroid Build Coastguard Worker
390*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
391*9880d681SAndroid Build Coastguard Worker; Load/Store register offset
392*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
393*9880d681SAndroid Build Coastguard Worker
394*9880d681SAndroid Build Coastguard Worker  ldr  w0, [x0, x0]
395*9880d681SAndroid Build Coastguard Worker  ldr  w0, [x0, x0, lsl #2]
396*9880d681SAndroid Build Coastguard Worker  ldr  x0, [x0, x0]
397*9880d681SAndroid Build Coastguard Worker  ldr  x0, [x0, x0, lsl #3]
398*9880d681SAndroid Build Coastguard Worker  ldr  x0, [x0, x0, sxtx]
399*9880d681SAndroid Build Coastguard Worker
400*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  w0, [x0, x0]              ; encoding: [0x00,0x68,0x60,0xb8]
401*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  w0, [x0, x0, lsl #2]      ; encoding: [0x00,0x78,0x60,0xb8]
402*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  x0, [x0, x0]              ; encoding: [0x00,0x68,0x60,0xf8]
403*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  x0, [x0, x0, lsl #3]      ; encoding: [0x00,0x78,0x60,0xf8]
404*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  x0, [x0, x0, sxtx]        ; encoding: [0x00,0xe8,0x60,0xf8]
405*9880d681SAndroid Build Coastguard Worker
406*9880d681SAndroid Build Coastguard Worker  ldr  b1, [x1, x2]
407*9880d681SAndroid Build Coastguard Worker  ldr  b1, [x1, x2, lsl #0]
408*9880d681SAndroid Build Coastguard Worker  ldr  h1, [x1, x2]
409*9880d681SAndroid Build Coastguard Worker  ldr  h1, [x1, x2, lsl #1]
410*9880d681SAndroid Build Coastguard Worker  ldr  s1, [x1, x2]
411*9880d681SAndroid Build Coastguard Worker  ldr  s1, [x1, x2, lsl #2]
412*9880d681SAndroid Build Coastguard Worker  ldr  d1, [x1, x2]
413*9880d681SAndroid Build Coastguard Worker  ldr  d1, [x1, x2, lsl #3]
414*9880d681SAndroid Build Coastguard Worker  ldr  q1, [x1, x2]
415*9880d681SAndroid Build Coastguard Worker  ldr  q1, [x1, x2, lsl #4]
416*9880d681SAndroid Build Coastguard Worker
417*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  b1, [x1, x2]              ; encoding: [0x21,0x68,0x62,0x3c]
418*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  b1, [x1, x2, lsl #0]      ; encoding: [0x21,0x78,0x62,0x3c]
419*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  h1, [x1, x2]              ; encoding: [0x21,0x68,0x62,0x7c]
420*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  h1, [x1, x2, lsl #1]      ; encoding: [0x21,0x78,0x62,0x7c]
421*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  s1, [x1, x2]              ; encoding: [0x21,0x68,0x62,0xbc]
422*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  s1, [x1, x2, lsl #2]      ; encoding: [0x21,0x78,0x62,0xbc]
423*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  d1, [x1, x2]              ; encoding: [0x21,0x68,0x62,0xfc]
424*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  d1, [x1, x2, lsl #3]      ; encoding: [0x21,0x78,0x62,0xfc]
425*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  q1, [x1, x2]              ; encoding: [0x21,0x68,0xe2,0x3c]
426*9880d681SAndroid Build Coastguard Worker; CHECK: ldr  q1, [x1, x2, lsl #4]      ; encoding: [0x21,0x78,0xe2,0x3c]
427*9880d681SAndroid Build Coastguard Worker
428*9880d681SAndroid Build Coastguard Worker  str  d1, [sp, x3]
429*9880d681SAndroid Build Coastguard Worker  str  d1, [sp, w3, uxtw #3]
430*9880d681SAndroid Build Coastguard Worker  str  q1, [sp, x3]
431*9880d681SAndroid Build Coastguard Worker  str  q1, [sp, w3, uxtw #4]
432*9880d681SAndroid Build Coastguard Worker
433*9880d681SAndroid Build Coastguard Worker; CHECK: str  d1, [sp, x3]              ; encoding: [0xe1,0x6b,0x23,0xfc]
434*9880d681SAndroid Build Coastguard Worker; CHECK: str  d1, [sp, w3, uxtw #3]     ; encoding: [0xe1,0x5b,0x23,0xfc]
435*9880d681SAndroid Build Coastguard Worker; CHECK: str  q1, [sp, x3]              ; encoding: [0xe1,0x6b,0xa3,0x3c]
436*9880d681SAndroid Build Coastguard Worker; CHECK: str  q1, [sp, w3, uxtw #4]     ; encoding: [0xe1,0x5b,0xa3,0x3c]
437*9880d681SAndroid Build Coastguard Worker
438*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
439*9880d681SAndroid Build Coastguard Worker; Load literal
440*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
441*9880d681SAndroid Build Coastguard Worker
442*9880d681SAndroid Build Coastguard Worker  ldr    w5, foo
443*9880d681SAndroid Build Coastguard Worker  ldr    x4, foo
444*9880d681SAndroid Build Coastguard Worker  ldrsw  x9, foo
445*9880d681SAndroid Build Coastguard Worker  prfm   #5, foo
446*9880d681SAndroid Build Coastguard Worker
447*9880d681SAndroid Build Coastguard Worker; CHECK: ldr    w5, foo                 ; encoding: [0bAAA00101,A,A,0x18]
448*9880d681SAndroid Build Coastguard Worker; CHECK: ldr    x4, foo                 ; encoding: [0bAAA00100,A,A,0x58]
449*9880d681SAndroid Build Coastguard Worker; CHECK: ldrsw  x9, foo                 ; encoding: [0bAAA01001,A,A,0x98]
450*9880d681SAndroid Build Coastguard Worker; CHECK: prfm   pldl3strm, foo          ; encoding: [0bAAA00101,A,A,0xd8]
451*9880d681SAndroid Build Coastguard Worker
452*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
453*9880d681SAndroid Build Coastguard Worker; Load/Store exclusive
454*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
455*9880d681SAndroid Build Coastguard Worker
456*9880d681SAndroid Build Coastguard Worker  ldxr   w6, [x1]
457*9880d681SAndroid Build Coastguard Worker  ldxr   x6, [x1]
458*9880d681SAndroid Build Coastguard Worker  ldxrb  w6, [x1]
459*9880d681SAndroid Build Coastguard Worker  ldxrh  w6, [x1]
460*9880d681SAndroid Build Coastguard Worker  ldxp   w7, w3, [x9]
461*9880d681SAndroid Build Coastguard Worker  ldxp   x7, x3, [x9]
462*9880d681SAndroid Build Coastguard Worker
463*9880d681SAndroid Build Coastguard Worker; CHECK: ldxrb  w6, [x1]                ; encoding: [0x26,0x7c,0x5f,0x08]
464*9880d681SAndroid Build Coastguard Worker; CHECK: ldxrh  w6, [x1]                ; encoding: [0x26,0x7c,0x5f,0x48]
465*9880d681SAndroid Build Coastguard Worker; CHECK: ldxp   w7, w3, [x9]            ; encoding: [0x27,0x0d,0x7f,0x88]
466*9880d681SAndroid Build Coastguard Worker; CHECK: ldxp   x7, x3, [x9]            ; encoding: [0x27,0x0d,0x7f,0xc8]
467*9880d681SAndroid Build Coastguard Worker
468*9880d681SAndroid Build Coastguard Worker  stxr   w1, x4, [x3]
469*9880d681SAndroid Build Coastguard Worker  stxr   w1, w4, [x3]
470*9880d681SAndroid Build Coastguard Worker  stxrb  w1, w4, [x3]
471*9880d681SAndroid Build Coastguard Worker  stxrh  w1, w4, [x3]
472*9880d681SAndroid Build Coastguard Worker  stxp   w1, x2, x6, [x1]
473*9880d681SAndroid Build Coastguard Worker  stxp   w1, w2, w6, [x1]
474*9880d681SAndroid Build Coastguard Worker
475*9880d681SAndroid Build Coastguard Worker; CHECK: stxr   w1, x4, [x3]            ; encoding: [0x64,0x7c,0x01,0xc8]
476*9880d681SAndroid Build Coastguard Worker; CHECK: stxr   w1, w4, [x3]            ; encoding: [0x64,0x7c,0x01,0x88]
477*9880d681SAndroid Build Coastguard Worker; CHECK: stxrb  w1, w4, [x3]            ; encoding: [0x64,0x7c,0x01,0x08]
478*9880d681SAndroid Build Coastguard Worker; CHECK: stxrh  w1, w4, [x3]            ; encoding: [0x64,0x7c,0x01,0x48]
479*9880d681SAndroid Build Coastguard Worker; CHECK: stxp   w1, x2, x6, [x1]        ; encoding: [0x22,0x18,0x21,0xc8]
480*9880d681SAndroid Build Coastguard Worker; CHECK: stxp   w1, w2, w6, [x1]        ; encoding: [0x22,0x18,0x21,0x88]
481*9880d681SAndroid Build Coastguard Worker
482*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
483*9880d681SAndroid Build Coastguard Worker; Load-acquire/Store-release non-exclusive
484*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
485*9880d681SAndroid Build Coastguard Worker
486*9880d681SAndroid Build Coastguard Worker  ldar   w4, [sp]
487*9880d681SAndroid Build Coastguard Worker  ldar   x4, [sp, #0]
488*9880d681SAndroid Build Coastguard Worker  ldarb  w4, [sp]
489*9880d681SAndroid Build Coastguard Worker  ldarh  w4, [sp]
490*9880d681SAndroid Build Coastguard Worker
491*9880d681SAndroid Build Coastguard Worker; CHECK: ldar   w4, [sp]                ; encoding: [0xe4,0xff,0xdf,0x88]
492*9880d681SAndroid Build Coastguard Worker; CHECK: ldar   x4, [sp]                ; encoding: [0xe4,0xff,0xdf,0xc8]
493*9880d681SAndroid Build Coastguard Worker; CHECK: ldarb  w4, [sp]                ; encoding: [0xe4,0xff,0xdf,0x08]
494*9880d681SAndroid Build Coastguard Worker; CHECK: ldarh  w4, [sp]                ; encoding: [0xe4,0xff,0xdf,0x48]
495*9880d681SAndroid Build Coastguard Worker
496*9880d681SAndroid Build Coastguard Worker  stlr   w3, [x6]
497*9880d681SAndroid Build Coastguard Worker  stlr   x3, [x6]
498*9880d681SAndroid Build Coastguard Worker  stlrb  w3, [x6]
499*9880d681SAndroid Build Coastguard Worker  stlrh  w3, [x6]
500*9880d681SAndroid Build Coastguard Worker
501*9880d681SAndroid Build Coastguard Worker; CHECK: stlr   w3, [x6]                ; encoding: [0xc3,0xfc,0x9f,0x88]
502*9880d681SAndroid Build Coastguard Worker; CHECK: stlr   x3, [x6]                ; encoding: [0xc3,0xfc,0x9f,0xc8]
503*9880d681SAndroid Build Coastguard Worker; CHECK: stlrb  w3, [x6]                ; encoding: [0xc3,0xfc,0x9f,0x08]
504*9880d681SAndroid Build Coastguard Worker; CHECK: stlrh  w3, [x6]                ; encoding: [0xc3,0xfc,0x9f,0x48]
505*9880d681SAndroid Build Coastguard Worker
506*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
507*9880d681SAndroid Build Coastguard Worker; Load-acquire/Store-release exclusive
508*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
509*9880d681SAndroid Build Coastguard Worker
510*9880d681SAndroid Build Coastguard Worker  ldaxr   w2, [x4]
511*9880d681SAndroid Build Coastguard Worker  ldaxr   x2, [x4]
512*9880d681SAndroid Build Coastguard Worker  ldaxrb  w2, [x4, #0]
513*9880d681SAndroid Build Coastguard Worker  ldaxrh  w2, [x4]
514*9880d681SAndroid Build Coastguard Worker  ldaxp   w2, w6, [x1]
515*9880d681SAndroid Build Coastguard Worker  ldaxp   x2, x6, [x1]
516*9880d681SAndroid Build Coastguard Worker
517*9880d681SAndroid Build Coastguard Worker; CHECK: ldaxr   w2, [x4]               ; encoding: [0x82,0xfc,0x5f,0x88]
518*9880d681SAndroid Build Coastguard Worker; CHECK: ldaxr   x2, [x4]               ; encoding: [0x82,0xfc,0x5f,0xc8]
519*9880d681SAndroid Build Coastguard Worker; CHECK: ldaxrb  w2, [x4]               ; encoding: [0x82,0xfc,0x5f,0x08]
520*9880d681SAndroid Build Coastguard Worker; CHECK: ldaxrh  w2, [x4]               ; encoding: [0x82,0xfc,0x5f,0x48]
521*9880d681SAndroid Build Coastguard Worker; CHECK: ldaxp   w2, w6, [x1]           ; encoding: [0x22,0x98,0x7f,0x88]
522*9880d681SAndroid Build Coastguard Worker; CHECK: ldaxp   x2, x6, [x1]           ; encoding: [0x22,0x98,0x7f,0xc8]
523*9880d681SAndroid Build Coastguard Worker
524*9880d681SAndroid Build Coastguard Worker  stlxr   w8, x7, [x1]
525*9880d681SAndroid Build Coastguard Worker  stlxr   w8, w7, [x1]
526*9880d681SAndroid Build Coastguard Worker  stlxrb  w8, w7, [x1]
527*9880d681SAndroid Build Coastguard Worker  stlxrh  w8, w7, [x1]
528*9880d681SAndroid Build Coastguard Worker  stlxp   w1, x2, x6, [x1]
529*9880d681SAndroid Build Coastguard Worker  stlxp   w1, w2, w6, [x1]
530*9880d681SAndroid Build Coastguard Worker
531*9880d681SAndroid Build Coastguard Worker; CHECK: stlxr  w8, x7, [x1]            ; encoding: [0x27,0xfc,0x08,0xc8]
532*9880d681SAndroid Build Coastguard Worker; CHECK: stlxr  w8, w7, [x1]            ; encoding: [0x27,0xfc,0x08,0x88]
533*9880d681SAndroid Build Coastguard Worker; CHECK: stlxrb w8, w7, [x1]            ; encoding: [0x27,0xfc,0x08,0x08]
534*9880d681SAndroid Build Coastguard Worker; CHECK: stlxrh w8, w7, [x1]            ; encoding: [0x27,0xfc,0x08,0x48]
535*9880d681SAndroid Build Coastguard Worker; CHECK: stlxp  w1, x2, x6, [x1]        ; encoding: [0x22,0x98,0x21,0xc8]
536*9880d681SAndroid Build Coastguard Worker; CHECK: stlxp  w1, w2, w6, [x1]        ; encoding: [0x22,0x98,0x21,0x88]
537*9880d681SAndroid Build Coastguard Worker
538*9880d681SAndroid Build Coastguard Worker
539*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
540*9880d681SAndroid Build Coastguard Worker; LDUR/STUR aliases for negative and unaligned LDR/STR instructions.
541*9880d681SAndroid Build Coastguard Worker;
542*9880d681SAndroid Build Coastguard Worker; According to the ARM ISA documentation:
543*9880d681SAndroid Build Coastguard Worker; "A programmer-friendly assembler should also generate these instructions
544*9880d681SAndroid Build Coastguard Worker; in response to the standard LDR/STR mnemonics when the immediate offset is
545*9880d681SAndroid Build Coastguard Worker; unambiguous, i.e. negative or unaligned."
546*9880d681SAndroid Build Coastguard Worker;-----------------------------------------------------------------------------
547*9880d681SAndroid Build Coastguard Worker
548*9880d681SAndroid Build Coastguard Worker  ldr x11, [x29, #-8]
549*9880d681SAndroid Build Coastguard Worker  ldr x11, [x29, #7]
550*9880d681SAndroid Build Coastguard Worker  ldr w0, [x0, #2]
551*9880d681SAndroid Build Coastguard Worker  ldr w0, [x0, #-256]
552*9880d681SAndroid Build Coastguard Worker  ldr b2, [x1, #-2]
553*9880d681SAndroid Build Coastguard Worker  ldr h3, [x2, #3]
554*9880d681SAndroid Build Coastguard Worker  ldr h3, [x3, #-4]
555*9880d681SAndroid Build Coastguard Worker  ldr s3, [x4, #3]
556*9880d681SAndroid Build Coastguard Worker  ldr s3, [x5, #-4]
557*9880d681SAndroid Build Coastguard Worker  ldr d4, [x6, #4]
558*9880d681SAndroid Build Coastguard Worker  ldr d4, [x7, #-8]
559*9880d681SAndroid Build Coastguard Worker  ldr q5, [x8, #8]
560*9880d681SAndroid Build Coastguard Worker  ldr q5, [x9, #-16]
561*9880d681SAndroid Build Coastguard Worker
562*9880d681SAndroid Build Coastguard Worker; CHECK: ldur	x11, [x29, #-8]          ; encoding: [0xab,0x83,0x5f,0xf8]
563*9880d681SAndroid Build Coastguard Worker; CHECK: ldur	x11, [x29, #7]           ; encoding: [0xab,0x73,0x40,0xf8]
564*9880d681SAndroid Build Coastguard Worker; CHECK: ldur	w0, [x0, #2]            ; encoding: [0x00,0x20,0x40,0xb8]
565*9880d681SAndroid Build Coastguard Worker; CHECK: ldur	w0, [x0, #-256]         ; encoding: [0x00,0x00,0x50,0xb8]
566*9880d681SAndroid Build Coastguard Worker; CHECK: ldur	b2, [x1, #-2]           ; encoding: [0x22,0xe0,0x5f,0x3c]
567*9880d681SAndroid Build Coastguard Worker; CHECK: ldur	h3, [x2, #3]            ; encoding: [0x43,0x30,0x40,0x7c]
568*9880d681SAndroid Build Coastguard Worker; CHECK: ldur	h3, [x3, #-4]           ; encoding: [0x63,0xc0,0x5f,0x7c]
569*9880d681SAndroid Build Coastguard Worker; CHECK: ldur	s3, [x4, #3]            ; encoding: [0x83,0x30,0x40,0xbc]
570*9880d681SAndroid Build Coastguard Worker; CHECK: ldur	s3, [x5, #-4]           ; encoding: [0xa3,0xc0,0x5f,0xbc]
571*9880d681SAndroid Build Coastguard Worker; CHECK: ldur	d4, [x6, #4]            ; encoding: [0xc4,0x40,0x40,0xfc]
572*9880d681SAndroid Build Coastguard Worker; CHECK: ldur	d4, [x7, #-8]           ; encoding: [0xe4,0x80,0x5f,0xfc]
573*9880d681SAndroid Build Coastguard Worker; CHECK: ldur	q5, [x8, #8]            ; encoding: [0x05,0x81,0xc0,0x3c]
574*9880d681SAndroid Build Coastguard Worker; CHECK: ldur	q5, [x9, #-16]          ; encoding: [0x25,0x01,0xdf,0x3c]
575*9880d681SAndroid Build Coastguard Worker
576*9880d681SAndroid Build Coastguard Worker  str x11, [x29, #-8]
577*9880d681SAndroid Build Coastguard Worker  str x11, [x29, #7]
578*9880d681SAndroid Build Coastguard Worker  str w0, [x0, #2]
579*9880d681SAndroid Build Coastguard Worker  str w0, [x0, #-256]
580*9880d681SAndroid Build Coastguard Worker  str b2, [x1, #-2]
581*9880d681SAndroid Build Coastguard Worker  str h3, [x2, #3]
582*9880d681SAndroid Build Coastguard Worker  str h3, [x3, #-4]
583*9880d681SAndroid Build Coastguard Worker  str s3, [x4, #3]
584*9880d681SAndroid Build Coastguard Worker  str s3, [x5, #-4]
585*9880d681SAndroid Build Coastguard Worker  str d4, [x6, #4]
586*9880d681SAndroid Build Coastguard Worker  str d4, [x7, #-8]
587*9880d681SAndroid Build Coastguard Worker  str q5, [x8, #8]
588*9880d681SAndroid Build Coastguard Worker  str q5, [x9, #-16]
589*9880d681SAndroid Build Coastguard Worker
590*9880d681SAndroid Build Coastguard Worker; CHECK: stur	x11, [x29, #-8]          ; encoding: [0xab,0x83,0x1f,0xf8]
591*9880d681SAndroid Build Coastguard Worker; CHECK: stur	x11, [x29, #7]           ; encoding: [0xab,0x73,0x00,0xf8]
592*9880d681SAndroid Build Coastguard Worker; CHECK: stur	w0, [x0, #2]            ; encoding: [0x00,0x20,0x00,0xb8]
593*9880d681SAndroid Build Coastguard Worker; CHECK: stur	w0, [x0, #-256]         ; encoding: [0x00,0x00,0x10,0xb8]
594*9880d681SAndroid Build Coastguard Worker; CHECK: stur	b2, [x1, #-2]           ; encoding: [0x22,0xe0,0x1f,0x3c]
595*9880d681SAndroid Build Coastguard Worker; CHECK: stur	h3, [x2, #3]            ; encoding: [0x43,0x30,0x00,0x7c]
596*9880d681SAndroid Build Coastguard Worker; CHECK: stur	h3, [x3, #-4]           ; encoding: [0x63,0xc0,0x1f,0x7c]
597*9880d681SAndroid Build Coastguard Worker; CHECK: stur	s3, [x4, #3]            ; encoding: [0x83,0x30,0x00,0xbc]
598*9880d681SAndroid Build Coastguard Worker; CHECK: stur	s3, [x5, #-4]           ; encoding: [0xa3,0xc0,0x1f,0xbc]
599*9880d681SAndroid Build Coastguard Worker; CHECK: stur	d4, [x6, #4]            ; encoding: [0xc4,0x40,0x00,0xfc]
600*9880d681SAndroid Build Coastguard Worker; CHECK: stur	d4, [x7, #-8]           ; encoding: [0xe4,0x80,0x1f,0xfc]
601*9880d681SAndroid Build Coastguard Worker; CHECK: stur	q5, [x8, #8]            ; encoding: [0x05,0x81,0x80,0x3c]
602*9880d681SAndroid Build Coastguard Worker; CHECK: stur	q5, [x9, #-16]          ; encoding: [0x25,0x01,0x9f,0x3c]
603*9880d681SAndroid Build Coastguard Worker
604*9880d681SAndroid Build Coastguard Worker  ldrb w3, [x1, #-1]
605*9880d681SAndroid Build Coastguard Worker  ldrh w4, [x2, #1]
606*9880d681SAndroid Build Coastguard Worker  ldrh w5, [x3, #-1]
607*9880d681SAndroid Build Coastguard Worker  ldrsb w6, [x4, #-1]
608*9880d681SAndroid Build Coastguard Worker  ldrsb x7, [x5, #-1]
609*9880d681SAndroid Build Coastguard Worker  ldrsh w8, [x6, #1]
610*9880d681SAndroid Build Coastguard Worker  ldrsh w9, [x7, #-1]
611*9880d681SAndroid Build Coastguard Worker  ldrsh x1, [x8, #1]
612*9880d681SAndroid Build Coastguard Worker  ldrsh x2, [x9, #-1]
613*9880d681SAndroid Build Coastguard Worker  ldrsw x3, [x10, #10]
614*9880d681SAndroid Build Coastguard Worker  ldrsw x4, [x11, #-1]
615*9880d681SAndroid Build Coastguard Worker
616*9880d681SAndroid Build Coastguard Worker; CHECK: ldurb	w3, [x1, #-1]           ; encoding: [0x23,0xf0,0x5f,0x38]
617*9880d681SAndroid Build Coastguard Worker; CHECK: ldurh	w4, [x2, #1]            ; encoding: [0x44,0x10,0x40,0x78]
618*9880d681SAndroid Build Coastguard Worker; CHECK: ldurh	w5, [x3, #-1]           ; encoding: [0x65,0xf0,0x5f,0x78]
619*9880d681SAndroid Build Coastguard Worker; CHECK: ldursb	w6, [x4, #-1]           ; encoding: [0x86,0xf0,0xdf,0x38]
620*9880d681SAndroid Build Coastguard Worker; CHECK: ldursb	x7, [x5, #-1]           ; encoding: [0xa7,0xf0,0x9f,0x38]
621*9880d681SAndroid Build Coastguard Worker; CHECK: ldursh	w8, [x6, #1]            ; encoding: [0xc8,0x10,0xc0,0x78]
622*9880d681SAndroid Build Coastguard Worker; CHECK: ldursh	w9, [x7, #-1]           ; encoding: [0xe9,0xf0,0xdf,0x78]
623*9880d681SAndroid Build Coastguard Worker; CHECK: ldursh	x1, [x8, #1]            ; encoding: [0x01,0x11,0x80,0x78]
624*9880d681SAndroid Build Coastguard Worker; CHECK: ldursh	x2, [x9, #-1]           ; encoding: [0x22,0xf1,0x9f,0x78]
625*9880d681SAndroid Build Coastguard Worker; CHECK: ldursw	x3, [x10, #10]          ; encoding: [0x43,0xa1,0x80,0xb8]
626*9880d681SAndroid Build Coastguard Worker; CHECK: ldursw	x4, [x11, #-1]          ; encoding: [0x64,0xf1,0x9f,0xb8]
627*9880d681SAndroid Build Coastguard Worker
628*9880d681SAndroid Build Coastguard Worker  strb w3, [x1, #-1]
629*9880d681SAndroid Build Coastguard Worker  strh w4, [x2, #1]
630*9880d681SAndroid Build Coastguard Worker  strh w5, [x3, #-1]
631*9880d681SAndroid Build Coastguard Worker
632*9880d681SAndroid Build Coastguard Worker; CHECK: sturb	w3, [x1, #-1]           ; encoding: [0x23,0xf0,0x1f,0x38]
633*9880d681SAndroid Build Coastguard Worker; CHECK: sturh	w4, [x2, #1]            ; encoding: [0x44,0x10,0x00,0x78]
634*9880d681SAndroid Build Coastguard Worker; CHECK: sturh	w5, [x3, #-1]           ; encoding: [0x65,0xf0,0x1f,0x78]
635