1 // RUN
: llvm-mc
-triple
=arm64
-mattr
=+neon
-show-encoding
< %s | FileCheck
%s
3 // Check that the assembler can handle the documented syntax for AArch64
5 //------------------------------------------------------------------------------
6 // Load single
1-element structure to all lanes of
1 register
7 //------------------------------------------------------------------------------
13 ld1r
{ v15.4h
}, [x15
]
16 // CHECK
: ld1r
{ v0.16
b }, [x0
] // encoding
: [0x00,0xc0,0x40,0x4d]
17 // CHECK
: ld1r
{ v15.8h
}, [x15
] // encoding
: [0xef,0xc5,0x40,0x4d]
18 // CHECK
: ld1r
{ v31.4s
}, [sp
] // encoding
: [0xff,0xcb,0x40,0x4d]
19 // CHECK
: ld1r
{ v0.2d
}, [x0
] // encoding
: [0x00,0xcc,0x40,0x4d]
20 // CHECK
: ld1r
{ v0.8
b }, [x0
] // encoding
: [0x00,0xc0,0x40,0x0d]
21 // CHECK
: ld1r
{ v15.4h
}, [x15
] // encoding
: [0xef,0xc5,0x40,0x0d]
22 // CHECK
: ld1r
{ v31.2s
}, [sp
] // encoding
: [0xff,0xcb,0x40,0x0d]
23 // CHECK
: ld1r
{ v0.1d
}, [x0
] // encoding
: [0x00,0xcc,0x40,0x0d]
25 //------------------------------------------------------------------------------
26 // Load single N-element structure to all lanes of N consecutive
27 // registers
(N
= 2,3,4)
28 //------------------------------------------------------------------------------
29 ld2r
{ v0.16
b, v1.16
b }, [x0
]
30 ld2r
{ v15.8h
, v16.8h
}, [x15
]
31 ld2r
{ v31.4s
, v0.4s
}, [sp
]
32 ld2r
{ v0.2d
, v1.2d
}, [x0
]
33 ld2r
{ v0.8
b, v1.8
b }, [x0
]
34 ld2r
{ v15.4h
, v16.4h
}, [x15
]
35 ld2r
{ v31.2s
, v0.2s
}, [sp
]
36 ld2r
{ v31.1d
, v0.1d
}, [sp
]
37 // CHECK
: ld2r
{ v0.16
b, v1.16
b }, [x0
] // encoding
: [0x00,0xc0,0x60,0x4d]
38 // CHECK
: ld2r
{ v15.8h
, v16.8h
}, [x15
] // encoding
: [0xef,0xc5,0x60,0x4d]
39 // CHECK
: ld2r
{ v31.4s
, v0.4s
}, [sp
] // encoding
: [0xff,0xcb,0x60,0x4d]
40 // CHECK
: ld2r
{ v0.2d
, v1.2d
}, [x0
] // encoding
: [0x00,0xcc,0x60,0x4d]
41 // CHECK
: ld2r
{ v0.8
b, v1.8
b }, [x0
] // encoding
: [0x00,0xc0,0x60,0x0d]
42 // CHECK
: ld2r
{ v15.4h
, v16.4h
}, [x15
] // encoding
: [0xef,0xc5,0x60,0x0d]
43 // CHECK
: ld2r
{ v31.2s
, v0.2s
}, [sp
] // encoding
: [0xff,0xcb,0x60,0x0d]
44 // CHECK
: ld2r
{ v31.1d
, v0.1d
}, [sp
] // encoding
: [0xff,0xcf,0x60,0x0d]
46 ld3r
{ v0.16
b, v1.16
b, v2.16
b }, [x0
]
47 ld3r
{ v15.8h
, v16.8h
, v17.8h
}, [x15
]
48 ld3r
{ v31.4s
, v0.4s
, v1.4s
}, [sp
]
49 ld3r
{ v0.2d
, v1.2d
, v2.2d
}, [x0
]
50 ld3r
{ v0.8
b, v1.8
b, v2.8
b }, [x0
]
51 ld3r
{ v15.4h
, v16.4h
, v17.4h
}, [x15
]
52 ld3r
{ v31.2s
, v0.2s
, v1.2s
}, [sp
]
53 ld3r
{ v31.1d
, v0.1d
, v1.1d
}, [sp
]
54 // CHECK
: ld3r
{ v0.16
b, v1.16
b, v2.16
b }, [x0
] // encoding
: [0x00,0xe0,0x40,0x4d]
55 // CHECK
: ld3r
{ v15.8h
, v16.8h
, v17.8h
}, [x15
] // encoding
: [0xef,0xe5,0x40,0x4d]
56 // CHECK
: ld3r
{ v31.4s
, v0.4s
, v1.4s
}, [sp
] // encoding
: [0xff,0xeb,0x40,0x4d]
57 // CHECK
: ld3r
{ v0.2d
, v1.2d
, v2.2d
}, [x0
] // encoding
: [0x00,0xec,0x40,0x4d]
58 // CHECK
: ld3r
{ v0.8
b, v1.8
b, v2.8
b }, [x0
] // encoding
: [0x00,0xe0,0x40,0x0d]
59 // CHECK
: ld3r
{ v15.4h
, v16.4h
, v17.4h
}, [x15
] // encoding
: [0xef,0xe5,0x40,0x0d]
60 // CHECK
: ld3r
{ v31.2s
, v0.2s
, v1.2s
}, [sp
] // encoding
: [0xff,0xeb,0x40,0x0d]
61 // CHECK
: ld3r
{ v31.1d
, v0.1d
, v1.1d
}, [sp
] // encoding
: [0xff,0xef,0x40,0x0d]
63 ld4r
{ v0.16
b, v1.16
b, v2.16
b, v3.16
b }, [x0
]
64 ld4r
{ v15.8h
, v16.8h
, v17.8h
, v18.8h
}, [x15
]
65 ld4r
{ v31.4s
, v0.4s
, v1.4s
, v2.4s
}, [sp
]
66 ld4r
{ v0.2d
, v1.2d
, v2.2d
, v3.2d
}, [x0
]
67 ld4r
{ v0.8
b, v1.8
b, v2.8
b, v3.8
b }, [x0
]
68 ld4r
{ v15.4h
, v16.4h
, v17.4h
, v18.4h
}, [x15
]
69 ld4r
{ v31.2s
, v0.2s
, v1.2s
, v2.2s
}, [sp
]
70 ld4r
{ v31.1d
, v0.1d
, v1.1d
, v2.1d
}, [sp
]
71 // CHECK
: ld4r
{ v0.16
b, v1.16
b, v2.16
b, v3.16
b }, [x0
] // encoding
: [0x00,0xe0,0x60,0x4d]
72 // CHECK
: ld4r
{ v15.8h
, v16.8h
, v17.8h
, v18.8h
}, [x15
] // encoding
: [0xef,0xe5,0x60,0x4d]
73 // CHECK
: ld4r
{ v31.4s
, v0.4s
, v1.4s
, v2.4s
}, [sp
] // encoding
: [0xff,0xeb,0x60,0x4d]
74 // CHECK
: ld4r
{ v0.2d
, v1.2d
, v2.2d
, v3.2d
}, [x0
] // encoding
: [0x00,0xec,0x60,0x4d]
75 // CHECK
: ld4r
{ v0.8
b, v1.8
b, v2.8
b, v3.8
b }, [x0
] // encoding
: [0x00,0xe0,0x60,0x0d]
76 // CHECK
: ld4r
{ v15.4h
, v16.4h
, v17.4h
, v18.4h
}, [x15
] // encoding
: [0xef,0xe5,0x60,0x0d]
77 // CHECK
: ld4r
{ v31.2s
, v0.2s
, v1.2s
, v2.2s
}, [sp
] // encoding
: [0xff,0xeb,0x60,0x0d]
78 // CHECK
: ld4r
{ v31.1d
, v0.1d
, v1.1d
, v2.1d
}, [sp
] // encoding
: [0xff,0xef,0x60,0x0d]
80 //------------------------------------------------------------------------------
81 // Load single
1-element structure to one lane of
1 register.
82 //------------------------------------------------------------------------------
84 ld1
{ v15.h
}[7], [x15
]
85 ld1
{ v31.s
}[3], [sp
]
87 // CHECK
: ld1
{ v0.
b }[9], [x0
] // encoding
: [0x00,0x04,0x40,0x4d]
88 // CHECK
: ld1
{ v15.h
}[7], [x15
] // encoding
: [0xef,0x59,0x40,0x4d]
89 // CHECK
: ld1
{ v31.s
}[3], [sp
] // encoding
: [0xff,0x93,0x40,0x4d]
90 // CHECK
: ld1
{ v0.d
}[1], [x0
] // encoding
: [0x00,0x84,0x40,0x4d]
92 //------------------------------------------------------------------------------
93 // Load single N-element structure to one lane of N consecutive registers
95 //------------------------------------------------------------------------------
96 ld2
{ v0.
b, v1.
b }[9], [x0
]
97 ld2
{ v15.h
, v16.h
}[7], [x15
]
98 ld2
{ v31.s
, v0.s
}[3], [sp
]
99 ld2
{ v0.d
, v1.d
}[1], [x0
]
100 // CHECK
: ld2
{ v0.
b, v1.
b }[9], [x0
] // encoding
: [0x00,0x04,0x60,0x4d]
101 // CHECK
: ld2
{ v15.h
, v16.h
}[7], [x15
] // encoding
: [0xef,0x59,0x60,0x4d]
102 // CHECK
: ld2
{ v31.s
, v0.s
}[3], [sp
] // encoding
: [0xff,0x93,0x60,0x4d]
103 // CHECK
: ld2
{ v0.d
, v1.d
}[1], [x0
] // encoding
: [0x00,0x84,0x60,0x4d]
105 ld3
{ v0.
b, v1.
b, v2.
b }[9], [x0
]
106 ld3
{ v15.h
, v16.h
, v17.h
}[7], [x15
]
107 ld3
{ v31.s
, v0.s
, v1.s
}[3], [sp
]
108 ld3
{ v0.d
, v1.d
, v2.d
}[1], [x0
]
109 // CHECK
: ld3
{ v0.
b, v1.
b, v2.
b }[9], [x0
] // encoding
: [0x00,0x24,0x40,0x4d]
110 // CHECK
: ld3
{ v15.h
, v16.h
, v17.h
}[7], [x15
] // encoding
: [0xef,0x79,0x40,0x4d]
111 // CHECK
: ld3
{ v31.s
, v0.s
, v1.s
}[3], [sp
] // encoding
: [0xff,0xb3,0x40,0x4d]
112 // CHECK
: ld3
{ v0.d
, v1.d
, v2.d
}[1], [x0
] // encoding
: [0x00,0xa4,0x40,0x4d]
114 ld4
{ v0.
b, v1.
b, v2.
b, v3.
b }[9], [x0
]
115 ld4
{ v15.h
, v16.h
, v17.h
, v18.h
}[7], [x15
]
116 ld4
{ v31.s
, v0.s
, v1.s
, v2.s
}[3], [sp
]
117 ld4
{ v0.d
, v1.d
, v2.d
, v3.d
}[1], [x0
]
118 // CHECK
: ld4
{ v0.
b, v1.
b, v2.
b, v3.
b }[9], [x0
] // encoding
: [0x00,0x24,0x60,0x4d]
119 // CHECK
: ld4
{ v15.h
, v16.h
, v17.h
, v18.h
}[7], [x15
] // encoding
: [0xef,0x79,0x60,0x4d]
120 // CHECK
: ld4
{ v31.s
, v0.s
, v1.s
, v2.s
}[3], [sp
] // encoding
: [0xff,0xb3,0x60,0x4d]
121 // CHECK
: ld4
{ v0.d
, v1.d
, v2.d
, v3.d
}[1], [x0
] // encoding
: [0x00,0xa4,0x60,0x4d]
123 //------------------------------------------------------------------------------
124 // Store single
1-element structure from one lane of
1 register.
125 //------------------------------------------------------------------------------
126 st1
{ v0.
b }[9], [x0
]
127 st1
{ v15.h
}[7], [x15
]
128 st1
{ v31.s
}[3], [sp
]
129 st1
{ v0.d
}[1], [x0
]
130 // CHECK
: st1
{ v0.
b }[9], [x0
] // encoding
: [0x00,0x04,0x00,0x4d]
131 // CHECK
: st1
{ v15.h
}[7], [x15
] // encoding
: [0xef,0x59,0x00,0x4d]
132 // CHECK
: st1
{ v31.s
}[3], [sp
] // encoding
: [0xff,0x93,0x00,0x4d]
133 // CHECK
: st1
{ v0.d
}[1], [x0
] // encoding
: [0x00,0x84,0x00,0x4d]
135 //------------------------------------------------------------------------------
136 // Store single N-element structure from one lane of N consecutive registers
138 //------------------------------------------------------------------------------
139 st2
{ v0.
b, v1.
b }[9], [x0
]
140 st2
{ v15.h
, v16.h
}[7], [x15
]
141 st2
{ v31.s
, v0.s
}[3], [sp
]
142 st2
{ v0.d
, v1.d
}[1], [x0
]
143 // CHECK
: st2
{ v0.
b, v1.
b }[9], [x0
] // encoding
: [0x00,0x04,0x20,0x4d]
144 // CHECK
: st2
{ v15.h
, v16.h
}[7], [x15
] // encoding
: [0xef,0x59,0x20,0x4d]
145 // CHECK
: st2
{ v31.s
, v0.s
}[3], [sp
] // encoding
: [0xff,0x93,0x20,0x4d]
146 // CHECK
: st2
{ v0.d
, v1.d
}[1], [x0
] // encoding
: [0x00,0x84,0x20,0x4d]
148 st3
{ v0.
b, v1.
b, v2.
b }[9], [x0
]
149 st3
{ v15.h
, v16.h
, v17.h
}[7], [x15
]
150 st3
{ v31.s
, v0.s
, v1.s
}[3], [sp
]
151 st3
{ v0.d
, v1.d
, v2.d
}[1], [x0
]
152 // CHECK
: st3
{ v0.
b, v1.
b, v2.
b }[9], [x0
] // encoding
: [0x00,0x24,0x00,0x4d]
153 // CHECK
: st3
{ v15.h
, v16.h
, v17.h
}[7], [x15
] // encoding
: [0xef,0x79,0x00,0x4d]
154 // CHECK
: st3
{ v31.s
, v0.s
, v1.s
}[3], [sp
] // encoding
: [0xff,0xb3,0x00,0x4d]
155 // CHECK
: st3
{ v0.d
, v1.d
, v2.d
}[1], [x0
] // encoding
: [0x00,0xa4,0x00,0x4d]
157 st4
{ v0.
b, v1.
b, v2.
b, v3.
b }[9], [x0
]
158 st4
{ v15.h
, v16.h
, v17.h
, v18.h
}[7], [x15
]
159 st4
{ v31.s
, v0.s
, v1.s
, v2.s
}[3], [sp
]
160 st4
{ v0.d
, v1.d
, v2.d
, v3.d
}[1], [x0
]
161 // CHECK
: st4
{ v0.
b, v1.
b, v2.
b, v3.
b }[9], [x0
] // encoding
: [0x00,0x24,0x20,0x4d]
162 // CHECK
: st4
{ v15.h
, v16.h
, v17.h
, v18.h
}[7], [x15
] // encoding
: [0xef,0x79,0x20,0x4d]
163 // CHECK
: st4
{ v31.s
, v0.s
, v1.s
, v2.s
}[3], [sp
] // encoding
: [0xff,0xb3,0x20,0x4d]
164 // CHECK
: st4
{ v0.d
, v1.d
, v2.d
, v3.d
}[1], [x0
] // encoding
: [0x00,0xa4,0x20,0x4d]
166 //------------------------------------------------------------------------------
167 // Post-index oad single
1-element structure to all lanes of
1 register
168 //------------------------------------------------------------------------------
169 ld1r
{ v0.16
b }, [x0
], #1
170 ld1r
{ v15.8h
}, [x15
], #2
171 ld1r
{ v31.4s
}, [sp
], #4
172 ld1r
{ v0.2d
}, [x0
], #8
173 ld1r
{ v0.8
b }, [x0
], x0
174 ld1r
{ v15.4h
}, [x15
], x1
175 ld1r
{ v31.2s
}, [sp
], x2
176 ld1r
{ v0.1d
}, [x0
], x3
177 // CHECK
: ld1r
{ v0.16
b }, [x0
], #1 // encoding: [0x00,0xc0,0xdf,0x4d]
178 // CHECK
: ld1r
{ v15.8h
}, [x15
], #2 // encoding: [0xef,0xc5,0xdf,0x4d]
179 // CHECK
: ld1r
{ v31.4s
}, [sp
], #4 // encoding: [0xff,0xcb,0xdf,0x4d]
180 // CHECK
: ld1r
{ v0.2d
}, [x0
], #8 // encoding: [0x00,0xcc,0xdf,0x4d]
181 // CHECK
: ld1r
{ v0.8
b }, [x0
], x0
// encoding
: [0x00,0xc0,0xc0,0x0d]
182 // CHECK
: ld1r
{ v15.4h
}, [x15
], x1
// encoding
: [0xef,0xc5,0xc1,0x0d]
183 // CHECK
: ld1r
{ v31.2s
}, [sp
], x2
// encoding
: [0xff,0xcb,0xc2,0x0d]
184 // CHECK
: ld1r
{ v0.1d
}, [x0
], x3
// encoding
: [0x00,0xcc,0xc3,0x0d]
186 //------------------------------------------------------------------------------
187 // Post-index load single N-element structure to all lanes of N consecutive
188 // registers
(N
= 2,3,4)
189 //------------------------------------------------------------------------------
190 ld2r
{ v0.16
b, v1.16
b }, [x0
], #2
191 ld2r
{ v15.8h
, v16.8h
}, [x15
], #4
192 ld2r
{ v31.4s
, v0.4s
}, [sp
], #8
193 ld2r
{ v0.2d
, v1.2d
}, [x0
], #16
194 ld2r
{ v0.8
b, v1.8
b }, [x0
], x6
195 ld2r
{ v15.4h
, v16.4h
}, [x15
], x7
196 ld2r
{ v31.2s
, v0.2s
}, [sp
], x9
197 ld2r
{ v31.1d
, v0.1d
}, [x0
], x5
198 // CHECK
: ld2r
{ v0.16
b, v1.16
b }, [x0
], #2 // encoding: [0x00,0xc0,0xff,0x4d]
199 // CHECK
: ld2r
{ v15.8h
, v16.8h
}, [x15
], #4 // encoding: [0xef,0xc5,0xff,0x4d]
200 // CHECK
: ld2r
{ v31.4s
, v0.4s
}, [sp
], #8 // encoding: [0xff,0xcb,0xff,0x4d]
201 // CHECK
: ld2r
{ v0.2d
, v1.2d
}, [x0
], #16 // encoding: [0x00,0xcc,0xff,0x4d]
202 // CHECK
: ld2r
{ v0.8
b, v1.8
b }, [x0
], x6
// encoding
: [0x00,0xc0,0xe6,0x0d]
203 // CHECK
: ld2r
{ v15.4h
, v16.4h
}, [x15
], x7
// encoding
: [0xef,0xc5,0xe7,0x0d]
204 // CHECK
: ld2r
{ v31.2s
, v0.2s
}, [sp
], x9
// encoding
: [0xff,0xcb,0xe9,0x0d]
205 // CHECK
: ld2r
{ v31.1d
, v0.1d
}, [x0
], x5
// encoding
: [0x1f,0xcc,0xe5,0x0d]
207 ld3r
{ v0.16
b, v1.16
b, v2.16
b }, [x0
], x9
208 ld3r
{ v15.8h
, v16.8h
, v17.8h
}, [x15
], x6
209 ld3r
{ v31.4s
, v0.4s
, v1.4s
}, [sp
], x7
210 ld3r
{ v0.2d
, v1.2d
, v2.2d
}, [x0
], x5
211 ld3r
{ v0.8
b, v1.8
b, v2.8
b }, [x0
], #3
212 ld3r
{ v15.4h
, v16.4h
, v17.4h
}, [x15
], #6
213 ld3r
{ v31.2s
, v0.2s
, v1.2s
}, [sp
], #12
214 ld3r
{ v31.1d
, v0.1d
, v1.1d
}, [sp
], #24
215 // CHECK
: ld3r
{ v0.16
b, v1.16
b, v2.16
b }, [x0
], x9
// encoding
: [0x00,0xe0,0xc9,0x4d]
216 // CHECK
: ld3r
{ v15.8h
, v16.8h
, v17.8h
}, [x15
], x6
// encoding
: [0xef,0xe5,0xc6,0x4d]
217 // CHECK
: ld3r
{ v31.4s
, v0.4s
, v1.4s
}, [sp
], x7
// encoding
: [0xff,0xeb,0xc7,0x4d]
218 // CHECK
: ld3r
{ v0.2d
, v1.2d
, v2.2d
}, [x0
], x5
// encoding
: [0x00,0xec,0xc5,0x4d]
219 // CHECK
: ld3r
{ v0.8
b, v1.8
b, v2.8
b }, [x0
], #3 // encoding: [0x00,0xe0,0xdf,0x0d]
220 // CHECK
: ld3r
{ v15.4h
, v16.4h
, v17.4h
}, [x15
], #6 // encoding: [0xef,0xe5,0xdf,0x0d]
221 // CHECK
: ld3r
{ v31.2s
, v0.2s
, v1.2s
}, [sp
], #12 // encoding: [0xff,0xeb,0xdf,0x0d]
222 // CHECK
: ld3r
{ v31.1d
, v0.1d
, v1.1d
}, [sp
], #24 // encoding: [0xff,0xef,0xdf,0x0d]
224 ld4r
{ v0.16
b, v1.16
b, v2.16
b, v3.16
b }, [x0
], #4
225 ld4r
{ v15.8h
, v16.8h
, v17.8h
, v18.8h
}, [x15
], #8
226 ld4r
{ v31.4s
, v0.4s
, v1.4s
, v2.4s
}, [sp
], #16
227 ld4r
{ v0.2d
, v1.2d
, v2.2d
, v3.2d
}, [x0
], #32
228 ld4r
{ v0.8
b, v1.8
b, v2.8
b, v3.8
b }, [x0
], x5
229 ld4r
{ v15.4h
, v16.4h
, v17.4h
, v18.4h
}, [x15
], x9
230 ld4r
{ v31.2s
, v0.2s
, v1.2s
, v2.2s
}, [sp
], x30
231 ld4r
{ v31.1d
, v0.1d
, v1.1d
, v2.1d
}, [sp
], x7
232 // CHECK
: ld4r
{ v0.16
b, v1.16
b, v2.16
b, v3.16
b }, [x0
], #4 // encoding: [0x00,0xe0,0xff,0x4d]
233 // CHECK
: ld4r
{ v15.8h
, v16.8h
, v17.8h
, v18.8h
}, [x15
], #8 // encoding: [0xef,0xe5,0xff,0x4d]
234 // CHECK
: ld4r
{ v31.4s
, v0.4s
, v1.4s
, v2.4s
}, [sp
], #16 // encoding: [0xff,0xeb,0xff,0x4d]
235 // CHECK
: ld4r
{ v0.2d
, v1.2d
, v2.2d
, v3.2d
}, [x0
], #32 // encoding: [0x00,0xec,0xff,0x4d]
236 // CHECK
: ld4r
{ v0.8
b, v1.8
b, v2.8
b, v3.8
b }, [x0
], x5
// encoding
: [0x00,0xe0,0xe5,0x0d]
237 // CHECK
: ld4r
{ v15.4h
, v16.4h
, v17.4h
, v18.4h
}, [x15
], x9
// encoding
: [0xef,0xe5,0xe9,0x0d]
238 // CHECK
: ld4r
{ v31.2s
, v0.2s
, v1.2s
, v2.2s
}, [sp
], x30
// encoding
: [0xff,0xeb,0xfe,0x0d]
239 // CHECK
: ld4r
{ v31.1d
, v0.1d
, v1.1d
, v2.1d
}, [sp
], x7
// encoding
: [0xff,0xef,0xe7,0x0d]
241 //------------------------------------------------------------------------------
242 // Post-index load single
1-element structure to one lane of
1 register.
243 //------------------------------------------------------------------------------
244 ld1
{ v0.
b }[9], [x0
], #1
245 ld1
{ v15.h
}[7], [x15
], x9
246 ld1
{ v31.s
}[3], [sp
], x6
247 ld1
{ v0.d
}[1], [x0
], #8
248 // CHECK
: ld1
{ v0.
b }[9], [x0
], #1 // encoding: [0x00,0x04,0xdf,0x4d]
249 // CHECK
: ld1
{ v15.h
}[7], [x15
], x9
// encoding
: [0xef,0x59,0xc9,0x4d]
250 // CHECK
: ld1
{ v31.s
}[3], [sp
], x6
// encoding
: [0xff,0x93,0xc6,0x4d]
251 // CHECK
: ld1
{ v0.d
}[1], [x0
], #8 // encoding: [0x00,0x84,0xdf,0x4d]
253 //------------------------------------------------------------------------------
254 // Post-index load single N-element structure to one lane of N consecutive
255 // registers
(N
= 2,3,4)
256 //------------------------------------------------------------------------------
257 ld2
{ v0.
b, v1.
b }[9], [x0
], x3
258 ld2
{ v15.h
, v16.h
}[7], [x15
], #4
259 ld2
{ v31.s
, v0.s
}[3], [sp
], #8
260 ld2
{ v0.d
, v1.d
}[1], [x0
], x0
261 // CHECK
: ld2
{ v0.
b, v1.
b }[9], [x0
], x3
// encoding
: [0x00,0x04,0xe3,0x4d]
262 // CHECK
: ld2
{ v15.h
, v16.h
}[7], [x15
], #4 // encoding: [0xef,0x59,0xff,0x4d]
263 // CHECK
: ld2
{ v31.s
, v0.s
}[3], [sp
], #8 // encoding: [0xff,0x93,0xff,0x4d]
264 // CHECK
: ld2
{ v0.d
, v1.d
}[1], [x0
], x0
// encoding
: [0x00,0x84,0xe0,0x4d]
266 ld3
{ v0.
b, v1.
b, v2.
b }[9], [x0
], #3
267 ld3
{ v15.h
, v16.h
, v17.h
}[7], [x15
], #6
268 ld3
{ v31.s
, v0.s
, v1.s
}[3], [sp
], x3
269 ld3
{ v0.d
, v1.d
, v2.d
}[1], [x0
], x6
270 // CHECK
: ld3
{ v0.
b, v1.
b, v2.
b }[9], [x0
], #3 // encoding: [0x00,0x24,0xdf,0x4d]
271 // CHECK
: ld3
{ v15.h
, v16.h
, v17.h
}[7], [x15
], #6 // encoding: [0xef,0x79,0xdf,0x4d]
272 // CHECK
: ld3
{ v31.s
, v0.s
, v1.s
}[3], [sp
], x3
// encoding
: [0xff,0xb3,0xc3,0x4d]
273 // CHECK
: ld3
{ v0.d
, v1.d
, v2.d
}[1], [x0
], x6
// encoding
: [0x00,0xa4,0xc6,0x4d]
275 ld4
{ v0.
b, v1.
b, v2.
b, v3.
b }[9], [x0
], x5
276 ld4
{ v15.h
, v16.h
, v17.h
, v18.h
}[7], [x15
], x7
277 ld4
{ v31.s
, v0.s
, v1.s
, v2.s
}[3], [sp
], #16
278 ld4
{ v0.d
, v1.d
, v2.d
, v3.d
}[1], [x0
], #32
279 // CHECK
: ld4
{ v0.
b, v1.
b, v2.
b, v3.
b }[9], [x0
], x5
// encoding
: [0x00,0x24,0xe5,0x4d]
280 // CHECK
: ld4
{ v15.h
, v16.h
, v17.h
, v18.h
}[7], [x15
], x7
// encoding
: [0xef,0x79,0xe7,0x4d]
281 // CHECK
: ld4
{ v31.s
, v0.s
, v1.s
, v2.s
}[3], [sp
], #16 // encoding: [0xff,0xb3,0xff,0x4d]
282 // CHECK
: ld4
{ v0.d
, v1.d
, v2.d
, v3.d
}[1], [x0
], #32 // encoding: [0x00,0xa4,0xff,0x4d]
284 //------------------------------------------------------------------------------
285 // Post-index store single
1-element structure from one lane of
1 register.
286 //------------------------------------------------------------------------------
287 st1
{ v0.
b }[9], [x0
], #1
288 st1
{ v15.h
}[7], [x15
], x9
289 st1
{ v31.s
}[3], [sp
], x6
290 st1
{ v0.d
}[1], [x0
], #8
291 // CHECK
: st1
{ v0.
b }[9], [x0
], #1 // encoding: [0x00,0x04,0x9f,0x4d]
292 // CHECK
: st1
{ v15.h
}[7], [x15
], x9
// encoding
: [0xef,0x59,0x89,0x4d]
293 // CHECK
: st1
{ v31.s
}[3], [sp
], x6
// encoding
: [0xff,0x93,0x86,0x4d]
294 // CHECK
: st1
{ v0.d
}[1], [x0
], #8 // encoding: [0x00,0x84,0x9f,0x4d]
296 //------------------------------------------------------------------------------
297 // Post-index store single N-element structure from one lane of N consecutive
298 // registers
(N
= 2,3,4)
299 //------------------------------------------------------------------------------
300 st2
{ v0.
b, v1.
b }[9], [x0
], x3
301 st2
{ v15.h
, v16.h
}[7], [x15
], #4
302 st2
{ v31.s
, v0.s
}[3], [sp
], #8
303 st2
{ v0.d
, v1.d
}[1], [x0
], x0
304 // CHECK
: st2
{ v0.
b, v1.
b }[9], [x0
], x3
// encoding
: [0x00,0x04,0xa3,0x4d]
305 // CHECK
: st2
{ v15.h
, v16.h
}[7], [x15
], #4 // encoding: [0xef,0x59,0xbf,0x4d]
306 // CHECK
: st2
{ v31.s
, v0.s
}[3], [sp
], #8 // encoding: [0xff,0x93,0xbf,0x4d]
307 // CHECK
: st2
{ v0.d
, v1.d
}[1], [x0
], x0
// encoding
: [0x00,0x84,0xa0,0x4d]
309 st3
{ v0.
b, v1.
b, v2.
b }[9], [x0
], #3
310 st3
{ v15.h
, v16.h
, v17.h
}[7], [x15
], #6
311 st3
{ v31.s
, v0.s
, v1.s
}[3], [sp
], x3
312 st3
{ v0.d
, v1.d
, v2.d
}[1], [x0
], x6
313 // CHECK
: st3
{ v0.
b, v1.
b, v2.
b }[9], [x0
], #3 // encoding: [0x00,0x24,0x9f,0x4d]
314 // CHECK
: st3
{ v15.h
, v16.h
, v17.h
}[7], [x15
], #6 // encoding: [0xef,0x79,0x9f,0x4d]
315 // CHECK
: st3
{ v31.s
, v0.s
, v1.s
}[3], [sp
], x3
// encoding
: [0xff,0xb3,0x83,0x4d]
316 // CHECK
: st3
{ v0.d
, v1.d
, v2.d
}[1], [x0
], x6
// encoding
: [0x00,0xa4,0x86,0x4d]
318 st4
{ v0.
b, v1.
b, v2.
b, v3.
b }[9], [x0
], x5
319 st4
{ v15.h
, v16.h
, v17.h
, v18.h
}[7], [x15
], x7
320 st4
{ v31.s
, v0.s
, v1.s
, v2.s
}[3], [sp
], #16
321 st4
{ v0.d
, v1.d
, v2.d
, v3.d
}[1], [x0
], #32
322 // CHECK
: st4
{ v0.
b, v1.
b, v2.
b, v3.
b }[9], [x0
], x5
// encoding
: [0x00,0x24,0xa5,0x4d]
323 // CHECK
: st4
{ v15.h
, v16.h
, v17.h
, v18.h
}[7], [x15
], x7
// encoding
: [0xef,0x79,0xa7,0x4d]
324 // CHECK
: st4
{ v31.s
, v0.s
, v1.s
, v2.s
}[3], [sp
], #16 // encoding: [0xff,0xb3,0xbf,0x4d]
325 // CHECK
: st4
{ v0.d
, v1.d
, v2.d
, v3.d
}[1], [x0
], #32 // encoding: [0x00,0xa4,0xbf,0x4d]