1#![allow(improper_ctypes)]
9
10#[cfg(test)]
11use stdarch_test::assert_instr;
12
13use super::*;
14
15#[doc = "CRC32 single round checksum for bytes (8 bits)."]
16#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/__crc32b)"]
17#[inline]
18#[target_feature(enable = "crc")]
19#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
20#[cfg_attr(test, assert_instr(crc32b))]
21#[cfg_attr(
22 target_arch = "arm",
23 unstable(feature = "stdarch_aarch32_crc32", issue = "125085")
24)]
25#[cfg_attr(
26 not(target_arch = "arm"),
27 stable(feature = "stdarch_aarch64_crc32", since = "1.80.0")
28)]
29pub fn __crc32b(crc: u32, data: u8) -> u32 {
30 unsafe extern "unadjusted" {
31 #[cfg_attr(
32 any(target_arch = "aarch64", target_arch = "arm64ec"),
33 link_name = "llvm.aarch64.crc32b"
34 )]
35 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.crc32b")]
36 fn ___crc32b(crc: u32, data: u32) -> u32;
37 }
38 unsafe { ___crc32b(crc, data as u32) }
39}
40#[doc = "CRC32-C single round checksum for bytes (8 bits)."]
41#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/__crc32cb)"]
42#[inline]
43#[target_feature(enable = "crc")]
44#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
45#[cfg_attr(test, assert_instr(crc32cb))]
46#[cfg_attr(
47 target_arch = "arm",
48 unstable(feature = "stdarch_aarch32_crc32", issue = "125085")
49)]
50#[cfg_attr(
51 not(target_arch = "arm"),
52 stable(feature = "stdarch_aarch64_crc32", since = "1.80.0")
53)]
54pub fn __crc32cb(crc: u32, data: u8) -> u32 {
55 unsafe extern "unadjusted" {
56 #[cfg_attr(
57 any(target_arch = "aarch64", target_arch = "arm64ec"),
58 link_name = "llvm.aarch64.crc32cb"
59 )]
60 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.crc32cb")]
61 fn ___crc32cb(crc: u32, data: u32) -> u32;
62 }
63 unsafe { ___crc32cb(crc, data as u32) }
64}
65#[doc = "CRC32-C single round checksum for quad words (64 bits)."]
66#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/__crc32cd)"]
67#[inline]
68#[target_feature(enable = "crc")]
69#[cfg(target_arch = "arm")]
70#[cfg_attr(test, assert_instr(crc32cw))]
71#[cfg_attr(
72 target_arch = "arm",
73 unstable(feature = "stdarch_aarch32_crc32", issue = "125085")
74)]
75pub fn __crc32cd(crc: u32, data: u64) -> u32 {
76 let b: u32 = (data & 0xFFFFFFFF) as u32;
77 let c: u32 = (data >> 32) as u32;
78 unsafe extern "unadjusted" {
79 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.crc32cw")]
80 fn ___crc32cw(crc: u32, data: u32) -> u32;
81 }
82 unsafe { ___crc32cw(___crc32cw(crc, b), c) }
83}
84#[doc = "CRC32-C single round checksum for bytes (16 bits)."]
85#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/__crc32ch)"]
86#[inline]
87#[target_feature(enable = "crc")]
88#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
89#[cfg_attr(test, assert_instr(crc32ch))]
90#[cfg_attr(
91 target_arch = "arm",
92 unstable(feature = "stdarch_aarch32_crc32", issue = "125085")
93)]
94#[cfg_attr(
95 not(target_arch = "arm"),
96 stable(feature = "stdarch_aarch64_crc32", since = "1.80.0")
97)]
98pub fn __crc32ch(crc: u32, data: u16) -> u32 {
99 unsafe extern "unadjusted" {
100 #[cfg_attr(
101 any(target_arch = "aarch64", target_arch = "arm64ec"),
102 link_name = "llvm.aarch64.crc32ch"
103 )]
104 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.crc32ch")]
105 fn ___crc32ch(crc: u32, data: u32) -> u32;
106 }
107 unsafe { ___crc32ch(crc, data as u32) }
108}
109#[doc = "CRC32-C single round checksum for bytes (32 bits)."]
110#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/__crc32cw)"]
111#[inline]
112#[target_feature(enable = "crc")]
113#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
114#[cfg_attr(test, assert_instr(crc32cw))]
115#[cfg_attr(
116 target_arch = "arm",
117 unstable(feature = "stdarch_aarch32_crc32", issue = "125085")
118)]
119#[cfg_attr(
120 not(target_arch = "arm"),
121 stable(feature = "stdarch_aarch64_crc32", since = "1.80.0")
122)]
123pub fn __crc32cw(crc: u32, data: u32) -> u32 {
124 unsafe extern "unadjusted" {
125 #[cfg_attr(
126 any(target_arch = "aarch64", target_arch = "arm64ec"),
127 link_name = "llvm.aarch64.crc32cw"
128 )]
129 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.crc32cw")]
130 fn ___crc32cw(crc: u32, data: u32) -> u32;
131 }
132 unsafe { ___crc32cw(crc, data) }
133}
134#[doc = "CRC32 single round checksum for quad words (64 bits)."]
135#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/__crc32d)"]
136#[inline]
137#[target_feature(enable = "crc")]
138#[cfg(target_arch = "arm")]
139#[cfg_attr(test, assert_instr(crc32w))]
140#[cfg_attr(
141 target_arch = "arm",
142 unstable(feature = "stdarch_aarch32_crc32", issue = "125085")
143)]
144pub fn __crc32d(crc: u32, data: u64) -> u32 {
145 let b: u32 = (data & 0xFFFFFFFF) as u32;
146 let c: u32 = (data >> 32) as u32;
147 unsafe extern "unadjusted" {
148 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.crc32w")]
149 fn ___crc32w(crc: u32, data: u32) -> u32;
150 }
151 unsafe { ___crc32w(___crc32w(crc, b), c) }
152}
153#[doc = "CRC32 single round checksum for bytes (16 bits)."]
154#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/__crc32h)"]
155#[inline]
156#[target_feature(enable = "crc")]
157#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
158#[cfg_attr(test, assert_instr(crc32h))]
159#[cfg_attr(
160 target_arch = "arm",
161 unstable(feature = "stdarch_aarch32_crc32", issue = "125085")
162)]
163#[cfg_attr(
164 not(target_arch = "arm"),
165 stable(feature = "stdarch_aarch64_crc32", since = "1.80.0")
166)]
167pub fn __crc32h(crc: u32, data: u16) -> u32 {
168 unsafe extern "unadjusted" {
169 #[cfg_attr(
170 any(target_arch = "aarch64", target_arch = "arm64ec"),
171 link_name = "llvm.aarch64.crc32h"
172 )]
173 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.crc32h")]
174 fn ___crc32h(crc: u32, data: u32) -> u32;
175 }
176 unsafe { ___crc32h(crc, data as u32) }
177}
178#[doc = "CRC32 single round checksum for bytes (32 bits)."]
179#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/__crc32w)"]
180#[inline]
181#[target_feature(enable = "crc")]
182#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
183#[cfg_attr(test, assert_instr(crc32w))]
184#[cfg_attr(
185 target_arch = "arm",
186 unstable(feature = "stdarch_aarch32_crc32", issue = "125085")
187)]
188#[cfg_attr(
189 not(target_arch = "arm"),
190 stable(feature = "stdarch_aarch64_crc32", since = "1.80.0")
191)]
192pub fn __crc32w(crc: u32, data: u32) -> u32 {
193 unsafe extern "unadjusted" {
194 #[cfg_attr(
195 any(target_arch = "aarch64", target_arch = "arm64ec"),
196 link_name = "llvm.aarch64.crc32w"
197 )]
198 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.crc32w")]
199 fn ___crc32w(crc: u32, data: u32) -> u32;
200 }
201 unsafe { ___crc32w(crc, data) }
202}
203#[doc = "Signed Add and Accumulate Long Pairwise."]
204#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/priv_vpadal_s8)"]
205#[inline]
206#[target_feature(enable = "neon")]
207#[cfg(target_arch = "arm")]
208#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
209#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s8"))]
210#[cfg_attr(
211 target_arch = "arm",
212 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
213)]
214fn priv_vpadal_s8(a: int16x4_t, b: int8x8_t) -> int16x4_t {
215 unsafe extern "unadjusted" {
216 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadals.v4i16.v8i8")]
217 fn _priv_vpadal_s8(a: int16x4_t, b: int8x8_t) -> int16x4_t;
218 }
219 unsafe { _priv_vpadal_s8(a, b) }
220}
221#[doc = "Signed Add and Accumulate Long Pairwise."]
222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/priv_vpadalq_s8)"]
223#[inline]
224#[target_feature(enable = "neon")]
225#[cfg(target_arch = "arm")]
226#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
227#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s8"))]
228#[cfg_attr(
229 target_arch = "arm",
230 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
231)]
232fn priv_vpadalq_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {
233 unsafe extern "unadjusted" {
234 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadals.v8i16.v16i8")]
235 fn _priv_vpadalq_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t;
236 }
237 unsafe { _priv_vpadalq_s8(a, b) }
238}
239#[doc = "Signed Add and Accumulate Long Pairwise."]
240#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/priv_vpadal_s16)"]
241#[inline]
242#[target_feature(enable = "neon")]
243#[cfg(target_arch = "arm")]
244#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
245#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s16"))]
246#[cfg_attr(
247 target_arch = "arm",
248 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
249)]
250fn priv_vpadal_s16(a: int32x2_t, b: int16x4_t) -> int32x2_t {
251 unsafe extern "unadjusted" {
252 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadals.v2i32.v4i16")]
253 fn _priv_vpadal_s16(a: int32x2_t, b: int16x4_t) -> int32x2_t;
254 }
255 unsafe { _priv_vpadal_s16(a, b) }
256}
257#[doc = "Signed Add and Accumulate Long Pairwise."]
258#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/priv_vpadalq_s16)"]
259#[inline]
260#[target_feature(enable = "neon")]
261#[cfg(target_arch = "arm")]
262#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
263#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s16"))]
264#[cfg_attr(
265 target_arch = "arm",
266 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
267)]
268fn priv_vpadalq_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {
269 unsafe extern "unadjusted" {
270 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadals.v4i32.v8i16")]
271 fn _priv_vpadalq_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t;
272 }
273 unsafe { _priv_vpadalq_s16(a, b) }
274}
275#[doc = "Signed Add and Accumulate Long Pairwise."]
276#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/priv_vpadal_s32)"]
277#[inline]
278#[target_feature(enable = "neon")]
279#[cfg(target_arch = "arm")]
280#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
281#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s32"))]
282#[cfg_attr(
283 target_arch = "arm",
284 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
285)]
286fn priv_vpadal_s32(a: int64x1_t, b: int32x2_t) -> int64x1_t {
287 unsafe extern "unadjusted" {
288 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadals.v1i64.v2i32")]
289 fn _priv_vpadal_s32(a: int64x1_t, b: int32x2_t) -> int64x1_t;
290 }
291 unsafe { _priv_vpadal_s32(a, b) }
292}
293#[doc = "Signed Add and Accumulate Long Pairwise."]
294#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/priv_vpadalq_s32)"]
295#[inline]
296#[target_feature(enable = "neon")]
297#[cfg(target_arch = "arm")]
298#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
299#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s32"))]
300#[cfg_attr(
301 target_arch = "arm",
302 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
303)]
304fn priv_vpadalq_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {
305 unsafe extern "unadjusted" {
306 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadals.v2i64.v4i32")]
307 fn _priv_vpadalq_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t;
308 }
309 unsafe { _priv_vpadalq_s32(a, b) }
310}
311#[doc = "Signed Add and Accumulate Long Pairwise."]
312#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/priv_vpadal_u8)"]
313#[inline]
314#[target_feature(enable = "neon")]
315#[cfg(target_arch = "arm")]
316#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
317#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u8"))]
318#[cfg_attr(
319 target_arch = "arm",
320 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
321)]
322fn priv_vpadal_u8(a: uint16x4_t, b: uint8x8_t) -> uint16x4_t {
323 unsafe extern "unadjusted" {
324 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadalu.v4i16.v8i8")]
325 fn _priv_vpadal_u8(a: uint16x4_t, b: uint8x8_t) -> uint16x4_t;
326 }
327 unsafe { _priv_vpadal_u8(a, b) }
328}
329#[doc = "Signed Add and Accumulate Long Pairwise."]
330#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/priv_vpadalq_u8)"]
331#[inline]
332#[target_feature(enable = "neon")]
333#[cfg(target_arch = "arm")]
334#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
335#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u8"))]
336#[cfg_attr(
337 target_arch = "arm",
338 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
339)]
340fn priv_vpadalq_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {
341 unsafe extern "unadjusted" {
342 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadalu.v8i16.v16i8")]
343 fn _priv_vpadalq_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t;
344 }
345 unsafe { _priv_vpadalq_u8(a, b) }
346}
347#[doc = "Signed Add and Accumulate Long Pairwise."]
348#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/priv_vpadal_u16)"]
349#[inline]
350#[target_feature(enable = "neon")]
351#[cfg(target_arch = "arm")]
352#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
353#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u16"))]
354#[cfg_attr(
355 target_arch = "arm",
356 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
357)]
358fn priv_vpadal_u16(a: uint32x2_t, b: uint16x4_t) -> uint32x2_t {
359 unsafe extern "unadjusted" {
360 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadalu.v2i32.v4i16")]
361 fn _priv_vpadal_u16(a: uint32x2_t, b: uint16x4_t) -> uint32x2_t;
362 }
363 unsafe { _priv_vpadal_u16(a, b) }
364}
365#[doc = "Signed Add and Accumulate Long Pairwise."]
366#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/priv_vpadalq_u16)"]
367#[inline]
368#[target_feature(enable = "neon")]
369#[cfg(target_arch = "arm")]
370#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
371#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u16"))]
372#[cfg_attr(
373 target_arch = "arm",
374 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
375)]
376fn priv_vpadalq_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {
377 unsafe extern "unadjusted" {
378 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadalu.v4i32.v8i16")]
379 fn _priv_vpadalq_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t;
380 }
381 unsafe { _priv_vpadalq_u16(a, b) }
382}
383#[doc = "Signed Add and Accumulate Long Pairwise."]
384#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/priv_vpadal_u32)"]
385#[inline]
386#[target_feature(enable = "neon")]
387#[cfg(target_arch = "arm")]
388#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
389#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u32"))]
390#[cfg_attr(
391 target_arch = "arm",
392 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
393)]
394fn priv_vpadal_u32(a: uint64x1_t, b: uint32x2_t) -> uint64x1_t {
395 unsafe extern "unadjusted" {
396 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadalu.v1i64.v2i32")]
397 fn _priv_vpadal_u32(a: uint64x1_t, b: uint32x2_t) -> uint64x1_t;
398 }
399 unsafe { _priv_vpadal_u32(a, b) }
400}
401#[doc = "Signed Add and Accumulate Long Pairwise."]
402#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/priv_vpadalq_u32)"]
403#[inline]
404#[target_feature(enable = "neon")]
405#[cfg(target_arch = "arm")]
406#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
407#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u32"))]
408#[cfg_attr(
409 target_arch = "arm",
410 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
411)]
412fn priv_vpadalq_u32(a: uint64x2_t, b: uint32x4_t) -> uint64x2_t {
413 unsafe extern "unadjusted" {
414 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadalu.v2i64.v4i32")]
415 fn _priv_vpadalq_u32(a: uint64x2_t, b: uint32x4_t) -> uint64x2_t;
416 }
417 unsafe { _priv_vpadalq_u32(a, b) }
418}
419#[doc = "Absolute difference and accumulate (64-bit)"]
420#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaba_s16)"]
421#[inline]
422#[target_feature(enable = "neon")]
423#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
424#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vaba.s16"))]
425#[cfg_attr(
426 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
427 assert_instr(saba)
428)]
429#[cfg_attr(
430 not(target_arch = "arm"),
431 stable(feature = "neon_intrinsics", since = "1.59.0")
432)]
433#[cfg_attr(
434 target_arch = "arm",
435 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
436)]
437pub fn vaba_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
438 unsafe { simd_add(a, vabd_s16(b, c)) }
439}
440#[doc = "Absolute difference and accumulate (64-bit)"]
441#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaba_s32)"]
442#[inline]
443#[target_feature(enable = "neon")]
444#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
445#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vaba.s32"))]
446#[cfg_attr(
447 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
448 assert_instr(saba)
449)]
450#[cfg_attr(
451 not(target_arch = "arm"),
452 stable(feature = "neon_intrinsics", since = "1.59.0")
453)]
454#[cfg_attr(
455 target_arch = "arm",
456 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
457)]
458pub fn vaba_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
459 unsafe { simd_add(a, vabd_s32(b, c)) }
460}
461#[doc = "Absolute difference and accumulate (64-bit)"]
462#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaba_s8)"]
463#[inline]
464#[target_feature(enable = "neon")]
465#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
466#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vaba.s8"))]
467#[cfg_attr(
468 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
469 assert_instr(saba)
470)]
471#[cfg_attr(
472 not(target_arch = "arm"),
473 stable(feature = "neon_intrinsics", since = "1.59.0")
474)]
475#[cfg_attr(
476 target_arch = "arm",
477 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
478)]
479pub fn vaba_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
480 unsafe { simd_add(a, vabd_s8(b, c)) }
481}
482#[doc = "Absolute difference and accumulate (64-bit)"]
483#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaba_u16)"]
484#[inline]
485#[target_feature(enable = "neon")]
486#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
487#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vaba.u16"))]
488#[cfg_attr(
489 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
490 assert_instr(uaba)
491)]
492#[cfg_attr(
493 not(target_arch = "arm"),
494 stable(feature = "neon_intrinsics", since = "1.59.0")
495)]
496#[cfg_attr(
497 target_arch = "arm",
498 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
499)]
500pub fn vaba_u16(a: uint16x4_t, b: uint16x4_t, c: uint16x4_t) -> uint16x4_t {
501 unsafe { simd_add(a, vabd_u16(b, c)) }
502}
503#[doc = "Absolute difference and accumulate (64-bit)"]
504#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaba_u32)"]
505#[inline]
506#[target_feature(enable = "neon")]
507#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
508#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vaba.u32"))]
509#[cfg_attr(
510 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
511 assert_instr(uaba)
512)]
513#[cfg_attr(
514 not(target_arch = "arm"),
515 stable(feature = "neon_intrinsics", since = "1.59.0")
516)]
517#[cfg_attr(
518 target_arch = "arm",
519 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
520)]
521pub fn vaba_u32(a: uint32x2_t, b: uint32x2_t, c: uint32x2_t) -> uint32x2_t {
522 unsafe { simd_add(a, vabd_u32(b, c)) }
523}
524#[doc = "Absolute difference and accumulate (64-bit)"]
525#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaba_u8)"]
526#[inline]
527#[target_feature(enable = "neon")]
528#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
529#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vaba.u8"))]
530#[cfg_attr(
531 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
532 assert_instr(uaba)
533)]
534#[cfg_attr(
535 not(target_arch = "arm"),
536 stable(feature = "neon_intrinsics", since = "1.59.0")
537)]
538#[cfg_attr(
539 target_arch = "arm",
540 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
541)]
542pub fn vaba_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
543 unsafe { simd_add(a, vabd_u8(b, c)) }
544}
545#[doc = "Signed Absolute difference and Accumulate Long"]
546#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabal_s8)"]
547#[inline]
548#[target_feature(enable = "neon")]
549#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
550#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabal.s8"))]
551#[cfg_attr(
552 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
553 assert_instr(sabal)
554)]
555#[cfg_attr(
556 not(target_arch = "arm"),
557 stable(feature = "neon_intrinsics", since = "1.59.0")
558)]
559#[cfg_attr(
560 target_arch = "arm",
561 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
562)]
563pub fn vabal_s8(a: int16x8_t, b: int8x8_t, c: int8x8_t) -> int16x8_t {
564 let d: int8x8_t = vabd_s8(b, c);
565 unsafe {
566 let e: uint8x8_t = simd_cast(d);
567 simd_add(a, simd_cast(e))
568 }
569}
570#[doc = "Signed Absolute difference and Accumulate Long"]
571#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabal_s16)"]
572#[inline]
573#[target_feature(enable = "neon")]
574#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
575#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabal.s16"))]
576#[cfg_attr(
577 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
578 assert_instr(sabal)
579)]
580#[cfg_attr(
581 not(target_arch = "arm"),
582 stable(feature = "neon_intrinsics", since = "1.59.0")
583)]
584#[cfg_attr(
585 target_arch = "arm",
586 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
587)]
588pub fn vabal_s16(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
589 let d: int16x4_t = vabd_s16(b, c);
590 unsafe {
591 let e: uint16x4_t = simd_cast(d);
592 simd_add(a, simd_cast(e))
593 }
594}
595#[doc = "Signed Absolute difference and Accumulate Long"]
596#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabal_s32)"]
597#[inline]
598#[target_feature(enable = "neon")]
599#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
600#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabal.s32"))]
601#[cfg_attr(
602 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
603 assert_instr(sabal)
604)]
605#[cfg_attr(
606 not(target_arch = "arm"),
607 stable(feature = "neon_intrinsics", since = "1.59.0")
608)]
609#[cfg_attr(
610 target_arch = "arm",
611 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
612)]
613pub fn vabal_s32(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
614 let d: int32x2_t = vabd_s32(b, c);
615 unsafe {
616 let e: uint32x2_t = simd_cast(d);
617 simd_add(a, simd_cast(e))
618 }
619}
620#[doc = "Unsigned Absolute difference and Accumulate Long"]
621#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabal_u8)"]
622#[inline]
623#[target_feature(enable = "neon")]
624#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
625#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabal.u8"))]
626#[cfg_attr(
627 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
628 assert_instr(uabal)
629)]
630#[cfg_attr(
631 not(target_arch = "arm"),
632 stable(feature = "neon_intrinsics", since = "1.59.0")
633)]
634#[cfg_attr(
635 target_arch = "arm",
636 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
637)]
638pub fn vabal_u8(a: uint16x8_t, b: uint8x8_t, c: uint8x8_t) -> uint16x8_t {
639 let d: uint8x8_t = vabd_u8(b, c);
640 unsafe { simd_add(a, simd_cast(d)) }
641}
642#[doc = "Unsigned Absolute difference and Accumulate Long"]
643#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabal_u16)"]
644#[inline]
645#[target_feature(enable = "neon")]
646#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
647#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabal.u16"))]
648#[cfg_attr(
649 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
650 assert_instr(uabal)
651)]
652#[cfg_attr(
653 not(target_arch = "arm"),
654 stable(feature = "neon_intrinsics", since = "1.59.0")
655)]
656#[cfg_attr(
657 target_arch = "arm",
658 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
659)]
660pub fn vabal_u16(a: uint32x4_t, b: uint16x4_t, c: uint16x4_t) -> uint32x4_t {
661 let d: uint16x4_t = vabd_u16(b, c);
662 unsafe { simd_add(a, simd_cast(d)) }
663}
664#[doc = "Unsigned Absolute difference and Accumulate Long"]
665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabal_u32)"]
666#[inline]
667#[target_feature(enable = "neon")]
668#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
669#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabal.u32"))]
670#[cfg_attr(
671 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
672 assert_instr(uabal)
673)]
674#[cfg_attr(
675 not(target_arch = "arm"),
676 stable(feature = "neon_intrinsics", since = "1.59.0")
677)]
678#[cfg_attr(
679 target_arch = "arm",
680 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
681)]
682pub fn vabal_u32(a: uint64x2_t, b: uint32x2_t, c: uint32x2_t) -> uint64x2_t {
683 let d: uint32x2_t = vabd_u32(b, c);
684 unsafe { simd_add(a, simd_cast(d)) }
685}
686#[doc = "Absolute difference and accumulate (128-bit)"]
687#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabaq_s16)"]
688#[inline]
689#[target_feature(enable = "neon")]
690#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
691#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vaba.s16"))]
692#[cfg_attr(
693 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
694 assert_instr(saba)
695)]
696#[cfg_attr(
697 not(target_arch = "arm"),
698 stable(feature = "neon_intrinsics", since = "1.59.0")
699)]
700#[cfg_attr(
701 target_arch = "arm",
702 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
703)]
704pub fn vabaq_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
705 unsafe { simd_add(a, vabdq_s16(b, c)) }
706}
707#[doc = "Absolute difference and accumulate (128-bit)"]
708#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabaq_s32)"]
709#[inline]
710#[target_feature(enable = "neon")]
711#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
712#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vaba.s32"))]
713#[cfg_attr(
714 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
715 assert_instr(saba)
716)]
717#[cfg_attr(
718 not(target_arch = "arm"),
719 stable(feature = "neon_intrinsics", since = "1.59.0")
720)]
721#[cfg_attr(
722 target_arch = "arm",
723 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
724)]
725pub fn vabaq_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
726 unsafe { simd_add(a, vabdq_s32(b, c)) }
727}
728#[doc = "Absolute difference and accumulate (128-bit)"]
729#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabaq_s8)"]
730#[inline]
731#[target_feature(enable = "neon")]
732#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
733#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vaba.s8"))]
734#[cfg_attr(
735 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
736 assert_instr(saba)
737)]
738#[cfg_attr(
739 not(target_arch = "arm"),
740 stable(feature = "neon_intrinsics", since = "1.59.0")
741)]
742#[cfg_attr(
743 target_arch = "arm",
744 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
745)]
746pub fn vabaq_s8(a: int8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t {
747 unsafe { simd_add(a, vabdq_s8(b, c)) }
748}
749#[doc = "Absolute difference and accumulate (128-bit)"]
750#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabaq_u16)"]
751#[inline]
752#[target_feature(enable = "neon")]
753#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
754#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vaba.u16"))]
755#[cfg_attr(
756 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
757 assert_instr(uaba)
758)]
759#[cfg_attr(
760 not(target_arch = "arm"),
761 stable(feature = "neon_intrinsics", since = "1.59.0")
762)]
763#[cfg_attr(
764 target_arch = "arm",
765 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
766)]
767pub fn vabaq_u16(a: uint16x8_t, b: uint16x8_t, c: uint16x8_t) -> uint16x8_t {
768 unsafe { simd_add(a, vabdq_u16(b, c)) }
769}
770#[doc = "Absolute difference and accumulate (128-bit)"]
771#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabaq_u32)"]
772#[inline]
773#[target_feature(enable = "neon")]
774#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
775#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vaba.u32"))]
776#[cfg_attr(
777 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
778 assert_instr(uaba)
779)]
780#[cfg_attr(
781 not(target_arch = "arm"),
782 stable(feature = "neon_intrinsics", since = "1.59.0")
783)]
784#[cfg_attr(
785 target_arch = "arm",
786 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
787)]
788pub fn vabaq_u32(a: uint32x4_t, b: uint32x4_t, c: uint32x4_t) -> uint32x4_t {
789 unsafe { simd_add(a, vabdq_u32(b, c)) }
790}
791#[doc = "Absolute difference and accumulate (128-bit)"]
792#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabaq_u8)"]
793#[inline]
794#[target_feature(enable = "neon")]
795#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
796#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vaba.u8"))]
797#[cfg_attr(
798 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
799 assert_instr(uaba)
800)]
801#[cfg_attr(
802 not(target_arch = "arm"),
803 stable(feature = "neon_intrinsics", since = "1.59.0")
804)]
805#[cfg_attr(
806 target_arch = "arm",
807 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
808)]
809pub fn vabaq_u8(a: uint8x16_t, b: uint8x16_t, c: uint8x16_t) -> uint8x16_t {
810 unsafe { simd_add(a, vabdq_u8(b, c)) }
811}
812#[doc = "Absolute difference between the arguments of Floating"]
813#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabd_f16)"]
814#[inline]
815#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
816#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.f16"))]
817#[cfg_attr(
818 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
819 assert_instr(fabd)
820)]
821#[target_feature(enable = "neon,fp16")]
822#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
823#[cfg(not(target_arch = "arm64ec"))]
824pub fn vabd_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
825 unsafe extern "unadjusted" {
826 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v4f16")]
827 #[cfg_attr(
828 any(target_arch = "aarch64", target_arch = "arm64ec"),
829 link_name = "llvm.aarch64.neon.fabd.v4f16"
830 )]
831 fn _vabd_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
832 }
833 unsafe { _vabd_f16(a, b) }
834}
835#[doc = "Absolute difference between the arguments of Floating"]
836#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdq_f16)"]
837#[inline]
838#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
839#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.f16"))]
840#[cfg_attr(
841 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
842 assert_instr(fabd)
843)]
844#[target_feature(enable = "neon,fp16")]
845#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
846#[cfg(not(target_arch = "arm64ec"))]
847pub fn vabdq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
848 unsafe extern "unadjusted" {
849 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v8f16")]
850 #[cfg_attr(
851 any(target_arch = "aarch64", target_arch = "arm64ec"),
852 link_name = "llvm.aarch64.neon.fabd.v8f16"
853 )]
854 fn _vabdq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
855 }
856 unsafe { _vabdq_f16(a, b) }
857}
858#[doc = "Absolute difference between the arguments of Floating"]
859#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabd_f32)"]
860#[inline]
861#[target_feature(enable = "neon")]
862#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
863#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.f32"))]
864#[cfg_attr(
865 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
866 assert_instr(fabd)
867)]
868#[cfg_attr(
869 not(target_arch = "arm"),
870 stable(feature = "neon_intrinsics", since = "1.59.0")
871)]
872#[cfg_attr(
873 target_arch = "arm",
874 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
875)]
876pub fn vabd_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
877 unsafe extern "unadjusted" {
878 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v2f32")]
879 #[cfg_attr(
880 any(target_arch = "aarch64", target_arch = "arm64ec"),
881 link_name = "llvm.aarch64.neon.fabd.v2f32"
882 )]
883 fn _vabd_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
884 }
885 unsafe { _vabd_f32(a, b) }
886}
887#[doc = "Absolute difference between the arguments of Floating"]
888#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdq_f32)"]
889#[inline]
890#[target_feature(enable = "neon")]
891#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
892#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.f32"))]
893#[cfg_attr(
894 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
895 assert_instr(fabd)
896)]
897#[cfg_attr(
898 not(target_arch = "arm"),
899 stable(feature = "neon_intrinsics", since = "1.59.0")
900)]
901#[cfg_attr(
902 target_arch = "arm",
903 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
904)]
905pub fn vabdq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
906 unsafe extern "unadjusted" {
907 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v4f32")]
908 #[cfg_attr(
909 any(target_arch = "aarch64", target_arch = "arm64ec"),
910 link_name = "llvm.aarch64.neon.fabd.v4f32"
911 )]
912 fn _vabdq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
913 }
914 unsafe { _vabdq_f32(a, b) }
915}
916#[doc = "Absolute difference between the arguments"]
917#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabd_s8)"]
918#[inline]
919#[target_feature(enable = "neon")]
920#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
921#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.s8"))]
922#[cfg_attr(
923 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
924 assert_instr(sabd)
925)]
926#[cfg_attr(
927 not(target_arch = "arm"),
928 stable(feature = "neon_intrinsics", since = "1.59.0")
929)]
930#[cfg_attr(
931 target_arch = "arm",
932 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
933)]
934pub fn vabd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
935 unsafe extern "unadjusted" {
936 #[cfg_attr(
937 any(target_arch = "aarch64", target_arch = "arm64ec"),
938 link_name = "llvm.aarch64.neon.sabd.v8i8"
939 )]
940 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v8i8")]
941 fn _vabd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
942 }
943 unsafe { _vabd_s8(a, b) }
944}
945#[doc = "Absolute difference between the arguments"]
946#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdq_s8)"]
947#[inline]
948#[target_feature(enable = "neon")]
949#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
950#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.s8"))]
951#[cfg_attr(
952 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
953 assert_instr(sabd)
954)]
955#[cfg_attr(
956 not(target_arch = "arm"),
957 stable(feature = "neon_intrinsics", since = "1.59.0")
958)]
959#[cfg_attr(
960 target_arch = "arm",
961 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
962)]
963pub fn vabdq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
964 unsafe extern "unadjusted" {
965 #[cfg_attr(
966 any(target_arch = "aarch64", target_arch = "arm64ec"),
967 link_name = "llvm.aarch64.neon.sabd.v16i8"
968 )]
969 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v16i8")]
970 fn _vabdq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
971 }
972 unsafe { _vabdq_s8(a, b) }
973}
974#[doc = "Absolute difference between the arguments"]
975#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabd_s16)"]
976#[inline]
977#[target_feature(enable = "neon")]
978#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
979#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.s16"))]
980#[cfg_attr(
981 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
982 assert_instr(sabd)
983)]
984#[cfg_attr(
985 not(target_arch = "arm"),
986 stable(feature = "neon_intrinsics", since = "1.59.0")
987)]
988#[cfg_attr(
989 target_arch = "arm",
990 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
991)]
992pub fn vabd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
993 unsafe extern "unadjusted" {
994 #[cfg_attr(
995 any(target_arch = "aarch64", target_arch = "arm64ec"),
996 link_name = "llvm.aarch64.neon.sabd.v4i16"
997 )]
998 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v4i16")]
999 fn _vabd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
1000 }
1001 unsafe { _vabd_s16(a, b) }
1002}
1003#[doc = "Absolute difference between the arguments"]
1004#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdq_s16)"]
1005#[inline]
1006#[target_feature(enable = "neon")]
1007#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1008#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.s16"))]
1009#[cfg_attr(
1010 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1011 assert_instr(sabd)
1012)]
1013#[cfg_attr(
1014 not(target_arch = "arm"),
1015 stable(feature = "neon_intrinsics", since = "1.59.0")
1016)]
1017#[cfg_attr(
1018 target_arch = "arm",
1019 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1020)]
1021pub fn vabdq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
1022 unsafe extern "unadjusted" {
1023 #[cfg_attr(
1024 any(target_arch = "aarch64", target_arch = "arm64ec"),
1025 link_name = "llvm.aarch64.neon.sabd.v8i16"
1026 )]
1027 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v8i16")]
1028 fn _vabdq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
1029 }
1030 unsafe { _vabdq_s16(a, b) }
1031}
1032#[doc = "Absolute difference between the arguments"]
1033#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabd_s32)"]
1034#[inline]
1035#[target_feature(enable = "neon")]
1036#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1037#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.s32"))]
1038#[cfg_attr(
1039 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1040 assert_instr(sabd)
1041)]
1042#[cfg_attr(
1043 not(target_arch = "arm"),
1044 stable(feature = "neon_intrinsics", since = "1.59.0")
1045)]
1046#[cfg_attr(
1047 target_arch = "arm",
1048 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1049)]
1050pub fn vabd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
1051 unsafe extern "unadjusted" {
1052 #[cfg_attr(
1053 any(target_arch = "aarch64", target_arch = "arm64ec"),
1054 link_name = "llvm.aarch64.neon.sabd.v2i32"
1055 )]
1056 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v2i32")]
1057 fn _vabd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
1058 }
1059 unsafe { _vabd_s32(a, b) }
1060}
1061#[doc = "Absolute difference between the arguments"]
1062#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdq_s32)"]
1063#[inline]
1064#[target_feature(enable = "neon")]
1065#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1066#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.s32"))]
1067#[cfg_attr(
1068 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1069 assert_instr(sabd)
1070)]
1071#[cfg_attr(
1072 not(target_arch = "arm"),
1073 stable(feature = "neon_intrinsics", since = "1.59.0")
1074)]
1075#[cfg_attr(
1076 target_arch = "arm",
1077 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1078)]
1079pub fn vabdq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
1080 unsafe extern "unadjusted" {
1081 #[cfg_attr(
1082 any(target_arch = "aarch64", target_arch = "arm64ec"),
1083 link_name = "llvm.aarch64.neon.sabd.v4i32"
1084 )]
1085 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v4i32")]
1086 fn _vabdq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
1087 }
1088 unsafe { _vabdq_s32(a, b) }
1089}
1090#[doc = "Absolute difference between the arguments"]
1091#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabd_u8)"]
1092#[inline]
1093#[target_feature(enable = "neon")]
1094#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1095#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.u8"))]
1096#[cfg_attr(
1097 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1098 assert_instr(uabd)
1099)]
1100#[cfg_attr(
1101 not(target_arch = "arm"),
1102 stable(feature = "neon_intrinsics", since = "1.59.0")
1103)]
1104#[cfg_attr(
1105 target_arch = "arm",
1106 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1107)]
1108pub fn vabd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
1109 unsafe extern "unadjusted" {
1110 #[cfg_attr(
1111 any(target_arch = "aarch64", target_arch = "arm64ec"),
1112 link_name = "llvm.aarch64.neon.uabd.v8i8"
1113 )]
1114 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabdu.v8i8")]
1115 fn _vabd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
1116 }
1117 unsafe { _vabd_u8(a, b) }
1118}
1119#[doc = "Absolute difference between the arguments"]
1120#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdq_u8)"]
1121#[inline]
1122#[target_feature(enable = "neon")]
1123#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1124#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.u8"))]
1125#[cfg_attr(
1126 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1127 assert_instr(uabd)
1128)]
1129#[cfg_attr(
1130 not(target_arch = "arm"),
1131 stable(feature = "neon_intrinsics", since = "1.59.0")
1132)]
1133#[cfg_attr(
1134 target_arch = "arm",
1135 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1136)]
1137pub fn vabdq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
1138 unsafe extern "unadjusted" {
1139 #[cfg_attr(
1140 any(target_arch = "aarch64", target_arch = "arm64ec"),
1141 link_name = "llvm.aarch64.neon.uabd.v16i8"
1142 )]
1143 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabdu.v16i8")]
1144 fn _vabdq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
1145 }
1146 unsafe { _vabdq_u8(a, b) }
1147}
1148#[doc = "Absolute difference between the arguments"]
1149#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabd_u16)"]
1150#[inline]
1151#[target_feature(enable = "neon")]
1152#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1153#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.u16"))]
1154#[cfg_attr(
1155 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1156 assert_instr(uabd)
1157)]
1158#[cfg_attr(
1159 not(target_arch = "arm"),
1160 stable(feature = "neon_intrinsics", since = "1.59.0")
1161)]
1162#[cfg_attr(
1163 target_arch = "arm",
1164 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1165)]
1166pub fn vabd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
1167 unsafe extern "unadjusted" {
1168 #[cfg_attr(
1169 any(target_arch = "aarch64", target_arch = "arm64ec"),
1170 link_name = "llvm.aarch64.neon.uabd.v4i16"
1171 )]
1172 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabdu.v4i16")]
1173 fn _vabd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
1174 }
1175 unsafe { _vabd_u16(a, b) }
1176}
1177#[doc = "Absolute difference between the arguments"]
1178#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdq_u16)"]
1179#[inline]
1180#[target_feature(enable = "neon")]
1181#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1182#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.u16"))]
1183#[cfg_attr(
1184 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1185 assert_instr(uabd)
1186)]
1187#[cfg_attr(
1188 not(target_arch = "arm"),
1189 stable(feature = "neon_intrinsics", since = "1.59.0")
1190)]
1191#[cfg_attr(
1192 target_arch = "arm",
1193 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1194)]
1195pub fn vabdq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
1196 unsafe extern "unadjusted" {
1197 #[cfg_attr(
1198 any(target_arch = "aarch64", target_arch = "arm64ec"),
1199 link_name = "llvm.aarch64.neon.uabd.v8i16"
1200 )]
1201 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabdu.v8i16")]
1202 fn _vabdq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
1203 }
1204 unsafe { _vabdq_u16(a, b) }
1205}
1206#[doc = "Absolute difference between the arguments"]
1207#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabd_u32)"]
1208#[inline]
1209#[target_feature(enable = "neon")]
1210#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1211#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.u32"))]
1212#[cfg_attr(
1213 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1214 assert_instr(uabd)
1215)]
1216#[cfg_attr(
1217 not(target_arch = "arm"),
1218 stable(feature = "neon_intrinsics", since = "1.59.0")
1219)]
1220#[cfg_attr(
1221 target_arch = "arm",
1222 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1223)]
1224pub fn vabd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
1225 unsafe extern "unadjusted" {
1226 #[cfg_attr(
1227 any(target_arch = "aarch64", target_arch = "arm64ec"),
1228 link_name = "llvm.aarch64.neon.uabd.v2i32"
1229 )]
1230 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabdu.v2i32")]
1231 fn _vabd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
1232 }
1233 unsafe { _vabd_u32(a, b) }
1234}
1235#[doc = "Absolute difference between the arguments"]
1236#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdq_u32)"]
1237#[inline]
1238#[target_feature(enable = "neon")]
1239#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1240#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.u32"))]
1241#[cfg_attr(
1242 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1243 assert_instr(uabd)
1244)]
1245#[cfg_attr(
1246 not(target_arch = "arm"),
1247 stable(feature = "neon_intrinsics", since = "1.59.0")
1248)]
1249#[cfg_attr(
1250 target_arch = "arm",
1251 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1252)]
1253pub fn vabdq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
1254 unsafe extern "unadjusted" {
1255 #[cfg_attr(
1256 any(target_arch = "aarch64", target_arch = "arm64ec"),
1257 link_name = "llvm.aarch64.neon.uabd.v4i32"
1258 )]
1259 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabdu.v4i32")]
1260 fn _vabdq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
1261 }
1262 unsafe { _vabdq_u32(a, b) }
1263}
1264#[doc = "Signed Absolute difference Long"]
1265#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_s8)"]
1266#[inline]
1267#[target_feature(enable = "neon")]
1268#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1269#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabdl.s8"))]
1270#[cfg_attr(
1271 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1272 assert_instr(sabdl)
1273)]
1274#[cfg_attr(
1275 not(target_arch = "arm"),
1276 stable(feature = "neon_intrinsics", since = "1.59.0")
1277)]
1278#[cfg_attr(
1279 target_arch = "arm",
1280 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1281)]
1282pub fn vabdl_s8(a: int8x8_t, b: int8x8_t) -> int16x8_t {
1283 unsafe {
1284 let c: uint8x8_t = simd_cast(vabd_s8(a, b));
1285 simd_cast(c)
1286 }
1287}
1288#[doc = "Signed Absolute difference Long"]
1289#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_s16)"]
1290#[inline]
1291#[target_feature(enable = "neon")]
1292#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1293#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabdl.s16"))]
1294#[cfg_attr(
1295 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1296 assert_instr(sabdl)
1297)]
1298#[cfg_attr(
1299 not(target_arch = "arm"),
1300 stable(feature = "neon_intrinsics", since = "1.59.0")
1301)]
1302#[cfg_attr(
1303 target_arch = "arm",
1304 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1305)]
1306pub fn vabdl_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t {
1307 unsafe {
1308 let c: uint16x4_t = simd_cast(vabd_s16(a, b));
1309 simd_cast(c)
1310 }
1311}
1312#[doc = "Signed Absolute difference Long"]
1313#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_s32)"]
1314#[inline]
1315#[target_feature(enable = "neon")]
1316#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1317#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabdl.s32"))]
1318#[cfg_attr(
1319 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1320 assert_instr(sabdl)
1321)]
1322#[cfg_attr(
1323 not(target_arch = "arm"),
1324 stable(feature = "neon_intrinsics", since = "1.59.0")
1325)]
1326#[cfg_attr(
1327 target_arch = "arm",
1328 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1329)]
1330pub fn vabdl_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t {
1331 unsafe {
1332 let c: uint32x2_t = simd_cast(vabd_s32(a, b));
1333 simd_cast(c)
1334 }
1335}
1336#[doc = "Unsigned Absolute difference Long"]
1337#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_u8)"]
1338#[inline]
1339#[target_feature(enable = "neon")]
1340#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1341#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabdl.u8"))]
1342#[cfg_attr(
1343 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1344 assert_instr(uabdl)
1345)]
1346#[cfg_attr(
1347 not(target_arch = "arm"),
1348 stable(feature = "neon_intrinsics", since = "1.59.0")
1349)]
1350#[cfg_attr(
1351 target_arch = "arm",
1352 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1353)]
1354pub fn vabdl_u8(a: uint8x8_t, b: uint8x8_t) -> uint16x8_t {
1355 unsafe { simd_cast(vabd_u8(a, b)) }
1356}
1357#[doc = "Unsigned Absolute difference Long"]
1358#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_u16)"]
1359#[inline]
1360#[target_feature(enable = "neon")]
1361#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1362#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabdl.u16"))]
1363#[cfg_attr(
1364 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1365 assert_instr(uabdl)
1366)]
1367#[cfg_attr(
1368 not(target_arch = "arm"),
1369 stable(feature = "neon_intrinsics", since = "1.59.0")
1370)]
1371#[cfg_attr(
1372 target_arch = "arm",
1373 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1374)]
1375pub fn vabdl_u16(a: uint16x4_t, b: uint16x4_t) -> uint32x4_t {
1376 unsafe { simd_cast(vabd_u16(a, b)) }
1377}
1378#[doc = "Unsigned Absolute difference Long"]
1379#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_u32)"]
1380#[inline]
1381#[target_feature(enable = "neon")]
1382#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1383#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabdl.u32"))]
1384#[cfg_attr(
1385 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1386 assert_instr(uabdl)
1387)]
1388#[cfg_attr(
1389 not(target_arch = "arm"),
1390 stable(feature = "neon_intrinsics", since = "1.59.0")
1391)]
1392#[cfg_attr(
1393 target_arch = "arm",
1394 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1395)]
1396pub fn vabdl_u32(a: uint32x2_t, b: uint32x2_t) -> uint64x2_t {
1397 unsafe { simd_cast(vabd_u32(a, b)) }
1398}
1399#[doc = "Floating-point absolute value"]
1400#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabs_f16)"]
1401#[inline]
1402#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
1403#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1404#[cfg_attr(
1405 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1406 assert_instr(fabs)
1407)]
1408#[target_feature(enable = "neon,fp16")]
1409#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
1410#[cfg(not(target_arch = "arm64ec"))]
1411pub fn vabs_f16(a: float16x4_t) -> float16x4_t {
1412 unsafe { simd_fabs(a) }
1413}
1414#[doc = "Floating-point absolute value"]
1415#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_f16)"]
1416#[inline]
1417#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
1418#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1419#[cfg_attr(
1420 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1421 assert_instr(fabs)
1422)]
1423#[target_feature(enable = "neon,fp16")]
1424#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
1425#[cfg(not(target_arch = "arm64ec"))]
1426pub fn vabsq_f16(a: float16x8_t) -> float16x8_t {
1427 unsafe { simd_fabs(a) }
1428}
1429#[doc = "Floating-point absolute value"]
1430#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabs_f32)"]
1431#[inline]
1432#[target_feature(enable = "neon")]
1433#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1434#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1435#[cfg_attr(
1436 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1437 assert_instr(fabs)
1438)]
1439#[cfg_attr(
1440 not(target_arch = "arm"),
1441 stable(feature = "neon_intrinsics", since = "1.59.0")
1442)]
1443#[cfg_attr(
1444 target_arch = "arm",
1445 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1446)]
1447pub fn vabs_f32(a: float32x2_t) -> float32x2_t {
1448 unsafe { simd_fabs(a) }
1449}
1450#[doc = "Floating-point absolute value"]
1451#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_f32)"]
1452#[inline]
1453#[target_feature(enable = "neon")]
1454#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1455#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1456#[cfg_attr(
1457 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1458 assert_instr(fabs)
1459)]
1460#[cfg_attr(
1461 not(target_arch = "arm"),
1462 stable(feature = "neon_intrinsics", since = "1.59.0")
1463)]
1464#[cfg_attr(
1465 target_arch = "arm",
1466 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1467)]
1468pub fn vabsq_f32(a: float32x4_t) -> float32x4_t {
1469 unsafe { simd_fabs(a) }
1470}
1471#[doc = "Absolute value (wrapping)."]
1472#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabs_s8)"]
1473#[inline]
1474#[target_feature(enable = "neon")]
1475#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1476#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1477#[cfg_attr(
1478 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1479 assert_instr(abs)
1480)]
1481#[cfg_attr(
1482 not(target_arch = "arm"),
1483 stable(feature = "neon_intrinsics", since = "1.59.0")
1484)]
1485#[cfg_attr(
1486 target_arch = "arm",
1487 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1488)]
1489pub fn vabs_s8(a: int8x8_t) -> int8x8_t {
1490 unsafe {
1491 let neg: int8x8_t = simd_neg(a);
1492 let mask: int8x8_t = simd_ge(a, neg);
1493 simd_select(mask, a, neg)
1494 }
1495}
1496#[doc = "Absolute value (wrapping)."]
1497#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_s8)"]
1498#[inline]
1499#[target_feature(enable = "neon")]
1500#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1501#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1502#[cfg_attr(
1503 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1504 assert_instr(abs)
1505)]
1506#[cfg_attr(
1507 not(target_arch = "arm"),
1508 stable(feature = "neon_intrinsics", since = "1.59.0")
1509)]
1510#[cfg_attr(
1511 target_arch = "arm",
1512 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1513)]
1514pub fn vabsq_s8(a: int8x16_t) -> int8x16_t {
1515 unsafe {
1516 let neg: int8x16_t = simd_neg(a);
1517 let mask: int8x16_t = simd_ge(a, neg);
1518 simd_select(mask, a, neg)
1519 }
1520}
1521#[doc = "Absolute value (wrapping)."]
1522#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabs_s16)"]
1523#[inline]
1524#[target_feature(enable = "neon")]
1525#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1526#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1527#[cfg_attr(
1528 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1529 assert_instr(abs)
1530)]
1531#[cfg_attr(
1532 not(target_arch = "arm"),
1533 stable(feature = "neon_intrinsics", since = "1.59.0")
1534)]
1535#[cfg_attr(
1536 target_arch = "arm",
1537 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1538)]
1539pub fn vabs_s16(a: int16x4_t) -> int16x4_t {
1540 unsafe {
1541 let neg: int16x4_t = simd_neg(a);
1542 let mask: int16x4_t = simd_ge(a, neg);
1543 simd_select(mask, a, neg)
1544 }
1545}
1546#[doc = "Absolute value (wrapping)."]
1547#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_s16)"]
1548#[inline]
1549#[target_feature(enable = "neon")]
1550#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1551#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1552#[cfg_attr(
1553 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1554 assert_instr(abs)
1555)]
1556#[cfg_attr(
1557 not(target_arch = "arm"),
1558 stable(feature = "neon_intrinsics", since = "1.59.0")
1559)]
1560#[cfg_attr(
1561 target_arch = "arm",
1562 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1563)]
1564pub fn vabsq_s16(a: int16x8_t) -> int16x8_t {
1565 unsafe {
1566 let neg: int16x8_t = simd_neg(a);
1567 let mask: int16x8_t = simd_ge(a, neg);
1568 simd_select(mask, a, neg)
1569 }
1570}
1571#[doc = "Absolute value (wrapping)."]
1572#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabs_s32)"]
1573#[inline]
1574#[target_feature(enable = "neon")]
1575#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1576#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1577#[cfg_attr(
1578 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1579 assert_instr(abs)
1580)]
1581#[cfg_attr(
1582 not(target_arch = "arm"),
1583 stable(feature = "neon_intrinsics", since = "1.59.0")
1584)]
1585#[cfg_attr(
1586 target_arch = "arm",
1587 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1588)]
1589pub fn vabs_s32(a: int32x2_t) -> int32x2_t {
1590 unsafe {
1591 let neg: int32x2_t = simd_neg(a);
1592 let mask: int32x2_t = simd_ge(a, neg);
1593 simd_select(mask, a, neg)
1594 }
1595}
1596#[doc = "Absolute value (wrapping)."]
1597#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_s32)"]
1598#[inline]
1599#[target_feature(enable = "neon")]
1600#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1601#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1602#[cfg_attr(
1603 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1604 assert_instr(abs)
1605)]
1606#[cfg_attr(
1607 not(target_arch = "arm"),
1608 stable(feature = "neon_intrinsics", since = "1.59.0")
1609)]
1610#[cfg_attr(
1611 target_arch = "arm",
1612 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1613)]
1614pub fn vabsq_s32(a: int32x4_t) -> int32x4_t {
1615 unsafe {
1616 let neg: int32x4_t = simd_neg(a);
1617 let mask: int32x4_t = simd_ge(a, neg);
1618 simd_select(mask, a, neg)
1619 }
1620}
1621#[doc = "Floating-point absolute value"]
1622#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsh_f16)"]
1623#[inline]
1624#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
1625#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1626#[cfg_attr(
1627 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1628 assert_instr(fabs)
1629)]
1630#[target_feature(enable = "neon,fp16")]
1631#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
1632#[cfg(not(target_arch = "arm64ec"))]
1633pub fn vabsh_f16(a: f16) -> f16 {
1634 unsafe { simd_extract!(vabs_f16(vdup_n_f16(a)), 0) }
1635}
1636#[doc = "Floating-point Add (vector)."]
1637#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vadd_f16)"]
1638#[inline]
1639#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
1640#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vadd.f16"))]
1641#[cfg_attr(
1642 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1643 assert_instr(fadd)
1644)]
1645#[target_feature(enable = "neon,fp16")]
1646#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
1647#[cfg(not(target_arch = "arm64ec"))]
1648pub fn vadd_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
1649 unsafe { simd_add(a, b) }
1650}
1651#[doc = "Floating-point Add (vector)."]
1652#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddq_f16)"]
1653#[inline]
1654#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
1655#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vadd.f16"))]
1656#[cfg_attr(
1657 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1658 assert_instr(fadd)
1659)]
1660#[target_feature(enable = "neon,fp16")]
1661#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
1662#[cfg(not(target_arch = "arm64ec"))]
1663pub fn vaddq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
1664 unsafe { simd_add(a, b) }
1665}
1666#[doc = "Vector add."]
1667#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vadd_f32)"]
1668#[inline]
1669#[target_feature(enable = "neon")]
1670#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1671#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vadd))]
1672#[cfg_attr(
1673 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1674 assert_instr(fadd)
1675)]
1676#[cfg_attr(
1677 not(target_arch = "arm"),
1678 stable(feature = "neon_intrinsics", since = "1.59.0")
1679)]
1680#[cfg_attr(
1681 target_arch = "arm",
1682 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1683)]
1684pub fn vadd_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
1685 unsafe { simd_add(a, b) }
1686}
1687#[doc = "Vector add."]
1688#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vadd_s16)"]
1689#[inline]
1690#[target_feature(enable = "neon")]
1691#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1692#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vadd))]
1693#[cfg_attr(
1694 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1695 assert_instr(add)
1696)]
1697#[cfg_attr(
1698 not(target_arch = "arm"),
1699 stable(feature = "neon_intrinsics", since = "1.59.0")
1700)]
1701#[cfg_attr(
1702 target_arch = "arm",
1703 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1704)]
1705pub fn vadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
1706 unsafe { simd_add(a, b) }
1707}
1708#[doc = "Vector add."]
1709#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vadd_s32)"]
1710#[inline]
1711#[target_feature(enable = "neon")]
1712#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1713#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vadd))]
1714#[cfg_attr(
1715 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1716 assert_instr(add)
1717)]
1718#[cfg_attr(
1719 not(target_arch = "arm"),
1720 stable(feature = "neon_intrinsics", since = "1.59.0")
1721)]
1722#[cfg_attr(
1723 target_arch = "arm",
1724 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1725)]
1726pub fn vadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
1727 unsafe { simd_add(a, b) }
1728}
1729#[doc = "Vector add."]
1730#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vadd_s8)"]
1731#[inline]
1732#[target_feature(enable = "neon")]
1733#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1734#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vadd))]
1735#[cfg_attr(
1736 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1737 assert_instr(add)
1738)]
1739#[cfg_attr(
1740 not(target_arch = "arm"),
1741 stable(feature = "neon_intrinsics", since = "1.59.0")
1742)]
1743#[cfg_attr(
1744 target_arch = "arm",
1745 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1746)]
1747pub fn vadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
1748 unsafe { simd_add(a, b) }
1749}
1750#[doc = "Vector add."]
1751#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vadd_u16)"]
1752#[inline]
1753#[target_feature(enable = "neon")]
1754#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1755#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vadd))]
1756#[cfg_attr(
1757 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1758 assert_instr(add)
1759)]
1760#[cfg_attr(
1761 not(target_arch = "arm"),
1762 stable(feature = "neon_intrinsics", since = "1.59.0")
1763)]
1764#[cfg_attr(
1765 target_arch = "arm",
1766 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1767)]
1768pub fn vadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
1769 unsafe { simd_add(a, b) }
1770}
1771#[doc = "Vector add."]
1772#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vadd_u32)"]
1773#[inline]
1774#[target_feature(enable = "neon")]
1775#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1776#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vadd))]
1777#[cfg_attr(
1778 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1779 assert_instr(add)
1780)]
1781#[cfg_attr(
1782 not(target_arch = "arm"),
1783 stable(feature = "neon_intrinsics", since = "1.59.0")
1784)]
1785#[cfg_attr(
1786 target_arch = "arm",
1787 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1788)]
1789pub fn vadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
1790 unsafe { simd_add(a, b) }
1791}
1792#[doc = "Vector add."]
1793#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vadd_u8)"]
1794#[inline]
1795#[target_feature(enable = "neon")]
1796#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1797#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vadd))]
1798#[cfg_attr(
1799 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1800 assert_instr(add)
1801)]
1802#[cfg_attr(
1803 not(target_arch = "arm"),
1804 stable(feature = "neon_intrinsics", since = "1.59.0")
1805)]
1806#[cfg_attr(
1807 target_arch = "arm",
1808 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1809)]
1810pub fn vadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
1811 unsafe { simd_add(a, b) }
1812}
1813#[doc = "Vector add."]
1814#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddq_f32)"]
1815#[inline]
1816#[target_feature(enable = "neon")]
1817#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1818#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vadd))]
1819#[cfg_attr(
1820 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1821 assert_instr(fadd)
1822)]
1823#[cfg_attr(
1824 not(target_arch = "arm"),
1825 stable(feature = "neon_intrinsics", since = "1.59.0")
1826)]
1827#[cfg_attr(
1828 target_arch = "arm",
1829 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1830)]
1831pub fn vaddq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
1832 unsafe { simd_add(a, b) }
1833}
1834#[doc = "Vector add."]
1835#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddq_s16)"]
1836#[inline]
1837#[target_feature(enable = "neon")]
1838#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1839#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vadd))]
1840#[cfg_attr(
1841 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1842 assert_instr(add)
1843)]
1844#[cfg_attr(
1845 not(target_arch = "arm"),
1846 stable(feature = "neon_intrinsics", since = "1.59.0")
1847)]
1848#[cfg_attr(
1849 target_arch = "arm",
1850 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1851)]
1852pub fn vaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
1853 unsafe { simd_add(a, b) }
1854}
1855#[doc = "Vector add."]
1856#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddq_s32)"]
1857#[inline]
1858#[target_feature(enable = "neon")]
1859#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1860#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vadd))]
1861#[cfg_attr(
1862 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1863 assert_instr(add)
1864)]
1865#[cfg_attr(
1866 not(target_arch = "arm"),
1867 stable(feature = "neon_intrinsics", since = "1.59.0")
1868)]
1869#[cfg_attr(
1870 target_arch = "arm",
1871 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1872)]
1873pub fn vaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
1874 unsafe { simd_add(a, b) }
1875}
1876#[doc = "Vector add."]
1877#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddq_s64)"]
1878#[inline]
1879#[target_feature(enable = "neon")]
1880#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1881#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vadd))]
1882#[cfg_attr(
1883 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1884 assert_instr(add)
1885)]
1886#[cfg_attr(
1887 not(target_arch = "arm"),
1888 stable(feature = "neon_intrinsics", since = "1.59.0")
1889)]
1890#[cfg_attr(
1891 target_arch = "arm",
1892 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1893)]
1894pub fn vaddq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
1895 unsafe { simd_add(a, b) }
1896}
1897#[doc = "Vector add."]
1898#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddq_s8)"]
1899#[inline]
1900#[target_feature(enable = "neon")]
1901#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1902#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vadd))]
1903#[cfg_attr(
1904 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1905 assert_instr(add)
1906)]
1907#[cfg_attr(
1908 not(target_arch = "arm"),
1909 stable(feature = "neon_intrinsics", since = "1.59.0")
1910)]
1911#[cfg_attr(
1912 target_arch = "arm",
1913 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1914)]
1915pub fn vaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
1916 unsafe { simd_add(a, b) }
1917}
1918#[doc = "Vector add."]
1919#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddq_u16)"]
1920#[inline]
1921#[target_feature(enable = "neon")]
1922#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1923#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vadd))]
1924#[cfg_attr(
1925 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1926 assert_instr(add)
1927)]
1928#[cfg_attr(
1929 not(target_arch = "arm"),
1930 stable(feature = "neon_intrinsics", since = "1.59.0")
1931)]
1932#[cfg_attr(
1933 target_arch = "arm",
1934 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1935)]
1936pub fn vaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
1937 unsafe { simd_add(a, b) }
1938}
1939#[doc = "Vector add."]
1940#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddq_u32)"]
1941#[inline]
1942#[target_feature(enable = "neon")]
1943#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1944#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vadd))]
1945#[cfg_attr(
1946 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1947 assert_instr(add)
1948)]
1949#[cfg_attr(
1950 not(target_arch = "arm"),
1951 stable(feature = "neon_intrinsics", since = "1.59.0")
1952)]
1953#[cfg_attr(
1954 target_arch = "arm",
1955 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1956)]
1957pub fn vaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
1958 unsafe { simd_add(a, b) }
1959}
1960#[doc = "Vector add."]
1961#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddq_u64)"]
1962#[inline]
1963#[target_feature(enable = "neon")]
1964#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1965#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vadd))]
1966#[cfg_attr(
1967 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1968 assert_instr(add)
1969)]
1970#[cfg_attr(
1971 not(target_arch = "arm"),
1972 stable(feature = "neon_intrinsics", since = "1.59.0")
1973)]
1974#[cfg_attr(
1975 target_arch = "arm",
1976 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1977)]
1978pub fn vaddq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
1979 unsafe { simd_add(a, b) }
1980}
1981#[doc = "Vector add."]
1982#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddq_u8)"]
1983#[inline]
1984#[target_feature(enable = "neon")]
1985#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1986#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vadd))]
1987#[cfg_attr(
1988 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1989 assert_instr(add)
1990)]
1991#[cfg_attr(
1992 not(target_arch = "arm"),
1993 stable(feature = "neon_intrinsics", since = "1.59.0")
1994)]
1995#[cfg_attr(
1996 target_arch = "arm",
1997 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1998)]
1999pub fn vaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
2000 unsafe { simd_add(a, b) }
2001}
2002#[doc = "Bitwise exclusive OR"]
2003#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vadd_p8)"]
2004#[inline]
2005#[target_feature(enable = "neon")]
2006#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2007#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
2008#[cfg_attr(
2009 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2010 assert_instr(nop)
2011)]
2012#[cfg_attr(
2013 not(target_arch = "arm"),
2014 stable(feature = "neon_intrinsics", since = "1.59.0")
2015)]
2016#[cfg_attr(
2017 target_arch = "arm",
2018 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2019)]
2020pub fn vadd_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t {
2021 unsafe { simd_xor(a, b) }
2022}
2023#[doc = "Bitwise exclusive OR"]
2024#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddq_p8)"]
2025#[inline]
2026#[target_feature(enable = "neon")]
2027#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2028#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
2029#[cfg_attr(
2030 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2031 assert_instr(nop)
2032)]
2033#[cfg_attr(
2034 not(target_arch = "arm"),
2035 stable(feature = "neon_intrinsics", since = "1.59.0")
2036)]
2037#[cfg_attr(
2038 target_arch = "arm",
2039 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2040)]
2041pub fn vaddq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t {
2042 unsafe { simd_xor(a, b) }
2043}
2044#[doc = "Bitwise exclusive OR"]
2045#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vadd_p16)"]
2046#[inline]
2047#[target_feature(enable = "neon")]
2048#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2049#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
2050#[cfg_attr(
2051 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2052 assert_instr(nop)
2053)]
2054#[cfg_attr(
2055 not(target_arch = "arm"),
2056 stable(feature = "neon_intrinsics", since = "1.59.0")
2057)]
2058#[cfg_attr(
2059 target_arch = "arm",
2060 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2061)]
2062pub fn vadd_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4_t {
2063 unsafe { simd_xor(a, b) }
2064}
2065#[doc = "Bitwise exclusive OR"]
2066#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddq_p16)"]
2067#[inline]
2068#[target_feature(enable = "neon")]
2069#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2070#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
2071#[cfg_attr(
2072 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2073 assert_instr(nop)
2074)]
2075#[cfg_attr(
2076 not(target_arch = "arm"),
2077 stable(feature = "neon_intrinsics", since = "1.59.0")
2078)]
2079#[cfg_attr(
2080 target_arch = "arm",
2081 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2082)]
2083pub fn vaddq_p16(a: poly16x8_t, b: poly16x8_t) -> poly16x8_t {
2084 unsafe { simd_xor(a, b) }
2085}
2086#[doc = "Bitwise exclusive OR"]
2087#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vadd_p64)"]
2088#[inline]
2089#[target_feature(enable = "neon")]
2090#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2091#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
2092#[cfg_attr(
2093 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2094 assert_instr(nop)
2095)]
2096#[cfg_attr(
2097 not(target_arch = "arm"),
2098 stable(feature = "neon_intrinsics", since = "1.59.0")
2099)]
2100#[cfg_attr(
2101 target_arch = "arm",
2102 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2103)]
2104pub fn vadd_p64(a: poly64x1_t, b: poly64x1_t) -> poly64x1_t {
2105 unsafe { simd_xor(a, b) }
2106}
2107#[doc = "Bitwise exclusive OR"]
2108#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddq_p64)"]
2109#[inline]
2110#[target_feature(enable = "neon")]
2111#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2112#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
2113#[cfg_attr(
2114 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2115 assert_instr(nop)
2116)]
2117#[cfg_attr(
2118 not(target_arch = "arm"),
2119 stable(feature = "neon_intrinsics", since = "1.59.0")
2120)]
2121#[cfg_attr(
2122 target_arch = "arm",
2123 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2124)]
2125pub fn vaddq_p64(a: poly64x2_t, b: poly64x2_t) -> poly64x2_t {
2126 unsafe { simd_xor(a, b) }
2127}
2128#[doc = "Add"]
2129#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddh_f16)"]
2130#[inline]
2131#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
2132#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vadd.f16"))]
2133#[cfg_attr(
2134 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2135 assert_instr(fadd)
2136)]
2137#[target_feature(enable = "neon,fp16")]
2138#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
2139#[cfg(not(target_arch = "arm64ec"))]
2140pub fn vaddh_f16(a: f16, b: f16) -> f16 {
2141 a + b
2142}
2143#[doc = "Add returning High Narrow (high half)."]
2144#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_high_s16)"]
2145#[inline]
2146#[target_feature(enable = "neon")]
2147#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2148#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddhn))]
2149#[cfg_attr(
2150 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2151 assert_instr(addhn2)
2152)]
2153#[cfg_attr(
2154 not(target_arch = "arm"),
2155 stable(feature = "neon_intrinsics", since = "1.59.0")
2156)]
2157#[cfg_attr(
2158 target_arch = "arm",
2159 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2160)]
2161pub fn vaddhn_high_s16(r: int8x8_t, a: int16x8_t, b: int16x8_t) -> int8x16_t {
2162 unsafe {
2163 let x = simd_cast(simd_shr(simd_add(a, b), int16x8_t::splat(8)));
2164 simd_shuffle!(r, x, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
2165 }
2166}
2167#[doc = "Add returning High Narrow (high half)."]
2168#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_high_s32)"]
2169#[inline]
2170#[target_feature(enable = "neon")]
2171#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2172#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddhn))]
2173#[cfg_attr(
2174 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2175 assert_instr(addhn2)
2176)]
2177#[cfg_attr(
2178 not(target_arch = "arm"),
2179 stable(feature = "neon_intrinsics", since = "1.59.0")
2180)]
2181#[cfg_attr(
2182 target_arch = "arm",
2183 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2184)]
2185pub fn vaddhn_high_s32(r: int16x4_t, a: int32x4_t, b: int32x4_t) -> int16x8_t {
2186 unsafe {
2187 let x = simd_cast(simd_shr(simd_add(a, b), int32x4_t::splat(16)));
2188 simd_shuffle!(r, x, [0, 1, 2, 3, 4, 5, 6, 7])
2189 }
2190}
2191#[doc = "Add returning High Narrow (high half)."]
2192#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_high_s64)"]
2193#[inline]
2194#[target_feature(enable = "neon")]
2195#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2196#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddhn))]
2197#[cfg_attr(
2198 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2199 assert_instr(addhn2)
2200)]
2201#[cfg_attr(
2202 not(target_arch = "arm"),
2203 stable(feature = "neon_intrinsics", since = "1.59.0")
2204)]
2205#[cfg_attr(
2206 target_arch = "arm",
2207 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2208)]
2209pub fn vaddhn_high_s64(r: int32x2_t, a: int64x2_t, b: int64x2_t) -> int32x4_t {
2210 unsafe {
2211 let x = simd_cast(simd_shr(simd_add(a, b), int64x2_t::splat(32)));
2212 simd_shuffle!(r, x, [0, 1, 2, 3])
2213 }
2214}
2215#[doc = "Add returning High Narrow (high half)."]
2216#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_high_u16)"]
2217#[inline]
2218#[target_feature(enable = "neon")]
2219#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2220#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddhn))]
2221#[cfg_attr(
2222 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2223 assert_instr(addhn2)
2224)]
2225#[cfg_attr(
2226 not(target_arch = "arm"),
2227 stable(feature = "neon_intrinsics", since = "1.59.0")
2228)]
2229#[cfg_attr(
2230 target_arch = "arm",
2231 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2232)]
2233pub fn vaddhn_high_u16(r: uint8x8_t, a: uint16x8_t, b: uint16x8_t) -> uint8x16_t {
2234 unsafe {
2235 let x = simd_cast(simd_shr(simd_add(a, b), uint16x8_t::splat(8)));
2236 simd_shuffle!(r, x, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
2237 }
2238}
2239#[doc = "Add returning High Narrow (high half)."]
2240#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_high_u32)"]
2241#[inline]
2242#[target_feature(enable = "neon")]
2243#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2244#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddhn))]
2245#[cfg_attr(
2246 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2247 assert_instr(addhn2)
2248)]
2249#[cfg_attr(
2250 not(target_arch = "arm"),
2251 stable(feature = "neon_intrinsics", since = "1.59.0")
2252)]
2253#[cfg_attr(
2254 target_arch = "arm",
2255 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2256)]
2257pub fn vaddhn_high_u32(r: uint16x4_t, a: uint32x4_t, b: uint32x4_t) -> uint16x8_t {
2258 unsafe {
2259 let x = simd_cast(simd_shr(simd_add(a, b), uint32x4_t::splat(16)));
2260 simd_shuffle!(r, x, [0, 1, 2, 3, 4, 5, 6, 7])
2261 }
2262}
2263#[doc = "Add returning High Narrow (high half)."]
2264#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_high_u64)"]
2265#[inline]
2266#[target_feature(enable = "neon")]
2267#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2268#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddhn))]
2269#[cfg_attr(
2270 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2271 assert_instr(addhn2)
2272)]
2273#[cfg_attr(
2274 not(target_arch = "arm"),
2275 stable(feature = "neon_intrinsics", since = "1.59.0")
2276)]
2277#[cfg_attr(
2278 target_arch = "arm",
2279 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2280)]
2281pub fn vaddhn_high_u64(r: uint32x2_t, a: uint64x2_t, b: uint64x2_t) -> uint32x4_t {
2282 unsafe {
2283 let x = simd_cast(simd_shr(simd_add(a, b), uint64x2_t::splat(32)));
2284 simd_shuffle!(r, x, [0, 1, 2, 3])
2285 }
2286}
2287#[doc = "Add returning High Narrow."]
2288#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_s16)"]
2289#[inline]
2290#[target_feature(enable = "neon")]
2291#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2292#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddhn))]
2293#[cfg_attr(
2294 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2295 assert_instr(addhn)
2296)]
2297#[cfg_attr(
2298 not(target_arch = "arm"),
2299 stable(feature = "neon_intrinsics", since = "1.59.0")
2300)]
2301#[cfg_attr(
2302 target_arch = "arm",
2303 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2304)]
2305pub fn vaddhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t {
2306 unsafe { simd_cast(simd_shr(simd_add(a, b), int16x8_t::splat(8))) }
2307}
2308#[doc = "Add returning High Narrow."]
2309#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_s32)"]
2310#[inline]
2311#[target_feature(enable = "neon")]
2312#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2313#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddhn))]
2314#[cfg_attr(
2315 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2316 assert_instr(addhn)
2317)]
2318#[cfg_attr(
2319 not(target_arch = "arm"),
2320 stable(feature = "neon_intrinsics", since = "1.59.0")
2321)]
2322#[cfg_attr(
2323 target_arch = "arm",
2324 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2325)]
2326pub fn vaddhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t {
2327 unsafe { simd_cast(simd_shr(simd_add(a, b), int32x4_t::splat(16))) }
2328}
2329#[doc = "Add returning High Narrow."]
2330#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_s64)"]
2331#[inline]
2332#[target_feature(enable = "neon")]
2333#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2334#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddhn))]
2335#[cfg_attr(
2336 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2337 assert_instr(addhn)
2338)]
2339#[cfg_attr(
2340 not(target_arch = "arm"),
2341 stable(feature = "neon_intrinsics", since = "1.59.0")
2342)]
2343#[cfg_attr(
2344 target_arch = "arm",
2345 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2346)]
2347pub fn vaddhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t {
2348 unsafe { simd_cast(simd_shr(simd_add(a, b), int64x2_t::splat(32))) }
2349}
2350#[doc = "Add returning High Narrow."]
2351#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_u16)"]
2352#[inline]
2353#[target_feature(enable = "neon")]
2354#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2355#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddhn))]
2356#[cfg_attr(
2357 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2358 assert_instr(addhn)
2359)]
2360#[cfg_attr(
2361 not(target_arch = "arm"),
2362 stable(feature = "neon_intrinsics", since = "1.59.0")
2363)]
2364#[cfg_attr(
2365 target_arch = "arm",
2366 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2367)]
2368pub fn vaddhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
2369 unsafe { simd_cast(simd_shr(simd_add(a, b), uint16x8_t::splat(8))) }
2370}
2371#[doc = "Add returning High Narrow."]
2372#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_u32)"]
2373#[inline]
2374#[target_feature(enable = "neon")]
2375#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2376#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddhn))]
2377#[cfg_attr(
2378 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2379 assert_instr(addhn)
2380)]
2381#[cfg_attr(
2382 not(target_arch = "arm"),
2383 stable(feature = "neon_intrinsics", since = "1.59.0")
2384)]
2385#[cfg_attr(
2386 target_arch = "arm",
2387 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2388)]
2389pub fn vaddhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
2390 unsafe { simd_cast(simd_shr(simd_add(a, b), uint32x4_t::splat(16))) }
2391}
2392#[doc = "Add returning High Narrow."]
2393#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_u64)"]
2394#[inline]
2395#[target_feature(enable = "neon")]
2396#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2397#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddhn))]
2398#[cfg_attr(
2399 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2400 assert_instr(addhn)
2401)]
2402#[cfg_attr(
2403 not(target_arch = "arm"),
2404 stable(feature = "neon_intrinsics", since = "1.59.0")
2405)]
2406#[cfg_attr(
2407 target_arch = "arm",
2408 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2409)]
2410pub fn vaddhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
2411 unsafe { simd_cast(simd_shr(simd_add(a, b), uint64x2_t::splat(32))) }
2412}
2413#[doc = "Signed Add Long (vector, high half)."]
2414#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_high_s16)"]
2415#[inline]
2416#[target_feature(enable = "neon")]
2417#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2418#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2419#[cfg_attr(
2420 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2421 assert_instr(saddl2)
2422)]
2423#[cfg_attr(
2424 not(target_arch = "arm"),
2425 stable(feature = "neon_intrinsics", since = "1.59.0")
2426)]
2427#[cfg_attr(
2428 target_arch = "arm",
2429 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2430)]
2431pub fn vaddl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
2432 unsafe {
2433 let a: int16x4_t = simd_shuffle!(a, a, [4, 5, 6, 7]);
2434 let b: int16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
2435 let a: int32x4_t = simd_cast(a);
2436 let b: int32x4_t = simd_cast(b);
2437 simd_add(a, b)
2438 }
2439}
2440#[doc = "Signed Add Long (vector, high half)."]
2441#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_high_s32)"]
2442#[inline]
2443#[target_feature(enable = "neon")]
2444#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2445#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2446#[cfg_attr(
2447 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2448 assert_instr(saddl2)
2449)]
2450#[cfg_attr(
2451 not(target_arch = "arm"),
2452 stable(feature = "neon_intrinsics", since = "1.59.0")
2453)]
2454#[cfg_attr(
2455 target_arch = "arm",
2456 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2457)]
2458pub fn vaddl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {
2459 unsafe {
2460 let a: int32x2_t = simd_shuffle!(a, a, [2, 3]);
2461 let b: int32x2_t = simd_shuffle!(b, b, [2, 3]);
2462 let a: int64x2_t = simd_cast(a);
2463 let b: int64x2_t = simd_cast(b);
2464 simd_add(a, b)
2465 }
2466}
2467#[doc = "Signed Add Long (vector, high half)."]
2468#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_high_s8)"]
2469#[inline]
2470#[target_feature(enable = "neon")]
2471#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2472#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2473#[cfg_attr(
2474 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2475 assert_instr(saddl2)
2476)]
2477#[cfg_attr(
2478 not(target_arch = "arm"),
2479 stable(feature = "neon_intrinsics", since = "1.59.0")
2480)]
2481#[cfg_attr(
2482 target_arch = "arm",
2483 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2484)]
2485pub fn vaddl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
2486 unsafe {
2487 let a: int8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
2488 let b: int8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
2489 let a: int16x8_t = simd_cast(a);
2490 let b: int16x8_t = simd_cast(b);
2491 simd_add(a, b)
2492 }
2493}
2494#[doc = "Signed Add Long (vector, high half)."]
2495#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_high_u16)"]
2496#[inline]
2497#[target_feature(enable = "neon")]
2498#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2499#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2500#[cfg_attr(
2501 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2502 assert_instr(uaddl2)
2503)]
2504#[cfg_attr(
2505 not(target_arch = "arm"),
2506 stable(feature = "neon_intrinsics", since = "1.59.0")
2507)]
2508#[cfg_attr(
2509 target_arch = "arm",
2510 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2511)]
2512pub fn vaddl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
2513 unsafe {
2514 let a: uint16x4_t = simd_shuffle!(a, a, [4, 5, 6, 7]);
2515 let b: uint16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
2516 let a: uint32x4_t = simd_cast(a);
2517 let b: uint32x4_t = simd_cast(b);
2518 simd_add(a, b)
2519 }
2520}
2521#[doc = "Signed Add Long (vector, high half)."]
2522#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_high_u32)"]
2523#[inline]
2524#[target_feature(enable = "neon")]
2525#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2526#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2527#[cfg_attr(
2528 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2529 assert_instr(uaddl2)
2530)]
2531#[cfg_attr(
2532 not(target_arch = "arm"),
2533 stable(feature = "neon_intrinsics", since = "1.59.0")
2534)]
2535#[cfg_attr(
2536 target_arch = "arm",
2537 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2538)]
2539pub fn vaddl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {
2540 unsafe {
2541 let a: uint32x2_t = simd_shuffle!(a, a, [2, 3]);
2542 let b: uint32x2_t = simd_shuffle!(b, b, [2, 3]);
2543 let a: uint64x2_t = simd_cast(a);
2544 let b: uint64x2_t = simd_cast(b);
2545 simd_add(a, b)
2546 }
2547}
2548#[doc = "Signed Add Long (vector, high half)."]
2549#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_high_u8)"]
2550#[inline]
2551#[target_feature(enable = "neon")]
2552#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2553#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2554#[cfg_attr(
2555 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2556 assert_instr(uaddl2)
2557)]
2558#[cfg_attr(
2559 not(target_arch = "arm"),
2560 stable(feature = "neon_intrinsics", since = "1.59.0")
2561)]
2562#[cfg_attr(
2563 target_arch = "arm",
2564 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2565)]
2566pub fn vaddl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
2567 unsafe {
2568 let a: uint8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
2569 let b: uint8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
2570 let a: uint16x8_t = simd_cast(a);
2571 let b: uint16x8_t = simd_cast(b);
2572 simd_add(a, b)
2573 }
2574}
2575#[doc = "Add Long (vector)."]
2576#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_s16)"]
2577#[inline]
2578#[target_feature(enable = "neon")]
2579#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2580#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2581#[cfg_attr(
2582 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2583 assert_instr(saddl)
2584)]
2585#[cfg_attr(
2586 not(target_arch = "arm"),
2587 stable(feature = "neon_intrinsics", since = "1.59.0")
2588)]
2589#[cfg_attr(
2590 target_arch = "arm",
2591 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2592)]
2593pub fn vaddl_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t {
2594 unsafe {
2595 let a: int32x4_t = simd_cast(a);
2596 let b: int32x4_t = simd_cast(b);
2597 simd_add(a, b)
2598 }
2599}
2600#[doc = "Add Long (vector)."]
2601#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_s32)"]
2602#[inline]
2603#[target_feature(enable = "neon")]
2604#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2605#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2606#[cfg_attr(
2607 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2608 assert_instr(saddl)
2609)]
2610#[cfg_attr(
2611 not(target_arch = "arm"),
2612 stable(feature = "neon_intrinsics", since = "1.59.0")
2613)]
2614#[cfg_attr(
2615 target_arch = "arm",
2616 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2617)]
2618pub fn vaddl_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t {
2619 unsafe {
2620 let a: int64x2_t = simd_cast(a);
2621 let b: int64x2_t = simd_cast(b);
2622 simd_add(a, b)
2623 }
2624}
2625#[doc = "Add Long (vector)."]
2626#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_s8)"]
2627#[inline]
2628#[target_feature(enable = "neon")]
2629#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2630#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2631#[cfg_attr(
2632 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2633 assert_instr(saddl)
2634)]
2635#[cfg_attr(
2636 not(target_arch = "arm"),
2637 stable(feature = "neon_intrinsics", since = "1.59.0")
2638)]
2639#[cfg_attr(
2640 target_arch = "arm",
2641 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2642)]
2643pub fn vaddl_s8(a: int8x8_t, b: int8x8_t) -> int16x8_t {
2644 unsafe {
2645 let a: int16x8_t = simd_cast(a);
2646 let b: int16x8_t = simd_cast(b);
2647 simd_add(a, b)
2648 }
2649}
2650#[doc = "Add Long (vector)."]
2651#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_u16)"]
2652#[inline]
2653#[target_feature(enable = "neon")]
2654#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2655#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2656#[cfg_attr(
2657 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2658 assert_instr(uaddl)
2659)]
2660#[cfg_attr(
2661 not(target_arch = "arm"),
2662 stable(feature = "neon_intrinsics", since = "1.59.0")
2663)]
2664#[cfg_attr(
2665 target_arch = "arm",
2666 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2667)]
2668pub fn vaddl_u16(a: uint16x4_t, b: uint16x4_t) -> uint32x4_t {
2669 unsafe {
2670 let a: uint32x4_t = simd_cast(a);
2671 let b: uint32x4_t = simd_cast(b);
2672 simd_add(a, b)
2673 }
2674}
2675#[doc = "Add Long (vector)."]
2676#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_u32)"]
2677#[inline]
2678#[target_feature(enable = "neon")]
2679#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2680#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2681#[cfg_attr(
2682 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2683 assert_instr(uaddl)
2684)]
2685#[cfg_attr(
2686 not(target_arch = "arm"),
2687 stable(feature = "neon_intrinsics", since = "1.59.0")
2688)]
2689#[cfg_attr(
2690 target_arch = "arm",
2691 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2692)]
2693pub fn vaddl_u32(a: uint32x2_t, b: uint32x2_t) -> uint64x2_t {
2694 unsafe {
2695 let a: uint64x2_t = simd_cast(a);
2696 let b: uint64x2_t = simd_cast(b);
2697 simd_add(a, b)
2698 }
2699}
2700#[doc = "Add Long (vector)."]
2701#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_u8)"]
2702#[inline]
2703#[target_feature(enable = "neon")]
2704#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2705#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2706#[cfg_attr(
2707 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2708 assert_instr(uaddl)
2709)]
2710#[cfg_attr(
2711 not(target_arch = "arm"),
2712 stable(feature = "neon_intrinsics", since = "1.59.0")
2713)]
2714#[cfg_attr(
2715 target_arch = "arm",
2716 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2717)]
2718pub fn vaddl_u8(a: uint8x8_t, b: uint8x8_t) -> uint16x8_t {
2719 unsafe {
2720 let a: uint16x8_t = simd_cast(a);
2721 let b: uint16x8_t = simd_cast(b);
2722 simd_add(a, b)
2723 }
2724}
2725#[doc = "Bitwise exclusive OR"]
2726#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddq_p128)"]
2727#[inline]
2728#[target_feature(enable = "neon")]
2729#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2730#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
2731#[cfg_attr(
2732 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2733 assert_instr(nop)
2734)]
2735#[cfg_attr(
2736 not(target_arch = "arm"),
2737 stable(feature = "neon_intrinsics", since = "1.59.0")
2738)]
2739#[cfg_attr(
2740 target_arch = "arm",
2741 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2742)]
2743pub fn vaddq_p128(a: p128, b: p128) -> p128 {
2744 a ^ b
2745}
2746#[doc = "Add Wide (high half)."]
2747#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_high_s16)"]
2748#[inline]
2749#[target_feature(enable = "neon")]
2750#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2751#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2752#[cfg_attr(
2753 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2754 assert_instr(saddw2)
2755)]
2756#[cfg_attr(
2757 not(target_arch = "arm"),
2758 stable(feature = "neon_intrinsics", since = "1.59.0")
2759)]
2760#[cfg_attr(
2761 target_arch = "arm",
2762 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2763)]
2764pub fn vaddw_high_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {
2765 unsafe {
2766 let b: int16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
2767 let b: int32x4_t = simd_cast(b);
2768 simd_add(a, b)
2769 }
2770}
2771#[doc = "Add Wide (high half)."]
2772#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_high_s32)"]
2773#[inline]
2774#[target_feature(enable = "neon")]
2775#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2776#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2777#[cfg_attr(
2778 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2779 assert_instr(saddw2)
2780)]
2781#[cfg_attr(
2782 not(target_arch = "arm"),
2783 stable(feature = "neon_intrinsics", since = "1.59.0")
2784)]
2785#[cfg_attr(
2786 target_arch = "arm",
2787 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2788)]
2789pub fn vaddw_high_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {
2790 unsafe {
2791 let b: int32x2_t = simd_shuffle!(b, b, [2, 3]);
2792 let b: int64x2_t = simd_cast(b);
2793 simd_add(a, b)
2794 }
2795}
2796#[doc = "Add Wide (high half)."]
2797#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_high_s8)"]
2798#[inline]
2799#[target_feature(enable = "neon")]
2800#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2801#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2802#[cfg_attr(
2803 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2804 assert_instr(saddw2)
2805)]
2806#[cfg_attr(
2807 not(target_arch = "arm"),
2808 stable(feature = "neon_intrinsics", since = "1.59.0")
2809)]
2810#[cfg_attr(
2811 target_arch = "arm",
2812 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2813)]
2814pub fn vaddw_high_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {
2815 unsafe {
2816 let b: int8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
2817 let b: int16x8_t = simd_cast(b);
2818 simd_add(a, b)
2819 }
2820}
2821#[doc = "Add Wide (high half)."]
2822#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_high_u16)"]
2823#[inline]
2824#[target_feature(enable = "neon")]
2825#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2826#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2827#[cfg_attr(
2828 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2829 assert_instr(uaddw2)
2830)]
2831#[cfg_attr(
2832 not(target_arch = "arm"),
2833 stable(feature = "neon_intrinsics", since = "1.59.0")
2834)]
2835#[cfg_attr(
2836 target_arch = "arm",
2837 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2838)]
2839pub fn vaddw_high_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {
2840 unsafe {
2841 let b: uint16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
2842 let b: uint32x4_t = simd_cast(b);
2843 simd_add(a, b)
2844 }
2845}
2846#[doc = "Add Wide (high half)."]
2847#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_high_u32)"]
2848#[inline]
2849#[target_feature(enable = "neon")]
2850#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2851#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2852#[cfg_attr(
2853 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2854 assert_instr(uaddw2)
2855)]
2856#[cfg_attr(
2857 not(target_arch = "arm"),
2858 stable(feature = "neon_intrinsics", since = "1.59.0")
2859)]
2860#[cfg_attr(
2861 target_arch = "arm",
2862 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2863)]
2864pub fn vaddw_high_u32(a: uint64x2_t, b: uint32x4_t) -> uint64x2_t {
2865 unsafe {
2866 let b: uint32x2_t = simd_shuffle!(b, b, [2, 3]);
2867 let b: uint64x2_t = simd_cast(b);
2868 simd_add(a, b)
2869 }
2870}
2871#[doc = "Add Wide (high half)."]
2872#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_high_u8)"]
2873#[inline]
2874#[target_feature(enable = "neon")]
2875#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2876#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2877#[cfg_attr(
2878 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2879 assert_instr(uaddw2)
2880)]
2881#[cfg_attr(
2882 not(target_arch = "arm"),
2883 stable(feature = "neon_intrinsics", since = "1.59.0")
2884)]
2885#[cfg_attr(
2886 target_arch = "arm",
2887 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2888)]
2889pub fn vaddw_high_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {
2890 unsafe {
2891 let b: uint8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
2892 let b: uint16x8_t = simd_cast(b);
2893 simd_add(a, b)
2894 }
2895}
2896#[doc = "Add Wide"]
2897#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_s16)"]
2898#[inline]
2899#[target_feature(enable = "neon")]
2900#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2901#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2902#[cfg_attr(
2903 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2904 assert_instr(saddw)
2905)]
2906#[cfg_attr(
2907 not(target_arch = "arm"),
2908 stable(feature = "neon_intrinsics", since = "1.59.0")
2909)]
2910#[cfg_attr(
2911 target_arch = "arm",
2912 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2913)]
2914pub fn vaddw_s16(a: int32x4_t, b: int16x4_t) -> int32x4_t {
2915 unsafe {
2916 let b: int32x4_t = simd_cast(b);
2917 simd_add(a, b)
2918 }
2919}
2920#[doc = "Add Wide"]
2921#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_s32)"]
2922#[inline]
2923#[target_feature(enable = "neon")]
2924#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2925#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2926#[cfg_attr(
2927 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2928 assert_instr(saddw)
2929)]
2930#[cfg_attr(
2931 not(target_arch = "arm"),
2932 stable(feature = "neon_intrinsics", since = "1.59.0")
2933)]
2934#[cfg_attr(
2935 target_arch = "arm",
2936 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2937)]
2938pub fn vaddw_s32(a: int64x2_t, b: int32x2_t) -> int64x2_t {
2939 unsafe {
2940 let b: int64x2_t = simd_cast(b);
2941 simd_add(a, b)
2942 }
2943}
2944#[doc = "Add Wide"]
2945#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_s8)"]
2946#[inline]
2947#[target_feature(enable = "neon")]
2948#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2949#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2950#[cfg_attr(
2951 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2952 assert_instr(saddw)
2953)]
2954#[cfg_attr(
2955 not(target_arch = "arm"),
2956 stable(feature = "neon_intrinsics", since = "1.59.0")
2957)]
2958#[cfg_attr(
2959 target_arch = "arm",
2960 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2961)]
2962pub fn vaddw_s8(a: int16x8_t, b: int8x8_t) -> int16x8_t {
2963 unsafe {
2964 let b: int16x8_t = simd_cast(b);
2965 simd_add(a, b)
2966 }
2967}
2968#[doc = "Add Wide"]
2969#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_u16)"]
2970#[inline]
2971#[target_feature(enable = "neon")]
2972#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2973#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2974#[cfg_attr(
2975 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2976 assert_instr(uaddw)
2977)]
2978#[cfg_attr(
2979 not(target_arch = "arm"),
2980 stable(feature = "neon_intrinsics", since = "1.59.0")
2981)]
2982#[cfg_attr(
2983 target_arch = "arm",
2984 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2985)]
2986pub fn vaddw_u16(a: uint32x4_t, b: uint16x4_t) -> uint32x4_t {
2987 unsafe {
2988 let b: uint32x4_t = simd_cast(b);
2989 simd_add(a, b)
2990 }
2991}
2992#[doc = "Add Wide"]
2993#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_u32)"]
2994#[inline]
2995#[target_feature(enable = "neon")]
2996#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2997#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2998#[cfg_attr(
2999 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3000 assert_instr(uaddw)
3001)]
3002#[cfg_attr(
3003 not(target_arch = "arm"),
3004 stable(feature = "neon_intrinsics", since = "1.59.0")
3005)]
3006#[cfg_attr(
3007 target_arch = "arm",
3008 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3009)]
3010pub fn vaddw_u32(a: uint64x2_t, b: uint32x2_t) -> uint64x2_t {
3011 unsafe {
3012 let b: uint64x2_t = simd_cast(b);
3013 simd_add(a, b)
3014 }
3015}
3016#[doc = "Add Wide"]
3017#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_u8)"]
3018#[inline]
3019#[target_feature(enable = "neon")]
3020#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3021#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
3022#[cfg_attr(
3023 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3024 assert_instr(uaddw)
3025)]
3026#[cfg_attr(
3027 not(target_arch = "arm"),
3028 stable(feature = "neon_intrinsics", since = "1.59.0")
3029)]
3030#[cfg_attr(
3031 target_arch = "arm",
3032 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3033)]
3034pub fn vaddw_u8(a: uint16x8_t, b: uint8x8_t) -> uint16x8_t {
3035 unsafe {
3036 let b: uint16x8_t = simd_cast(b);
3037 simd_add(a, b)
3038 }
3039}
3040#[doc = "AES single round encryption."]
3041#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaesdq_u8)"]
3042#[inline]
3043#[target_feature(enable = "aes")]
3044#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
3045#[cfg_attr(test, assert_instr(aesd))]
3046#[cfg_attr(
3047 target_arch = "arm",
3048 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3049)]
3050#[cfg_attr(
3051 not(target_arch = "arm"),
3052 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
3053)]
3054pub fn vaesdq_u8(data: uint8x16_t, key: uint8x16_t) -> uint8x16_t {
3055 unsafe extern "unadjusted" {
3056 #[cfg_attr(
3057 any(target_arch = "aarch64", target_arch = "arm64ec"),
3058 link_name = "llvm.aarch64.crypto.aesd"
3059 )]
3060 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.aesd")]
3061 fn _vaesdq_u8(data: uint8x16_t, key: uint8x16_t) -> uint8x16_t;
3062 }
3063 unsafe { _vaesdq_u8(data, key) }
3064}
3065#[doc = "AES single round encryption."]
3066#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaeseq_u8)"]
3067#[inline]
3068#[target_feature(enable = "aes")]
3069#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
3070#[cfg_attr(test, assert_instr(aese))]
3071#[cfg_attr(
3072 target_arch = "arm",
3073 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3074)]
3075#[cfg_attr(
3076 not(target_arch = "arm"),
3077 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
3078)]
3079pub fn vaeseq_u8(data: uint8x16_t, key: uint8x16_t) -> uint8x16_t {
3080 unsafe extern "unadjusted" {
3081 #[cfg_attr(
3082 any(target_arch = "aarch64", target_arch = "arm64ec"),
3083 link_name = "llvm.aarch64.crypto.aese"
3084 )]
3085 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.aese")]
3086 fn _vaeseq_u8(data: uint8x16_t, key: uint8x16_t) -> uint8x16_t;
3087 }
3088 unsafe { _vaeseq_u8(data, key) }
3089}
3090#[doc = "AES inverse mix columns."]
3091#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaesimcq_u8)"]
3092#[inline]
3093#[target_feature(enable = "aes")]
3094#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
3095#[cfg_attr(test, assert_instr(aesimc))]
3096#[cfg_attr(
3097 target_arch = "arm",
3098 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3099)]
3100#[cfg_attr(
3101 not(target_arch = "arm"),
3102 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
3103)]
3104pub fn vaesimcq_u8(data: uint8x16_t) -> uint8x16_t {
3105 unsafe extern "unadjusted" {
3106 #[cfg_attr(
3107 any(target_arch = "aarch64", target_arch = "arm64ec"),
3108 link_name = "llvm.aarch64.crypto.aesimc"
3109 )]
3110 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.aesimc")]
3111 fn _vaesimcq_u8(data: uint8x16_t) -> uint8x16_t;
3112 }
3113 unsafe { _vaesimcq_u8(data) }
3114}
3115#[doc = "AES mix columns."]
3116#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaesmcq_u8)"]
3117#[inline]
3118#[target_feature(enable = "aes")]
3119#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
3120#[cfg_attr(test, assert_instr(aesmc))]
3121#[cfg_attr(
3122 target_arch = "arm",
3123 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3124)]
3125#[cfg_attr(
3126 not(target_arch = "arm"),
3127 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
3128)]
3129pub fn vaesmcq_u8(data: uint8x16_t) -> uint8x16_t {
3130 unsafe extern "unadjusted" {
3131 #[cfg_attr(
3132 any(target_arch = "aarch64", target_arch = "arm64ec"),
3133 link_name = "llvm.aarch64.crypto.aesmc"
3134 )]
3135 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.aesmc")]
3136 fn _vaesmcq_u8(data: uint8x16_t) -> uint8x16_t;
3137 }
3138 unsafe { _vaesmcq_u8(data) }
3139}
3140#[doc = "Vector bitwise and"]
3141#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vand_s8)"]
3142#[inline]
3143#[target_feature(enable = "neon")]
3144#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3145#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vand))]
3146#[cfg_attr(
3147 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3148 assert_instr(and)
3149)]
3150#[cfg_attr(
3151 not(target_arch = "arm"),
3152 stable(feature = "neon_intrinsics", since = "1.59.0")
3153)]
3154#[cfg_attr(
3155 target_arch = "arm",
3156 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3157)]
3158pub fn vand_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
3159 unsafe { simd_and(a, b) }
3160}
3161#[doc = "Vector bitwise and"]
3162#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vandq_s8)"]
3163#[inline]
3164#[target_feature(enable = "neon")]
3165#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3166#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vand))]
3167#[cfg_attr(
3168 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3169 assert_instr(and)
3170)]
3171#[cfg_attr(
3172 not(target_arch = "arm"),
3173 stable(feature = "neon_intrinsics", since = "1.59.0")
3174)]
3175#[cfg_attr(
3176 target_arch = "arm",
3177 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3178)]
3179pub fn vandq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
3180 unsafe { simd_and(a, b) }
3181}
3182#[doc = "Vector bitwise and"]
3183#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vand_s16)"]
3184#[inline]
3185#[target_feature(enable = "neon")]
3186#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3187#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vand))]
3188#[cfg_attr(
3189 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3190 assert_instr(and)
3191)]
3192#[cfg_attr(
3193 not(target_arch = "arm"),
3194 stable(feature = "neon_intrinsics", since = "1.59.0")
3195)]
3196#[cfg_attr(
3197 target_arch = "arm",
3198 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3199)]
3200pub fn vand_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
3201 unsafe { simd_and(a, b) }
3202}
3203#[doc = "Vector bitwise and"]
3204#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vandq_s16)"]
3205#[inline]
3206#[target_feature(enable = "neon")]
3207#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3208#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vand))]
3209#[cfg_attr(
3210 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3211 assert_instr(and)
3212)]
3213#[cfg_attr(
3214 not(target_arch = "arm"),
3215 stable(feature = "neon_intrinsics", since = "1.59.0")
3216)]
3217#[cfg_attr(
3218 target_arch = "arm",
3219 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3220)]
3221pub fn vandq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
3222 unsafe { simd_and(a, b) }
3223}
3224#[doc = "Vector bitwise and"]
3225#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vand_s32)"]
3226#[inline]
3227#[target_feature(enable = "neon")]
3228#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3229#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vand))]
3230#[cfg_attr(
3231 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3232 assert_instr(and)
3233)]
3234#[cfg_attr(
3235 not(target_arch = "arm"),
3236 stable(feature = "neon_intrinsics", since = "1.59.0")
3237)]
3238#[cfg_attr(
3239 target_arch = "arm",
3240 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3241)]
3242pub fn vand_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
3243 unsafe { simd_and(a, b) }
3244}
3245#[doc = "Vector bitwise and"]
3246#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vandq_s32)"]
3247#[inline]
3248#[target_feature(enable = "neon")]
3249#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3250#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vand))]
3251#[cfg_attr(
3252 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3253 assert_instr(and)
3254)]
3255#[cfg_attr(
3256 not(target_arch = "arm"),
3257 stable(feature = "neon_intrinsics", since = "1.59.0")
3258)]
3259#[cfg_attr(
3260 target_arch = "arm",
3261 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3262)]
3263pub fn vandq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
3264 unsafe { simd_and(a, b) }
3265}
3266#[doc = "Vector bitwise and"]
3267#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vand_s64)"]
3268#[inline]
3269#[target_feature(enable = "neon")]
3270#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3271#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vand))]
3272#[cfg_attr(
3273 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3274 assert_instr(and)
3275)]
3276#[cfg_attr(
3277 not(target_arch = "arm"),
3278 stable(feature = "neon_intrinsics", since = "1.59.0")
3279)]
3280#[cfg_attr(
3281 target_arch = "arm",
3282 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3283)]
3284pub fn vand_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
3285 unsafe { simd_and(a, b) }
3286}
3287#[doc = "Vector bitwise and"]
3288#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vandq_s64)"]
3289#[inline]
3290#[target_feature(enable = "neon")]
3291#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3292#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vand))]
3293#[cfg_attr(
3294 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3295 assert_instr(and)
3296)]
3297#[cfg_attr(
3298 not(target_arch = "arm"),
3299 stable(feature = "neon_intrinsics", since = "1.59.0")
3300)]
3301#[cfg_attr(
3302 target_arch = "arm",
3303 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3304)]
3305pub fn vandq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
3306 unsafe { simd_and(a, b) }
3307}
3308#[doc = "Vector bitwise and"]
3309#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vand_u8)"]
3310#[inline]
3311#[target_feature(enable = "neon")]
3312#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3313#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vand))]
3314#[cfg_attr(
3315 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3316 assert_instr(and)
3317)]
3318#[cfg_attr(
3319 not(target_arch = "arm"),
3320 stable(feature = "neon_intrinsics", since = "1.59.0")
3321)]
3322#[cfg_attr(
3323 target_arch = "arm",
3324 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3325)]
3326pub fn vand_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
3327 unsafe { simd_and(a, b) }
3328}
3329#[doc = "Vector bitwise and"]
3330#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vandq_u8)"]
3331#[inline]
3332#[target_feature(enable = "neon")]
3333#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3334#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vand))]
3335#[cfg_attr(
3336 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3337 assert_instr(and)
3338)]
3339#[cfg_attr(
3340 not(target_arch = "arm"),
3341 stable(feature = "neon_intrinsics", since = "1.59.0")
3342)]
3343#[cfg_attr(
3344 target_arch = "arm",
3345 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3346)]
3347pub fn vandq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
3348 unsafe { simd_and(a, b) }
3349}
3350#[doc = "Vector bitwise and"]
3351#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vand_u16)"]
3352#[inline]
3353#[target_feature(enable = "neon")]
3354#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3355#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vand))]
3356#[cfg_attr(
3357 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3358 assert_instr(and)
3359)]
3360#[cfg_attr(
3361 not(target_arch = "arm"),
3362 stable(feature = "neon_intrinsics", since = "1.59.0")
3363)]
3364#[cfg_attr(
3365 target_arch = "arm",
3366 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3367)]
3368pub fn vand_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
3369 unsafe { simd_and(a, b) }
3370}
3371#[doc = "Vector bitwise and"]
3372#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vandq_u16)"]
3373#[inline]
3374#[target_feature(enable = "neon")]
3375#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3376#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vand))]
3377#[cfg_attr(
3378 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3379 assert_instr(and)
3380)]
3381#[cfg_attr(
3382 not(target_arch = "arm"),
3383 stable(feature = "neon_intrinsics", since = "1.59.0")
3384)]
3385#[cfg_attr(
3386 target_arch = "arm",
3387 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3388)]
3389pub fn vandq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
3390 unsafe { simd_and(a, b) }
3391}
3392#[doc = "Vector bitwise and"]
3393#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vand_u32)"]
3394#[inline]
3395#[target_feature(enable = "neon")]
3396#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3397#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vand))]
3398#[cfg_attr(
3399 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3400 assert_instr(and)
3401)]
3402#[cfg_attr(
3403 not(target_arch = "arm"),
3404 stable(feature = "neon_intrinsics", since = "1.59.0")
3405)]
3406#[cfg_attr(
3407 target_arch = "arm",
3408 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3409)]
3410pub fn vand_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
3411 unsafe { simd_and(a, b) }
3412}
3413#[doc = "Vector bitwise and"]
3414#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vandq_u32)"]
3415#[inline]
3416#[target_feature(enable = "neon")]
3417#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3418#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vand))]
3419#[cfg_attr(
3420 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3421 assert_instr(and)
3422)]
3423#[cfg_attr(
3424 not(target_arch = "arm"),
3425 stable(feature = "neon_intrinsics", since = "1.59.0")
3426)]
3427#[cfg_attr(
3428 target_arch = "arm",
3429 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3430)]
3431pub fn vandq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
3432 unsafe { simd_and(a, b) }
3433}
3434#[doc = "Vector bitwise and"]
3435#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vand_u64)"]
3436#[inline]
3437#[target_feature(enable = "neon")]
3438#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3439#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vand))]
3440#[cfg_attr(
3441 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3442 assert_instr(and)
3443)]
3444#[cfg_attr(
3445 not(target_arch = "arm"),
3446 stable(feature = "neon_intrinsics", since = "1.59.0")
3447)]
3448#[cfg_attr(
3449 target_arch = "arm",
3450 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3451)]
3452pub fn vand_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
3453 unsafe { simd_and(a, b) }
3454}
3455#[doc = "Vector bitwise and"]
3456#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vandq_u64)"]
3457#[inline]
3458#[target_feature(enable = "neon")]
3459#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3460#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vand))]
3461#[cfg_attr(
3462 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3463 assert_instr(and)
3464)]
3465#[cfg_attr(
3466 not(target_arch = "arm"),
3467 stable(feature = "neon_intrinsics", since = "1.59.0")
3468)]
3469#[cfg_attr(
3470 target_arch = "arm",
3471 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3472)]
3473pub fn vandq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
3474 unsafe { simd_and(a, b) }
3475}
3476#[doc = "Vector bitwise bit clear."]
3477#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbic_s16)"]
3478#[inline]
3479#[target_feature(enable = "neon")]
3480#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3481#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3482#[cfg_attr(
3483 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3484 assert_instr(bic)
3485)]
3486#[cfg_attr(
3487 not(target_arch = "arm"),
3488 stable(feature = "neon_intrinsics", since = "1.59.0")
3489)]
3490#[cfg_attr(
3491 target_arch = "arm",
3492 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3493)]
3494pub fn vbic_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
3495 let c = int16x4_t::splat(-1);
3496 unsafe { simd_and(simd_xor(b, c), a) }
3497}
3498#[doc = "Vector bitwise bit clear."]
3499#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbic_s32)"]
3500#[inline]
3501#[target_feature(enable = "neon")]
3502#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3503#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3504#[cfg_attr(
3505 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3506 assert_instr(bic)
3507)]
3508#[cfg_attr(
3509 not(target_arch = "arm"),
3510 stable(feature = "neon_intrinsics", since = "1.59.0")
3511)]
3512#[cfg_attr(
3513 target_arch = "arm",
3514 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3515)]
3516pub fn vbic_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
3517 let c = int32x2_t::splat(-1);
3518 unsafe { simd_and(simd_xor(b, c), a) }
3519}
3520#[doc = "Vector bitwise bit clear."]
3521#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbic_s64)"]
3522#[inline]
3523#[target_feature(enable = "neon")]
3524#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3525#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3526#[cfg_attr(
3527 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3528 assert_instr(bic)
3529)]
3530#[cfg_attr(
3531 not(target_arch = "arm"),
3532 stable(feature = "neon_intrinsics", since = "1.59.0")
3533)]
3534#[cfg_attr(
3535 target_arch = "arm",
3536 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3537)]
3538pub fn vbic_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
3539 let c = int64x1_t::splat(-1);
3540 unsafe { simd_and(simd_xor(b, c), a) }
3541}
3542#[doc = "Vector bitwise bit clear."]
3543#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbic_s8)"]
3544#[inline]
3545#[target_feature(enable = "neon")]
3546#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3547#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3548#[cfg_attr(
3549 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3550 assert_instr(bic)
3551)]
3552#[cfg_attr(
3553 not(target_arch = "arm"),
3554 stable(feature = "neon_intrinsics", since = "1.59.0")
3555)]
3556#[cfg_attr(
3557 target_arch = "arm",
3558 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3559)]
3560pub fn vbic_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
3561 let c = int8x8_t::splat(-1);
3562 unsafe { simd_and(simd_xor(b, c), a) }
3563}
3564#[doc = "Vector bitwise bit clear."]
3565#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbicq_s16)"]
3566#[inline]
3567#[target_feature(enable = "neon")]
3568#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3569#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3570#[cfg_attr(
3571 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3572 assert_instr(bic)
3573)]
3574#[cfg_attr(
3575 not(target_arch = "arm"),
3576 stable(feature = "neon_intrinsics", since = "1.59.0")
3577)]
3578#[cfg_attr(
3579 target_arch = "arm",
3580 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3581)]
3582pub fn vbicq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
3583 let c = int16x8_t::splat(-1);
3584 unsafe { simd_and(simd_xor(b, c), a) }
3585}
3586#[doc = "Vector bitwise bit clear."]
3587#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbicq_s32)"]
3588#[inline]
3589#[target_feature(enable = "neon")]
3590#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3591#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3592#[cfg_attr(
3593 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3594 assert_instr(bic)
3595)]
3596#[cfg_attr(
3597 not(target_arch = "arm"),
3598 stable(feature = "neon_intrinsics", since = "1.59.0")
3599)]
3600#[cfg_attr(
3601 target_arch = "arm",
3602 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3603)]
3604pub fn vbicq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
3605 let c = int32x4_t::splat(-1);
3606 unsafe { simd_and(simd_xor(b, c), a) }
3607}
3608#[doc = "Vector bitwise bit clear."]
3609#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbicq_s64)"]
3610#[inline]
3611#[target_feature(enable = "neon")]
3612#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3613#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3614#[cfg_attr(
3615 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3616 assert_instr(bic)
3617)]
3618#[cfg_attr(
3619 not(target_arch = "arm"),
3620 stable(feature = "neon_intrinsics", since = "1.59.0")
3621)]
3622#[cfg_attr(
3623 target_arch = "arm",
3624 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3625)]
3626pub fn vbicq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
3627 let c = int64x2_t::splat(-1);
3628 unsafe { simd_and(simd_xor(b, c), a) }
3629}
3630#[doc = "Vector bitwise bit clear."]
3631#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbicq_s8)"]
3632#[inline]
3633#[target_feature(enable = "neon")]
3634#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3635#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3636#[cfg_attr(
3637 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3638 assert_instr(bic)
3639)]
3640#[cfg_attr(
3641 not(target_arch = "arm"),
3642 stable(feature = "neon_intrinsics", since = "1.59.0")
3643)]
3644#[cfg_attr(
3645 target_arch = "arm",
3646 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3647)]
3648pub fn vbicq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
3649 let c = int8x16_t::splat(-1);
3650 unsafe { simd_and(simd_xor(b, c), a) }
3651}
3652#[doc = "Vector bitwise bit clear."]
3653#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbic_u16)"]
3654#[inline]
3655#[target_feature(enable = "neon")]
3656#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3657#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3658#[cfg_attr(
3659 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3660 assert_instr(bic)
3661)]
3662#[cfg_attr(
3663 not(target_arch = "arm"),
3664 stable(feature = "neon_intrinsics", since = "1.59.0")
3665)]
3666#[cfg_attr(
3667 target_arch = "arm",
3668 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3669)]
3670pub fn vbic_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
3671 let c = int16x4_t::splat(-1);
3672 unsafe { simd_and(simd_xor(b, transmute(c)), a) }
3673}
3674#[doc = "Vector bitwise bit clear."]
3675#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbic_u32)"]
3676#[inline]
3677#[target_feature(enable = "neon")]
3678#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3679#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3680#[cfg_attr(
3681 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3682 assert_instr(bic)
3683)]
3684#[cfg_attr(
3685 not(target_arch = "arm"),
3686 stable(feature = "neon_intrinsics", since = "1.59.0")
3687)]
3688#[cfg_attr(
3689 target_arch = "arm",
3690 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3691)]
3692pub fn vbic_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
3693 let c = int32x2_t::splat(-1);
3694 unsafe { simd_and(simd_xor(b, transmute(c)), a) }
3695}
3696#[doc = "Vector bitwise bit clear."]
3697#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbic_u64)"]
3698#[inline]
3699#[target_feature(enable = "neon")]
3700#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3701#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3702#[cfg_attr(
3703 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3704 assert_instr(bic)
3705)]
3706#[cfg_attr(
3707 not(target_arch = "arm"),
3708 stable(feature = "neon_intrinsics", since = "1.59.0")
3709)]
3710#[cfg_attr(
3711 target_arch = "arm",
3712 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3713)]
3714pub fn vbic_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
3715 let c = int64x1_t::splat(-1);
3716 unsafe { simd_and(simd_xor(b, transmute(c)), a) }
3717}
3718#[doc = "Vector bitwise bit clear."]
3719#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbic_u8)"]
3720#[inline]
3721#[target_feature(enable = "neon")]
3722#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3723#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3724#[cfg_attr(
3725 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3726 assert_instr(bic)
3727)]
3728#[cfg_attr(
3729 not(target_arch = "arm"),
3730 stable(feature = "neon_intrinsics", since = "1.59.0")
3731)]
3732#[cfg_attr(
3733 target_arch = "arm",
3734 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3735)]
3736pub fn vbic_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
3737 let c = int8x8_t::splat(-1);
3738 unsafe { simd_and(simd_xor(b, transmute(c)), a) }
3739}
3740#[doc = "Vector bitwise bit clear."]
3741#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbicq_u16)"]
3742#[inline]
3743#[target_feature(enable = "neon")]
3744#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3745#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3746#[cfg_attr(
3747 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3748 assert_instr(bic)
3749)]
3750#[cfg_attr(
3751 not(target_arch = "arm"),
3752 stable(feature = "neon_intrinsics", since = "1.59.0")
3753)]
3754#[cfg_attr(
3755 target_arch = "arm",
3756 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3757)]
3758pub fn vbicq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
3759 let c = int16x8_t::splat(-1);
3760 unsafe { simd_and(simd_xor(b, transmute(c)), a) }
3761}
3762#[doc = "Vector bitwise bit clear."]
3763#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbicq_u32)"]
3764#[inline]
3765#[target_feature(enable = "neon")]
3766#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3767#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3768#[cfg_attr(
3769 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3770 assert_instr(bic)
3771)]
3772#[cfg_attr(
3773 not(target_arch = "arm"),
3774 stable(feature = "neon_intrinsics", since = "1.59.0")
3775)]
3776#[cfg_attr(
3777 target_arch = "arm",
3778 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3779)]
3780pub fn vbicq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
3781 let c = int32x4_t::splat(-1);
3782 unsafe { simd_and(simd_xor(b, transmute(c)), a) }
3783}
3784#[doc = "Vector bitwise bit clear."]
3785#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbicq_u64)"]
3786#[inline]
3787#[target_feature(enable = "neon")]
3788#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3789#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3790#[cfg_attr(
3791 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3792 assert_instr(bic)
3793)]
3794#[cfg_attr(
3795 not(target_arch = "arm"),
3796 stable(feature = "neon_intrinsics", since = "1.59.0")
3797)]
3798#[cfg_attr(
3799 target_arch = "arm",
3800 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3801)]
3802pub fn vbicq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
3803 let c = int64x2_t::splat(-1);
3804 unsafe { simd_and(simd_xor(b, transmute(c)), a) }
3805}
3806#[doc = "Vector bitwise bit clear."]
3807#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbicq_u8)"]
3808#[inline]
3809#[target_feature(enable = "neon")]
3810#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3811#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3812#[cfg_attr(
3813 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3814 assert_instr(bic)
3815)]
3816#[cfg_attr(
3817 not(target_arch = "arm"),
3818 stable(feature = "neon_intrinsics", since = "1.59.0")
3819)]
3820#[cfg_attr(
3821 target_arch = "arm",
3822 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3823)]
3824pub fn vbicq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
3825 let c = int8x16_t::splat(-1);
3826 unsafe { simd_and(simd_xor(b, transmute(c)), a) }
3827}
3828#[doc = "Bitwise Select."]
3829#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_f16)"]
3830#[inline]
3831#[target_feature(enable = "neon,fp16")]
3832#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3833#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
3834#[cfg_attr(
3835 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3836 assert_instr(bsl)
3837)]
3838#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
3839#[cfg(not(target_arch = "arm64ec"))]
3840pub fn vbsl_f16(a: uint16x4_t, b: float16x4_t, c: float16x4_t) -> float16x4_t {
3841 let not = int16x4_t::splat(-1);
3842 unsafe {
3843 transmute(simd_or(
3844 simd_and(a, transmute(b)),
3845 simd_and(simd_xor(a, transmute(not)), transmute(c)),
3846 ))
3847 }
3848}
3849#[doc = "Bitwise Select."]
3850#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_f16)"]
3851#[inline]
3852#[target_feature(enable = "neon,fp16")]
3853#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3854#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
3855#[cfg_attr(
3856 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3857 assert_instr(bsl)
3858)]
3859#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
3860#[cfg(not(target_arch = "arm64ec"))]
3861pub fn vbslq_f16(a: uint16x8_t, b: float16x8_t, c: float16x8_t) -> float16x8_t {
3862 let not = int16x8_t::splat(-1);
3863 unsafe {
3864 transmute(simd_or(
3865 simd_and(a, transmute(b)),
3866 simd_and(simd_xor(a, transmute(not)), transmute(c)),
3867 ))
3868 }
3869}
3870#[doc = "Bitwise Select."]
3871#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_f32)"]
3872#[inline]
3873#[target_feature(enable = "neon")]
3874#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3875#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
3876#[cfg_attr(
3877 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3878 assert_instr(bsl)
3879)]
3880#[cfg_attr(
3881 not(target_arch = "arm"),
3882 stable(feature = "neon_intrinsics", since = "1.59.0")
3883)]
3884#[cfg_attr(
3885 target_arch = "arm",
3886 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3887)]
3888pub fn vbsl_f32(a: uint32x2_t, b: float32x2_t, c: float32x2_t) -> float32x2_t {
3889 let not = int32x2_t::splat(-1);
3890 unsafe {
3891 transmute(simd_or(
3892 simd_and(a, transmute(b)),
3893 simd_and(simd_xor(a, transmute(not)), transmute(c)),
3894 ))
3895 }
3896}
3897#[doc = "Bitwise Select."]
3898#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_p16)"]
3899#[inline]
3900#[target_feature(enable = "neon")]
3901#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3902#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
3903#[cfg_attr(
3904 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3905 assert_instr(bsl)
3906)]
3907#[cfg_attr(
3908 not(target_arch = "arm"),
3909 stable(feature = "neon_intrinsics", since = "1.59.0")
3910)]
3911#[cfg_attr(
3912 target_arch = "arm",
3913 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3914)]
3915pub fn vbsl_p16(a: uint16x4_t, b: poly16x4_t, c: poly16x4_t) -> poly16x4_t {
3916 let not = int16x4_t::splat(-1);
3917 unsafe {
3918 transmute(simd_or(
3919 simd_and(a, transmute(b)),
3920 simd_and(simd_xor(a, transmute(not)), transmute(c)),
3921 ))
3922 }
3923}
3924#[doc = "Bitwise Select."]
3925#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_p8)"]
3926#[inline]
3927#[target_feature(enable = "neon")]
3928#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3929#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
3930#[cfg_attr(
3931 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3932 assert_instr(bsl)
3933)]
3934#[cfg_attr(
3935 not(target_arch = "arm"),
3936 stable(feature = "neon_intrinsics", since = "1.59.0")
3937)]
3938#[cfg_attr(
3939 target_arch = "arm",
3940 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3941)]
3942pub fn vbsl_p8(a: uint8x8_t, b: poly8x8_t, c: poly8x8_t) -> poly8x8_t {
3943 let not = int8x8_t::splat(-1);
3944 unsafe {
3945 transmute(simd_or(
3946 simd_and(a, transmute(b)),
3947 simd_and(simd_xor(a, transmute(not)), transmute(c)),
3948 ))
3949 }
3950}
3951#[doc = "Bitwise Select."]
3952#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_s16)"]
3953#[inline]
3954#[target_feature(enable = "neon")]
3955#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3956#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
3957#[cfg_attr(
3958 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3959 assert_instr(bsl)
3960)]
3961#[cfg_attr(
3962 not(target_arch = "arm"),
3963 stable(feature = "neon_intrinsics", since = "1.59.0")
3964)]
3965#[cfg_attr(
3966 target_arch = "arm",
3967 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3968)]
3969pub fn vbsl_s16(a: uint16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
3970 let not = int16x4_t::splat(-1);
3971 unsafe {
3972 transmute(simd_or(
3973 simd_and(a, transmute(b)),
3974 simd_and(simd_xor(a, transmute(not)), transmute(c)),
3975 ))
3976 }
3977}
3978#[doc = "Bitwise Select."]
3979#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_s32)"]
3980#[inline]
3981#[target_feature(enable = "neon")]
3982#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3983#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
3984#[cfg_attr(
3985 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3986 assert_instr(bsl)
3987)]
3988#[cfg_attr(
3989 not(target_arch = "arm"),
3990 stable(feature = "neon_intrinsics", since = "1.59.0")
3991)]
3992#[cfg_attr(
3993 target_arch = "arm",
3994 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3995)]
3996pub fn vbsl_s32(a: uint32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
3997 let not = int32x2_t::splat(-1);
3998 unsafe {
3999 transmute(simd_or(
4000 simd_and(a, transmute(b)),
4001 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4002 ))
4003 }
4004}
4005#[doc = "Bitwise Select."]
4006#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_s64)"]
4007#[inline]
4008#[target_feature(enable = "neon")]
4009#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4010#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4011#[cfg_attr(
4012 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4013 assert_instr(bsl)
4014)]
4015#[cfg_attr(
4016 not(target_arch = "arm"),
4017 stable(feature = "neon_intrinsics", since = "1.59.0")
4018)]
4019#[cfg_attr(
4020 target_arch = "arm",
4021 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4022)]
4023pub fn vbsl_s64(a: uint64x1_t, b: int64x1_t, c: int64x1_t) -> int64x1_t {
4024 let not = int64x1_t::splat(-1);
4025 unsafe {
4026 transmute(simd_or(
4027 simd_and(a, transmute(b)),
4028 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4029 ))
4030 }
4031}
4032#[doc = "Bitwise Select."]
4033#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_s8)"]
4034#[inline]
4035#[target_feature(enable = "neon")]
4036#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4037#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4038#[cfg_attr(
4039 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4040 assert_instr(bsl)
4041)]
4042#[cfg_attr(
4043 not(target_arch = "arm"),
4044 stable(feature = "neon_intrinsics", since = "1.59.0")
4045)]
4046#[cfg_attr(
4047 target_arch = "arm",
4048 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4049)]
4050pub fn vbsl_s8(a: uint8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
4051 let not = int8x8_t::splat(-1);
4052 unsafe {
4053 transmute(simd_or(
4054 simd_and(a, transmute(b)),
4055 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4056 ))
4057 }
4058}
4059#[doc = "Bitwise Select."]
4060#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_f32)"]
4061#[inline]
4062#[target_feature(enable = "neon")]
4063#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4064#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4065#[cfg_attr(
4066 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4067 assert_instr(bsl)
4068)]
4069#[cfg_attr(
4070 not(target_arch = "arm"),
4071 stable(feature = "neon_intrinsics", since = "1.59.0")
4072)]
4073#[cfg_attr(
4074 target_arch = "arm",
4075 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4076)]
4077pub fn vbslq_f32(a: uint32x4_t, b: float32x4_t, c: float32x4_t) -> float32x4_t {
4078 let not = int32x4_t::splat(-1);
4079 unsafe {
4080 transmute(simd_or(
4081 simd_and(a, transmute(b)),
4082 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4083 ))
4084 }
4085}
4086#[doc = "Bitwise Select."]
4087#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_p16)"]
4088#[inline]
4089#[target_feature(enable = "neon")]
4090#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4091#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4092#[cfg_attr(
4093 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4094 assert_instr(bsl)
4095)]
4096#[cfg_attr(
4097 not(target_arch = "arm"),
4098 stable(feature = "neon_intrinsics", since = "1.59.0")
4099)]
4100#[cfg_attr(
4101 target_arch = "arm",
4102 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4103)]
4104pub fn vbslq_p16(a: uint16x8_t, b: poly16x8_t, c: poly16x8_t) -> poly16x8_t {
4105 let not = int16x8_t::splat(-1);
4106 unsafe {
4107 transmute(simd_or(
4108 simd_and(a, transmute(b)),
4109 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4110 ))
4111 }
4112}
4113#[doc = "Bitwise Select."]
4114#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_p8)"]
4115#[inline]
4116#[target_feature(enable = "neon")]
4117#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4118#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4119#[cfg_attr(
4120 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4121 assert_instr(bsl)
4122)]
4123#[cfg_attr(
4124 not(target_arch = "arm"),
4125 stable(feature = "neon_intrinsics", since = "1.59.0")
4126)]
4127#[cfg_attr(
4128 target_arch = "arm",
4129 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4130)]
4131pub fn vbslq_p8(a: uint8x16_t, b: poly8x16_t, c: poly8x16_t) -> poly8x16_t {
4132 let not = int8x16_t::splat(-1);
4133 unsafe {
4134 transmute(simd_or(
4135 simd_and(a, transmute(b)),
4136 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4137 ))
4138 }
4139}
4140#[doc = "Bitwise Select."]
4141#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_s16)"]
4142#[inline]
4143#[target_feature(enable = "neon")]
4144#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4145#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4146#[cfg_attr(
4147 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4148 assert_instr(bsl)
4149)]
4150#[cfg_attr(
4151 not(target_arch = "arm"),
4152 stable(feature = "neon_intrinsics", since = "1.59.0")
4153)]
4154#[cfg_attr(
4155 target_arch = "arm",
4156 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4157)]
4158pub fn vbslq_s16(a: uint16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
4159 let not = int16x8_t::splat(-1);
4160 unsafe {
4161 transmute(simd_or(
4162 simd_and(a, transmute(b)),
4163 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4164 ))
4165 }
4166}
4167#[doc = "Bitwise Select."]
4168#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_s32)"]
4169#[inline]
4170#[target_feature(enable = "neon")]
4171#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4172#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4173#[cfg_attr(
4174 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4175 assert_instr(bsl)
4176)]
4177#[cfg_attr(
4178 not(target_arch = "arm"),
4179 stable(feature = "neon_intrinsics", since = "1.59.0")
4180)]
4181#[cfg_attr(
4182 target_arch = "arm",
4183 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4184)]
4185pub fn vbslq_s32(a: uint32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
4186 let not = int32x4_t::splat(-1);
4187 unsafe {
4188 transmute(simd_or(
4189 simd_and(a, transmute(b)),
4190 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4191 ))
4192 }
4193}
4194#[doc = "Bitwise Select."]
4195#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_s64)"]
4196#[inline]
4197#[target_feature(enable = "neon")]
4198#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4199#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4200#[cfg_attr(
4201 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4202 assert_instr(bsl)
4203)]
4204#[cfg_attr(
4205 not(target_arch = "arm"),
4206 stable(feature = "neon_intrinsics", since = "1.59.0")
4207)]
4208#[cfg_attr(
4209 target_arch = "arm",
4210 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4211)]
4212pub fn vbslq_s64(a: uint64x2_t, b: int64x2_t, c: int64x2_t) -> int64x2_t {
4213 let not = int64x2_t::splat(-1);
4214 unsafe {
4215 transmute(simd_or(
4216 simd_and(a, transmute(b)),
4217 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4218 ))
4219 }
4220}
4221#[doc = "Bitwise Select."]
4222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_s8)"]
4223#[inline]
4224#[target_feature(enable = "neon")]
4225#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4226#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4227#[cfg_attr(
4228 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4229 assert_instr(bsl)
4230)]
4231#[cfg_attr(
4232 not(target_arch = "arm"),
4233 stable(feature = "neon_intrinsics", since = "1.59.0")
4234)]
4235#[cfg_attr(
4236 target_arch = "arm",
4237 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4238)]
4239pub fn vbslq_s8(a: uint8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t {
4240 let not = int8x16_t::splat(-1);
4241 unsafe {
4242 transmute(simd_or(
4243 simd_and(a, transmute(b)),
4244 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4245 ))
4246 }
4247}
4248#[doc = "Bitwise Select."]
4249#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_u16)"]
4250#[inline]
4251#[target_feature(enable = "neon")]
4252#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4253#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4254#[cfg_attr(
4255 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4256 assert_instr(bsl)
4257)]
4258#[cfg_attr(
4259 not(target_arch = "arm"),
4260 stable(feature = "neon_intrinsics", since = "1.59.0")
4261)]
4262#[cfg_attr(
4263 target_arch = "arm",
4264 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4265)]
4266pub fn vbsl_u16(a: uint16x4_t, b: uint16x4_t, c: uint16x4_t) -> uint16x4_t {
4267 let not = int16x4_t::splat(-1);
4268 unsafe {
4269 transmute(simd_or(
4270 simd_and(a, b),
4271 simd_and(simd_xor(a, transmute(not)), c),
4272 ))
4273 }
4274}
4275#[doc = "Bitwise Select."]
4276#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_u32)"]
4277#[inline]
4278#[target_feature(enable = "neon")]
4279#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4280#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4281#[cfg_attr(
4282 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4283 assert_instr(bsl)
4284)]
4285#[cfg_attr(
4286 not(target_arch = "arm"),
4287 stable(feature = "neon_intrinsics", since = "1.59.0")
4288)]
4289#[cfg_attr(
4290 target_arch = "arm",
4291 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4292)]
4293pub fn vbsl_u32(a: uint32x2_t, b: uint32x2_t, c: uint32x2_t) -> uint32x2_t {
4294 let not = int32x2_t::splat(-1);
4295 unsafe {
4296 transmute(simd_or(
4297 simd_and(a, b),
4298 simd_and(simd_xor(a, transmute(not)), c),
4299 ))
4300 }
4301}
4302#[doc = "Bitwise Select."]
4303#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_u64)"]
4304#[inline]
4305#[target_feature(enable = "neon")]
4306#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4307#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4308#[cfg_attr(
4309 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4310 assert_instr(bsl)
4311)]
4312#[cfg_attr(
4313 not(target_arch = "arm"),
4314 stable(feature = "neon_intrinsics", since = "1.59.0")
4315)]
4316#[cfg_attr(
4317 target_arch = "arm",
4318 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4319)]
4320pub fn vbsl_u64(a: uint64x1_t, b: uint64x1_t, c: uint64x1_t) -> uint64x1_t {
4321 let not = int64x1_t::splat(-1);
4322 unsafe {
4323 transmute(simd_or(
4324 simd_and(a, b),
4325 simd_and(simd_xor(a, transmute(not)), c),
4326 ))
4327 }
4328}
4329#[doc = "Bitwise Select."]
4330#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_u8)"]
4331#[inline]
4332#[target_feature(enable = "neon")]
4333#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4334#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4335#[cfg_attr(
4336 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4337 assert_instr(bsl)
4338)]
4339#[cfg_attr(
4340 not(target_arch = "arm"),
4341 stable(feature = "neon_intrinsics", since = "1.59.0")
4342)]
4343#[cfg_attr(
4344 target_arch = "arm",
4345 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4346)]
4347pub fn vbsl_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
4348 let not = int8x8_t::splat(-1);
4349 unsafe {
4350 transmute(simd_or(
4351 simd_and(a, b),
4352 simd_and(simd_xor(a, transmute(not)), c),
4353 ))
4354 }
4355}
4356#[doc = "Bitwise Select."]
4357#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_u16)"]
4358#[inline]
4359#[target_feature(enable = "neon")]
4360#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4361#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4362#[cfg_attr(
4363 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4364 assert_instr(bsl)
4365)]
4366#[cfg_attr(
4367 not(target_arch = "arm"),
4368 stable(feature = "neon_intrinsics", since = "1.59.0")
4369)]
4370#[cfg_attr(
4371 target_arch = "arm",
4372 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4373)]
4374pub fn vbslq_u16(a: uint16x8_t, b: uint16x8_t, c: uint16x8_t) -> uint16x8_t {
4375 let not = int16x8_t::splat(-1);
4376 unsafe {
4377 transmute(simd_or(
4378 simd_and(a, b),
4379 simd_and(simd_xor(a, transmute(not)), c),
4380 ))
4381 }
4382}
4383#[doc = "Bitwise Select."]
4384#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_u32)"]
4385#[inline]
4386#[target_feature(enable = "neon")]
4387#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4388#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4389#[cfg_attr(
4390 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4391 assert_instr(bsl)
4392)]
4393#[cfg_attr(
4394 not(target_arch = "arm"),
4395 stable(feature = "neon_intrinsics", since = "1.59.0")
4396)]
4397#[cfg_attr(
4398 target_arch = "arm",
4399 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4400)]
4401pub fn vbslq_u32(a: uint32x4_t, b: uint32x4_t, c: uint32x4_t) -> uint32x4_t {
4402 let not = int32x4_t::splat(-1);
4403 unsafe {
4404 transmute(simd_or(
4405 simd_and(a, b),
4406 simd_and(simd_xor(a, transmute(not)), c),
4407 ))
4408 }
4409}
4410#[doc = "Bitwise Select."]
4411#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_u64)"]
4412#[inline]
4413#[target_feature(enable = "neon")]
4414#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4415#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4416#[cfg_attr(
4417 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4418 assert_instr(bsl)
4419)]
4420#[cfg_attr(
4421 not(target_arch = "arm"),
4422 stable(feature = "neon_intrinsics", since = "1.59.0")
4423)]
4424#[cfg_attr(
4425 target_arch = "arm",
4426 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4427)]
4428pub fn vbslq_u64(a: uint64x2_t, b: uint64x2_t, c: uint64x2_t) -> uint64x2_t {
4429 let not = int64x2_t::splat(-1);
4430 unsafe {
4431 transmute(simd_or(
4432 simd_and(a, b),
4433 simd_and(simd_xor(a, transmute(not)), c),
4434 ))
4435 }
4436}
4437#[doc = "Bitwise Select."]
4438#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_u8)"]
4439#[inline]
4440#[target_feature(enable = "neon")]
4441#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4442#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4443#[cfg_attr(
4444 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4445 assert_instr(bsl)
4446)]
4447#[cfg_attr(
4448 not(target_arch = "arm"),
4449 stable(feature = "neon_intrinsics", since = "1.59.0")
4450)]
4451#[cfg_attr(
4452 target_arch = "arm",
4453 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4454)]
4455pub fn vbslq_u8(a: uint8x16_t, b: uint8x16_t, c: uint8x16_t) -> uint8x16_t {
4456 let not = int8x16_t::splat(-1);
4457 unsafe {
4458 transmute(simd_or(
4459 simd_and(a, b),
4460 simd_and(simd_xor(a, transmute(not)), c),
4461 ))
4462 }
4463}
4464#[doc = "Floating-point absolute compare greater than or equal"]
4465#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcage_f16)"]
4466#[inline]
4467#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4468#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacge.f16"))]
4469#[cfg_attr(
4470 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4471 assert_instr(facge)
4472)]
4473#[target_feature(enable = "neon,fp16")]
4474#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
4475#[cfg(not(target_arch = "arm64ec"))]
4476pub fn vcage_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t {
4477 unsafe extern "unadjusted" {
4478 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vacge.v4i16.v4f16")]
4479 #[cfg_attr(
4480 any(target_arch = "aarch64", target_arch = "arm64ec"),
4481 link_name = "llvm.aarch64.neon.facge.v4i16.v4f16"
4482 )]
4483 fn _vcage_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t;
4484 }
4485 unsafe { _vcage_f16(a, b) }
4486}
4487#[doc = "Floating-point absolute compare greater than or equal"]
4488#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcageq_f16)"]
4489#[inline]
4490#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4491#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacge.f16"))]
4492#[cfg_attr(
4493 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4494 assert_instr(facge)
4495)]
4496#[target_feature(enable = "neon,fp16")]
4497#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
4498#[cfg(not(target_arch = "arm64ec"))]
4499pub fn vcageq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t {
4500 unsafe extern "unadjusted" {
4501 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vacge.v8i16.v8f16")]
4502 #[cfg_attr(
4503 any(target_arch = "aarch64", target_arch = "arm64ec"),
4504 link_name = "llvm.aarch64.neon.facge.v8i16.v8f16"
4505 )]
4506 fn _vcageq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t;
4507 }
4508 unsafe { _vcageq_f16(a, b) }
4509}
4510#[doc = "Floating-point absolute compare greater than or equal"]
4511#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcage_f32)"]
4512#[inline]
4513#[target_feature(enable = "neon")]
4514#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4515#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacge.f32"))]
4516#[cfg_attr(
4517 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4518 assert_instr(facge)
4519)]
4520#[cfg_attr(
4521 not(target_arch = "arm"),
4522 stable(feature = "neon_intrinsics", since = "1.59.0")
4523)]
4524#[cfg_attr(
4525 target_arch = "arm",
4526 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4527)]
4528pub fn vcage_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t {
4529 unsafe extern "unadjusted" {
4530 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vacge.v2i32.v2f32")]
4531 #[cfg_attr(
4532 any(target_arch = "aarch64", target_arch = "arm64ec"),
4533 link_name = "llvm.aarch64.neon.facge.v2i32.v2f32"
4534 )]
4535 fn _vcage_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t;
4536 }
4537 unsafe { _vcage_f32(a, b) }
4538}
4539#[doc = "Floating-point absolute compare greater than or equal"]
4540#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcageq_f32)"]
4541#[inline]
4542#[target_feature(enable = "neon")]
4543#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4544#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacge.f32"))]
4545#[cfg_attr(
4546 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4547 assert_instr(facge)
4548)]
4549#[cfg_attr(
4550 not(target_arch = "arm"),
4551 stable(feature = "neon_intrinsics", since = "1.59.0")
4552)]
4553#[cfg_attr(
4554 target_arch = "arm",
4555 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4556)]
4557pub fn vcageq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t {
4558 unsafe extern "unadjusted" {
4559 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vacge.v4i32.v4f32")]
4560 #[cfg_attr(
4561 any(target_arch = "aarch64", target_arch = "arm64ec"),
4562 link_name = "llvm.aarch64.neon.facge.v4i32.v4f32"
4563 )]
4564 fn _vcageq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t;
4565 }
4566 unsafe { _vcageq_f32(a, b) }
4567}
4568#[doc = "Floating-point absolute compare greater than"]
4569#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcagt_f16)"]
4570#[inline]
4571#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4572#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacgt.f16"))]
4573#[cfg_attr(
4574 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4575 assert_instr(facgt)
4576)]
4577#[target_feature(enable = "neon,fp16")]
4578#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
4579#[cfg(not(target_arch = "arm64ec"))]
4580pub fn vcagt_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t {
4581 unsafe extern "unadjusted" {
4582 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vacgt.v4i16.v4f16")]
4583 #[cfg_attr(
4584 any(target_arch = "aarch64", target_arch = "arm64ec"),
4585 link_name = "llvm.aarch64.neon.facgt.v4i16.v4f16"
4586 )]
4587 fn _vcagt_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t;
4588 }
4589 unsafe { _vcagt_f16(a, b) }
4590}
4591#[doc = "Floating-point absolute compare greater than"]
4592#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcagtq_f16)"]
4593#[inline]
4594#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4595#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacgt.f16"))]
4596#[cfg_attr(
4597 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4598 assert_instr(facgt)
4599)]
4600#[target_feature(enable = "neon,fp16")]
4601#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
4602#[cfg(not(target_arch = "arm64ec"))]
4603pub fn vcagtq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t {
4604 unsafe extern "unadjusted" {
4605 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vacgt.v8i16.v8f16")]
4606 #[cfg_attr(
4607 any(target_arch = "aarch64", target_arch = "arm64ec"),
4608 link_name = "llvm.aarch64.neon.facgt.v8i16.v8f16"
4609 )]
4610 fn _vcagtq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t;
4611 }
4612 unsafe { _vcagtq_f16(a, b) }
4613}
4614#[doc = "Floating-point absolute compare greater than"]
4615#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcagt_f32)"]
4616#[inline]
4617#[target_feature(enable = "neon")]
4618#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4619#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacgt.f32"))]
4620#[cfg_attr(
4621 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4622 assert_instr(facgt)
4623)]
4624#[cfg_attr(
4625 not(target_arch = "arm"),
4626 stable(feature = "neon_intrinsics", since = "1.59.0")
4627)]
4628#[cfg_attr(
4629 target_arch = "arm",
4630 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4631)]
4632pub fn vcagt_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t {
4633 unsafe extern "unadjusted" {
4634 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vacgt.v2i32.v2f32")]
4635 #[cfg_attr(
4636 any(target_arch = "aarch64", target_arch = "arm64ec"),
4637 link_name = "llvm.aarch64.neon.facgt.v2i32.v2f32"
4638 )]
4639 fn _vcagt_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t;
4640 }
4641 unsafe { _vcagt_f32(a, b) }
4642}
4643#[doc = "Floating-point absolute compare greater than"]
4644#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcagtq_f32)"]
4645#[inline]
4646#[target_feature(enable = "neon")]
4647#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4648#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacgt.f32"))]
4649#[cfg_attr(
4650 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4651 assert_instr(facgt)
4652)]
4653#[cfg_attr(
4654 not(target_arch = "arm"),
4655 stable(feature = "neon_intrinsics", since = "1.59.0")
4656)]
4657#[cfg_attr(
4658 target_arch = "arm",
4659 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4660)]
4661pub fn vcagtq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t {
4662 unsafe extern "unadjusted" {
4663 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vacgt.v4i32.v4f32")]
4664 #[cfg_attr(
4665 any(target_arch = "aarch64", target_arch = "arm64ec"),
4666 link_name = "llvm.aarch64.neon.facgt.v4i32.v4f32"
4667 )]
4668 fn _vcagtq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t;
4669 }
4670 unsafe { _vcagtq_f32(a, b) }
4671}
4672#[doc = "Floating-point absolute compare less than or equal"]
4673#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcale_f16)"]
4674#[inline]
4675#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4676#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacge.f16"))]
4677#[cfg_attr(
4678 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4679 assert_instr(facge)
4680)]
4681#[target_feature(enable = "neon,fp16")]
4682#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
4683#[cfg(not(target_arch = "arm64ec"))]
4684pub fn vcale_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t {
4685 vcage_f16(b, a)
4686}
4687#[doc = "Floating-point absolute compare less than or equal"]
4688#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcaleq_f16)"]
4689#[inline]
4690#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4691#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacge.f16"))]
4692#[cfg_attr(
4693 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4694 assert_instr(facge)
4695)]
4696#[target_feature(enable = "neon,fp16")]
4697#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
4698#[cfg(not(target_arch = "arm64ec"))]
4699pub fn vcaleq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t {
4700 vcageq_f16(b, a)
4701}
4702#[doc = "Floating-point absolute compare less than or equal"]
4703#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcale_f32)"]
4704#[inline]
4705#[target_feature(enable = "neon")]
4706#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4707#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacge.f32"))]
4708#[cfg_attr(
4709 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4710 assert_instr(facge)
4711)]
4712#[cfg_attr(
4713 not(target_arch = "arm"),
4714 stable(feature = "neon_intrinsics", since = "1.59.0")
4715)]
4716#[cfg_attr(
4717 target_arch = "arm",
4718 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4719)]
4720pub fn vcale_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t {
4721 vcage_f32(b, a)
4722}
4723#[doc = "Floating-point absolute compare less than or equal"]
4724#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcaleq_f32)"]
4725#[inline]
4726#[target_feature(enable = "neon")]
4727#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4728#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacge.f32"))]
4729#[cfg_attr(
4730 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4731 assert_instr(facge)
4732)]
4733#[cfg_attr(
4734 not(target_arch = "arm"),
4735 stable(feature = "neon_intrinsics", since = "1.59.0")
4736)]
4737#[cfg_attr(
4738 target_arch = "arm",
4739 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4740)]
4741pub fn vcaleq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t {
4742 vcageq_f32(b, a)
4743}
4744#[doc = "Floating-point absolute compare less than"]
4745#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcalt_f16)"]
4746#[inline]
4747#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4748#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacgt.f16"))]
4749#[cfg_attr(
4750 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4751 assert_instr(facgt)
4752)]
4753#[target_feature(enable = "neon,fp16")]
4754#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
4755#[cfg(not(target_arch = "arm64ec"))]
4756pub fn vcalt_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t {
4757 vcagt_f16(b, a)
4758}
4759#[doc = "Floating-point absolute compare less than"]
4760#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcaltq_f16)"]
4761#[inline]
4762#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4763#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacgt.f16"))]
4764#[cfg_attr(
4765 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4766 assert_instr(facgt)
4767)]
4768#[target_feature(enable = "neon,fp16")]
4769#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
4770#[cfg(not(target_arch = "arm64ec"))]
4771pub fn vcaltq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t {
4772 vcagtq_f16(b, a)
4773}
4774#[doc = "Floating-point absolute compare less than"]
4775#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcalt_f32)"]
4776#[inline]
4777#[target_feature(enable = "neon")]
4778#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4779#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacgt.f32"))]
4780#[cfg_attr(
4781 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4782 assert_instr(facgt)
4783)]
4784#[cfg_attr(
4785 not(target_arch = "arm"),
4786 stable(feature = "neon_intrinsics", since = "1.59.0")
4787)]
4788#[cfg_attr(
4789 target_arch = "arm",
4790 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4791)]
4792pub fn vcalt_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t {
4793 vcagt_f32(b, a)
4794}
4795#[doc = "Floating-point absolute compare less than"]
4796#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcaltq_f32)"]
4797#[inline]
4798#[target_feature(enable = "neon")]
4799#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4800#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacgt.f32"))]
4801#[cfg_attr(
4802 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4803 assert_instr(facgt)
4804)]
4805#[cfg_attr(
4806 not(target_arch = "arm"),
4807 stable(feature = "neon_intrinsics", since = "1.59.0")
4808)]
4809#[cfg_attr(
4810 target_arch = "arm",
4811 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4812)]
4813pub fn vcaltq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t {
4814 vcagtq_f32(b, a)
4815}
4816#[doc = "Floating-point compare equal"]
4817#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceq_f16)"]
4818#[inline]
4819#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4820#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.f16"))]
4821#[cfg_attr(
4822 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4823 assert_instr(fcmeq)
4824)]
4825#[target_feature(enable = "neon,fp16")]
4826#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
4827#[cfg(not(target_arch = "arm64ec"))]
4828pub fn vceq_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t {
4829 unsafe { simd_eq(a, b) }
4830}
4831#[doc = "Floating-point compare equal"]
4832#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceqq_f16)"]
4833#[inline]
4834#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4835#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.f16"))]
4836#[cfg_attr(
4837 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4838 assert_instr(fcmeq)
4839)]
4840#[target_feature(enable = "neon,fp16")]
4841#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
4842#[cfg(not(target_arch = "arm64ec"))]
4843pub fn vceqq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t {
4844 unsafe { simd_eq(a, b) }
4845}
4846#[doc = "Floating-point compare equal"]
4847#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceq_f32)"]
4848#[inline]
4849#[target_feature(enable = "neon")]
4850#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4851#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.f32"))]
4852#[cfg_attr(
4853 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4854 assert_instr(fcmeq)
4855)]
4856#[cfg_attr(
4857 not(target_arch = "arm"),
4858 stable(feature = "neon_intrinsics", since = "1.59.0")
4859)]
4860#[cfg_attr(
4861 target_arch = "arm",
4862 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4863)]
4864pub fn vceq_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t {
4865 unsafe { simd_eq(a, b) }
4866}
4867#[doc = "Floating-point compare equal"]
4868#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceqq_f32)"]
4869#[inline]
4870#[target_feature(enable = "neon")]
4871#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4872#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.f32"))]
4873#[cfg_attr(
4874 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4875 assert_instr(fcmeq)
4876)]
4877#[cfg_attr(
4878 not(target_arch = "arm"),
4879 stable(feature = "neon_intrinsics", since = "1.59.0")
4880)]
4881#[cfg_attr(
4882 target_arch = "arm",
4883 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4884)]
4885pub fn vceqq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t {
4886 unsafe { simd_eq(a, b) }
4887}
4888#[doc = "Compare bitwise Equal (vector)"]
4889#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceq_s8)"]
4890#[inline]
4891#[target_feature(enable = "neon")]
4892#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4893#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i8"))]
4894#[cfg_attr(
4895 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4896 assert_instr(cmeq)
4897)]
4898#[cfg_attr(
4899 not(target_arch = "arm"),
4900 stable(feature = "neon_intrinsics", since = "1.59.0")
4901)]
4902#[cfg_attr(
4903 target_arch = "arm",
4904 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4905)]
4906pub fn vceq_s8(a: int8x8_t, b: int8x8_t) -> uint8x8_t {
4907 unsafe { simd_eq(a, b) }
4908}
4909#[doc = "Compare bitwise Equal (vector)"]
4910#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceqq_s8)"]
4911#[inline]
4912#[target_feature(enable = "neon")]
4913#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4914#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i8"))]
4915#[cfg_attr(
4916 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4917 assert_instr(cmeq)
4918)]
4919#[cfg_attr(
4920 not(target_arch = "arm"),
4921 stable(feature = "neon_intrinsics", since = "1.59.0")
4922)]
4923#[cfg_attr(
4924 target_arch = "arm",
4925 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4926)]
4927pub fn vceqq_s8(a: int8x16_t, b: int8x16_t) -> uint8x16_t {
4928 unsafe { simd_eq(a, b) }
4929}
4930#[doc = "Compare bitwise Equal (vector)"]
4931#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceq_s16)"]
4932#[inline]
4933#[target_feature(enable = "neon")]
4934#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4935#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i16"))]
4936#[cfg_attr(
4937 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4938 assert_instr(cmeq)
4939)]
4940#[cfg_attr(
4941 not(target_arch = "arm"),
4942 stable(feature = "neon_intrinsics", since = "1.59.0")
4943)]
4944#[cfg_attr(
4945 target_arch = "arm",
4946 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4947)]
4948pub fn vceq_s16(a: int16x4_t, b: int16x4_t) -> uint16x4_t {
4949 unsafe { simd_eq(a, b) }
4950}
4951#[doc = "Compare bitwise Equal (vector)"]
4952#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceqq_s16)"]
4953#[inline]
4954#[target_feature(enable = "neon")]
4955#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4956#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i16"))]
4957#[cfg_attr(
4958 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4959 assert_instr(cmeq)
4960)]
4961#[cfg_attr(
4962 not(target_arch = "arm"),
4963 stable(feature = "neon_intrinsics", since = "1.59.0")
4964)]
4965#[cfg_attr(
4966 target_arch = "arm",
4967 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4968)]
4969pub fn vceqq_s16(a: int16x8_t, b: int16x8_t) -> uint16x8_t {
4970 unsafe { simd_eq(a, b) }
4971}
4972#[doc = "Compare bitwise Equal (vector)"]
4973#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceq_s32)"]
4974#[inline]
4975#[target_feature(enable = "neon")]
4976#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4977#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i32"))]
4978#[cfg_attr(
4979 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4980 assert_instr(cmeq)
4981)]
4982#[cfg_attr(
4983 not(target_arch = "arm"),
4984 stable(feature = "neon_intrinsics", since = "1.59.0")
4985)]
4986#[cfg_attr(
4987 target_arch = "arm",
4988 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4989)]
4990pub fn vceq_s32(a: int32x2_t, b: int32x2_t) -> uint32x2_t {
4991 unsafe { simd_eq(a, b) }
4992}
4993#[doc = "Compare bitwise Equal (vector)"]
4994#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceqq_s32)"]
4995#[inline]
4996#[target_feature(enable = "neon")]
4997#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4998#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i32"))]
4999#[cfg_attr(
5000 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5001 assert_instr(cmeq)
5002)]
5003#[cfg_attr(
5004 not(target_arch = "arm"),
5005 stable(feature = "neon_intrinsics", since = "1.59.0")
5006)]
5007#[cfg_attr(
5008 target_arch = "arm",
5009 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5010)]
5011pub fn vceqq_s32(a: int32x4_t, b: int32x4_t) -> uint32x4_t {
5012 unsafe { simd_eq(a, b) }
5013}
5014#[doc = "Compare bitwise Equal (vector)"]
5015#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceq_u8)"]
5016#[inline]
5017#[target_feature(enable = "neon")]
5018#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5019#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i8"))]
5020#[cfg_attr(
5021 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5022 assert_instr(cmeq)
5023)]
5024#[cfg_attr(
5025 not(target_arch = "arm"),
5026 stable(feature = "neon_intrinsics", since = "1.59.0")
5027)]
5028#[cfg_attr(
5029 target_arch = "arm",
5030 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5031)]
5032pub fn vceq_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
5033 unsafe { simd_eq(a, b) }
5034}
5035#[doc = "Compare bitwise Equal (vector)"]
5036#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceqq_u8)"]
5037#[inline]
5038#[target_feature(enable = "neon")]
5039#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5040#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i8"))]
5041#[cfg_attr(
5042 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5043 assert_instr(cmeq)
5044)]
5045#[cfg_attr(
5046 not(target_arch = "arm"),
5047 stable(feature = "neon_intrinsics", since = "1.59.0")
5048)]
5049#[cfg_attr(
5050 target_arch = "arm",
5051 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5052)]
5053pub fn vceqq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
5054 unsafe { simd_eq(a, b) }
5055}
5056#[doc = "Compare bitwise Equal (vector)"]
5057#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceq_u16)"]
5058#[inline]
5059#[target_feature(enable = "neon")]
5060#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5061#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i16"))]
5062#[cfg_attr(
5063 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5064 assert_instr(cmeq)
5065)]
5066#[cfg_attr(
5067 not(target_arch = "arm"),
5068 stable(feature = "neon_intrinsics", since = "1.59.0")
5069)]
5070#[cfg_attr(
5071 target_arch = "arm",
5072 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5073)]
5074pub fn vceq_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
5075 unsafe { simd_eq(a, b) }
5076}
5077#[doc = "Compare bitwise Equal (vector)"]
5078#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceqq_u16)"]
5079#[inline]
5080#[target_feature(enable = "neon")]
5081#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5082#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i16"))]
5083#[cfg_attr(
5084 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5085 assert_instr(cmeq)
5086)]
5087#[cfg_attr(
5088 not(target_arch = "arm"),
5089 stable(feature = "neon_intrinsics", since = "1.59.0")
5090)]
5091#[cfg_attr(
5092 target_arch = "arm",
5093 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5094)]
5095pub fn vceqq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
5096 unsafe { simd_eq(a, b) }
5097}
5098#[doc = "Compare bitwise Equal (vector)"]
5099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceq_u32)"]
5100#[inline]
5101#[target_feature(enable = "neon")]
5102#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5103#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i32"))]
5104#[cfg_attr(
5105 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5106 assert_instr(cmeq)
5107)]
5108#[cfg_attr(
5109 not(target_arch = "arm"),
5110 stable(feature = "neon_intrinsics", since = "1.59.0")
5111)]
5112#[cfg_attr(
5113 target_arch = "arm",
5114 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5115)]
5116pub fn vceq_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
5117 unsafe { simd_eq(a, b) }
5118}
5119#[doc = "Compare bitwise Equal (vector)"]
5120#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceqq_u32)"]
5121#[inline]
5122#[target_feature(enable = "neon")]
5123#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5124#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i32"))]
5125#[cfg_attr(
5126 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5127 assert_instr(cmeq)
5128)]
5129#[cfg_attr(
5130 not(target_arch = "arm"),
5131 stable(feature = "neon_intrinsics", since = "1.59.0")
5132)]
5133#[cfg_attr(
5134 target_arch = "arm",
5135 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5136)]
5137pub fn vceqq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
5138 unsafe { simd_eq(a, b) }
5139}
5140#[doc = "Compare bitwise Equal (vector)"]
5141#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceq_p8)"]
5142#[inline]
5143#[target_feature(enable = "neon")]
5144#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5145#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i8"))]
5146#[cfg_attr(
5147 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5148 assert_instr(cmeq)
5149)]
5150#[cfg_attr(
5151 not(target_arch = "arm"),
5152 stable(feature = "neon_intrinsics", since = "1.59.0")
5153)]
5154#[cfg_attr(
5155 target_arch = "arm",
5156 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5157)]
5158pub fn vceq_p8(a: poly8x8_t, b: poly8x8_t) -> uint8x8_t {
5159 unsafe { simd_eq(a, b) }
5160}
5161#[doc = "Compare bitwise Equal (vector)"]
5162#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceqq_p8)"]
5163#[inline]
5164#[target_feature(enable = "neon")]
5165#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5166#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i8"))]
5167#[cfg_attr(
5168 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5169 assert_instr(cmeq)
5170)]
5171#[cfg_attr(
5172 not(target_arch = "arm"),
5173 stable(feature = "neon_intrinsics", since = "1.59.0")
5174)]
5175#[cfg_attr(
5176 target_arch = "arm",
5177 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5178)]
5179pub fn vceqq_p8(a: poly8x16_t, b: poly8x16_t) -> uint8x16_t {
5180 unsafe { simd_eq(a, b) }
5181}
5182#[doc = "Floating-point compare greater than or equal"]
5183#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcge_f16)"]
5184#[inline]
5185#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
5186#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f16"))]
5187#[cfg_attr(
5188 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5189 assert_instr(fcmge)
5190)]
5191#[target_feature(enable = "neon,fp16")]
5192#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
5193#[cfg(not(target_arch = "arm64ec"))]
5194pub fn vcge_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t {
5195 unsafe { simd_ge(a, b) }
5196}
5197#[doc = "Floating-point compare greater than or equal"]
5198#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgeq_f16)"]
5199#[inline]
5200#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
5201#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f16"))]
5202#[cfg_attr(
5203 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5204 assert_instr(fcmge)
5205)]
5206#[target_feature(enable = "neon,fp16")]
5207#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
5208#[cfg(not(target_arch = "arm64ec"))]
5209pub fn vcgeq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t {
5210 unsafe { simd_ge(a, b) }
5211}
5212#[doc = "Floating-point compare greater than or equal"]
5213#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcge_f32)"]
5214#[inline]
5215#[target_feature(enable = "neon")]
5216#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5217#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f32"))]
5218#[cfg_attr(
5219 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5220 assert_instr(fcmge)
5221)]
5222#[cfg_attr(
5223 not(target_arch = "arm"),
5224 stable(feature = "neon_intrinsics", since = "1.59.0")
5225)]
5226#[cfg_attr(
5227 target_arch = "arm",
5228 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5229)]
5230pub fn vcge_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t {
5231 unsafe { simd_ge(a, b) }
5232}
5233#[doc = "Floating-point compare greater than or equal"]
5234#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgeq_f32)"]
5235#[inline]
5236#[target_feature(enable = "neon")]
5237#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5238#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f32"))]
5239#[cfg_attr(
5240 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5241 assert_instr(fcmge)
5242)]
5243#[cfg_attr(
5244 not(target_arch = "arm"),
5245 stable(feature = "neon_intrinsics", since = "1.59.0")
5246)]
5247#[cfg_attr(
5248 target_arch = "arm",
5249 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5250)]
5251pub fn vcgeq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t {
5252 unsafe { simd_ge(a, b) }
5253}
5254#[doc = "Compare signed greater than or equal"]
5255#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcge_s8)"]
5256#[inline]
5257#[target_feature(enable = "neon")]
5258#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5259#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s8"))]
5260#[cfg_attr(
5261 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5262 assert_instr(cmge)
5263)]
5264#[cfg_attr(
5265 not(target_arch = "arm"),
5266 stable(feature = "neon_intrinsics", since = "1.59.0")
5267)]
5268#[cfg_attr(
5269 target_arch = "arm",
5270 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5271)]
5272pub fn vcge_s8(a: int8x8_t, b: int8x8_t) -> uint8x8_t {
5273 unsafe { simd_ge(a, b) }
5274}
5275#[doc = "Compare signed greater than or equal"]
5276#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgeq_s8)"]
5277#[inline]
5278#[target_feature(enable = "neon")]
5279#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5280#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s8"))]
5281#[cfg_attr(
5282 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5283 assert_instr(cmge)
5284)]
5285#[cfg_attr(
5286 not(target_arch = "arm"),
5287 stable(feature = "neon_intrinsics", since = "1.59.0")
5288)]
5289#[cfg_attr(
5290 target_arch = "arm",
5291 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5292)]
5293pub fn vcgeq_s8(a: int8x16_t, b: int8x16_t) -> uint8x16_t {
5294 unsafe { simd_ge(a, b) }
5295}
5296#[doc = "Compare signed greater than or equal"]
5297#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcge_s16)"]
5298#[inline]
5299#[target_feature(enable = "neon")]
5300#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5301#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s16"))]
5302#[cfg_attr(
5303 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5304 assert_instr(cmge)
5305)]
5306#[cfg_attr(
5307 not(target_arch = "arm"),
5308 stable(feature = "neon_intrinsics", since = "1.59.0")
5309)]
5310#[cfg_attr(
5311 target_arch = "arm",
5312 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5313)]
5314pub fn vcge_s16(a: int16x4_t, b: int16x4_t) -> uint16x4_t {
5315 unsafe { simd_ge(a, b) }
5316}
5317#[doc = "Compare signed greater than or equal"]
5318#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgeq_s16)"]
5319#[inline]
5320#[target_feature(enable = "neon")]
5321#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5322#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s16"))]
5323#[cfg_attr(
5324 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5325 assert_instr(cmge)
5326)]
5327#[cfg_attr(
5328 not(target_arch = "arm"),
5329 stable(feature = "neon_intrinsics", since = "1.59.0")
5330)]
5331#[cfg_attr(
5332 target_arch = "arm",
5333 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5334)]
5335pub fn vcgeq_s16(a: int16x8_t, b: int16x8_t) -> uint16x8_t {
5336 unsafe { simd_ge(a, b) }
5337}
5338#[doc = "Compare signed greater than or equal"]
5339#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcge_s32)"]
5340#[inline]
5341#[target_feature(enable = "neon")]
5342#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5343#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s32"))]
5344#[cfg_attr(
5345 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5346 assert_instr(cmge)
5347)]
5348#[cfg_attr(
5349 not(target_arch = "arm"),
5350 stable(feature = "neon_intrinsics", since = "1.59.0")
5351)]
5352#[cfg_attr(
5353 target_arch = "arm",
5354 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5355)]
5356pub fn vcge_s32(a: int32x2_t, b: int32x2_t) -> uint32x2_t {
5357 unsafe { simd_ge(a, b) }
5358}
5359#[doc = "Compare signed greater than or equal"]
5360#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgeq_s32)"]
5361#[inline]
5362#[target_feature(enable = "neon")]
5363#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5364#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s32"))]
5365#[cfg_attr(
5366 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5367 assert_instr(cmge)
5368)]
5369#[cfg_attr(
5370 not(target_arch = "arm"),
5371 stable(feature = "neon_intrinsics", since = "1.59.0")
5372)]
5373#[cfg_attr(
5374 target_arch = "arm",
5375 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5376)]
5377pub fn vcgeq_s32(a: int32x4_t, b: int32x4_t) -> uint32x4_t {
5378 unsafe { simd_ge(a, b) }
5379}
5380#[doc = "Compare unsigned greater than or equal"]
5381#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcge_u8)"]
5382#[inline]
5383#[target_feature(enable = "neon")]
5384#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5385#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u8"))]
5386#[cfg_attr(
5387 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5388 assert_instr(cmhs)
5389)]
5390#[cfg_attr(
5391 not(target_arch = "arm"),
5392 stable(feature = "neon_intrinsics", since = "1.59.0")
5393)]
5394#[cfg_attr(
5395 target_arch = "arm",
5396 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5397)]
5398pub fn vcge_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
5399 unsafe { simd_ge(a, b) }
5400}
5401#[doc = "Compare unsigned greater than or equal"]
5402#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgeq_u8)"]
5403#[inline]
5404#[target_feature(enable = "neon")]
5405#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5406#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u8"))]
5407#[cfg_attr(
5408 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5409 assert_instr(cmhs)
5410)]
5411#[cfg_attr(
5412 not(target_arch = "arm"),
5413 stable(feature = "neon_intrinsics", since = "1.59.0")
5414)]
5415#[cfg_attr(
5416 target_arch = "arm",
5417 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5418)]
5419pub fn vcgeq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
5420 unsafe { simd_ge(a, b) }
5421}
5422#[doc = "Compare unsigned greater than or equal"]
5423#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcge_u16)"]
5424#[inline]
5425#[target_feature(enable = "neon")]
5426#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5427#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u16"))]
5428#[cfg_attr(
5429 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5430 assert_instr(cmhs)
5431)]
5432#[cfg_attr(
5433 not(target_arch = "arm"),
5434 stable(feature = "neon_intrinsics", since = "1.59.0")
5435)]
5436#[cfg_attr(
5437 target_arch = "arm",
5438 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5439)]
5440pub fn vcge_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
5441 unsafe { simd_ge(a, b) }
5442}
5443#[doc = "Compare unsigned greater than or equal"]
5444#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgeq_u16)"]
5445#[inline]
5446#[target_feature(enable = "neon")]
5447#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5448#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u16"))]
5449#[cfg_attr(
5450 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5451 assert_instr(cmhs)
5452)]
5453#[cfg_attr(
5454 not(target_arch = "arm"),
5455 stable(feature = "neon_intrinsics", since = "1.59.0")
5456)]
5457#[cfg_attr(
5458 target_arch = "arm",
5459 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5460)]
5461pub fn vcgeq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
5462 unsafe { simd_ge(a, b) }
5463}
5464#[doc = "Compare unsigned greater than or equal"]
5465#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcge_u32)"]
5466#[inline]
5467#[target_feature(enable = "neon")]
5468#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5469#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u32"))]
5470#[cfg_attr(
5471 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5472 assert_instr(cmhs)
5473)]
5474#[cfg_attr(
5475 not(target_arch = "arm"),
5476 stable(feature = "neon_intrinsics", since = "1.59.0")
5477)]
5478#[cfg_attr(
5479 target_arch = "arm",
5480 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5481)]
5482pub fn vcge_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
5483 unsafe { simd_ge(a, b) }
5484}
5485#[doc = "Compare unsigned greater than or equal"]
5486#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgeq_u32)"]
5487#[inline]
5488#[target_feature(enable = "neon")]
5489#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5490#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u32"))]
5491#[cfg_attr(
5492 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5493 assert_instr(cmhs)
5494)]
5495#[cfg_attr(
5496 not(target_arch = "arm"),
5497 stable(feature = "neon_intrinsics", since = "1.59.0")
5498)]
5499#[cfg_attr(
5500 target_arch = "arm",
5501 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5502)]
5503pub fn vcgeq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
5504 unsafe { simd_ge(a, b) }
5505}
5506#[doc = "Floating-point compare greater than or equal to zero"]
5507#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgez_f16)"]
5508#[inline]
5509#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
5510#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f16"))]
5511#[cfg_attr(
5512 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5513 assert_instr(fcmge)
5514)]
5515#[target_feature(enable = "neon,fp16")]
5516#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
5517#[cfg(not(target_arch = "arm64ec"))]
5518pub fn vcgez_f16(a: float16x4_t) -> uint16x4_t {
5519 let b: f16x4 = f16x4::new(0.0, 0.0, 0.0, 0.0);
5520 unsafe { simd_ge(a, transmute(b)) }
5521}
5522#[doc = "Floating-point compare greater than or equal to zero"]
5523#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgezq_f16)"]
5524#[inline]
5525#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
5526#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f16"))]
5527#[cfg_attr(
5528 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5529 assert_instr(fcmge)
5530)]
5531#[target_feature(enable = "neon,fp16")]
5532#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
5533#[cfg(not(target_arch = "arm64ec"))]
5534pub fn vcgezq_f16(a: float16x8_t) -> uint16x8_t {
5535 let b: f16x8 = f16x8::new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
5536 unsafe { simd_ge(a, transmute(b)) }
5537}
5538#[doc = "Floating-point compare greater than"]
5539#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgt_f16)"]
5540#[inline]
5541#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
5542#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.f16"))]
5543#[cfg_attr(
5544 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5545 assert_instr(fcmgt)
5546)]
5547#[target_feature(enable = "neon,fp16")]
5548#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
5549#[cfg(not(target_arch = "arm64ec"))]
5550pub fn vcgt_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t {
5551 unsafe { simd_gt(a, b) }
5552}
5553#[doc = "Floating-point compare greater than"]
5554#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtq_f16)"]
5555#[inline]
5556#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
5557#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.f16"))]
5558#[cfg_attr(
5559 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5560 assert_instr(fcmgt)
5561)]
5562#[target_feature(enable = "neon,fp16")]
5563#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
5564#[cfg(not(target_arch = "arm64ec"))]
5565pub fn vcgtq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t {
5566 unsafe { simd_gt(a, b) }
5567}
5568#[doc = "Floating-point compare greater than"]
5569#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgt_f32)"]
5570#[inline]
5571#[target_feature(enable = "neon")]
5572#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5573#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.f32"))]
5574#[cfg_attr(
5575 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5576 assert_instr(fcmgt)
5577)]
5578#[cfg_attr(
5579 not(target_arch = "arm"),
5580 stable(feature = "neon_intrinsics", since = "1.59.0")
5581)]
5582#[cfg_attr(
5583 target_arch = "arm",
5584 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5585)]
5586pub fn vcgt_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t {
5587 unsafe { simd_gt(a, b) }
5588}
5589#[doc = "Floating-point compare greater than"]
5590#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtq_f32)"]
5591#[inline]
5592#[target_feature(enable = "neon")]
5593#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5594#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.f32"))]
5595#[cfg_attr(
5596 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5597 assert_instr(fcmgt)
5598)]
5599#[cfg_attr(
5600 not(target_arch = "arm"),
5601 stable(feature = "neon_intrinsics", since = "1.59.0")
5602)]
5603#[cfg_attr(
5604 target_arch = "arm",
5605 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5606)]
5607pub fn vcgtq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t {
5608 unsafe { simd_gt(a, b) }
5609}
5610#[doc = "Compare signed greater than"]
5611#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgt_s8)"]
5612#[inline]
5613#[target_feature(enable = "neon")]
5614#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5615#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s8"))]
5616#[cfg_attr(
5617 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5618 assert_instr(cmgt)
5619)]
5620#[cfg_attr(
5621 not(target_arch = "arm"),
5622 stable(feature = "neon_intrinsics", since = "1.59.0")
5623)]
5624#[cfg_attr(
5625 target_arch = "arm",
5626 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5627)]
5628pub fn vcgt_s8(a: int8x8_t, b: int8x8_t) -> uint8x8_t {
5629 unsafe { simd_gt(a, b) }
5630}
5631#[doc = "Compare signed greater than"]
5632#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtq_s8)"]
5633#[inline]
5634#[target_feature(enable = "neon")]
5635#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5636#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s8"))]
5637#[cfg_attr(
5638 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5639 assert_instr(cmgt)
5640)]
5641#[cfg_attr(
5642 not(target_arch = "arm"),
5643 stable(feature = "neon_intrinsics", since = "1.59.0")
5644)]
5645#[cfg_attr(
5646 target_arch = "arm",
5647 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5648)]
5649pub fn vcgtq_s8(a: int8x16_t, b: int8x16_t) -> uint8x16_t {
5650 unsafe { simd_gt(a, b) }
5651}
5652#[doc = "Compare signed greater than"]
5653#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgt_s16)"]
5654#[inline]
5655#[target_feature(enable = "neon")]
5656#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5657#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s16"))]
5658#[cfg_attr(
5659 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5660 assert_instr(cmgt)
5661)]
5662#[cfg_attr(
5663 not(target_arch = "arm"),
5664 stable(feature = "neon_intrinsics", since = "1.59.0")
5665)]
5666#[cfg_attr(
5667 target_arch = "arm",
5668 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5669)]
5670pub fn vcgt_s16(a: int16x4_t, b: int16x4_t) -> uint16x4_t {
5671 unsafe { simd_gt(a, b) }
5672}
5673#[doc = "Compare signed greater than"]
5674#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtq_s16)"]
5675#[inline]
5676#[target_feature(enable = "neon")]
5677#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5678#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s16"))]
5679#[cfg_attr(
5680 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5681 assert_instr(cmgt)
5682)]
5683#[cfg_attr(
5684 not(target_arch = "arm"),
5685 stable(feature = "neon_intrinsics", since = "1.59.0")
5686)]
5687#[cfg_attr(
5688 target_arch = "arm",
5689 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5690)]
5691pub fn vcgtq_s16(a: int16x8_t, b: int16x8_t) -> uint16x8_t {
5692 unsafe { simd_gt(a, b) }
5693}
5694#[doc = "Compare signed greater than"]
5695#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgt_s32)"]
5696#[inline]
5697#[target_feature(enable = "neon")]
5698#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5699#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s32"))]
5700#[cfg_attr(
5701 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5702 assert_instr(cmgt)
5703)]
5704#[cfg_attr(
5705 not(target_arch = "arm"),
5706 stable(feature = "neon_intrinsics", since = "1.59.0")
5707)]
5708#[cfg_attr(
5709 target_arch = "arm",
5710 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5711)]
5712pub fn vcgt_s32(a: int32x2_t, b: int32x2_t) -> uint32x2_t {
5713 unsafe { simd_gt(a, b) }
5714}
5715#[doc = "Compare signed greater than"]
5716#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtq_s32)"]
5717#[inline]
5718#[target_feature(enable = "neon")]
5719#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5720#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s32"))]
5721#[cfg_attr(
5722 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5723 assert_instr(cmgt)
5724)]
5725#[cfg_attr(
5726 not(target_arch = "arm"),
5727 stable(feature = "neon_intrinsics", since = "1.59.0")
5728)]
5729#[cfg_attr(
5730 target_arch = "arm",
5731 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5732)]
5733pub fn vcgtq_s32(a: int32x4_t, b: int32x4_t) -> uint32x4_t {
5734 unsafe { simd_gt(a, b) }
5735}
5736#[doc = "Compare unsigned greater than"]
5737#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgt_u8)"]
5738#[inline]
5739#[target_feature(enable = "neon")]
5740#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5741#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u8"))]
5742#[cfg_attr(
5743 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5744 assert_instr(cmhi)
5745)]
5746#[cfg_attr(
5747 not(target_arch = "arm"),
5748 stable(feature = "neon_intrinsics", since = "1.59.0")
5749)]
5750#[cfg_attr(
5751 target_arch = "arm",
5752 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5753)]
5754pub fn vcgt_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
5755 unsafe { simd_gt(a, b) }
5756}
5757#[doc = "Compare unsigned greater than"]
5758#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtq_u8)"]
5759#[inline]
5760#[target_feature(enable = "neon")]
5761#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5762#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u8"))]
5763#[cfg_attr(
5764 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5765 assert_instr(cmhi)
5766)]
5767#[cfg_attr(
5768 not(target_arch = "arm"),
5769 stable(feature = "neon_intrinsics", since = "1.59.0")
5770)]
5771#[cfg_attr(
5772 target_arch = "arm",
5773 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5774)]
5775pub fn vcgtq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
5776 unsafe { simd_gt(a, b) }
5777}
5778#[doc = "Compare unsigned greater than"]
5779#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgt_u16)"]
5780#[inline]
5781#[target_feature(enable = "neon")]
5782#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5783#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u16"))]
5784#[cfg_attr(
5785 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5786 assert_instr(cmhi)
5787)]
5788#[cfg_attr(
5789 not(target_arch = "arm"),
5790 stable(feature = "neon_intrinsics", since = "1.59.0")
5791)]
5792#[cfg_attr(
5793 target_arch = "arm",
5794 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5795)]
5796pub fn vcgt_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
5797 unsafe { simd_gt(a, b) }
5798}
5799#[doc = "Compare unsigned greater than"]
5800#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtq_u16)"]
5801#[inline]
5802#[target_feature(enable = "neon")]
5803#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5804#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u16"))]
5805#[cfg_attr(
5806 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5807 assert_instr(cmhi)
5808)]
5809#[cfg_attr(
5810 not(target_arch = "arm"),
5811 stable(feature = "neon_intrinsics", since = "1.59.0")
5812)]
5813#[cfg_attr(
5814 target_arch = "arm",
5815 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5816)]
5817pub fn vcgtq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
5818 unsafe { simd_gt(a, b) }
5819}
5820#[doc = "Compare unsigned greater than"]
5821#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgt_u32)"]
5822#[inline]
5823#[target_feature(enable = "neon")]
5824#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5825#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u32"))]
5826#[cfg_attr(
5827 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5828 assert_instr(cmhi)
5829)]
5830#[cfg_attr(
5831 not(target_arch = "arm"),
5832 stable(feature = "neon_intrinsics", since = "1.59.0")
5833)]
5834#[cfg_attr(
5835 target_arch = "arm",
5836 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5837)]
5838pub fn vcgt_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
5839 unsafe { simd_gt(a, b) }
5840}
5841#[doc = "Compare unsigned greater than"]
5842#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtq_u32)"]
5843#[inline]
5844#[target_feature(enable = "neon")]
5845#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5846#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u32"))]
5847#[cfg_attr(
5848 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5849 assert_instr(cmhi)
5850)]
5851#[cfg_attr(
5852 not(target_arch = "arm"),
5853 stable(feature = "neon_intrinsics", since = "1.59.0")
5854)]
5855#[cfg_attr(
5856 target_arch = "arm",
5857 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5858)]
5859pub fn vcgtq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
5860 unsafe { simd_gt(a, b) }
5861}
5862#[doc = "Floating-point compare greater than zero"]
5863#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtz_f16)"]
5864#[inline]
5865#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
5866#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.f16"))]
5867#[cfg_attr(
5868 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5869 assert_instr(fcmgt)
5870)]
5871#[target_feature(enable = "neon,fp16")]
5872#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
5873#[cfg(not(target_arch = "arm64ec"))]
5874pub fn vcgtz_f16(a: float16x4_t) -> uint16x4_t {
5875 let b: f16x4 = f16x4::new(0.0, 0.0, 0.0, 0.0);
5876 unsafe { simd_gt(a, transmute(b)) }
5877}
5878#[doc = "Floating-point compare greater than zero"]
5879#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtzq_f16)"]
5880#[inline]
5881#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
5882#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.f16"))]
5883#[cfg_attr(
5884 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5885 assert_instr(fcmgt)
5886)]
5887#[target_feature(enable = "neon,fp16")]
5888#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
5889#[cfg(not(target_arch = "arm64ec"))]
5890pub fn vcgtzq_f16(a: float16x8_t) -> uint16x8_t {
5891 let b: f16x8 = f16x8::new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
5892 unsafe { simd_gt(a, transmute(b)) }
5893}
5894#[doc = "Floating-point compare less than or equal"]
5895#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcle_f16)"]
5896#[inline]
5897#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
5898#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f16"))]
5899#[cfg_attr(
5900 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5901 assert_instr(fcmge)
5902)]
5903#[target_feature(enable = "neon,fp16")]
5904#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
5905#[cfg(not(target_arch = "arm64ec"))]
5906pub fn vcle_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t {
5907 unsafe { simd_le(a, b) }
5908}
5909#[doc = "Floating-point compare less than or equal"]
5910#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcleq_f16)"]
5911#[inline]
5912#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
5913#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f16"))]
5914#[cfg_attr(
5915 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5916 assert_instr(fcmge)
5917)]
5918#[target_feature(enable = "neon,fp16")]
5919#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
5920#[cfg(not(target_arch = "arm64ec"))]
5921pub fn vcleq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t {
5922 unsafe { simd_le(a, b) }
5923}
5924#[doc = "Floating-point compare less than or equal"]
5925#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcle_f32)"]
5926#[inline]
5927#[target_feature(enable = "neon")]
5928#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5929#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f32"))]
5930#[cfg_attr(
5931 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5932 assert_instr(fcmge)
5933)]
5934#[cfg_attr(
5935 not(target_arch = "arm"),
5936 stable(feature = "neon_intrinsics", since = "1.59.0")
5937)]
5938#[cfg_attr(
5939 target_arch = "arm",
5940 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5941)]
5942pub fn vcle_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t {
5943 unsafe { simd_le(a, b) }
5944}
5945#[doc = "Floating-point compare less than or equal"]
5946#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcleq_f32)"]
5947#[inline]
5948#[target_feature(enable = "neon")]
5949#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5950#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f32"))]
5951#[cfg_attr(
5952 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5953 assert_instr(fcmge)
5954)]
5955#[cfg_attr(
5956 not(target_arch = "arm"),
5957 stable(feature = "neon_intrinsics", since = "1.59.0")
5958)]
5959#[cfg_attr(
5960 target_arch = "arm",
5961 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5962)]
5963pub fn vcleq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t {
5964 unsafe { simd_le(a, b) }
5965}
5966#[doc = "Compare signed less than or equal"]
5967#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcle_s8)"]
5968#[inline]
5969#[target_feature(enable = "neon")]
5970#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5971#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s8"))]
5972#[cfg_attr(
5973 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5974 assert_instr(cmge)
5975)]
5976#[cfg_attr(
5977 not(target_arch = "arm"),
5978 stable(feature = "neon_intrinsics", since = "1.59.0")
5979)]
5980#[cfg_attr(
5981 target_arch = "arm",
5982 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5983)]
5984pub fn vcle_s8(a: int8x8_t, b: int8x8_t) -> uint8x8_t {
5985 unsafe { simd_le(a, b) }
5986}
5987#[doc = "Compare signed less than or equal"]
5988#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcleq_s8)"]
5989#[inline]
5990#[target_feature(enable = "neon")]
5991#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5992#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s8"))]
5993#[cfg_attr(
5994 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5995 assert_instr(cmge)
5996)]
5997#[cfg_attr(
5998 not(target_arch = "arm"),
5999 stable(feature = "neon_intrinsics", since = "1.59.0")
6000)]
6001#[cfg_attr(
6002 target_arch = "arm",
6003 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6004)]
6005pub fn vcleq_s8(a: int8x16_t, b: int8x16_t) -> uint8x16_t {
6006 unsafe { simd_le(a, b) }
6007}
6008#[doc = "Compare signed less than or equal"]
6009#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcle_s16)"]
6010#[inline]
6011#[target_feature(enable = "neon")]
6012#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6013#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s16"))]
6014#[cfg_attr(
6015 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6016 assert_instr(cmge)
6017)]
6018#[cfg_attr(
6019 not(target_arch = "arm"),
6020 stable(feature = "neon_intrinsics", since = "1.59.0")
6021)]
6022#[cfg_attr(
6023 target_arch = "arm",
6024 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6025)]
6026pub fn vcle_s16(a: int16x4_t, b: int16x4_t) -> uint16x4_t {
6027 unsafe { simd_le(a, b) }
6028}
6029#[doc = "Compare signed less than or equal"]
6030#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcleq_s16)"]
6031#[inline]
6032#[target_feature(enable = "neon")]
6033#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6034#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s16"))]
6035#[cfg_attr(
6036 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6037 assert_instr(cmge)
6038)]
6039#[cfg_attr(
6040 not(target_arch = "arm"),
6041 stable(feature = "neon_intrinsics", since = "1.59.0")
6042)]
6043#[cfg_attr(
6044 target_arch = "arm",
6045 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6046)]
6047pub fn vcleq_s16(a: int16x8_t, b: int16x8_t) -> uint16x8_t {
6048 unsafe { simd_le(a, b) }
6049}
6050#[doc = "Compare signed less than or equal"]
6051#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcle_s32)"]
6052#[inline]
6053#[target_feature(enable = "neon")]
6054#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6055#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s32"))]
6056#[cfg_attr(
6057 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6058 assert_instr(cmge)
6059)]
6060#[cfg_attr(
6061 not(target_arch = "arm"),
6062 stable(feature = "neon_intrinsics", since = "1.59.0")
6063)]
6064#[cfg_attr(
6065 target_arch = "arm",
6066 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6067)]
6068pub fn vcle_s32(a: int32x2_t, b: int32x2_t) -> uint32x2_t {
6069 unsafe { simd_le(a, b) }
6070}
6071#[doc = "Compare signed less than or equal"]
6072#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcleq_s32)"]
6073#[inline]
6074#[target_feature(enable = "neon")]
6075#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6076#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s32"))]
6077#[cfg_attr(
6078 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6079 assert_instr(cmge)
6080)]
6081#[cfg_attr(
6082 not(target_arch = "arm"),
6083 stable(feature = "neon_intrinsics", since = "1.59.0")
6084)]
6085#[cfg_attr(
6086 target_arch = "arm",
6087 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6088)]
6089pub fn vcleq_s32(a: int32x4_t, b: int32x4_t) -> uint32x4_t {
6090 unsafe { simd_le(a, b) }
6091}
6092#[doc = "Compare unsigned less than or equal"]
6093#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcle_u8)"]
6094#[inline]
6095#[target_feature(enable = "neon")]
6096#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6097#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u8"))]
6098#[cfg_attr(
6099 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6100 assert_instr(cmhs)
6101)]
6102#[cfg_attr(
6103 not(target_arch = "arm"),
6104 stable(feature = "neon_intrinsics", since = "1.59.0")
6105)]
6106#[cfg_attr(
6107 target_arch = "arm",
6108 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6109)]
6110pub fn vcle_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
6111 unsafe { simd_le(a, b) }
6112}
6113#[doc = "Compare unsigned less than or equal"]
6114#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcleq_u8)"]
6115#[inline]
6116#[target_feature(enable = "neon")]
6117#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6118#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u8"))]
6119#[cfg_attr(
6120 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6121 assert_instr(cmhs)
6122)]
6123#[cfg_attr(
6124 not(target_arch = "arm"),
6125 stable(feature = "neon_intrinsics", since = "1.59.0")
6126)]
6127#[cfg_attr(
6128 target_arch = "arm",
6129 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6130)]
6131pub fn vcleq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
6132 unsafe { simd_le(a, b) }
6133}
6134#[doc = "Compare unsigned less than or equal"]
6135#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcle_u16)"]
6136#[inline]
6137#[target_feature(enable = "neon")]
6138#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6139#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u16"))]
6140#[cfg_attr(
6141 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6142 assert_instr(cmhs)
6143)]
6144#[cfg_attr(
6145 not(target_arch = "arm"),
6146 stable(feature = "neon_intrinsics", since = "1.59.0")
6147)]
6148#[cfg_attr(
6149 target_arch = "arm",
6150 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6151)]
6152pub fn vcle_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
6153 unsafe { simd_le(a, b) }
6154}
6155#[doc = "Compare unsigned less than or equal"]
6156#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcleq_u16)"]
6157#[inline]
6158#[target_feature(enable = "neon")]
6159#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6160#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u16"))]
6161#[cfg_attr(
6162 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6163 assert_instr(cmhs)
6164)]
6165#[cfg_attr(
6166 not(target_arch = "arm"),
6167 stable(feature = "neon_intrinsics", since = "1.59.0")
6168)]
6169#[cfg_attr(
6170 target_arch = "arm",
6171 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6172)]
6173pub fn vcleq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
6174 unsafe { simd_le(a, b) }
6175}
6176#[doc = "Compare unsigned less than or equal"]
6177#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcle_u32)"]
6178#[inline]
6179#[target_feature(enable = "neon")]
6180#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6181#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u32"))]
6182#[cfg_attr(
6183 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6184 assert_instr(cmhs)
6185)]
6186#[cfg_attr(
6187 not(target_arch = "arm"),
6188 stable(feature = "neon_intrinsics", since = "1.59.0")
6189)]
6190#[cfg_attr(
6191 target_arch = "arm",
6192 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6193)]
6194pub fn vcle_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
6195 unsafe { simd_le(a, b) }
6196}
6197#[doc = "Compare unsigned less than or equal"]
6198#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcleq_u32)"]
6199#[inline]
6200#[target_feature(enable = "neon")]
6201#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6202#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u32"))]
6203#[cfg_attr(
6204 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6205 assert_instr(cmhs)
6206)]
6207#[cfg_attr(
6208 not(target_arch = "arm"),
6209 stable(feature = "neon_intrinsics", since = "1.59.0")
6210)]
6211#[cfg_attr(
6212 target_arch = "arm",
6213 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6214)]
6215pub fn vcleq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
6216 unsafe { simd_le(a, b) }
6217}
6218#[doc = "Floating-point compare less than or equal to zero"]
6219#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclez_f16)"]
6220#[inline]
6221#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
6222#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcle.f16"))]
6223#[cfg_attr(
6224 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6225 assert_instr(fcmle)
6226)]
6227#[target_feature(enable = "neon,fp16")]
6228#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
6229#[cfg(not(target_arch = "arm64ec"))]
6230pub fn vclez_f16(a: float16x4_t) -> uint16x4_t {
6231 let b: f16x4 = f16x4::new(0.0, 0.0, 0.0, 0.0);
6232 unsafe { simd_le(a, transmute(b)) }
6233}
6234#[doc = "Floating-point compare less than or equal to zero"]
6235#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclezq_f16)"]
6236#[inline]
6237#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
6238#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcle.f16"))]
6239#[cfg_attr(
6240 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6241 assert_instr(fcmle)
6242)]
6243#[target_feature(enable = "neon,fp16")]
6244#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
6245#[cfg(not(target_arch = "arm64ec"))]
6246pub fn vclezq_f16(a: float16x8_t) -> uint16x8_t {
6247 let b: f16x8 = f16x8::new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
6248 unsafe { simd_le(a, transmute(b)) }
6249}
6250#[doc = "Count leading sign bits"]
6251#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcls_s8)"]
6252#[inline]
6253#[target_feature(enable = "neon")]
6254#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6255#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcls.s8"))]
6256#[cfg_attr(
6257 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6258 assert_instr(cls)
6259)]
6260#[cfg_attr(
6261 not(target_arch = "arm"),
6262 stable(feature = "neon_intrinsics", since = "1.59.0")
6263)]
6264#[cfg_attr(
6265 target_arch = "arm",
6266 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6267)]
6268pub fn vcls_s8(a: int8x8_t) -> int8x8_t {
6269 unsafe extern "unadjusted" {
6270 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vcls.v8i8")]
6271 #[cfg_attr(
6272 any(target_arch = "aarch64", target_arch = "arm64ec"),
6273 link_name = "llvm.aarch64.neon.cls.v8i8"
6274 )]
6275 fn _vcls_s8(a: int8x8_t) -> int8x8_t;
6276 }
6277 unsafe { _vcls_s8(a) }
6278}
6279#[doc = "Count leading sign bits"]
6280#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclsq_s8)"]
6281#[inline]
6282#[target_feature(enable = "neon")]
6283#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6284#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcls.s8"))]
6285#[cfg_attr(
6286 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6287 assert_instr(cls)
6288)]
6289#[cfg_attr(
6290 not(target_arch = "arm"),
6291 stable(feature = "neon_intrinsics", since = "1.59.0")
6292)]
6293#[cfg_attr(
6294 target_arch = "arm",
6295 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6296)]
6297pub fn vclsq_s8(a: int8x16_t) -> int8x16_t {
6298 unsafe extern "unadjusted" {
6299 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vcls.v16i8")]
6300 #[cfg_attr(
6301 any(target_arch = "aarch64", target_arch = "arm64ec"),
6302 link_name = "llvm.aarch64.neon.cls.v16i8"
6303 )]
6304 fn _vclsq_s8(a: int8x16_t) -> int8x16_t;
6305 }
6306 unsafe { _vclsq_s8(a) }
6307}
6308#[doc = "Count leading sign bits"]
6309#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcls_s16)"]
6310#[inline]
6311#[target_feature(enable = "neon")]
6312#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6313#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcls.s16"))]
6314#[cfg_attr(
6315 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6316 assert_instr(cls)
6317)]
6318#[cfg_attr(
6319 not(target_arch = "arm"),
6320 stable(feature = "neon_intrinsics", since = "1.59.0")
6321)]
6322#[cfg_attr(
6323 target_arch = "arm",
6324 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6325)]
6326pub fn vcls_s16(a: int16x4_t) -> int16x4_t {
6327 unsafe extern "unadjusted" {
6328 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vcls.v4i16")]
6329 #[cfg_attr(
6330 any(target_arch = "aarch64", target_arch = "arm64ec"),
6331 link_name = "llvm.aarch64.neon.cls.v4i16"
6332 )]
6333 fn _vcls_s16(a: int16x4_t) -> int16x4_t;
6334 }
6335 unsafe { _vcls_s16(a) }
6336}
6337#[doc = "Count leading sign bits"]
6338#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclsq_s16)"]
6339#[inline]
6340#[target_feature(enable = "neon")]
6341#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6342#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcls.s16"))]
6343#[cfg_attr(
6344 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6345 assert_instr(cls)
6346)]
6347#[cfg_attr(
6348 not(target_arch = "arm"),
6349 stable(feature = "neon_intrinsics", since = "1.59.0")
6350)]
6351#[cfg_attr(
6352 target_arch = "arm",
6353 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6354)]
6355pub fn vclsq_s16(a: int16x8_t) -> int16x8_t {
6356 unsafe extern "unadjusted" {
6357 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vcls.v8i16")]
6358 #[cfg_attr(
6359 any(target_arch = "aarch64", target_arch = "arm64ec"),
6360 link_name = "llvm.aarch64.neon.cls.v8i16"
6361 )]
6362 fn _vclsq_s16(a: int16x8_t) -> int16x8_t;
6363 }
6364 unsafe { _vclsq_s16(a) }
6365}
6366#[doc = "Count leading sign bits"]
6367#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcls_s32)"]
6368#[inline]
6369#[target_feature(enable = "neon")]
6370#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6371#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcls.s32"))]
6372#[cfg_attr(
6373 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6374 assert_instr(cls)
6375)]
6376#[cfg_attr(
6377 not(target_arch = "arm"),
6378 stable(feature = "neon_intrinsics", since = "1.59.0")
6379)]
6380#[cfg_attr(
6381 target_arch = "arm",
6382 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6383)]
6384pub fn vcls_s32(a: int32x2_t) -> int32x2_t {
6385 unsafe extern "unadjusted" {
6386 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vcls.v2i32")]
6387 #[cfg_attr(
6388 any(target_arch = "aarch64", target_arch = "arm64ec"),
6389 link_name = "llvm.aarch64.neon.cls.v2i32"
6390 )]
6391 fn _vcls_s32(a: int32x2_t) -> int32x2_t;
6392 }
6393 unsafe { _vcls_s32(a) }
6394}
6395#[doc = "Count leading sign bits"]
6396#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclsq_s32)"]
6397#[inline]
6398#[target_feature(enable = "neon")]
6399#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6400#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcls.s32"))]
6401#[cfg_attr(
6402 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6403 assert_instr(cls)
6404)]
6405#[cfg_attr(
6406 not(target_arch = "arm"),
6407 stable(feature = "neon_intrinsics", since = "1.59.0")
6408)]
6409#[cfg_attr(
6410 target_arch = "arm",
6411 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6412)]
6413pub fn vclsq_s32(a: int32x4_t) -> int32x4_t {
6414 unsafe extern "unadjusted" {
6415 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vcls.v4i32")]
6416 #[cfg_attr(
6417 any(target_arch = "aarch64", target_arch = "arm64ec"),
6418 link_name = "llvm.aarch64.neon.cls.v4i32"
6419 )]
6420 fn _vclsq_s32(a: int32x4_t) -> int32x4_t;
6421 }
6422 unsafe { _vclsq_s32(a) }
6423}
6424#[doc = "Count leading sign bits"]
6425#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcls_u8)"]
6426#[inline]
6427#[target_feature(enable = "neon")]
6428#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6429#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcls))]
6430#[cfg_attr(
6431 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6432 assert_instr(cls)
6433)]
6434#[cfg_attr(
6435 not(target_arch = "arm"),
6436 stable(feature = "neon_intrinsics", since = "1.59.0")
6437)]
6438#[cfg_attr(
6439 target_arch = "arm",
6440 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6441)]
6442pub fn vcls_u8(a: uint8x8_t) -> int8x8_t {
6443 unsafe { vcls_s8(transmute(a)) }
6444}
6445#[doc = "Count leading sign bits"]
6446#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclsq_u8)"]
6447#[inline]
6448#[target_feature(enable = "neon")]
6449#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6450#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcls))]
6451#[cfg_attr(
6452 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6453 assert_instr(cls)
6454)]
6455#[cfg_attr(
6456 not(target_arch = "arm"),
6457 stable(feature = "neon_intrinsics", since = "1.59.0")
6458)]
6459#[cfg_attr(
6460 target_arch = "arm",
6461 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6462)]
6463pub fn vclsq_u8(a: uint8x16_t) -> int8x16_t {
6464 unsafe { vclsq_s8(transmute(a)) }
6465}
6466#[doc = "Count leading sign bits"]
6467#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcls_u16)"]
6468#[inline]
6469#[target_feature(enable = "neon")]
6470#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6471#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcls))]
6472#[cfg_attr(
6473 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6474 assert_instr(cls)
6475)]
6476#[cfg_attr(
6477 not(target_arch = "arm"),
6478 stable(feature = "neon_intrinsics", since = "1.59.0")
6479)]
6480#[cfg_attr(
6481 target_arch = "arm",
6482 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6483)]
6484pub fn vcls_u16(a: uint16x4_t) -> int16x4_t {
6485 unsafe { vcls_s16(transmute(a)) }
6486}
6487#[doc = "Count leading sign bits"]
6488#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclsq_u16)"]
6489#[inline]
6490#[target_feature(enable = "neon")]
6491#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6492#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcls))]
6493#[cfg_attr(
6494 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6495 assert_instr(cls)
6496)]
6497#[cfg_attr(
6498 not(target_arch = "arm"),
6499 stable(feature = "neon_intrinsics", since = "1.59.0")
6500)]
6501#[cfg_attr(
6502 target_arch = "arm",
6503 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6504)]
6505pub fn vclsq_u16(a: uint16x8_t) -> int16x8_t {
6506 unsafe { vclsq_s16(transmute(a)) }
6507}
6508#[doc = "Count leading sign bits"]
6509#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcls_u32)"]
6510#[inline]
6511#[target_feature(enable = "neon")]
6512#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6513#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcls))]
6514#[cfg_attr(
6515 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6516 assert_instr(cls)
6517)]
6518#[cfg_attr(
6519 not(target_arch = "arm"),
6520 stable(feature = "neon_intrinsics", since = "1.59.0")
6521)]
6522#[cfg_attr(
6523 target_arch = "arm",
6524 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6525)]
6526pub fn vcls_u32(a: uint32x2_t) -> int32x2_t {
6527 unsafe { vcls_s32(transmute(a)) }
6528}
6529#[doc = "Count leading sign bits"]
6530#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclsq_u32)"]
6531#[inline]
6532#[target_feature(enable = "neon")]
6533#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6534#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcls))]
6535#[cfg_attr(
6536 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6537 assert_instr(cls)
6538)]
6539#[cfg_attr(
6540 not(target_arch = "arm"),
6541 stable(feature = "neon_intrinsics", since = "1.59.0")
6542)]
6543#[cfg_attr(
6544 target_arch = "arm",
6545 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6546)]
6547pub fn vclsq_u32(a: uint32x4_t) -> int32x4_t {
6548 unsafe { vclsq_s32(transmute(a)) }
6549}
6550#[doc = "Floating-point compare less than"]
6551#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclt_f16)"]
6552#[inline]
6553#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
6554#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.f16"))]
6555#[cfg_attr(
6556 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6557 assert_instr(fcmgt)
6558)]
6559#[target_feature(enable = "neon,fp16")]
6560#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
6561#[cfg(not(target_arch = "arm64ec"))]
6562pub fn vclt_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t {
6563 unsafe { simd_lt(a, b) }
6564}
6565#[doc = "Floating-point compare less than"]
6566#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltq_f16)"]
6567#[inline]
6568#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
6569#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.f16"))]
6570#[cfg_attr(
6571 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6572 assert_instr(fcmgt)
6573)]
6574#[target_feature(enable = "neon,fp16")]
6575#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
6576#[cfg(not(target_arch = "arm64ec"))]
6577pub fn vcltq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t {
6578 unsafe { simd_lt(a, b) }
6579}
6580#[doc = "Floating-point compare less than"]
6581#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclt_f32)"]
6582#[inline]
6583#[target_feature(enable = "neon")]
6584#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6585#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.f32"))]
6586#[cfg_attr(
6587 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6588 assert_instr(fcmgt)
6589)]
6590#[cfg_attr(
6591 not(target_arch = "arm"),
6592 stable(feature = "neon_intrinsics", since = "1.59.0")
6593)]
6594#[cfg_attr(
6595 target_arch = "arm",
6596 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6597)]
6598pub fn vclt_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t {
6599 unsafe { simd_lt(a, b) }
6600}
6601#[doc = "Floating-point compare less than"]
6602#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltq_f32)"]
6603#[inline]
6604#[target_feature(enable = "neon")]
6605#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6606#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.f32"))]
6607#[cfg_attr(
6608 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6609 assert_instr(fcmgt)
6610)]
6611#[cfg_attr(
6612 not(target_arch = "arm"),
6613 stable(feature = "neon_intrinsics", since = "1.59.0")
6614)]
6615#[cfg_attr(
6616 target_arch = "arm",
6617 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6618)]
6619pub fn vcltq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t {
6620 unsafe { simd_lt(a, b) }
6621}
6622#[doc = "Compare signed less than"]
6623#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclt_s8)"]
6624#[inline]
6625#[target_feature(enable = "neon")]
6626#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6627#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s8"))]
6628#[cfg_attr(
6629 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6630 assert_instr(cmgt)
6631)]
6632#[cfg_attr(
6633 not(target_arch = "arm"),
6634 stable(feature = "neon_intrinsics", since = "1.59.0")
6635)]
6636#[cfg_attr(
6637 target_arch = "arm",
6638 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6639)]
6640pub fn vclt_s8(a: int8x8_t, b: int8x8_t) -> uint8x8_t {
6641 unsafe { simd_lt(a, b) }
6642}
6643#[doc = "Compare signed less than"]
6644#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltq_s8)"]
6645#[inline]
6646#[target_feature(enable = "neon")]
6647#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6648#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s8"))]
6649#[cfg_attr(
6650 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6651 assert_instr(cmgt)
6652)]
6653#[cfg_attr(
6654 not(target_arch = "arm"),
6655 stable(feature = "neon_intrinsics", since = "1.59.0")
6656)]
6657#[cfg_attr(
6658 target_arch = "arm",
6659 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6660)]
6661pub fn vcltq_s8(a: int8x16_t, b: int8x16_t) -> uint8x16_t {
6662 unsafe { simd_lt(a, b) }
6663}
6664#[doc = "Compare signed less than"]
6665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclt_s16)"]
6666#[inline]
6667#[target_feature(enable = "neon")]
6668#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6669#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s16"))]
6670#[cfg_attr(
6671 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6672 assert_instr(cmgt)
6673)]
6674#[cfg_attr(
6675 not(target_arch = "arm"),
6676 stable(feature = "neon_intrinsics", since = "1.59.0")
6677)]
6678#[cfg_attr(
6679 target_arch = "arm",
6680 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6681)]
6682pub fn vclt_s16(a: int16x4_t, b: int16x4_t) -> uint16x4_t {
6683 unsafe { simd_lt(a, b) }
6684}
6685#[doc = "Compare signed less than"]
6686#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltq_s16)"]
6687#[inline]
6688#[target_feature(enable = "neon")]
6689#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6690#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s16"))]
6691#[cfg_attr(
6692 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6693 assert_instr(cmgt)
6694)]
6695#[cfg_attr(
6696 not(target_arch = "arm"),
6697 stable(feature = "neon_intrinsics", since = "1.59.0")
6698)]
6699#[cfg_attr(
6700 target_arch = "arm",
6701 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6702)]
6703pub fn vcltq_s16(a: int16x8_t, b: int16x8_t) -> uint16x8_t {
6704 unsafe { simd_lt(a, b) }
6705}
6706#[doc = "Compare signed less than"]
6707#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclt_s32)"]
6708#[inline]
6709#[target_feature(enable = "neon")]
6710#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6711#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s32"))]
6712#[cfg_attr(
6713 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6714 assert_instr(cmgt)
6715)]
6716#[cfg_attr(
6717 not(target_arch = "arm"),
6718 stable(feature = "neon_intrinsics", since = "1.59.0")
6719)]
6720#[cfg_attr(
6721 target_arch = "arm",
6722 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6723)]
6724pub fn vclt_s32(a: int32x2_t, b: int32x2_t) -> uint32x2_t {
6725 unsafe { simd_lt(a, b) }
6726}
6727#[doc = "Compare signed less than"]
6728#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltq_s32)"]
6729#[inline]
6730#[target_feature(enable = "neon")]
6731#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6732#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s32"))]
6733#[cfg_attr(
6734 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6735 assert_instr(cmgt)
6736)]
6737#[cfg_attr(
6738 not(target_arch = "arm"),
6739 stable(feature = "neon_intrinsics", since = "1.59.0")
6740)]
6741#[cfg_attr(
6742 target_arch = "arm",
6743 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6744)]
6745pub fn vcltq_s32(a: int32x4_t, b: int32x4_t) -> uint32x4_t {
6746 unsafe { simd_lt(a, b) }
6747}
6748#[doc = "Compare unsigned less than"]
6749#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclt_u8)"]
6750#[inline]
6751#[target_feature(enable = "neon")]
6752#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6753#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u8"))]
6754#[cfg_attr(
6755 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6756 assert_instr(cmhi)
6757)]
6758#[cfg_attr(
6759 not(target_arch = "arm"),
6760 stable(feature = "neon_intrinsics", since = "1.59.0")
6761)]
6762#[cfg_attr(
6763 target_arch = "arm",
6764 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6765)]
6766pub fn vclt_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
6767 unsafe { simd_lt(a, b) }
6768}
6769#[doc = "Compare unsigned less than"]
6770#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltq_u8)"]
6771#[inline]
6772#[target_feature(enable = "neon")]
6773#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6774#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u8"))]
6775#[cfg_attr(
6776 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6777 assert_instr(cmhi)
6778)]
6779#[cfg_attr(
6780 not(target_arch = "arm"),
6781 stable(feature = "neon_intrinsics", since = "1.59.0")
6782)]
6783#[cfg_attr(
6784 target_arch = "arm",
6785 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6786)]
6787pub fn vcltq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
6788 unsafe { simd_lt(a, b) }
6789}
6790#[doc = "Compare unsigned less than"]
6791#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclt_u16)"]
6792#[inline]
6793#[target_feature(enable = "neon")]
6794#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6795#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u16"))]
6796#[cfg_attr(
6797 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6798 assert_instr(cmhi)
6799)]
6800#[cfg_attr(
6801 not(target_arch = "arm"),
6802 stable(feature = "neon_intrinsics", since = "1.59.0")
6803)]
6804#[cfg_attr(
6805 target_arch = "arm",
6806 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6807)]
6808pub fn vclt_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
6809 unsafe { simd_lt(a, b) }
6810}
6811#[doc = "Compare unsigned less than"]
6812#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltq_u16)"]
6813#[inline]
6814#[target_feature(enable = "neon")]
6815#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6816#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u16"))]
6817#[cfg_attr(
6818 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6819 assert_instr(cmhi)
6820)]
6821#[cfg_attr(
6822 not(target_arch = "arm"),
6823 stable(feature = "neon_intrinsics", since = "1.59.0")
6824)]
6825#[cfg_attr(
6826 target_arch = "arm",
6827 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6828)]
6829pub fn vcltq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
6830 unsafe { simd_lt(a, b) }
6831}
6832#[doc = "Compare unsigned less than"]
6833#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclt_u32)"]
6834#[inline]
6835#[target_feature(enable = "neon")]
6836#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6837#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u32"))]
6838#[cfg_attr(
6839 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6840 assert_instr(cmhi)
6841)]
6842#[cfg_attr(
6843 not(target_arch = "arm"),
6844 stable(feature = "neon_intrinsics", since = "1.59.0")
6845)]
6846#[cfg_attr(
6847 target_arch = "arm",
6848 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6849)]
6850pub fn vclt_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
6851 unsafe { simd_lt(a, b) }
6852}
6853#[doc = "Compare unsigned less than"]
6854#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltq_u32)"]
6855#[inline]
6856#[target_feature(enable = "neon")]
6857#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6858#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u32"))]
6859#[cfg_attr(
6860 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6861 assert_instr(cmhi)
6862)]
6863#[cfg_attr(
6864 not(target_arch = "arm"),
6865 stable(feature = "neon_intrinsics", since = "1.59.0")
6866)]
6867#[cfg_attr(
6868 target_arch = "arm",
6869 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6870)]
6871pub fn vcltq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
6872 unsafe { simd_lt(a, b) }
6873}
6874#[doc = "Floating-point compare less than"]
6875#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltz_f16)"]
6876#[inline]
6877#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
6878#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclt.f16"))]
6879#[cfg_attr(
6880 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6881 assert_instr(fcmlt)
6882)]
6883#[target_feature(enable = "neon,fp16")]
6884#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
6885#[cfg(not(target_arch = "arm64ec"))]
6886pub fn vcltz_f16(a: float16x4_t) -> uint16x4_t {
6887 let b: f16x4 = f16x4::new(0.0, 0.0, 0.0, 0.0);
6888 unsafe { simd_lt(a, transmute(b)) }
6889}
6890#[doc = "Floating-point compare less than"]
6891#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltzq_f16)"]
6892#[inline]
6893#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
6894#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclt.f16"))]
6895#[cfg_attr(
6896 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6897 assert_instr(fcmlt)
6898)]
6899#[target_feature(enable = "neon,fp16")]
6900#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
6901#[cfg(not(target_arch = "arm64ec"))]
6902pub fn vcltzq_f16(a: float16x8_t) -> uint16x8_t {
6903 let b: f16x8 = f16x8::new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
6904 unsafe { simd_lt(a, transmute(b)) }
6905}
6906#[doc = "Count leading zero bits"]
6907#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclz_s8)"]
6908#[inline]
6909#[target_feature(enable = "neon")]
6910#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6911#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i8"))]
6912#[cfg_attr(
6913 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6914 assert_instr(clz)
6915)]
6916#[cfg_attr(
6917 not(target_arch = "arm"),
6918 stable(feature = "neon_intrinsics", since = "1.59.0")
6919)]
6920#[cfg_attr(
6921 target_arch = "arm",
6922 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6923)]
6924pub fn vclz_s8(a: int8x8_t) -> int8x8_t {
6925 unsafe { simd_ctlz(a) }
6926}
6927#[doc = "Count leading zero bits"]
6928#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclzq_s8)"]
6929#[inline]
6930#[target_feature(enable = "neon")]
6931#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6932#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i8"))]
6933#[cfg_attr(
6934 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6935 assert_instr(clz)
6936)]
6937#[cfg_attr(
6938 not(target_arch = "arm"),
6939 stable(feature = "neon_intrinsics", since = "1.59.0")
6940)]
6941#[cfg_attr(
6942 target_arch = "arm",
6943 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6944)]
6945pub fn vclzq_s8(a: int8x16_t) -> int8x16_t {
6946 unsafe { simd_ctlz(a) }
6947}
6948#[doc = "Count leading zero bits"]
6949#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclz_s16)"]
6950#[inline]
6951#[target_feature(enable = "neon")]
6952#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6953#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i16"))]
6954#[cfg_attr(
6955 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6956 assert_instr(clz)
6957)]
6958#[cfg_attr(
6959 not(target_arch = "arm"),
6960 stable(feature = "neon_intrinsics", since = "1.59.0")
6961)]
6962#[cfg_attr(
6963 target_arch = "arm",
6964 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6965)]
6966pub fn vclz_s16(a: int16x4_t) -> int16x4_t {
6967 unsafe { simd_ctlz(a) }
6968}
6969#[doc = "Count leading zero bits"]
6970#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclzq_s16)"]
6971#[inline]
6972#[target_feature(enable = "neon")]
6973#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6974#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i16"))]
6975#[cfg_attr(
6976 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6977 assert_instr(clz)
6978)]
6979#[cfg_attr(
6980 not(target_arch = "arm"),
6981 stable(feature = "neon_intrinsics", since = "1.59.0")
6982)]
6983#[cfg_attr(
6984 target_arch = "arm",
6985 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6986)]
6987pub fn vclzq_s16(a: int16x8_t) -> int16x8_t {
6988 unsafe { simd_ctlz(a) }
6989}
6990#[doc = "Count leading zero bits"]
6991#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclz_s32)"]
6992#[inline]
6993#[target_feature(enable = "neon")]
6994#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6995#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i32"))]
6996#[cfg_attr(
6997 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6998 assert_instr(clz)
6999)]
7000#[cfg_attr(
7001 not(target_arch = "arm"),
7002 stable(feature = "neon_intrinsics", since = "1.59.0")
7003)]
7004#[cfg_attr(
7005 target_arch = "arm",
7006 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7007)]
7008pub fn vclz_s32(a: int32x2_t) -> int32x2_t {
7009 unsafe { simd_ctlz(a) }
7010}
7011#[doc = "Count leading zero bits"]
7012#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclzq_s32)"]
7013#[inline]
7014#[target_feature(enable = "neon")]
7015#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7016#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i32"))]
7017#[cfg_attr(
7018 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7019 assert_instr(clz)
7020)]
7021#[cfg_attr(
7022 not(target_arch = "arm"),
7023 stable(feature = "neon_intrinsics", since = "1.59.0")
7024)]
7025#[cfg_attr(
7026 target_arch = "arm",
7027 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7028)]
7029pub fn vclzq_s32(a: int32x4_t) -> int32x4_t {
7030 unsafe { simd_ctlz(a) }
7031}
7032#[doc = "Count leading zero bits"]
7033#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclz_u16)"]
7034#[inline]
7035#[cfg(target_endian = "little")]
7036#[target_feature(enable = "neon")]
7037#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7038#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i16"))]
7039#[cfg_attr(
7040 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7041 assert_instr(clz)
7042)]
7043#[cfg_attr(
7044 not(target_arch = "arm"),
7045 stable(feature = "neon_intrinsics", since = "1.59.0")
7046)]
7047#[cfg_attr(
7048 target_arch = "arm",
7049 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7050)]
7051pub fn vclz_u16(a: uint16x4_t) -> uint16x4_t {
7052 unsafe { transmute(vclz_s16(transmute(a))) }
7053}
7054#[doc = "Count leading zero bits"]
7055#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclz_u16)"]
7056#[inline]
7057#[cfg(target_endian = "big")]
7058#[target_feature(enable = "neon")]
7059#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7060#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i16"))]
7061#[cfg_attr(
7062 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7063 assert_instr(clz)
7064)]
7065#[cfg_attr(
7066 not(target_arch = "arm"),
7067 stable(feature = "neon_intrinsics", since = "1.59.0")
7068)]
7069#[cfg_attr(
7070 target_arch = "arm",
7071 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7072)]
7073pub fn vclz_u16(a: uint16x4_t) -> uint16x4_t {
7074 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
7075 unsafe {
7076 let ret_val: uint16x4_t = transmute(vclz_s16(transmute(a)));
7077 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
7078 }
7079}
7080#[doc = "Count leading zero bits"]
7081#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclzq_u16)"]
7082#[inline]
7083#[cfg(target_endian = "little")]
7084#[target_feature(enable = "neon")]
7085#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7086#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i16"))]
7087#[cfg_attr(
7088 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7089 assert_instr(clz)
7090)]
7091#[cfg_attr(
7092 not(target_arch = "arm"),
7093 stable(feature = "neon_intrinsics", since = "1.59.0")
7094)]
7095#[cfg_attr(
7096 target_arch = "arm",
7097 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7098)]
7099pub fn vclzq_u16(a: uint16x8_t) -> uint16x8_t {
7100 unsafe { transmute(vclzq_s16(transmute(a))) }
7101}
7102#[doc = "Count leading zero bits"]
7103#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclzq_u16)"]
7104#[inline]
7105#[cfg(target_endian = "big")]
7106#[target_feature(enable = "neon")]
7107#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7108#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i16"))]
7109#[cfg_attr(
7110 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7111 assert_instr(clz)
7112)]
7113#[cfg_attr(
7114 not(target_arch = "arm"),
7115 stable(feature = "neon_intrinsics", since = "1.59.0")
7116)]
7117#[cfg_attr(
7118 target_arch = "arm",
7119 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7120)]
7121pub fn vclzq_u16(a: uint16x8_t) -> uint16x8_t {
7122 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
7123 unsafe {
7124 let ret_val: uint16x8_t = transmute(vclzq_s16(transmute(a)));
7125 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
7126 }
7127}
7128#[doc = "Count leading zero bits"]
7129#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclz_u32)"]
7130#[inline]
7131#[cfg(target_endian = "little")]
7132#[target_feature(enable = "neon")]
7133#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7134#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i32"))]
7135#[cfg_attr(
7136 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7137 assert_instr(clz)
7138)]
7139#[cfg_attr(
7140 not(target_arch = "arm"),
7141 stable(feature = "neon_intrinsics", since = "1.59.0")
7142)]
7143#[cfg_attr(
7144 target_arch = "arm",
7145 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7146)]
7147pub fn vclz_u32(a: uint32x2_t) -> uint32x2_t {
7148 unsafe { transmute(vclz_s32(transmute(a))) }
7149}
7150#[doc = "Count leading zero bits"]
7151#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclz_u32)"]
7152#[inline]
7153#[cfg(target_endian = "big")]
7154#[target_feature(enable = "neon")]
7155#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7156#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i32"))]
7157#[cfg_attr(
7158 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7159 assert_instr(clz)
7160)]
7161#[cfg_attr(
7162 not(target_arch = "arm"),
7163 stable(feature = "neon_intrinsics", since = "1.59.0")
7164)]
7165#[cfg_attr(
7166 target_arch = "arm",
7167 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7168)]
7169pub fn vclz_u32(a: uint32x2_t) -> uint32x2_t {
7170 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
7171 unsafe {
7172 let ret_val: uint32x2_t = transmute(vclz_s32(transmute(a)));
7173 simd_shuffle!(ret_val, ret_val, [1, 0])
7174 }
7175}
7176#[doc = "Count leading zero bits"]
7177#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclzq_u32)"]
7178#[inline]
7179#[cfg(target_endian = "little")]
7180#[target_feature(enable = "neon")]
7181#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7182#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i32"))]
7183#[cfg_attr(
7184 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7185 assert_instr(clz)
7186)]
7187#[cfg_attr(
7188 not(target_arch = "arm"),
7189 stable(feature = "neon_intrinsics", since = "1.59.0")
7190)]
7191#[cfg_attr(
7192 target_arch = "arm",
7193 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7194)]
7195pub fn vclzq_u32(a: uint32x4_t) -> uint32x4_t {
7196 unsafe { transmute(vclzq_s32(transmute(a))) }
7197}
7198#[doc = "Count leading zero bits"]
7199#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclzq_u32)"]
7200#[inline]
7201#[cfg(target_endian = "big")]
7202#[target_feature(enable = "neon")]
7203#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7204#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i32"))]
7205#[cfg_attr(
7206 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7207 assert_instr(clz)
7208)]
7209#[cfg_attr(
7210 not(target_arch = "arm"),
7211 stable(feature = "neon_intrinsics", since = "1.59.0")
7212)]
7213#[cfg_attr(
7214 target_arch = "arm",
7215 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7216)]
7217pub fn vclzq_u32(a: uint32x4_t) -> uint32x4_t {
7218 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
7219 unsafe {
7220 let ret_val: uint32x4_t = transmute(vclzq_s32(transmute(a)));
7221 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
7222 }
7223}
7224#[doc = "Count leading zero bits"]
7225#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclz_u8)"]
7226#[inline]
7227#[cfg(target_endian = "little")]
7228#[target_feature(enable = "neon")]
7229#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7230#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i8"))]
7231#[cfg_attr(
7232 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7233 assert_instr(clz)
7234)]
7235#[cfg_attr(
7236 not(target_arch = "arm"),
7237 stable(feature = "neon_intrinsics", since = "1.59.0")
7238)]
7239#[cfg_attr(
7240 target_arch = "arm",
7241 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7242)]
7243pub fn vclz_u8(a: uint8x8_t) -> uint8x8_t {
7244 unsafe { transmute(vclz_s8(transmute(a))) }
7245}
7246#[doc = "Count leading zero bits"]
7247#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclz_u8)"]
7248#[inline]
7249#[cfg(target_endian = "big")]
7250#[target_feature(enable = "neon")]
7251#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7252#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i8"))]
7253#[cfg_attr(
7254 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7255 assert_instr(clz)
7256)]
7257#[cfg_attr(
7258 not(target_arch = "arm"),
7259 stable(feature = "neon_intrinsics", since = "1.59.0")
7260)]
7261#[cfg_attr(
7262 target_arch = "arm",
7263 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7264)]
7265pub fn vclz_u8(a: uint8x8_t) -> uint8x8_t {
7266 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
7267 unsafe {
7268 let ret_val: uint8x8_t = transmute(vclz_s8(transmute(a)));
7269 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
7270 }
7271}
7272#[doc = "Count leading zero bits"]
7273#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclzq_u8)"]
7274#[inline]
7275#[cfg(target_endian = "little")]
7276#[target_feature(enable = "neon")]
7277#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7278#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i8"))]
7279#[cfg_attr(
7280 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7281 assert_instr(clz)
7282)]
7283#[cfg_attr(
7284 not(target_arch = "arm"),
7285 stable(feature = "neon_intrinsics", since = "1.59.0")
7286)]
7287#[cfg_attr(
7288 target_arch = "arm",
7289 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7290)]
7291pub fn vclzq_u8(a: uint8x16_t) -> uint8x16_t {
7292 unsafe { transmute(vclzq_s8(transmute(a))) }
7293}
7294#[doc = "Count leading zero bits"]
7295#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclzq_u8)"]
7296#[inline]
7297#[cfg(target_endian = "big")]
7298#[target_feature(enable = "neon")]
7299#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7300#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i8"))]
7301#[cfg_attr(
7302 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7303 assert_instr(clz)
7304)]
7305#[cfg_attr(
7306 not(target_arch = "arm"),
7307 stable(feature = "neon_intrinsics", since = "1.59.0")
7308)]
7309#[cfg_attr(
7310 target_arch = "arm",
7311 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7312)]
7313pub fn vclzq_u8(a: uint8x16_t) -> uint8x16_t {
7314 let a: uint8x16_t =
7315 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
7316 unsafe {
7317 let ret_val: uint8x16_t = transmute(vclzq_s8(transmute(a)));
7318 simd_shuffle!(
7319 ret_val,
7320 ret_val,
7321 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
7322 )
7323 }
7324}
7325#[doc = "Population count per byte."]
7326#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcnt_s8)"]
7327#[inline]
7328#[target_feature(enable = "neon")]
7329#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7330#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7331#[cfg_attr(
7332 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7333 assert_instr(cnt)
7334)]
7335#[cfg_attr(
7336 not(target_arch = "arm"),
7337 stable(feature = "neon_intrinsics", since = "1.59.0")
7338)]
7339#[cfg_attr(
7340 target_arch = "arm",
7341 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7342)]
7343pub fn vcnt_s8(a: int8x8_t) -> int8x8_t {
7344 unsafe { simd_ctpop(a) }
7345}
7346#[doc = "Population count per byte."]
7347#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcntq_s8)"]
7348#[inline]
7349#[target_feature(enable = "neon")]
7350#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7351#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7352#[cfg_attr(
7353 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7354 assert_instr(cnt)
7355)]
7356#[cfg_attr(
7357 not(target_arch = "arm"),
7358 stable(feature = "neon_intrinsics", since = "1.59.0")
7359)]
7360#[cfg_attr(
7361 target_arch = "arm",
7362 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7363)]
7364pub fn vcntq_s8(a: int8x16_t) -> int8x16_t {
7365 unsafe { simd_ctpop(a) }
7366}
7367#[doc = "Population count per byte."]
7368#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcnt_u8)"]
7369#[inline]
7370#[cfg(target_endian = "little")]
7371#[target_feature(enable = "neon")]
7372#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7373#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7374#[cfg_attr(
7375 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7376 assert_instr(cnt)
7377)]
7378#[cfg_attr(
7379 not(target_arch = "arm"),
7380 stable(feature = "neon_intrinsics", since = "1.59.0")
7381)]
7382#[cfg_attr(
7383 target_arch = "arm",
7384 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7385)]
7386pub fn vcnt_u8(a: uint8x8_t) -> uint8x8_t {
7387 unsafe { transmute(vcnt_s8(transmute(a))) }
7388}
7389#[doc = "Population count per byte."]
7390#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcnt_u8)"]
7391#[inline]
7392#[cfg(target_endian = "big")]
7393#[target_feature(enable = "neon")]
7394#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7395#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7396#[cfg_attr(
7397 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7398 assert_instr(cnt)
7399)]
7400#[cfg_attr(
7401 not(target_arch = "arm"),
7402 stable(feature = "neon_intrinsics", since = "1.59.0")
7403)]
7404#[cfg_attr(
7405 target_arch = "arm",
7406 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7407)]
7408pub fn vcnt_u8(a: uint8x8_t) -> uint8x8_t {
7409 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
7410 unsafe {
7411 let ret_val: uint8x8_t = transmute(vcnt_s8(transmute(a)));
7412 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
7413 }
7414}
7415#[doc = "Population count per byte."]
7416#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcntq_u8)"]
7417#[inline]
7418#[cfg(target_endian = "little")]
7419#[target_feature(enable = "neon")]
7420#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7421#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7422#[cfg_attr(
7423 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7424 assert_instr(cnt)
7425)]
7426#[cfg_attr(
7427 not(target_arch = "arm"),
7428 stable(feature = "neon_intrinsics", since = "1.59.0")
7429)]
7430#[cfg_attr(
7431 target_arch = "arm",
7432 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7433)]
7434pub fn vcntq_u8(a: uint8x16_t) -> uint8x16_t {
7435 unsafe { transmute(vcntq_s8(transmute(a))) }
7436}
7437#[doc = "Population count per byte."]
7438#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcntq_u8)"]
7439#[inline]
7440#[cfg(target_endian = "big")]
7441#[target_feature(enable = "neon")]
7442#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7443#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7444#[cfg_attr(
7445 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7446 assert_instr(cnt)
7447)]
7448#[cfg_attr(
7449 not(target_arch = "arm"),
7450 stable(feature = "neon_intrinsics", since = "1.59.0")
7451)]
7452#[cfg_attr(
7453 target_arch = "arm",
7454 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7455)]
7456pub fn vcntq_u8(a: uint8x16_t) -> uint8x16_t {
7457 let a: uint8x16_t =
7458 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
7459 unsafe {
7460 let ret_val: uint8x16_t = transmute(vcntq_s8(transmute(a)));
7461 simd_shuffle!(
7462 ret_val,
7463 ret_val,
7464 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
7465 )
7466 }
7467}
7468#[doc = "Population count per byte."]
7469#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcnt_p8)"]
7470#[inline]
7471#[cfg(target_endian = "little")]
7472#[target_feature(enable = "neon")]
7473#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7474#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7475#[cfg_attr(
7476 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7477 assert_instr(cnt)
7478)]
7479#[cfg_attr(
7480 not(target_arch = "arm"),
7481 stable(feature = "neon_intrinsics", since = "1.59.0")
7482)]
7483#[cfg_attr(
7484 target_arch = "arm",
7485 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7486)]
7487pub fn vcnt_p8(a: poly8x8_t) -> poly8x8_t {
7488 unsafe { transmute(vcnt_s8(transmute(a))) }
7489}
7490#[doc = "Population count per byte."]
7491#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcnt_p8)"]
7492#[inline]
7493#[cfg(target_endian = "big")]
7494#[target_feature(enable = "neon")]
7495#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7496#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7497#[cfg_attr(
7498 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7499 assert_instr(cnt)
7500)]
7501#[cfg_attr(
7502 not(target_arch = "arm"),
7503 stable(feature = "neon_intrinsics", since = "1.59.0")
7504)]
7505#[cfg_attr(
7506 target_arch = "arm",
7507 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7508)]
7509pub fn vcnt_p8(a: poly8x8_t) -> poly8x8_t {
7510 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
7511 unsafe {
7512 let ret_val: poly8x8_t = transmute(vcnt_s8(transmute(a)));
7513 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
7514 }
7515}
7516#[doc = "Population count per byte."]
7517#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcntq_p8)"]
7518#[inline]
7519#[cfg(target_endian = "little")]
7520#[target_feature(enable = "neon")]
7521#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7522#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7523#[cfg_attr(
7524 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7525 assert_instr(cnt)
7526)]
7527#[cfg_attr(
7528 not(target_arch = "arm"),
7529 stable(feature = "neon_intrinsics", since = "1.59.0")
7530)]
7531#[cfg_attr(
7532 target_arch = "arm",
7533 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7534)]
7535pub fn vcntq_p8(a: poly8x16_t) -> poly8x16_t {
7536 unsafe { transmute(vcntq_s8(transmute(a))) }
7537}
7538#[doc = "Population count per byte."]
7539#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcntq_p8)"]
7540#[inline]
7541#[cfg(target_endian = "big")]
7542#[target_feature(enable = "neon")]
7543#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7544#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7545#[cfg_attr(
7546 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7547 assert_instr(cnt)
7548)]
7549#[cfg_attr(
7550 not(target_arch = "arm"),
7551 stable(feature = "neon_intrinsics", since = "1.59.0")
7552)]
7553#[cfg_attr(
7554 target_arch = "arm",
7555 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7556)]
7557pub fn vcntq_p8(a: poly8x16_t) -> poly8x16_t {
7558 let a: poly8x16_t =
7559 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
7560 unsafe {
7561 let ret_val: poly8x16_t = transmute(vcntq_s8(transmute(a)));
7562 simd_shuffle!(
7563 ret_val,
7564 ret_val,
7565 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
7566 )
7567 }
7568}
7569#[doc = "Join two smaller vectors into a single larger vector"]
7570#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_f16)"]
7571#[inline]
7572#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7573#[target_feature(enable = "neon,fp16")]
7574#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
7575#[cfg(not(target_arch = "arm64ec"))]
7576#[cfg_attr(test, assert_instr(nop))]
7577pub fn vcombine_f16(a: float16x4_t, b: float16x4_t) -> float16x8_t {
7578 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]) }
7579}
7580#[doc = "Join two smaller vectors into a single larger vector"]
7581#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_f32)"]
7582#[inline]
7583#[target_feature(enable = "neon")]
7584#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7585#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7586#[cfg_attr(
7587 not(target_arch = "arm"),
7588 stable(feature = "neon_intrinsics", since = "1.59.0")
7589)]
7590#[cfg_attr(
7591 target_arch = "arm",
7592 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7593)]
7594pub fn vcombine_f32(a: float32x2_t, b: float32x2_t) -> float32x4_t {
7595 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3]) }
7596}
7597#[doc = "Join two smaller vectors into a single larger vector"]
7598#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_s8)"]
7599#[inline]
7600#[target_feature(enable = "neon")]
7601#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7602#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7603#[cfg_attr(
7604 not(target_arch = "arm"),
7605 stable(feature = "neon_intrinsics", since = "1.59.0")
7606)]
7607#[cfg_attr(
7608 target_arch = "arm",
7609 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7610)]
7611pub fn vcombine_s8(a: int8x8_t, b: int8x8_t) -> int8x16_t {
7612 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) }
7613}
7614#[doc = "Join two smaller vectors into a single larger vector"]
7615#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_s16)"]
7616#[inline]
7617#[target_feature(enable = "neon")]
7618#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7619#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7620#[cfg_attr(
7621 not(target_arch = "arm"),
7622 stable(feature = "neon_intrinsics", since = "1.59.0")
7623)]
7624#[cfg_attr(
7625 target_arch = "arm",
7626 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7627)]
7628pub fn vcombine_s16(a: int16x4_t, b: int16x4_t) -> int16x8_t {
7629 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]) }
7630}
7631#[doc = "Join two smaller vectors into a single larger vector"]
7632#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_s32)"]
7633#[inline]
7634#[target_feature(enable = "neon")]
7635#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7636#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7637#[cfg_attr(
7638 not(target_arch = "arm"),
7639 stable(feature = "neon_intrinsics", since = "1.59.0")
7640)]
7641#[cfg_attr(
7642 target_arch = "arm",
7643 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7644)]
7645pub fn vcombine_s32(a: int32x2_t, b: int32x2_t) -> int32x4_t {
7646 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3]) }
7647}
7648#[doc = "Join two smaller vectors into a single larger vector"]
7649#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_s64)"]
7650#[inline]
7651#[target_feature(enable = "neon")]
7652#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7653#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7654#[cfg_attr(
7655 not(target_arch = "arm"),
7656 stable(feature = "neon_intrinsics", since = "1.59.0")
7657)]
7658#[cfg_attr(
7659 target_arch = "arm",
7660 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7661)]
7662pub fn vcombine_s64(a: int64x1_t, b: int64x1_t) -> int64x2_t {
7663 unsafe { simd_shuffle!(a, b, [0, 1]) }
7664}
7665#[doc = "Join two smaller vectors into a single larger vector"]
7666#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_u8)"]
7667#[inline]
7668#[target_feature(enable = "neon")]
7669#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7670#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7671#[cfg_attr(
7672 not(target_arch = "arm"),
7673 stable(feature = "neon_intrinsics", since = "1.59.0")
7674)]
7675#[cfg_attr(
7676 target_arch = "arm",
7677 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7678)]
7679pub fn vcombine_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x16_t {
7680 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) }
7681}
7682#[doc = "Join two smaller vectors into a single larger vector"]
7683#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_u16)"]
7684#[inline]
7685#[target_feature(enable = "neon")]
7686#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7687#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7688#[cfg_attr(
7689 not(target_arch = "arm"),
7690 stable(feature = "neon_intrinsics", since = "1.59.0")
7691)]
7692#[cfg_attr(
7693 target_arch = "arm",
7694 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7695)]
7696pub fn vcombine_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x8_t {
7697 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]) }
7698}
7699#[doc = "Join two smaller vectors into a single larger vector"]
7700#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_u32)"]
7701#[inline]
7702#[target_feature(enable = "neon")]
7703#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7704#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7705#[cfg_attr(
7706 not(target_arch = "arm"),
7707 stable(feature = "neon_intrinsics", since = "1.59.0")
7708)]
7709#[cfg_attr(
7710 target_arch = "arm",
7711 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7712)]
7713pub fn vcombine_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x4_t {
7714 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3]) }
7715}
7716#[doc = "Join two smaller vectors into a single larger vector"]
7717#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_u64)"]
7718#[inline]
7719#[target_feature(enable = "neon")]
7720#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7721#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7722#[cfg_attr(
7723 not(target_arch = "arm"),
7724 stable(feature = "neon_intrinsics", since = "1.59.0")
7725)]
7726#[cfg_attr(
7727 target_arch = "arm",
7728 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7729)]
7730pub fn vcombine_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x2_t {
7731 unsafe { simd_shuffle!(a, b, [0, 1]) }
7732}
7733#[doc = "Join two smaller vectors into a single larger vector"]
7734#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_p8)"]
7735#[inline]
7736#[target_feature(enable = "neon")]
7737#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7738#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7739#[cfg_attr(
7740 not(target_arch = "arm"),
7741 stable(feature = "neon_intrinsics", since = "1.59.0")
7742)]
7743#[cfg_attr(
7744 target_arch = "arm",
7745 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7746)]
7747pub fn vcombine_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x16_t {
7748 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) }
7749}
7750#[doc = "Join two smaller vectors into a single larger vector"]
7751#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_p16)"]
7752#[inline]
7753#[target_feature(enable = "neon")]
7754#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7755#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7756#[cfg_attr(
7757 not(target_arch = "arm"),
7758 stable(feature = "neon_intrinsics", since = "1.59.0")
7759)]
7760#[cfg_attr(
7761 target_arch = "arm",
7762 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7763)]
7764pub fn vcombine_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x8_t {
7765 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]) }
7766}
7767#[doc = "Join two smaller vectors into a single larger vector"]
7768#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_p64)"]
7769#[inline]
7770#[target_feature(enable = "neon")]
7771#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7772#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7773#[cfg_attr(
7774 not(target_arch = "arm"),
7775 stable(feature = "neon_intrinsics", since = "1.59.0")
7776)]
7777#[cfg_attr(
7778 target_arch = "arm",
7779 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7780)]
7781pub fn vcombine_p64(a: poly64x1_t, b: poly64x1_t) -> poly64x2_t {
7782 unsafe { simd_shuffle!(a, b, [0, 1]) }
7783}
7784#[doc = "Insert vector element from another vector element"]
7785#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_f16)"]
7786#[inline]
7787#[cfg(target_endian = "little")]
7788#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7789#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7790#[cfg_attr(
7791 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7792 assert_instr(nop)
7793)]
7794#[target_feature(enable = "neon,fp16")]
7795#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
7796#[cfg(not(target_arch = "arm64ec"))]
7797pub fn vcreate_f16(a: u64) -> float16x4_t {
7798 unsafe { transmute(a) }
7799}
7800#[doc = "Insert vector element from another vector element"]
7801#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_f16)"]
7802#[inline]
7803#[cfg(target_endian = "big")]
7804#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7805#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7806#[cfg_attr(
7807 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7808 assert_instr(nop)
7809)]
7810#[target_feature(enable = "neon,fp16")]
7811#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
7812#[cfg(not(target_arch = "arm64ec"))]
7813pub fn vcreate_f16(a: u64) -> float16x4_t {
7814 unsafe {
7815 let ret_val: float16x4_t = transmute(a);
7816 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
7817 }
7818}
7819#[doc = "Insert vector element from another vector element"]
7820#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_f32)"]
7821#[inline]
7822#[cfg(target_endian = "little")]
7823#[target_feature(enable = "neon")]
7824#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7825#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7826#[cfg_attr(
7827 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7828 assert_instr(nop)
7829)]
7830#[cfg_attr(
7831 not(target_arch = "arm"),
7832 stable(feature = "neon_intrinsics", since = "1.59.0")
7833)]
7834#[cfg_attr(
7835 target_arch = "arm",
7836 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7837)]
7838pub fn vcreate_f32(a: u64) -> float32x2_t {
7839 unsafe { transmute(a) }
7840}
7841#[doc = "Insert vector element from another vector element"]
7842#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_f32)"]
7843#[inline]
7844#[cfg(target_endian = "big")]
7845#[target_feature(enable = "neon")]
7846#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7847#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7848#[cfg_attr(
7849 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7850 assert_instr(nop)
7851)]
7852#[cfg_attr(
7853 not(target_arch = "arm"),
7854 stable(feature = "neon_intrinsics", since = "1.59.0")
7855)]
7856#[cfg_attr(
7857 target_arch = "arm",
7858 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7859)]
7860pub fn vcreate_f32(a: u64) -> float32x2_t {
7861 unsafe {
7862 let ret_val: float32x2_t = transmute(a);
7863 simd_shuffle!(ret_val, ret_val, [1, 0])
7864 }
7865}
7866#[doc = "Insert vector element from another vector element"]
7867#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_s8)"]
7868#[inline]
7869#[cfg(target_endian = "little")]
7870#[target_feature(enable = "neon")]
7871#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7872#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7873#[cfg_attr(
7874 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7875 assert_instr(nop)
7876)]
7877#[cfg_attr(
7878 not(target_arch = "arm"),
7879 stable(feature = "neon_intrinsics", since = "1.59.0")
7880)]
7881#[cfg_attr(
7882 target_arch = "arm",
7883 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7884)]
7885pub fn vcreate_s8(a: u64) -> int8x8_t {
7886 unsafe { transmute(a) }
7887}
7888#[doc = "Insert vector element from another vector element"]
7889#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_s8)"]
7890#[inline]
7891#[cfg(target_endian = "big")]
7892#[target_feature(enable = "neon")]
7893#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7894#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7895#[cfg_attr(
7896 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7897 assert_instr(nop)
7898)]
7899#[cfg_attr(
7900 not(target_arch = "arm"),
7901 stable(feature = "neon_intrinsics", since = "1.59.0")
7902)]
7903#[cfg_attr(
7904 target_arch = "arm",
7905 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7906)]
7907pub fn vcreate_s8(a: u64) -> int8x8_t {
7908 unsafe {
7909 let ret_val: int8x8_t = transmute(a);
7910 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
7911 }
7912}
7913#[doc = "Insert vector element from another vector element"]
7914#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_s16)"]
7915#[inline]
7916#[cfg(target_endian = "little")]
7917#[target_feature(enable = "neon")]
7918#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7919#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7920#[cfg_attr(
7921 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7922 assert_instr(nop)
7923)]
7924#[cfg_attr(
7925 not(target_arch = "arm"),
7926 stable(feature = "neon_intrinsics", since = "1.59.0")
7927)]
7928#[cfg_attr(
7929 target_arch = "arm",
7930 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7931)]
7932pub fn vcreate_s16(a: u64) -> int16x4_t {
7933 unsafe { transmute(a) }
7934}
7935#[doc = "Insert vector element from another vector element"]
7936#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_s16)"]
7937#[inline]
7938#[cfg(target_endian = "big")]
7939#[target_feature(enable = "neon")]
7940#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7941#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7942#[cfg_attr(
7943 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7944 assert_instr(nop)
7945)]
7946#[cfg_attr(
7947 not(target_arch = "arm"),
7948 stable(feature = "neon_intrinsics", since = "1.59.0")
7949)]
7950#[cfg_attr(
7951 target_arch = "arm",
7952 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7953)]
7954pub fn vcreate_s16(a: u64) -> int16x4_t {
7955 unsafe {
7956 let ret_val: int16x4_t = transmute(a);
7957 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
7958 }
7959}
7960#[doc = "Insert vector element from another vector element"]
7961#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_s32)"]
7962#[inline]
7963#[cfg(target_endian = "little")]
7964#[target_feature(enable = "neon")]
7965#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7966#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7967#[cfg_attr(
7968 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7969 assert_instr(nop)
7970)]
7971#[cfg_attr(
7972 not(target_arch = "arm"),
7973 stable(feature = "neon_intrinsics", since = "1.59.0")
7974)]
7975#[cfg_attr(
7976 target_arch = "arm",
7977 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7978)]
7979pub fn vcreate_s32(a: u64) -> int32x2_t {
7980 unsafe { transmute(a) }
7981}
7982#[doc = "Insert vector element from another vector element"]
7983#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_s32)"]
7984#[inline]
7985#[cfg(target_endian = "big")]
7986#[target_feature(enable = "neon")]
7987#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7988#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7989#[cfg_attr(
7990 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7991 assert_instr(nop)
7992)]
7993#[cfg_attr(
7994 not(target_arch = "arm"),
7995 stable(feature = "neon_intrinsics", since = "1.59.0")
7996)]
7997#[cfg_attr(
7998 target_arch = "arm",
7999 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8000)]
8001pub fn vcreate_s32(a: u64) -> int32x2_t {
8002 unsafe {
8003 let ret_val: int32x2_t = transmute(a);
8004 simd_shuffle!(ret_val, ret_val, [1, 0])
8005 }
8006}
8007#[doc = "Insert vector element from another vector element"]
8008#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_s64)"]
8009#[inline]
8010#[target_feature(enable = "neon")]
8011#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8012#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8013#[cfg_attr(
8014 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8015 assert_instr(nop)
8016)]
8017#[cfg_attr(
8018 not(target_arch = "arm"),
8019 stable(feature = "neon_intrinsics", since = "1.59.0")
8020)]
8021#[cfg_attr(
8022 target_arch = "arm",
8023 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8024)]
8025pub fn vcreate_s64(a: u64) -> int64x1_t {
8026 unsafe { transmute(a) }
8027}
8028#[doc = "Insert vector element from another vector element"]
8029#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_u8)"]
8030#[inline]
8031#[cfg(target_endian = "little")]
8032#[target_feature(enable = "neon")]
8033#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8034#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8035#[cfg_attr(
8036 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8037 assert_instr(nop)
8038)]
8039#[cfg_attr(
8040 not(target_arch = "arm"),
8041 stable(feature = "neon_intrinsics", since = "1.59.0")
8042)]
8043#[cfg_attr(
8044 target_arch = "arm",
8045 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8046)]
8047pub fn vcreate_u8(a: u64) -> uint8x8_t {
8048 unsafe { transmute(a) }
8049}
8050#[doc = "Insert vector element from another vector element"]
8051#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_u8)"]
8052#[inline]
8053#[cfg(target_endian = "big")]
8054#[target_feature(enable = "neon")]
8055#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8056#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8057#[cfg_attr(
8058 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8059 assert_instr(nop)
8060)]
8061#[cfg_attr(
8062 not(target_arch = "arm"),
8063 stable(feature = "neon_intrinsics", since = "1.59.0")
8064)]
8065#[cfg_attr(
8066 target_arch = "arm",
8067 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8068)]
8069pub fn vcreate_u8(a: u64) -> uint8x8_t {
8070 unsafe {
8071 let ret_val: uint8x8_t = transmute(a);
8072 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
8073 }
8074}
8075#[doc = "Insert vector element from another vector element"]
8076#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_u16)"]
8077#[inline]
8078#[cfg(target_endian = "little")]
8079#[target_feature(enable = "neon")]
8080#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8081#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8082#[cfg_attr(
8083 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8084 assert_instr(nop)
8085)]
8086#[cfg_attr(
8087 not(target_arch = "arm"),
8088 stable(feature = "neon_intrinsics", since = "1.59.0")
8089)]
8090#[cfg_attr(
8091 target_arch = "arm",
8092 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8093)]
8094pub fn vcreate_u16(a: u64) -> uint16x4_t {
8095 unsafe { transmute(a) }
8096}
8097#[doc = "Insert vector element from another vector element"]
8098#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_u16)"]
8099#[inline]
8100#[cfg(target_endian = "big")]
8101#[target_feature(enable = "neon")]
8102#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8103#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8104#[cfg_attr(
8105 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8106 assert_instr(nop)
8107)]
8108#[cfg_attr(
8109 not(target_arch = "arm"),
8110 stable(feature = "neon_intrinsics", since = "1.59.0")
8111)]
8112#[cfg_attr(
8113 target_arch = "arm",
8114 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8115)]
8116pub fn vcreate_u16(a: u64) -> uint16x4_t {
8117 unsafe {
8118 let ret_val: uint16x4_t = transmute(a);
8119 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
8120 }
8121}
8122#[doc = "Insert vector element from another vector element"]
8123#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_u32)"]
8124#[inline]
8125#[cfg(target_endian = "little")]
8126#[target_feature(enable = "neon")]
8127#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8128#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8129#[cfg_attr(
8130 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8131 assert_instr(nop)
8132)]
8133#[cfg_attr(
8134 not(target_arch = "arm"),
8135 stable(feature = "neon_intrinsics", since = "1.59.0")
8136)]
8137#[cfg_attr(
8138 target_arch = "arm",
8139 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8140)]
8141pub fn vcreate_u32(a: u64) -> uint32x2_t {
8142 unsafe { transmute(a) }
8143}
8144#[doc = "Insert vector element from another vector element"]
8145#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_u32)"]
8146#[inline]
8147#[cfg(target_endian = "big")]
8148#[target_feature(enable = "neon")]
8149#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8150#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8151#[cfg_attr(
8152 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8153 assert_instr(nop)
8154)]
8155#[cfg_attr(
8156 not(target_arch = "arm"),
8157 stable(feature = "neon_intrinsics", since = "1.59.0")
8158)]
8159#[cfg_attr(
8160 target_arch = "arm",
8161 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8162)]
8163pub fn vcreate_u32(a: u64) -> uint32x2_t {
8164 unsafe {
8165 let ret_val: uint32x2_t = transmute(a);
8166 simd_shuffle!(ret_val, ret_val, [1, 0])
8167 }
8168}
8169#[doc = "Insert vector element from another vector element"]
8170#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_u64)"]
8171#[inline]
8172#[target_feature(enable = "neon")]
8173#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8174#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8175#[cfg_attr(
8176 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8177 assert_instr(nop)
8178)]
8179#[cfg_attr(
8180 not(target_arch = "arm"),
8181 stable(feature = "neon_intrinsics", since = "1.59.0")
8182)]
8183#[cfg_attr(
8184 target_arch = "arm",
8185 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8186)]
8187pub fn vcreate_u64(a: u64) -> uint64x1_t {
8188 unsafe { transmute(a) }
8189}
8190#[doc = "Insert vector element from another vector element"]
8191#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_p8)"]
8192#[inline]
8193#[cfg(target_endian = "little")]
8194#[target_feature(enable = "neon")]
8195#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8196#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8197#[cfg_attr(
8198 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8199 assert_instr(nop)
8200)]
8201#[cfg_attr(
8202 not(target_arch = "arm"),
8203 stable(feature = "neon_intrinsics", since = "1.59.0")
8204)]
8205#[cfg_attr(
8206 target_arch = "arm",
8207 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8208)]
8209pub fn vcreate_p8(a: u64) -> poly8x8_t {
8210 unsafe { transmute(a) }
8211}
8212#[doc = "Insert vector element from another vector element"]
8213#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_p8)"]
8214#[inline]
8215#[cfg(target_endian = "big")]
8216#[target_feature(enable = "neon")]
8217#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8218#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8219#[cfg_attr(
8220 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8221 assert_instr(nop)
8222)]
8223#[cfg_attr(
8224 not(target_arch = "arm"),
8225 stable(feature = "neon_intrinsics", since = "1.59.0")
8226)]
8227#[cfg_attr(
8228 target_arch = "arm",
8229 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8230)]
8231pub fn vcreate_p8(a: u64) -> poly8x8_t {
8232 unsafe {
8233 let ret_val: poly8x8_t = transmute(a);
8234 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
8235 }
8236}
8237#[doc = "Insert vector element from another vector element"]
8238#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_p16)"]
8239#[inline]
8240#[cfg(target_endian = "little")]
8241#[target_feature(enable = "neon")]
8242#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8243#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8244#[cfg_attr(
8245 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8246 assert_instr(nop)
8247)]
8248#[cfg_attr(
8249 not(target_arch = "arm"),
8250 stable(feature = "neon_intrinsics", since = "1.59.0")
8251)]
8252#[cfg_attr(
8253 target_arch = "arm",
8254 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8255)]
8256pub fn vcreate_p16(a: u64) -> poly16x4_t {
8257 unsafe { transmute(a) }
8258}
8259#[doc = "Insert vector element from another vector element"]
8260#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_p16)"]
8261#[inline]
8262#[cfg(target_endian = "big")]
8263#[target_feature(enable = "neon")]
8264#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8265#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8266#[cfg_attr(
8267 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8268 assert_instr(nop)
8269)]
8270#[cfg_attr(
8271 not(target_arch = "arm"),
8272 stable(feature = "neon_intrinsics", since = "1.59.0")
8273)]
8274#[cfg_attr(
8275 target_arch = "arm",
8276 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8277)]
8278pub fn vcreate_p16(a: u64) -> poly16x4_t {
8279 unsafe {
8280 let ret_val: poly16x4_t = transmute(a);
8281 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
8282 }
8283}
8284#[doc = "Insert vector element from another vector element"]
8285#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_p64)"]
8286#[inline]
8287#[target_feature(enable = "neon,aes")]
8288#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
8289#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8290#[cfg_attr(
8291 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8292 assert_instr(nop)
8293)]
8294#[cfg_attr(
8295 not(target_arch = "arm"),
8296 stable(feature = "neon_intrinsics", since = "1.59.0")
8297)]
8298#[cfg_attr(
8299 target_arch = "arm",
8300 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8301)]
8302pub fn vcreate_p64(a: u64) -> poly64x1_t {
8303 unsafe { transmute(a) }
8304}
8305#[doc = "Floating-point convert to lower precision narrow"]
8306#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_f16_f32)"]
8307#[inline]
8308#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8309# [cfg_attr (all (test , target_arch = "arm") , assert_instr (vcvt . f16 . f32))]
8310#[cfg_attr(
8311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8312 assert_instr(fcvtn)
8313)]
8314#[target_feature(enable = "neon,fp16")]
8315#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
8316#[cfg(not(target_arch = "arm64ec"))]
8317pub fn vcvt_f16_f32(a: float32x4_t) -> float16x4_t {
8318 unsafe { simd_cast(a) }
8319}
8320#[doc = "Fixed-point convert to floating-point"]
8321#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_f16_s16)"]
8322#[inline]
8323#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8324#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
8325#[cfg_attr(
8326 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8327 assert_instr(scvtf)
8328)]
8329#[target_feature(enable = "neon,fp16")]
8330#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
8331#[cfg(not(target_arch = "arm64ec"))]
8332pub fn vcvt_f16_s16(a: int16x4_t) -> float16x4_t {
8333 unsafe { simd_cast(a) }
8334}
8335#[doc = "Fixed-point convert to floating-point"]
8336#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_f16_s16)"]
8337#[inline]
8338#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8339#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
8340#[cfg_attr(
8341 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8342 assert_instr(scvtf)
8343)]
8344#[target_feature(enable = "neon,fp16")]
8345#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
8346#[cfg(not(target_arch = "arm64ec"))]
8347pub fn vcvtq_f16_s16(a: int16x8_t) -> float16x8_t {
8348 unsafe { simd_cast(a) }
8349}
8350#[doc = "Fixed-point convert to floating-point"]
8351#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_f16_u16)"]
8352#[inline]
8353#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8354#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
8355#[cfg_attr(
8356 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8357 assert_instr(ucvtf)
8358)]
8359#[target_feature(enable = "neon,fp16")]
8360#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
8361#[cfg(not(target_arch = "arm64ec"))]
8362pub fn vcvt_f16_u16(a: uint16x4_t) -> float16x4_t {
8363 unsafe { simd_cast(a) }
8364}
8365#[doc = "Fixed-point convert to floating-point"]
8366#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_f16_u16)"]
8367#[inline]
8368#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8369#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
8370#[cfg_attr(
8371 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8372 assert_instr(ucvtf)
8373)]
8374#[target_feature(enable = "neon,fp16")]
8375#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
8376#[cfg(not(target_arch = "arm64ec"))]
8377pub fn vcvtq_f16_u16(a: uint16x8_t) -> float16x8_t {
8378 unsafe { simd_cast(a) }
8379}
8380#[doc = "Floating-point convert to higher precision long"]
8381#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_f32_f16)"]
8382#[inline]
8383#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8384#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
8385#[cfg_attr(
8386 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8387 assert_instr(fcvtl)
8388)]
8389#[target_feature(enable = "neon,fp16")]
8390#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
8391#[cfg(not(target_arch = "arm64ec"))]
8392pub fn vcvt_f32_f16(a: float16x4_t) -> float32x4_t {
8393 unsafe { simd_cast(a) }
8394}
8395#[doc = "Fixed-point convert to floating-point"]
8396#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_f32_s32)"]
8397#[inline]
8398#[target_feature(enable = "neon")]
8399#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8400#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
8401#[cfg_attr(
8402 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8403 assert_instr(scvtf)
8404)]
8405#[cfg_attr(
8406 not(target_arch = "arm"),
8407 stable(feature = "neon_intrinsics", since = "1.59.0")
8408)]
8409#[cfg_attr(
8410 target_arch = "arm",
8411 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8412)]
8413pub fn vcvt_f32_s32(a: int32x2_t) -> float32x2_t {
8414 unsafe { simd_cast(a) }
8415}
8416#[doc = "Fixed-point convert to floating-point"]
8417#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_f32_s32)"]
8418#[inline]
8419#[target_feature(enable = "neon")]
8420#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8421#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
8422#[cfg_attr(
8423 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8424 assert_instr(scvtf)
8425)]
8426#[cfg_attr(
8427 not(target_arch = "arm"),
8428 stable(feature = "neon_intrinsics", since = "1.59.0")
8429)]
8430#[cfg_attr(
8431 target_arch = "arm",
8432 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8433)]
8434pub fn vcvtq_f32_s32(a: int32x4_t) -> float32x4_t {
8435 unsafe { simd_cast(a) }
8436}
8437#[doc = "Fixed-point convert to floating-point"]
8438#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_f32_u32)"]
8439#[inline]
8440#[target_feature(enable = "neon")]
8441#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8442#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
8443#[cfg_attr(
8444 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8445 assert_instr(ucvtf)
8446)]
8447#[cfg_attr(
8448 not(target_arch = "arm"),
8449 stable(feature = "neon_intrinsics", since = "1.59.0")
8450)]
8451#[cfg_attr(
8452 target_arch = "arm",
8453 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8454)]
8455pub fn vcvt_f32_u32(a: uint32x2_t) -> float32x2_t {
8456 unsafe { simd_cast(a) }
8457}
8458#[doc = "Fixed-point convert to floating-point"]
8459#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_f32_u32)"]
8460#[inline]
8461#[target_feature(enable = "neon")]
8462#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8463#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
8464#[cfg_attr(
8465 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8466 assert_instr(ucvtf)
8467)]
8468#[cfg_attr(
8469 not(target_arch = "arm"),
8470 stable(feature = "neon_intrinsics", since = "1.59.0")
8471)]
8472#[cfg_attr(
8473 target_arch = "arm",
8474 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8475)]
8476pub fn vcvtq_f32_u32(a: uint32x4_t) -> float32x4_t {
8477 unsafe { simd_cast(a) }
8478}
8479#[doc = "Fixed-point convert to floating-point"]
8480#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_f16_s16)"]
8481#[inline]
8482#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
8483#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcvt", N = 1))]
8484#[cfg_attr(
8485 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8486 assert_instr(scvtf, N = 1)
8487)]
8488#[rustc_legacy_const_generics(1)]
8489#[target_feature(enable = "neon,fp16")]
8490#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
8491#[cfg(not(target_arch = "arm64ec"))]
8492pub fn vcvt_n_f16_s16<const N: i32>(a: int16x4_t) -> float16x4_t {
8493 static_assert!(N >= 1 && N <= 16);
8494 unsafe extern "unadjusted" {
8495 #[cfg_attr(
8496 target_arch = "arm",
8497 link_name = "llvm.arm.neon.vcvtfxs2fp.v4f16.v4i16"
8498 )]
8499 #[cfg_attr(
8500 any(target_arch = "aarch64", target_arch = "arm64ec"),
8501 link_name = "llvm.aarch64.neon.vcvtfxs2fp.v4f16.v4i16"
8502 )]
8503 fn _vcvt_n_f16_s16(a: int16x4_t, n: i32) -> float16x4_t;
8504 }
8505 unsafe { _vcvt_n_f16_s16(a, N) }
8506}
8507#[doc = "Fixed-point convert to floating-point"]
8508#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_f16_s16)"]
8509#[inline]
8510#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
8511#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcvt", N = 1))]
8512#[cfg_attr(
8513 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8514 assert_instr(scvtf, N = 1)
8515)]
8516#[rustc_legacy_const_generics(1)]
8517#[target_feature(enable = "neon,fp16")]
8518#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
8519#[cfg(not(target_arch = "arm64ec"))]
8520pub fn vcvtq_n_f16_s16<const N: i32>(a: int16x8_t) -> float16x8_t {
8521 static_assert!(N >= 1 && N <= 16);
8522 unsafe extern "unadjusted" {
8523 #[cfg_attr(
8524 target_arch = "arm",
8525 link_name = "llvm.arm.neon.vcvtfxs2fp.v8f16.v8i16"
8526 )]
8527 #[cfg_attr(
8528 any(target_arch = "aarch64", target_arch = "arm64ec"),
8529 link_name = "llvm.aarch64.neon.vcvtfxs2fp.v8f16.v8i16"
8530 )]
8531 fn _vcvtq_n_f16_s16(a: int16x8_t, n: i32) -> float16x8_t;
8532 }
8533 unsafe { _vcvtq_n_f16_s16(a, N) }
8534}
8535#[doc = "Fixed-point convert to floating-point"]
8536#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_f16_u16)"]
8537#[inline]
8538#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
8539#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcvt", N = 1))]
8540#[cfg_attr(
8541 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8542 assert_instr(ucvtf, N = 1)
8543)]
8544#[rustc_legacy_const_generics(1)]
8545#[target_feature(enable = "neon,fp16")]
8546#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
8547#[cfg(not(target_arch = "arm64ec"))]
8548pub fn vcvt_n_f16_u16<const N: i32>(a: uint16x4_t) -> float16x4_t {
8549 static_assert!(N >= 1 && N <= 16);
8550 unsafe extern "unadjusted" {
8551 #[cfg_attr(
8552 target_arch = "arm",
8553 link_name = "llvm.arm.neon.vcvtfxu2fp.v4f16.v4i16"
8554 )]
8555 #[cfg_attr(
8556 any(target_arch = "aarch64", target_arch = "arm64ec"),
8557 link_name = "llvm.aarch64.neon.vcvtfxu2fp.v4f16.v4i16"
8558 )]
8559 fn _vcvt_n_f16_u16(a: uint16x4_t, n: i32) -> float16x4_t;
8560 }
8561 unsafe { _vcvt_n_f16_u16(a, N) }
8562}
8563#[doc = "Fixed-point convert to floating-point"]
8564#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_f16_u16)"]
8565#[inline]
8566#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
8567#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcvt", N = 1))]
8568#[cfg_attr(
8569 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8570 assert_instr(ucvtf, N = 1)
8571)]
8572#[rustc_legacy_const_generics(1)]
8573#[target_feature(enable = "neon,fp16")]
8574#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
8575#[cfg(not(target_arch = "arm64ec"))]
8576pub fn vcvtq_n_f16_u16<const N: i32>(a: uint16x8_t) -> float16x8_t {
8577 static_assert!(N >= 1 && N <= 16);
8578 unsafe extern "unadjusted" {
8579 #[cfg_attr(
8580 target_arch = "arm",
8581 link_name = "llvm.arm.neon.vcvtfxu2fp.v8f16.v8i16"
8582 )]
8583 #[cfg_attr(
8584 any(target_arch = "aarch64", target_arch = "arm64ec"),
8585 link_name = "llvm.aarch64.neon.vcvtfxu2fp.v8f16.v8i16"
8586 )]
8587 fn _vcvtq_n_f16_u16(a: uint16x8_t, n: i32) -> float16x8_t;
8588 }
8589 unsafe { _vcvtq_n_f16_u16(a, N) }
8590}
8591#[doc = "Fixed-point convert to floating-point"]
8592#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_f32_s32)"]
8593#[inline]
8594#[cfg(target_arch = "arm")]
8595#[target_feature(enable = "neon,v7")]
8596#[cfg_attr(test, assert_instr(vcvt, N = 2))]
8597#[rustc_legacy_const_generics(1)]
8598#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
8599pub fn vcvt_n_f32_s32<const N: i32>(a: int32x2_t) -> float32x2_t {
8600 static_assert!(N >= 1 && N <= 32);
8601 unsafe extern "unadjusted" {
8602 #[cfg_attr(
8603 target_arch = "arm",
8604 link_name = "llvm.arm.neon.vcvtfxs2fp.v2f32.v2i32"
8605 )]
8606 fn _vcvt_n_f32_s32(a: int32x2_t, n: i32) -> float32x2_t;
8607 }
8608 unsafe { _vcvt_n_f32_s32(a, N) }
8609}
8610#[doc = "Fixed-point convert to floating-point"]
8611#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_f32_s32)"]
8612#[inline]
8613#[cfg(target_arch = "arm")]
8614#[target_feature(enable = "neon,v7")]
8615#[cfg_attr(test, assert_instr(vcvt, N = 2))]
8616#[rustc_legacy_const_generics(1)]
8617#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
8618pub fn vcvtq_n_f32_s32<const N: i32>(a: int32x4_t) -> float32x4_t {
8619 static_assert!(N >= 1 && N <= 32);
8620 unsafe extern "unadjusted" {
8621 #[cfg_attr(
8622 target_arch = "arm",
8623 link_name = "llvm.arm.neon.vcvtfxs2fp.v4f32.v4i32"
8624 )]
8625 fn _vcvtq_n_f32_s32(a: int32x4_t, n: i32) -> float32x4_t;
8626 }
8627 unsafe { _vcvtq_n_f32_s32(a, N) }
8628}
8629#[doc = "Fixed-point convert to floating-point"]
8630#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_f32_s32)"]
8631#[inline]
8632#[target_feature(enable = "neon")]
8633#[cfg(not(target_arch = "arm"))]
8634#[cfg_attr(test, assert_instr(scvtf, N = 2))]
8635#[rustc_legacy_const_generics(1)]
8636#[stable(feature = "neon_intrinsics", since = "1.59.0")]
8637pub fn vcvt_n_f32_s32<const N: i32>(a: int32x2_t) -> float32x2_t {
8638 static_assert!(N >= 1 && N <= 32);
8639 unsafe extern "unadjusted" {
8640 #[cfg_attr(
8641 any(target_arch = "aarch64", target_arch = "arm64ec"),
8642 link_name = "llvm.aarch64.neon.vcvtfxs2fp.v2f32.v2i32"
8643 )]
8644 fn _vcvt_n_f32_s32(a: int32x2_t, n: i32) -> float32x2_t;
8645 }
8646 unsafe { _vcvt_n_f32_s32(a, N) }
8647}
8648#[doc = "Fixed-point convert to floating-point"]
8649#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_f32_s32)"]
8650#[inline]
8651#[target_feature(enable = "neon")]
8652#[cfg(not(target_arch = "arm"))]
8653#[cfg_attr(test, assert_instr(scvtf, N = 2))]
8654#[rustc_legacy_const_generics(1)]
8655#[stable(feature = "neon_intrinsics", since = "1.59.0")]
8656pub fn vcvtq_n_f32_s32<const N: i32>(a: int32x4_t) -> float32x4_t {
8657 static_assert!(N >= 1 && N <= 32);
8658 unsafe extern "unadjusted" {
8659 #[cfg_attr(
8660 any(target_arch = "aarch64", target_arch = "arm64ec"),
8661 link_name = "llvm.aarch64.neon.vcvtfxs2fp.v4f32.v4i32"
8662 )]
8663 fn _vcvtq_n_f32_s32(a: int32x4_t, n: i32) -> float32x4_t;
8664 }
8665 unsafe { _vcvtq_n_f32_s32(a, N) }
8666}
8667#[doc = "Fixed-point convert to floating-point"]
8668#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_f32_u32)"]
8669#[inline]
8670#[cfg(target_arch = "arm")]
8671#[target_feature(enable = "neon,v7")]
8672#[cfg_attr(test, assert_instr(vcvt, N = 2))]
8673#[rustc_legacy_const_generics(1)]
8674#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
8675pub fn vcvt_n_f32_u32<const N: i32>(a: uint32x2_t) -> float32x2_t {
8676 static_assert!(N >= 1 && N <= 32);
8677 unsafe extern "unadjusted" {
8678 #[cfg_attr(
8679 target_arch = "arm",
8680 link_name = "llvm.arm.neon.vcvtfxu2fp.v2f32.v2i32"
8681 )]
8682 fn _vcvt_n_f32_u32(a: uint32x2_t, n: i32) -> float32x2_t;
8683 }
8684 unsafe { _vcvt_n_f32_u32(a, N) }
8685}
8686#[doc = "Fixed-point convert to floating-point"]
8687#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_f32_u32)"]
8688#[inline]
8689#[cfg(target_arch = "arm")]
8690#[target_feature(enable = "neon,v7")]
8691#[cfg_attr(test, assert_instr(vcvt, N = 2))]
8692#[rustc_legacy_const_generics(1)]
8693#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
8694pub fn vcvtq_n_f32_u32<const N: i32>(a: uint32x4_t) -> float32x4_t {
8695 static_assert!(N >= 1 && N <= 32);
8696 unsafe extern "unadjusted" {
8697 #[cfg_attr(
8698 target_arch = "arm",
8699 link_name = "llvm.arm.neon.vcvtfxu2fp.v4f32.v4i32"
8700 )]
8701 fn _vcvtq_n_f32_u32(a: uint32x4_t, n: i32) -> float32x4_t;
8702 }
8703 unsafe { _vcvtq_n_f32_u32(a, N) }
8704}
8705#[doc = "Fixed-point convert to floating-point"]
8706#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_f32_u32)"]
8707#[inline]
8708#[target_feature(enable = "neon")]
8709#[cfg(not(target_arch = "arm"))]
8710#[cfg_attr(test, assert_instr(ucvtf, N = 2))]
8711#[rustc_legacy_const_generics(1)]
8712#[stable(feature = "neon_intrinsics", since = "1.59.0")]
8713pub fn vcvt_n_f32_u32<const N: i32>(a: uint32x2_t) -> float32x2_t {
8714 static_assert!(N >= 1 && N <= 32);
8715 unsafe extern "unadjusted" {
8716 #[cfg_attr(
8717 any(target_arch = "aarch64", target_arch = "arm64ec"),
8718 link_name = "llvm.aarch64.neon.vcvtfxu2fp.v2f32.v2i32"
8719 )]
8720 fn _vcvt_n_f32_u32(a: uint32x2_t, n: i32) -> float32x2_t;
8721 }
8722 unsafe { _vcvt_n_f32_u32(a, N) }
8723}
8724#[doc = "Fixed-point convert to floating-point"]
8725#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_f32_u32)"]
8726#[inline]
8727#[target_feature(enable = "neon")]
8728#[cfg(not(target_arch = "arm"))]
8729#[cfg_attr(test, assert_instr(ucvtf, N = 2))]
8730#[rustc_legacy_const_generics(1)]
8731#[stable(feature = "neon_intrinsics", since = "1.59.0")]
8732pub fn vcvtq_n_f32_u32<const N: i32>(a: uint32x4_t) -> float32x4_t {
8733 static_assert!(N >= 1 && N <= 32);
8734 unsafe extern "unadjusted" {
8735 #[cfg_attr(
8736 any(target_arch = "aarch64", target_arch = "arm64ec"),
8737 link_name = "llvm.aarch64.neon.vcvtfxu2fp.v4f32.v4i32"
8738 )]
8739 fn _vcvtq_n_f32_u32(a: uint32x4_t, n: i32) -> float32x4_t;
8740 }
8741 unsafe { _vcvtq_n_f32_u32(a, N) }
8742}
8743#[doc = "Floating-point convert to signed fixed-point"]
8744#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_s16_f16)"]
8745#[inline]
8746#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
8747#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcvt", N = 1))]
8748#[cfg_attr(
8749 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8750 assert_instr(fcvtzs, N = 1)
8751)]
8752#[rustc_legacy_const_generics(1)]
8753#[target_feature(enable = "neon,fp16")]
8754#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
8755#[cfg(not(target_arch = "arm64ec"))]
8756pub fn vcvt_n_s16_f16<const N: i32>(a: float16x4_t) -> int16x4_t {
8757 static_assert!(N >= 1 && N <= 16);
8758 unsafe extern "unadjusted" {
8759 #[cfg_attr(
8760 target_arch = "arm",
8761 link_name = "llvm.arm.neon.vcvtfp2fxs.v4i16.v4f16"
8762 )]
8763 #[cfg_attr(
8764 any(target_arch = "aarch64", target_arch = "arm64ec"),
8765 link_name = "llvm.aarch64.neon.vcvtfp2fxs.v4i16.v4f16"
8766 )]
8767 fn _vcvt_n_s16_f16(a: float16x4_t, n: i32) -> int16x4_t;
8768 }
8769 unsafe { _vcvt_n_s16_f16(a, N) }
8770}
8771#[doc = "Floating-point convert to signed fixed-point"]
8772#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_s16_f16)"]
8773#[inline]
8774#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
8775#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcvt", N = 1))]
8776#[cfg_attr(
8777 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8778 assert_instr(fcvtzs, N = 1)
8779)]
8780#[rustc_legacy_const_generics(1)]
8781#[target_feature(enable = "neon,fp16")]
8782#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
8783#[cfg(not(target_arch = "arm64ec"))]
8784pub fn vcvtq_n_s16_f16<const N: i32>(a: float16x8_t) -> int16x8_t {
8785 static_assert!(N >= 1 && N <= 16);
8786 unsafe extern "unadjusted" {
8787 #[cfg_attr(
8788 target_arch = "arm",
8789 link_name = "llvm.arm.neon.vcvtfp2fxs.v8i16.v8f16"
8790 )]
8791 #[cfg_attr(
8792 any(target_arch = "aarch64", target_arch = "arm64ec"),
8793 link_name = "llvm.aarch64.neon.vcvtfp2fxs.v8i16.v8f16"
8794 )]
8795 fn _vcvtq_n_s16_f16(a: float16x8_t, n: i32) -> int16x8_t;
8796 }
8797 unsafe { _vcvtq_n_s16_f16(a, N) }
8798}
8799#[doc = "Floating-point convert to fixed-point, rounding toward zero"]
8800#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_s32_f32)"]
8801#[inline]
8802#[cfg(target_arch = "arm")]
8803#[target_feature(enable = "neon,v7")]
8804#[cfg_attr(test, assert_instr(vcvt, N = 2))]
8805#[rustc_legacy_const_generics(1)]
8806#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
8807pub fn vcvt_n_s32_f32<const N: i32>(a: float32x2_t) -> int32x2_t {
8808 static_assert!(N >= 1 && N <= 32);
8809 unsafe extern "unadjusted" {
8810 #[cfg_attr(
8811 target_arch = "arm",
8812 link_name = "llvm.arm.neon.vcvtfp2fxs.v2i32.v2f32"
8813 )]
8814 fn _vcvt_n_s32_f32(a: float32x2_t, n: i32) -> int32x2_t;
8815 }
8816 unsafe { _vcvt_n_s32_f32(a, N) }
8817}
8818#[doc = "Floating-point convert to fixed-point, rounding toward zero"]
8819#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_s32_f32)"]
8820#[inline]
8821#[cfg(target_arch = "arm")]
8822#[target_feature(enable = "neon,v7")]
8823#[cfg_attr(test, assert_instr(vcvt, N = 2))]
8824#[rustc_legacy_const_generics(1)]
8825#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
8826pub fn vcvtq_n_s32_f32<const N: i32>(a: float32x4_t) -> int32x4_t {
8827 static_assert!(N >= 1 && N <= 32);
8828 unsafe extern "unadjusted" {
8829 #[cfg_attr(
8830 target_arch = "arm",
8831 link_name = "llvm.arm.neon.vcvtfp2fxs.v4i32.v4f32"
8832 )]
8833 fn _vcvtq_n_s32_f32(a: float32x4_t, n: i32) -> int32x4_t;
8834 }
8835 unsafe { _vcvtq_n_s32_f32(a, N) }
8836}
8837#[doc = "Floating-point convert to fixed-point, rounding toward zero"]
8838#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_s32_f32)"]
8839#[inline]
8840#[target_feature(enable = "neon")]
8841#[cfg(not(target_arch = "arm"))]
8842#[cfg_attr(test, assert_instr(fcvtzs, N = 2))]
8843#[rustc_legacy_const_generics(1)]
8844#[stable(feature = "neon_intrinsics", since = "1.59.0")]
8845pub fn vcvt_n_s32_f32<const N: i32>(a: float32x2_t) -> int32x2_t {
8846 static_assert!(N >= 1 && N <= 32);
8847 unsafe extern "unadjusted" {
8848 #[cfg_attr(
8849 any(target_arch = "aarch64", target_arch = "arm64ec"),
8850 link_name = "llvm.aarch64.neon.vcvtfp2fxs.v2i32.v2f32"
8851 )]
8852 fn _vcvt_n_s32_f32(a: float32x2_t, n: i32) -> int32x2_t;
8853 }
8854 unsafe { _vcvt_n_s32_f32(a, N) }
8855}
8856#[doc = "Floating-point convert to fixed-point, rounding toward zero"]
8857#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_s32_f32)"]
8858#[inline]
8859#[target_feature(enable = "neon")]
8860#[cfg(not(target_arch = "arm"))]
8861#[cfg_attr(test, assert_instr(fcvtzs, N = 2))]
8862#[rustc_legacy_const_generics(1)]
8863#[stable(feature = "neon_intrinsics", since = "1.59.0")]
8864pub fn vcvtq_n_s32_f32<const N: i32>(a: float32x4_t) -> int32x4_t {
8865 static_assert!(N >= 1 && N <= 32);
8866 unsafe extern "unadjusted" {
8867 #[cfg_attr(
8868 any(target_arch = "aarch64", target_arch = "arm64ec"),
8869 link_name = "llvm.aarch64.neon.vcvtfp2fxs.v4i32.v4f32"
8870 )]
8871 fn _vcvtq_n_s32_f32(a: float32x4_t, n: i32) -> int32x4_t;
8872 }
8873 unsafe { _vcvtq_n_s32_f32(a, N) }
8874}
8875#[doc = "Fixed-point convert to unsigned fixed-point, rounding toward zero"]
8876#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_u16_f16)"]
8877#[inline]
8878#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
8879#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcvt", N = 1))]
8880#[cfg_attr(
8881 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8882 assert_instr(fcvtzu, N = 1)
8883)]
8884#[rustc_legacy_const_generics(1)]
8885#[target_feature(enable = "neon,fp16")]
8886#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
8887#[cfg(not(target_arch = "arm64ec"))]
8888pub fn vcvt_n_u16_f16<const N: i32>(a: float16x4_t) -> uint16x4_t {
8889 static_assert!(N >= 1 && N <= 16);
8890 unsafe extern "unadjusted" {
8891 #[cfg_attr(
8892 target_arch = "arm",
8893 link_name = "llvm.arm.neon.vcvtfp2fxu.v4i16.v4f16"
8894 )]
8895 #[cfg_attr(
8896 any(target_arch = "aarch64", target_arch = "arm64ec"),
8897 link_name = "llvm.aarch64.neon.vcvtfp2fxu.v4i16.v4f16"
8898 )]
8899 fn _vcvt_n_u16_f16(a: float16x4_t, n: i32) -> uint16x4_t;
8900 }
8901 unsafe { _vcvt_n_u16_f16(a, N) }
8902}
8903#[doc = "Fixed-point convert to unsigned fixed-point, rounding toward zero"]
8904#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_u16_f16)"]
8905#[inline]
8906#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
8907#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcvt", N = 1))]
8908#[cfg_attr(
8909 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8910 assert_instr(fcvtzu, N = 1)
8911)]
8912#[rustc_legacy_const_generics(1)]
8913#[target_feature(enable = "neon,fp16")]
8914#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
8915#[cfg(not(target_arch = "arm64ec"))]
8916pub fn vcvtq_n_u16_f16<const N: i32>(a: float16x8_t) -> uint16x8_t {
8917 static_assert!(N >= 1 && N <= 16);
8918 unsafe extern "unadjusted" {
8919 #[cfg_attr(
8920 target_arch = "arm",
8921 link_name = "llvm.arm.neon.vcvtfp2fxu.v8i16.v8f16"
8922 )]
8923 #[cfg_attr(
8924 any(target_arch = "aarch64", target_arch = "arm64ec"),
8925 link_name = "llvm.aarch64.neon.vcvtfp2fxu.v8i16.v8f16"
8926 )]
8927 fn _vcvtq_n_u16_f16(a: float16x8_t, n: i32) -> uint16x8_t;
8928 }
8929 unsafe { _vcvtq_n_u16_f16(a, N) }
8930}
8931#[doc = "Floating-point convert to fixed-point, rounding toward zero"]
8932#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_u32_f32)"]
8933#[inline]
8934#[cfg(target_arch = "arm")]
8935#[target_feature(enable = "neon,v7")]
8936#[cfg_attr(test, assert_instr(vcvt, N = 2))]
8937#[rustc_legacy_const_generics(1)]
8938#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
8939pub fn vcvt_n_u32_f32<const N: i32>(a: float32x2_t) -> uint32x2_t {
8940 static_assert!(N >= 1 && N <= 32);
8941 unsafe extern "unadjusted" {
8942 #[cfg_attr(
8943 target_arch = "arm",
8944 link_name = "llvm.arm.neon.vcvtfp2fxu.v2i32.v2f32"
8945 )]
8946 fn _vcvt_n_u32_f32(a: float32x2_t, n: i32) -> uint32x2_t;
8947 }
8948 unsafe { _vcvt_n_u32_f32(a, N) }
8949}
8950#[doc = "Floating-point convert to fixed-point, rounding toward zero"]
8951#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_u32_f32)"]
8952#[inline]
8953#[cfg(target_arch = "arm")]
8954#[target_feature(enable = "neon,v7")]
8955#[cfg_attr(test, assert_instr(vcvt, N = 2))]
8956#[rustc_legacy_const_generics(1)]
8957#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
8958pub fn vcvtq_n_u32_f32<const N: i32>(a: float32x4_t) -> uint32x4_t {
8959 static_assert!(N >= 1 && N <= 32);
8960 unsafe extern "unadjusted" {
8961 #[cfg_attr(
8962 target_arch = "arm",
8963 link_name = "llvm.arm.neon.vcvtfp2fxu.v4i32.v4f32"
8964 )]
8965 fn _vcvtq_n_u32_f32(a: float32x4_t, n: i32) -> uint32x4_t;
8966 }
8967 unsafe { _vcvtq_n_u32_f32(a, N) }
8968}
8969#[doc = "Floating-point convert to fixed-point, rounding toward zero"]
8970#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_u32_f32)"]
8971#[inline]
8972#[target_feature(enable = "neon")]
8973#[cfg(not(target_arch = "arm"))]
8974#[cfg_attr(test, assert_instr(fcvtzu, N = 2))]
8975#[rustc_legacy_const_generics(1)]
8976#[stable(feature = "neon_intrinsics", since = "1.59.0")]
8977pub fn vcvt_n_u32_f32<const N: i32>(a: float32x2_t) -> uint32x2_t {
8978 static_assert!(N >= 1 && N <= 32);
8979 unsafe extern "unadjusted" {
8980 #[cfg_attr(
8981 any(target_arch = "aarch64", target_arch = "arm64ec"),
8982 link_name = "llvm.aarch64.neon.vcvtfp2fxu.v2i32.v2f32"
8983 )]
8984 fn _vcvt_n_u32_f32(a: float32x2_t, n: i32) -> uint32x2_t;
8985 }
8986 unsafe { _vcvt_n_u32_f32(a, N) }
8987}
8988#[doc = "Floating-point convert to fixed-point, rounding toward zero"]
8989#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_u32_f32)"]
8990#[inline]
8991#[target_feature(enable = "neon")]
8992#[cfg(not(target_arch = "arm"))]
8993#[cfg_attr(test, assert_instr(fcvtzu, N = 2))]
8994#[rustc_legacy_const_generics(1)]
8995#[stable(feature = "neon_intrinsics", since = "1.59.0")]
8996pub fn vcvtq_n_u32_f32<const N: i32>(a: float32x4_t) -> uint32x4_t {
8997 static_assert!(N >= 1 && N <= 32);
8998 unsafe extern "unadjusted" {
8999 #[cfg_attr(
9000 any(target_arch = "aarch64", target_arch = "arm64ec"),
9001 link_name = "llvm.aarch64.neon.vcvtfp2fxu.v4i32.v4f32"
9002 )]
9003 fn _vcvtq_n_u32_f32(a: float32x4_t, n: i32) -> uint32x4_t;
9004 }
9005 unsafe { _vcvtq_n_u32_f32(a, N) }
9006}
9007#[doc = "Floating-point convert to signed fixed-point, rounding toward zero"]
9008#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_s16_f16)"]
9009#[inline]
9010#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9011#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
9012#[cfg_attr(
9013 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9014 assert_instr(fcvtzs)
9015)]
9016#[target_feature(enable = "neon,fp16")]
9017#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
9018#[cfg(not(target_arch = "arm64ec"))]
9019pub fn vcvt_s16_f16(a: float16x4_t) -> int16x4_t {
9020 unsafe { simd_cast(a) }
9021}
9022#[doc = "Floating-point convert to signed fixed-point, rounding toward zero"]
9023#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_s16_f16)"]
9024#[inline]
9025#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9026#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
9027#[cfg_attr(
9028 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9029 assert_instr(fcvtzs)
9030)]
9031#[target_feature(enable = "neon,fp16")]
9032#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
9033#[cfg(not(target_arch = "arm64ec"))]
9034pub fn vcvtq_s16_f16(a: float16x8_t) -> int16x8_t {
9035 unsafe { simd_cast(a) }
9036}
9037#[doc = "Floating-point convert to signed fixed-point, rounding toward zero"]
9038#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_s32_f32)"]
9039#[inline]
9040#[target_feature(enable = "neon")]
9041#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9042#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
9043#[cfg_attr(
9044 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9045 assert_instr(fcvtzs)
9046)]
9047#[cfg_attr(
9048 not(target_arch = "arm"),
9049 stable(feature = "neon_intrinsics", since = "1.59.0")
9050)]
9051#[cfg_attr(
9052 target_arch = "arm",
9053 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9054)]
9055pub fn vcvt_s32_f32(a: float32x2_t) -> int32x2_t {
9056 unsafe extern "unadjusted" {
9057 #[cfg_attr(target_arch = "arm", link_name = "llvm.fptosi.sat.v2i32.v2f32")]
9058 #[cfg_attr(
9059 any(target_arch = "aarch64", target_arch = "arm64ec"),
9060 link_name = "llvm.fptosi.sat.v2i32.v2f32"
9061 )]
9062 fn _vcvt_s32_f32(a: float32x2_t) -> int32x2_t;
9063 }
9064 unsafe { _vcvt_s32_f32(a) }
9065}
9066#[doc = "Floating-point convert to signed fixed-point, rounding toward zero"]
9067#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_s32_f32)"]
9068#[inline]
9069#[target_feature(enable = "neon")]
9070#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9071#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
9072#[cfg_attr(
9073 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9074 assert_instr(fcvtzs)
9075)]
9076#[cfg_attr(
9077 not(target_arch = "arm"),
9078 stable(feature = "neon_intrinsics", since = "1.59.0")
9079)]
9080#[cfg_attr(
9081 target_arch = "arm",
9082 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9083)]
9084pub fn vcvtq_s32_f32(a: float32x4_t) -> int32x4_t {
9085 unsafe extern "unadjusted" {
9086 #[cfg_attr(target_arch = "arm", link_name = "llvm.fptosi.sat.v4i32.v4f32")]
9087 #[cfg_attr(
9088 any(target_arch = "aarch64", target_arch = "arm64ec"),
9089 link_name = "llvm.fptosi.sat.v4i32.v4f32"
9090 )]
9091 fn _vcvtq_s32_f32(a: float32x4_t) -> int32x4_t;
9092 }
9093 unsafe { _vcvtq_s32_f32(a) }
9094}
9095#[doc = "Floating-point convert to unsigned fixed-point, rounding toward zero"]
9096#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_u16_f16)"]
9097#[inline]
9098#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9099#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
9100#[cfg_attr(
9101 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9102 assert_instr(fcvtzu)
9103)]
9104#[target_feature(enable = "neon,fp16")]
9105#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
9106#[cfg(not(target_arch = "arm64ec"))]
9107pub fn vcvt_u16_f16(a: float16x4_t) -> uint16x4_t {
9108 unsafe { simd_cast(a) }
9109}
9110#[doc = "Floating-point convert to unsigned fixed-point, rounding toward zero"]
9111#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_u16_f16)"]
9112#[inline]
9113#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9114#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
9115#[cfg_attr(
9116 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9117 assert_instr(fcvtzu)
9118)]
9119#[target_feature(enable = "neon,fp16")]
9120#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
9121#[cfg(not(target_arch = "arm64ec"))]
9122pub fn vcvtq_u16_f16(a: float16x8_t) -> uint16x8_t {
9123 unsafe { simd_cast(a) }
9124}
9125#[doc = "Floating-point convert to unsigned fixed-point, rounding toward zero"]
9126#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_u32_f32)"]
9127#[inline]
9128#[target_feature(enable = "neon")]
9129#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9130#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
9131#[cfg_attr(
9132 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9133 assert_instr(fcvtzu)
9134)]
9135#[cfg_attr(
9136 not(target_arch = "arm"),
9137 stable(feature = "neon_intrinsics", since = "1.59.0")
9138)]
9139#[cfg_attr(
9140 target_arch = "arm",
9141 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9142)]
9143pub fn vcvt_u32_f32(a: float32x2_t) -> uint32x2_t {
9144 unsafe extern "unadjusted" {
9145 #[cfg_attr(target_arch = "arm", link_name = "llvm.fptoui.sat.v2i32.v2f32")]
9146 #[cfg_attr(
9147 any(target_arch = "aarch64", target_arch = "arm64ec"),
9148 link_name = "llvm.fptoui.sat.v2i32.v2f32"
9149 )]
9150 fn _vcvt_u32_f32(a: float32x2_t) -> uint32x2_t;
9151 }
9152 unsafe { _vcvt_u32_f32(a) }
9153}
9154#[doc = "Floating-point convert to unsigned fixed-point, rounding toward zero"]
9155#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_u32_f32)"]
9156#[inline]
9157#[target_feature(enable = "neon")]
9158#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9159#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
9160#[cfg_attr(
9161 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9162 assert_instr(fcvtzu)
9163)]
9164#[cfg_attr(
9165 not(target_arch = "arm"),
9166 stable(feature = "neon_intrinsics", since = "1.59.0")
9167)]
9168#[cfg_attr(
9169 target_arch = "arm",
9170 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9171)]
9172pub fn vcvtq_u32_f32(a: float32x4_t) -> uint32x4_t {
9173 unsafe extern "unadjusted" {
9174 #[cfg_attr(target_arch = "arm", link_name = "llvm.fptoui.sat.v4i32.v4f32")]
9175 #[cfg_attr(
9176 any(target_arch = "aarch64", target_arch = "arm64ec"),
9177 link_name = "llvm.fptoui.sat.v4i32.v4f32"
9178 )]
9179 fn _vcvtq_u32_f32(a: float32x4_t) -> uint32x4_t;
9180 }
9181 unsafe { _vcvtq_u32_f32(a) }
9182}
9183#[doc = "Dot product arithmetic (indexed)"]
9184#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdot_lane_s32)"]
9185#[inline]
9186#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9187#[target_feature(enable = "neon,dotprod")]
9188#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsdot, LANE = 0))]
9189#[cfg_attr(
9190 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9191 assert_instr(sdot, LANE = 0)
9192)]
9193#[rustc_legacy_const_generics(3)]
9194#[cfg_attr(
9195 not(target_arch = "arm"),
9196 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9197)]
9198#[cfg_attr(
9199 target_arch = "arm",
9200 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9201)]
9202pub fn vdot_lane_s32<const LANE: i32>(a: int32x2_t, b: int8x8_t, c: int8x8_t) -> int32x2_t {
9203 static_assert_uimm_bits!(LANE, 1);
9204 unsafe {
9205 let c: int32x2_t = transmute(c);
9206 let c: int32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
9207 vdot_s32(a, b, transmute(c))
9208 }
9209}
9210#[doc = "Dot product arithmetic (indexed)"]
9211#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdotq_lane_s32)"]
9212#[inline]
9213#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9214#[target_feature(enable = "neon,dotprod")]
9215#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsdot, LANE = 0))]
9216#[cfg_attr(
9217 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9218 assert_instr(sdot, LANE = 0)
9219)]
9220#[rustc_legacy_const_generics(3)]
9221#[cfg_attr(
9222 not(target_arch = "arm"),
9223 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9224)]
9225#[cfg_attr(
9226 target_arch = "arm",
9227 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9228)]
9229pub fn vdotq_lane_s32<const LANE: i32>(a: int32x4_t, b: int8x16_t, c: int8x8_t) -> int32x4_t {
9230 static_assert_uimm_bits!(LANE, 1);
9231 unsafe {
9232 let c: int32x2_t = transmute(c);
9233 let c: int32x4_t =
9234 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
9235 vdotq_s32(a, b, transmute(c))
9236 }
9237}
9238#[doc = "Dot product arithmetic (indexed)"]
9239#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdot_lane_u32)"]
9240#[inline]
9241#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9242#[target_feature(enable = "neon,dotprod")]
9243#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vudot, LANE = 0))]
9244#[cfg_attr(
9245 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9246 assert_instr(udot, LANE = 0)
9247)]
9248#[rustc_legacy_const_generics(3)]
9249#[cfg_attr(
9250 not(target_arch = "arm"),
9251 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9252)]
9253#[cfg_attr(
9254 target_arch = "arm",
9255 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9256)]
9257pub fn vdot_lane_u32<const LANE: i32>(a: uint32x2_t, b: uint8x8_t, c: uint8x8_t) -> uint32x2_t {
9258 static_assert_uimm_bits!(LANE, 1);
9259 unsafe {
9260 let c: uint32x2_t = transmute(c);
9261 let c: uint32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
9262 vdot_u32(a, b, transmute(c))
9263 }
9264}
9265#[doc = "Dot product arithmetic (indexed)"]
9266#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdotq_lane_u32)"]
9267#[inline]
9268#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9269#[target_feature(enable = "neon,dotprod")]
9270#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vudot, LANE = 0))]
9271#[cfg_attr(
9272 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9273 assert_instr(udot, LANE = 0)
9274)]
9275#[rustc_legacy_const_generics(3)]
9276#[cfg_attr(
9277 not(target_arch = "arm"),
9278 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9279)]
9280#[cfg_attr(
9281 target_arch = "arm",
9282 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9283)]
9284pub fn vdotq_lane_u32<const LANE: i32>(a: uint32x4_t, b: uint8x16_t, c: uint8x8_t) -> uint32x4_t {
9285 static_assert_uimm_bits!(LANE, 1);
9286 unsafe {
9287 let c: uint32x2_t = transmute(c);
9288 let c: uint32x4_t =
9289 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
9290 vdotq_u32(a, b, transmute(c))
9291 }
9292}
9293#[doc = "Dot product arithmetic (vector)"]
9294#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdot_s32)"]
9295#[inline]
9296#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9297#[target_feature(enable = "neon,dotprod")]
9298#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsdot))]
9299#[cfg_attr(
9300 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9301 assert_instr(sdot)
9302)]
9303#[cfg_attr(
9304 not(target_arch = "arm"),
9305 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9306)]
9307#[cfg_attr(
9308 target_arch = "arm",
9309 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9310)]
9311pub fn vdot_s32(a: int32x2_t, b: int8x8_t, c: int8x8_t) -> int32x2_t {
9312 unsafe extern "unadjusted" {
9313 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sdot.v2i32.v8i8")]
9314 #[cfg_attr(
9315 any(target_arch = "aarch64", target_arch = "arm64ec"),
9316 link_name = "llvm.aarch64.neon.sdot.v2i32.v8i8"
9317 )]
9318 fn _vdot_s32(a: int32x2_t, b: int8x8_t, c: int8x8_t) -> int32x2_t;
9319 }
9320 unsafe { _vdot_s32(a, b, c) }
9321}
9322#[doc = "Dot product arithmetic (vector)"]
9323#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdotq_s32)"]
9324#[inline]
9325#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9326#[target_feature(enable = "neon,dotprod")]
9327#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsdot))]
9328#[cfg_attr(
9329 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9330 assert_instr(sdot)
9331)]
9332#[cfg_attr(
9333 not(target_arch = "arm"),
9334 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9335)]
9336#[cfg_attr(
9337 target_arch = "arm",
9338 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9339)]
9340pub fn vdotq_s32(a: int32x4_t, b: int8x16_t, c: int8x16_t) -> int32x4_t {
9341 unsafe extern "unadjusted" {
9342 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sdot.v4i32.v16i8")]
9343 #[cfg_attr(
9344 any(target_arch = "aarch64", target_arch = "arm64ec"),
9345 link_name = "llvm.aarch64.neon.sdot.v4i32.v16i8"
9346 )]
9347 fn _vdotq_s32(a: int32x4_t, b: int8x16_t, c: int8x16_t) -> int32x4_t;
9348 }
9349 unsafe { _vdotq_s32(a, b, c) }
9350}
9351#[doc = "Dot product arithmetic (vector)"]
9352#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdot_u32)"]
9353#[inline]
9354#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9355#[target_feature(enable = "neon,dotprod")]
9356#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vudot))]
9357#[cfg_attr(
9358 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9359 assert_instr(udot)
9360)]
9361#[cfg_attr(
9362 not(target_arch = "arm"),
9363 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9364)]
9365#[cfg_attr(
9366 target_arch = "arm",
9367 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9368)]
9369pub fn vdot_u32(a: uint32x2_t, b: uint8x8_t, c: uint8x8_t) -> uint32x2_t {
9370 unsafe extern "unadjusted" {
9371 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.udot.v2i32.v8i8")]
9372 #[cfg_attr(
9373 any(target_arch = "aarch64", target_arch = "arm64ec"),
9374 link_name = "llvm.aarch64.neon.udot.v2i32.v8i8"
9375 )]
9376 fn _vdot_u32(a: uint32x2_t, b: uint8x8_t, c: uint8x8_t) -> uint32x2_t;
9377 }
9378 unsafe { _vdot_u32(a, b, c) }
9379}
9380#[doc = "Dot product arithmetic (vector)"]
9381#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdotq_u32)"]
9382#[inline]
9383#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9384#[target_feature(enable = "neon,dotprod")]
9385#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vudot))]
9386#[cfg_attr(
9387 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9388 assert_instr(udot)
9389)]
9390#[cfg_attr(
9391 not(target_arch = "arm"),
9392 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9393)]
9394#[cfg_attr(
9395 target_arch = "arm",
9396 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9397)]
9398pub fn vdotq_u32(a: uint32x4_t, b: uint8x16_t, c: uint8x16_t) -> uint32x4_t {
9399 unsafe extern "unadjusted" {
9400 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.udot.v4i32.v16i8")]
9401 #[cfg_attr(
9402 any(target_arch = "aarch64", target_arch = "arm64ec"),
9403 link_name = "llvm.aarch64.neon.udot.v4i32.v16i8"
9404 )]
9405 fn _vdotq_u32(a: uint32x4_t, b: uint8x16_t, c: uint8x16_t) -> uint32x4_t;
9406 }
9407 unsafe { _vdotq_u32(a, b, c) }
9408}
9409#[doc = "Set all vector lanes to the same value"]
9410#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_f16)"]
9411#[inline]
9412#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9413#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
9414#[cfg_attr(
9415 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9416 assert_instr(dup, N = 2)
9417)]
9418#[rustc_legacy_const_generics(1)]
9419#[target_feature(enable = "neon,fp16")]
9420#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
9421#[cfg(not(target_arch = "arm64ec"))]
9422pub fn vdup_lane_f16<const N: i32>(a: float16x4_t) -> float16x4_t {
9423 static_assert_uimm_bits!(N, 2);
9424 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
9425}
9426#[doc = "Set all vector lanes to the same value"]
9427#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_f16)"]
9428#[inline]
9429#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9430#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
9431#[cfg_attr(
9432 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9433 assert_instr(dup, N = 2)
9434)]
9435#[rustc_legacy_const_generics(1)]
9436#[target_feature(enable = "neon,fp16")]
9437#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
9438#[cfg(not(target_arch = "arm64ec"))]
9439pub fn vdupq_lane_f16<const N: i32>(a: float16x4_t) -> float16x8_t {
9440 static_assert_uimm_bits!(N, 2);
9441 unsafe {
9442 simd_shuffle!(
9443 a,
9444 a,
9445 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
9446 )
9447 }
9448}
9449#[doc = "Set all vector lanes to the same value"]
9450#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_f32)"]
9451#[inline]
9452#[target_feature(enable = "neon")]
9453#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9454#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
9455#[cfg_attr(
9456 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9457 assert_instr(dup, N = 1)
9458)]
9459#[rustc_legacy_const_generics(1)]
9460#[cfg_attr(
9461 not(target_arch = "arm"),
9462 stable(feature = "neon_intrinsics", since = "1.59.0")
9463)]
9464#[cfg_attr(
9465 target_arch = "arm",
9466 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9467)]
9468pub fn vdup_lane_f32<const N: i32>(a: float32x2_t) -> float32x2_t {
9469 static_assert_uimm_bits!(N, 1);
9470 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
9471}
9472#[doc = "Set all vector lanes to the same value"]
9473#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_s32)"]
9474#[inline]
9475#[target_feature(enable = "neon")]
9476#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9477#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
9478#[cfg_attr(
9479 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9480 assert_instr(dup, N = 1)
9481)]
9482#[rustc_legacy_const_generics(1)]
9483#[cfg_attr(
9484 not(target_arch = "arm"),
9485 stable(feature = "neon_intrinsics", since = "1.59.0")
9486)]
9487#[cfg_attr(
9488 target_arch = "arm",
9489 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9490)]
9491pub fn vdup_lane_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
9492 static_assert_uimm_bits!(N, 1);
9493 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
9494}
9495#[doc = "Set all vector lanes to the same value"]
9496#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_u32)"]
9497#[inline]
9498#[target_feature(enable = "neon")]
9499#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9500#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
9501#[cfg_attr(
9502 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9503 assert_instr(dup, N = 1)
9504)]
9505#[rustc_legacy_const_generics(1)]
9506#[cfg_attr(
9507 not(target_arch = "arm"),
9508 stable(feature = "neon_intrinsics", since = "1.59.0")
9509)]
9510#[cfg_attr(
9511 target_arch = "arm",
9512 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9513)]
9514pub fn vdup_lane_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
9515 static_assert_uimm_bits!(N, 1);
9516 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
9517}
9518#[doc = "Set all vector lanes to the same value"]
9519#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_f32)"]
9520#[inline]
9521#[target_feature(enable = "neon")]
9522#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9523#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
9524#[cfg_attr(
9525 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9526 assert_instr(dup, N = 1)
9527)]
9528#[rustc_legacy_const_generics(1)]
9529#[cfg_attr(
9530 not(target_arch = "arm"),
9531 stable(feature = "neon_intrinsics", since = "1.59.0")
9532)]
9533#[cfg_attr(
9534 target_arch = "arm",
9535 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9536)]
9537pub fn vdupq_lane_f32<const N: i32>(a: float32x2_t) -> float32x4_t {
9538 static_assert_uimm_bits!(N, 1);
9539 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
9540}
9541#[doc = "Set all vector lanes to the same value"]
9542#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_s32)"]
9543#[inline]
9544#[target_feature(enable = "neon")]
9545#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9546#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
9547#[cfg_attr(
9548 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9549 assert_instr(dup, N = 1)
9550)]
9551#[rustc_legacy_const_generics(1)]
9552#[cfg_attr(
9553 not(target_arch = "arm"),
9554 stable(feature = "neon_intrinsics", since = "1.59.0")
9555)]
9556#[cfg_attr(
9557 target_arch = "arm",
9558 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9559)]
9560pub fn vdupq_lane_s32<const N: i32>(a: int32x2_t) -> int32x4_t {
9561 static_assert_uimm_bits!(N, 1);
9562 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
9563}
9564#[doc = "Set all vector lanes to the same value"]
9565#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_u32)"]
9566#[inline]
9567#[target_feature(enable = "neon")]
9568#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9569#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
9570#[cfg_attr(
9571 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9572 assert_instr(dup, N = 1)
9573)]
9574#[rustc_legacy_const_generics(1)]
9575#[cfg_attr(
9576 not(target_arch = "arm"),
9577 stable(feature = "neon_intrinsics", since = "1.59.0")
9578)]
9579#[cfg_attr(
9580 target_arch = "arm",
9581 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9582)]
9583pub fn vdupq_lane_u32<const N: i32>(a: uint32x2_t) -> uint32x4_t {
9584 static_assert_uimm_bits!(N, 1);
9585 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
9586}
9587#[doc = "Set all vector lanes to the same value"]
9588#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_p16)"]
9589#[inline]
9590#[target_feature(enable = "neon")]
9591#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9592#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
9593#[cfg_attr(
9594 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9595 assert_instr(dup, N = 2)
9596)]
9597#[rustc_legacy_const_generics(1)]
9598#[cfg_attr(
9599 not(target_arch = "arm"),
9600 stable(feature = "neon_intrinsics", since = "1.59.0")
9601)]
9602#[cfg_attr(
9603 target_arch = "arm",
9604 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9605)]
9606pub fn vdup_lane_p16<const N: i32>(a: poly16x4_t) -> poly16x4_t {
9607 static_assert_uimm_bits!(N, 2);
9608 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
9609}
9610#[doc = "Set all vector lanes to the same value"]
9611#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_s16)"]
9612#[inline]
9613#[target_feature(enable = "neon")]
9614#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9615#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
9616#[cfg_attr(
9617 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9618 assert_instr(dup, N = 2)
9619)]
9620#[rustc_legacy_const_generics(1)]
9621#[cfg_attr(
9622 not(target_arch = "arm"),
9623 stable(feature = "neon_intrinsics", since = "1.59.0")
9624)]
9625#[cfg_attr(
9626 target_arch = "arm",
9627 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9628)]
9629pub fn vdup_lane_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
9630 static_assert_uimm_bits!(N, 2);
9631 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
9632}
9633#[doc = "Set all vector lanes to the same value"]
9634#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_u16)"]
9635#[inline]
9636#[target_feature(enable = "neon")]
9637#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9638#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
9639#[cfg_attr(
9640 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9641 assert_instr(dup, N = 2)
9642)]
9643#[rustc_legacy_const_generics(1)]
9644#[cfg_attr(
9645 not(target_arch = "arm"),
9646 stable(feature = "neon_intrinsics", since = "1.59.0")
9647)]
9648#[cfg_attr(
9649 target_arch = "arm",
9650 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9651)]
9652pub fn vdup_lane_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
9653 static_assert_uimm_bits!(N, 2);
9654 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
9655}
9656#[doc = "Set all vector lanes to the same value"]
9657#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_p16)"]
9658#[inline]
9659#[target_feature(enable = "neon")]
9660#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9661#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
9662#[cfg_attr(
9663 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9664 assert_instr(dup, N = 2)
9665)]
9666#[rustc_legacy_const_generics(1)]
9667#[cfg_attr(
9668 not(target_arch = "arm"),
9669 stable(feature = "neon_intrinsics", since = "1.59.0")
9670)]
9671#[cfg_attr(
9672 target_arch = "arm",
9673 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9674)]
9675pub fn vdupq_lane_p16<const N: i32>(a: poly16x4_t) -> poly16x8_t {
9676 static_assert_uimm_bits!(N, 2);
9677 unsafe {
9678 simd_shuffle!(
9679 a,
9680 a,
9681 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
9682 )
9683 }
9684}
9685#[doc = "Set all vector lanes to the same value"]
9686#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_s16)"]
9687#[inline]
9688#[target_feature(enable = "neon")]
9689#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9690#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
9691#[cfg_attr(
9692 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9693 assert_instr(dup, N = 2)
9694)]
9695#[rustc_legacy_const_generics(1)]
9696#[cfg_attr(
9697 not(target_arch = "arm"),
9698 stable(feature = "neon_intrinsics", since = "1.59.0")
9699)]
9700#[cfg_attr(
9701 target_arch = "arm",
9702 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9703)]
9704pub fn vdupq_lane_s16<const N: i32>(a: int16x4_t) -> int16x8_t {
9705 static_assert_uimm_bits!(N, 2);
9706 unsafe {
9707 simd_shuffle!(
9708 a,
9709 a,
9710 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
9711 )
9712 }
9713}
9714#[doc = "Set all vector lanes to the same value"]
9715#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_u16)"]
9716#[inline]
9717#[target_feature(enable = "neon")]
9718#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9719#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
9720#[cfg_attr(
9721 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9722 assert_instr(dup, N = 2)
9723)]
9724#[rustc_legacy_const_generics(1)]
9725#[cfg_attr(
9726 not(target_arch = "arm"),
9727 stable(feature = "neon_intrinsics", since = "1.59.0")
9728)]
9729#[cfg_attr(
9730 target_arch = "arm",
9731 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9732)]
9733pub fn vdupq_lane_u16<const N: i32>(a: uint16x4_t) -> uint16x8_t {
9734 static_assert_uimm_bits!(N, 2);
9735 unsafe {
9736 simd_shuffle!(
9737 a,
9738 a,
9739 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
9740 )
9741 }
9742}
9743#[doc = "Set all vector lanes to the same value"]
9744#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_p8)"]
9745#[inline]
9746#[target_feature(enable = "neon")]
9747#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9748#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
9749#[cfg_attr(
9750 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9751 assert_instr(dup, N = 4)
9752)]
9753#[rustc_legacy_const_generics(1)]
9754#[cfg_attr(
9755 not(target_arch = "arm"),
9756 stable(feature = "neon_intrinsics", since = "1.59.0")
9757)]
9758#[cfg_attr(
9759 target_arch = "arm",
9760 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9761)]
9762pub fn vdup_lane_p8<const N: i32>(a: poly8x8_t) -> poly8x8_t {
9763 static_assert_uimm_bits!(N, 3);
9764 unsafe {
9765 simd_shuffle!(
9766 a,
9767 a,
9768 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
9769 )
9770 }
9771}
9772#[doc = "Set all vector lanes to the same value"]
9773#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_s8)"]
9774#[inline]
9775#[target_feature(enable = "neon")]
9776#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9777#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
9778#[cfg_attr(
9779 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9780 assert_instr(dup, N = 4)
9781)]
9782#[rustc_legacy_const_generics(1)]
9783#[cfg_attr(
9784 not(target_arch = "arm"),
9785 stable(feature = "neon_intrinsics", since = "1.59.0")
9786)]
9787#[cfg_attr(
9788 target_arch = "arm",
9789 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9790)]
9791pub fn vdup_lane_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
9792 static_assert_uimm_bits!(N, 3);
9793 unsafe {
9794 simd_shuffle!(
9795 a,
9796 a,
9797 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
9798 )
9799 }
9800}
9801#[doc = "Set all vector lanes to the same value"]
9802#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_u8)"]
9803#[inline]
9804#[target_feature(enable = "neon")]
9805#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9806#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
9807#[cfg_attr(
9808 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9809 assert_instr(dup, N = 4)
9810)]
9811#[rustc_legacy_const_generics(1)]
9812#[cfg_attr(
9813 not(target_arch = "arm"),
9814 stable(feature = "neon_intrinsics", since = "1.59.0")
9815)]
9816#[cfg_attr(
9817 target_arch = "arm",
9818 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9819)]
9820pub fn vdup_lane_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
9821 static_assert_uimm_bits!(N, 3);
9822 unsafe {
9823 simd_shuffle!(
9824 a,
9825 a,
9826 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
9827 )
9828 }
9829}
9830#[doc = "Set all vector lanes to the same value"]
9831#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_p8)"]
9832#[inline]
9833#[target_feature(enable = "neon")]
9834#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9835#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
9836#[cfg_attr(
9837 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9838 assert_instr(dup, N = 4)
9839)]
9840#[rustc_legacy_const_generics(1)]
9841#[cfg_attr(
9842 not(target_arch = "arm"),
9843 stable(feature = "neon_intrinsics", since = "1.59.0")
9844)]
9845#[cfg_attr(
9846 target_arch = "arm",
9847 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9848)]
9849pub fn vdupq_lane_p8<const N: i32>(a: poly8x8_t) -> poly8x16_t {
9850 static_assert_uimm_bits!(N, 3);
9851 unsafe {
9852 simd_shuffle!(
9853 a,
9854 a,
9855 [
9856 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32,
9857 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32
9858 ]
9859 )
9860 }
9861}
9862#[doc = "Set all vector lanes to the same value"]
9863#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_s8)"]
9864#[inline]
9865#[target_feature(enable = "neon")]
9866#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9867#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
9868#[cfg_attr(
9869 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9870 assert_instr(dup, N = 4)
9871)]
9872#[rustc_legacy_const_generics(1)]
9873#[cfg_attr(
9874 not(target_arch = "arm"),
9875 stable(feature = "neon_intrinsics", since = "1.59.0")
9876)]
9877#[cfg_attr(
9878 target_arch = "arm",
9879 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9880)]
9881pub fn vdupq_lane_s8<const N: i32>(a: int8x8_t) -> int8x16_t {
9882 static_assert_uimm_bits!(N, 3);
9883 unsafe {
9884 simd_shuffle!(
9885 a,
9886 a,
9887 [
9888 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32,
9889 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32
9890 ]
9891 )
9892 }
9893}
9894#[doc = "Set all vector lanes to the same value"]
9895#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_u8)"]
9896#[inline]
9897#[target_feature(enable = "neon")]
9898#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9899#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
9900#[cfg_attr(
9901 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9902 assert_instr(dup, N = 4)
9903)]
9904#[rustc_legacy_const_generics(1)]
9905#[cfg_attr(
9906 not(target_arch = "arm"),
9907 stable(feature = "neon_intrinsics", since = "1.59.0")
9908)]
9909#[cfg_attr(
9910 target_arch = "arm",
9911 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9912)]
9913pub fn vdupq_lane_u8<const N: i32>(a: uint8x8_t) -> uint8x16_t {
9914 static_assert_uimm_bits!(N, 3);
9915 unsafe {
9916 simd_shuffle!(
9917 a,
9918 a,
9919 [
9920 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32,
9921 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32
9922 ]
9923 )
9924 }
9925}
9926#[doc = "Set all vector lanes to the same value"]
9927#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_s64)"]
9928#[inline]
9929#[target_feature(enable = "neon")]
9930#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9931#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, N = 0))]
9932#[cfg_attr(
9933 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9934 assert_instr(nop, N = 0)
9935)]
9936#[rustc_legacy_const_generics(1)]
9937#[cfg_attr(
9938 not(target_arch = "arm"),
9939 stable(feature = "neon_intrinsics", since = "1.59.0")
9940)]
9941#[cfg_attr(
9942 target_arch = "arm",
9943 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9944)]
9945pub fn vdup_lane_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
9946 static_assert!(N == 0);
9947 a
9948}
9949#[doc = "Set all vector lanes to the same value"]
9950#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_u64)"]
9951#[inline]
9952#[target_feature(enable = "neon")]
9953#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9954#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, N = 0))]
9955#[cfg_attr(
9956 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9957 assert_instr(nop, N = 0)
9958)]
9959#[rustc_legacy_const_generics(1)]
9960#[cfg_attr(
9961 not(target_arch = "arm"),
9962 stable(feature = "neon_intrinsics", since = "1.59.0")
9963)]
9964#[cfg_attr(
9965 target_arch = "arm",
9966 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9967)]
9968pub fn vdup_lane_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
9969 static_assert!(N == 0);
9970 a
9971}
9972#[doc = "Set all vector lanes to the same value"]
9973#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_f16)"]
9974#[inline]
9975#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9976#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
9977#[cfg_attr(
9978 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9979 assert_instr(dup, N = 4)
9980)]
9981#[rustc_legacy_const_generics(1)]
9982#[target_feature(enable = "neon,fp16")]
9983#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
9984#[cfg(not(target_arch = "arm64ec"))]
9985pub fn vdup_laneq_f16<const N: i32>(a: float16x8_t) -> float16x4_t {
9986 static_assert_uimm_bits!(N, 3);
9987 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
9988}
9989#[doc = "Set all vector lanes to the same value"]
9990#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_f16)"]
9991#[inline]
9992#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9993#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
9994#[cfg_attr(
9995 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9996 assert_instr(dup, N = 4)
9997)]
9998#[rustc_legacy_const_generics(1)]
9999#[target_feature(enable = "neon,fp16")]
10000#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
10001#[cfg(not(target_arch = "arm64ec"))]
10002pub fn vdupq_laneq_f16<const N: i32>(a: float16x8_t) -> float16x8_t {
10003 static_assert_uimm_bits!(N, 3);
10004 unsafe {
10005 simd_shuffle!(
10006 a,
10007 a,
10008 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10009 )
10010 }
10011}
10012#[doc = "Set all vector lanes to the same value"]
10013#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_f32)"]
10014#[inline]
10015#[target_feature(enable = "neon")]
10016#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10017#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10018#[cfg_attr(
10019 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10020 assert_instr(dup, N = 2)
10021)]
10022#[rustc_legacy_const_generics(1)]
10023#[cfg_attr(
10024 not(target_arch = "arm"),
10025 stable(feature = "neon_intrinsics", since = "1.59.0")
10026)]
10027#[cfg_attr(
10028 target_arch = "arm",
10029 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10030)]
10031pub fn vdup_laneq_f32<const N: i32>(a: float32x4_t) -> float32x2_t {
10032 static_assert_uimm_bits!(N, 2);
10033 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10034}
10035#[doc = "Set all vector lanes to the same value"]
10036#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_s32)"]
10037#[inline]
10038#[target_feature(enable = "neon")]
10039#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10040#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10041#[cfg_attr(
10042 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10043 assert_instr(dup, N = 2)
10044)]
10045#[rustc_legacy_const_generics(1)]
10046#[cfg_attr(
10047 not(target_arch = "arm"),
10048 stable(feature = "neon_intrinsics", since = "1.59.0")
10049)]
10050#[cfg_attr(
10051 target_arch = "arm",
10052 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10053)]
10054pub fn vdup_laneq_s32<const N: i32>(a: int32x4_t) -> int32x2_t {
10055 static_assert_uimm_bits!(N, 2);
10056 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10057}
10058#[doc = "Set all vector lanes to the same value"]
10059#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_u32)"]
10060#[inline]
10061#[target_feature(enable = "neon")]
10062#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10063#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10064#[cfg_attr(
10065 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10066 assert_instr(dup, N = 2)
10067)]
10068#[rustc_legacy_const_generics(1)]
10069#[cfg_attr(
10070 not(target_arch = "arm"),
10071 stable(feature = "neon_intrinsics", since = "1.59.0")
10072)]
10073#[cfg_attr(
10074 target_arch = "arm",
10075 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10076)]
10077pub fn vdup_laneq_u32<const N: i32>(a: uint32x4_t) -> uint32x2_t {
10078 static_assert_uimm_bits!(N, 2);
10079 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10080}
10081#[doc = "Set all vector lanes to the same value"]
10082#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_f32)"]
10083#[inline]
10084#[target_feature(enable = "neon")]
10085#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10086#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10087#[cfg_attr(
10088 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10089 assert_instr(dup, N = 2)
10090)]
10091#[rustc_legacy_const_generics(1)]
10092#[cfg_attr(
10093 not(target_arch = "arm"),
10094 stable(feature = "neon_intrinsics", since = "1.59.0")
10095)]
10096#[cfg_attr(
10097 target_arch = "arm",
10098 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10099)]
10100pub fn vdupq_laneq_f32<const N: i32>(a: float32x4_t) -> float32x4_t {
10101 static_assert_uimm_bits!(N, 2);
10102 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10103}
10104#[doc = "Set all vector lanes to the same value"]
10105#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_s32)"]
10106#[inline]
10107#[target_feature(enable = "neon")]
10108#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10109#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10110#[cfg_attr(
10111 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10112 assert_instr(dup, N = 2)
10113)]
10114#[rustc_legacy_const_generics(1)]
10115#[cfg_attr(
10116 not(target_arch = "arm"),
10117 stable(feature = "neon_intrinsics", since = "1.59.0")
10118)]
10119#[cfg_attr(
10120 target_arch = "arm",
10121 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10122)]
10123pub fn vdupq_laneq_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
10124 static_assert_uimm_bits!(N, 2);
10125 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10126}
10127#[doc = "Set all vector lanes to the same value"]
10128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_u32)"]
10129#[inline]
10130#[target_feature(enable = "neon")]
10131#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10132#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10133#[cfg_attr(
10134 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10135 assert_instr(dup, N = 2)
10136)]
10137#[rustc_legacy_const_generics(1)]
10138#[cfg_attr(
10139 not(target_arch = "arm"),
10140 stable(feature = "neon_intrinsics", since = "1.59.0")
10141)]
10142#[cfg_attr(
10143 target_arch = "arm",
10144 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10145)]
10146pub fn vdupq_laneq_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
10147 static_assert_uimm_bits!(N, 2);
10148 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10149}
10150#[doc = "Set all vector lanes to the same value"]
10151#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_p16)"]
10152#[inline]
10153#[target_feature(enable = "neon")]
10154#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10155#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10156#[cfg_attr(
10157 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10158 assert_instr(dup, N = 4)
10159)]
10160#[rustc_legacy_const_generics(1)]
10161#[cfg_attr(
10162 not(target_arch = "arm"),
10163 stable(feature = "neon_intrinsics", since = "1.59.0")
10164)]
10165#[cfg_attr(
10166 target_arch = "arm",
10167 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10168)]
10169pub fn vdup_laneq_p16<const N: i32>(a: poly16x8_t) -> poly16x4_t {
10170 static_assert_uimm_bits!(N, 3);
10171 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10172}
10173#[doc = "Set all vector lanes to the same value"]
10174#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_s16)"]
10175#[inline]
10176#[target_feature(enable = "neon")]
10177#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10178#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10179#[cfg_attr(
10180 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10181 assert_instr(dup, N = 4)
10182)]
10183#[rustc_legacy_const_generics(1)]
10184#[cfg_attr(
10185 not(target_arch = "arm"),
10186 stable(feature = "neon_intrinsics", since = "1.59.0")
10187)]
10188#[cfg_attr(
10189 target_arch = "arm",
10190 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10191)]
10192pub fn vdup_laneq_s16<const N: i32>(a: int16x8_t) -> int16x4_t {
10193 static_assert_uimm_bits!(N, 3);
10194 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10195}
10196#[doc = "Set all vector lanes to the same value"]
10197#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_u16)"]
10198#[inline]
10199#[target_feature(enable = "neon")]
10200#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10201#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10202#[cfg_attr(
10203 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10204 assert_instr(dup, N = 4)
10205)]
10206#[rustc_legacy_const_generics(1)]
10207#[cfg_attr(
10208 not(target_arch = "arm"),
10209 stable(feature = "neon_intrinsics", since = "1.59.0")
10210)]
10211#[cfg_attr(
10212 target_arch = "arm",
10213 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10214)]
10215pub fn vdup_laneq_u16<const N: i32>(a: uint16x8_t) -> uint16x4_t {
10216 static_assert_uimm_bits!(N, 3);
10217 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10218}
10219#[doc = "Set all vector lanes to the same value"]
10220#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_p16)"]
10221#[inline]
10222#[target_feature(enable = "neon")]
10223#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10224#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10225#[cfg_attr(
10226 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10227 assert_instr(dup, N = 4)
10228)]
10229#[rustc_legacy_const_generics(1)]
10230#[cfg_attr(
10231 not(target_arch = "arm"),
10232 stable(feature = "neon_intrinsics", since = "1.59.0")
10233)]
10234#[cfg_attr(
10235 target_arch = "arm",
10236 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10237)]
10238pub fn vdupq_laneq_p16<const N: i32>(a: poly16x8_t) -> poly16x8_t {
10239 static_assert_uimm_bits!(N, 3);
10240 unsafe {
10241 simd_shuffle!(
10242 a,
10243 a,
10244 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10245 )
10246 }
10247}
10248#[doc = "Set all vector lanes to the same value"]
10249#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_s16)"]
10250#[inline]
10251#[target_feature(enable = "neon")]
10252#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10253#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10254#[cfg_attr(
10255 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10256 assert_instr(dup, N = 4)
10257)]
10258#[rustc_legacy_const_generics(1)]
10259#[cfg_attr(
10260 not(target_arch = "arm"),
10261 stable(feature = "neon_intrinsics", since = "1.59.0")
10262)]
10263#[cfg_attr(
10264 target_arch = "arm",
10265 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10266)]
10267pub fn vdupq_laneq_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
10268 static_assert_uimm_bits!(N, 3);
10269 unsafe {
10270 simd_shuffle!(
10271 a,
10272 a,
10273 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10274 )
10275 }
10276}
10277#[doc = "Set all vector lanes to the same value"]
10278#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_u16)"]
10279#[inline]
10280#[target_feature(enable = "neon")]
10281#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10282#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10283#[cfg_attr(
10284 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10285 assert_instr(dup, N = 4)
10286)]
10287#[rustc_legacy_const_generics(1)]
10288#[cfg_attr(
10289 not(target_arch = "arm"),
10290 stable(feature = "neon_intrinsics", since = "1.59.0")
10291)]
10292#[cfg_attr(
10293 target_arch = "arm",
10294 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10295)]
10296pub fn vdupq_laneq_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
10297 static_assert_uimm_bits!(N, 3);
10298 unsafe {
10299 simd_shuffle!(
10300 a,
10301 a,
10302 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10303 )
10304 }
10305}
10306#[doc = "Set all vector lanes to the same value"]
10307#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_p8)"]
10308#[inline]
10309#[target_feature(enable = "neon")]
10310#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10311#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
10312#[cfg_attr(
10313 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10314 assert_instr(dup, N = 8)
10315)]
10316#[rustc_legacy_const_generics(1)]
10317#[cfg_attr(
10318 not(target_arch = "arm"),
10319 stable(feature = "neon_intrinsics", since = "1.59.0")
10320)]
10321#[cfg_attr(
10322 target_arch = "arm",
10323 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10324)]
10325pub fn vdup_laneq_p8<const N: i32>(a: poly8x16_t) -> poly8x8_t {
10326 static_assert_uimm_bits!(N, 4);
10327 unsafe {
10328 simd_shuffle!(
10329 a,
10330 a,
10331 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10332 )
10333 }
10334}
10335#[doc = "Set all vector lanes to the same value"]
10336#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_s8)"]
10337#[inline]
10338#[target_feature(enable = "neon")]
10339#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10340#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
10341#[cfg_attr(
10342 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10343 assert_instr(dup, N = 8)
10344)]
10345#[rustc_legacy_const_generics(1)]
10346#[cfg_attr(
10347 not(target_arch = "arm"),
10348 stable(feature = "neon_intrinsics", since = "1.59.0")
10349)]
10350#[cfg_attr(
10351 target_arch = "arm",
10352 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10353)]
10354pub fn vdup_laneq_s8<const N: i32>(a: int8x16_t) -> int8x8_t {
10355 static_assert_uimm_bits!(N, 4);
10356 unsafe {
10357 simd_shuffle!(
10358 a,
10359 a,
10360 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10361 )
10362 }
10363}
10364#[doc = "Set all vector lanes to the same value"]
10365#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_u8)"]
10366#[inline]
10367#[target_feature(enable = "neon")]
10368#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10369#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
10370#[cfg_attr(
10371 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10372 assert_instr(dup, N = 8)
10373)]
10374#[rustc_legacy_const_generics(1)]
10375#[cfg_attr(
10376 not(target_arch = "arm"),
10377 stable(feature = "neon_intrinsics", since = "1.59.0")
10378)]
10379#[cfg_attr(
10380 target_arch = "arm",
10381 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10382)]
10383pub fn vdup_laneq_u8<const N: i32>(a: uint8x16_t) -> uint8x8_t {
10384 static_assert_uimm_bits!(N, 4);
10385 unsafe {
10386 simd_shuffle!(
10387 a,
10388 a,
10389 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10390 )
10391 }
10392}
10393#[doc = "Set all vector lanes to the same value"]
10394#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_p8)"]
10395#[inline]
10396#[target_feature(enable = "neon")]
10397#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10398#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
10399#[cfg_attr(
10400 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10401 assert_instr(dup, N = 8)
10402)]
10403#[rustc_legacy_const_generics(1)]
10404#[cfg_attr(
10405 not(target_arch = "arm"),
10406 stable(feature = "neon_intrinsics", since = "1.59.0")
10407)]
10408#[cfg_attr(
10409 target_arch = "arm",
10410 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10411)]
10412pub fn vdupq_laneq_p8<const N: i32>(a: poly8x16_t) -> poly8x16_t {
10413 static_assert_uimm_bits!(N, 4);
10414 unsafe {
10415 simd_shuffle!(
10416 a,
10417 a,
10418 [
10419 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32,
10420 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32
10421 ]
10422 )
10423 }
10424}
10425#[doc = "Set all vector lanes to the same value"]
10426#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_s8)"]
10427#[inline]
10428#[target_feature(enable = "neon")]
10429#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10430#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
10431#[cfg_attr(
10432 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10433 assert_instr(dup, N = 8)
10434)]
10435#[rustc_legacy_const_generics(1)]
10436#[cfg_attr(
10437 not(target_arch = "arm"),
10438 stable(feature = "neon_intrinsics", since = "1.59.0")
10439)]
10440#[cfg_attr(
10441 target_arch = "arm",
10442 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10443)]
10444pub fn vdupq_laneq_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
10445 static_assert_uimm_bits!(N, 4);
10446 unsafe {
10447 simd_shuffle!(
10448 a,
10449 a,
10450 [
10451 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32,
10452 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32
10453 ]
10454 )
10455 }
10456}
10457#[doc = "Set all vector lanes to the same value"]
10458#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_u8)"]
10459#[inline]
10460#[target_feature(enable = "neon")]
10461#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10462#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
10463#[cfg_attr(
10464 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10465 assert_instr(dup, N = 8)
10466)]
10467#[rustc_legacy_const_generics(1)]
10468#[cfg_attr(
10469 not(target_arch = "arm"),
10470 stable(feature = "neon_intrinsics", since = "1.59.0")
10471)]
10472#[cfg_attr(
10473 target_arch = "arm",
10474 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10475)]
10476pub fn vdupq_laneq_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
10477 static_assert_uimm_bits!(N, 4);
10478 unsafe {
10479 simd_shuffle!(
10480 a,
10481 a,
10482 [
10483 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32,
10484 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32
10485 ]
10486 )
10487 }
10488}
10489#[doc = "Set all vector lanes to the same value"]
10490#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_s64)"]
10491#[inline]
10492#[target_feature(enable = "neon")]
10493#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10494#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
10495#[cfg_attr(
10496 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10497 assert_instr(nop, N = 1)
10498)]
10499#[rustc_legacy_const_generics(1)]
10500#[cfg_attr(
10501 not(target_arch = "arm"),
10502 stable(feature = "neon_intrinsics", since = "1.59.0")
10503)]
10504#[cfg_attr(
10505 target_arch = "arm",
10506 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10507)]
10508pub fn vdup_laneq_s64<const N: i32>(a: int64x2_t) -> int64x1_t {
10509 static_assert_uimm_bits!(N, 1);
10510 unsafe { transmute::<i64, _>(simd_extract!(a, N as u32)) }
10511}
10512#[doc = "Set all vector lanes to the same value"]
10513#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_u64)"]
10514#[inline]
10515#[target_feature(enable = "neon")]
10516#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10517#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
10518#[cfg_attr(
10519 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10520 assert_instr(nop, N = 1)
10521)]
10522#[rustc_legacy_const_generics(1)]
10523#[cfg_attr(
10524 not(target_arch = "arm"),
10525 stable(feature = "neon_intrinsics", since = "1.59.0")
10526)]
10527#[cfg_attr(
10528 target_arch = "arm",
10529 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10530)]
10531pub fn vdup_laneq_u64<const N: i32>(a: uint64x2_t) -> uint64x1_t {
10532 static_assert_uimm_bits!(N, 1);
10533 unsafe { transmute::<u64, _>(simd_extract!(a, N as u32)) }
10534}
10535#[doc = "Create a new vector with all lanes set to a value"]
10536#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_f16)"]
10537#[inline]
10538#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10539#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
10540#[cfg_attr(
10541 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10542 assert_instr(dup)
10543)]
10544#[target_feature(enable = "neon,fp16")]
10545#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
10546#[cfg(not(target_arch = "arm64ec"))]
10547pub fn vdup_n_f16(a: f16) -> float16x4_t {
10548 float16x4_t::splat(a)
10549}
10550#[doc = "Create a new vector with all lanes set to a value"]
10551#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_f16)"]
10552#[inline]
10553#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10554#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
10555#[cfg_attr(
10556 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10557 assert_instr(dup)
10558)]
10559#[target_feature(enable = "neon,fp16")]
10560#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
10561#[cfg(not(target_arch = "arm64ec"))]
10562pub fn vdupq_n_f16(a: f16) -> float16x8_t {
10563 float16x8_t::splat(a)
10564}
10565#[doc = "Duplicate vector element to vector or scalar"]
10566#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_f32)"]
10567#[inline]
10568#[target_feature(enable = "neon")]
10569#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10570#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
10571#[cfg_attr(
10572 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10573 assert_instr(dup)
10574)]
10575#[cfg_attr(
10576 not(target_arch = "arm"),
10577 stable(feature = "neon_intrinsics", since = "1.59.0")
10578)]
10579#[cfg_attr(
10580 target_arch = "arm",
10581 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10582)]
10583pub fn vdup_n_f32(value: f32) -> float32x2_t {
10584 float32x2_t::splat(value)
10585}
10586#[doc = "Duplicate vector element to vector or scalar"]
10587#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_p16)"]
10588#[inline]
10589#[target_feature(enable = "neon")]
10590#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10591#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
10592#[cfg_attr(
10593 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10594 assert_instr(dup)
10595)]
10596#[cfg_attr(
10597 not(target_arch = "arm"),
10598 stable(feature = "neon_intrinsics", since = "1.59.0")
10599)]
10600#[cfg_attr(
10601 target_arch = "arm",
10602 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10603)]
10604pub fn vdup_n_p16(value: p16) -> poly16x4_t {
10605 poly16x4_t::splat(value)
10606}
10607#[doc = "Duplicate vector element to vector or scalar"]
10608#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_p8)"]
10609#[inline]
10610#[target_feature(enable = "neon")]
10611#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10612#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
10613#[cfg_attr(
10614 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10615 assert_instr(dup)
10616)]
10617#[cfg_attr(
10618 not(target_arch = "arm"),
10619 stable(feature = "neon_intrinsics", since = "1.59.0")
10620)]
10621#[cfg_attr(
10622 target_arch = "arm",
10623 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10624)]
10625pub fn vdup_n_p8(value: p8) -> poly8x8_t {
10626 poly8x8_t::splat(value)
10627}
10628#[doc = "Duplicate vector element to vector or scalar"]
10629#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_s16)"]
10630#[inline]
10631#[target_feature(enable = "neon")]
10632#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10633#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
10634#[cfg_attr(
10635 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10636 assert_instr(dup)
10637)]
10638#[cfg_attr(
10639 not(target_arch = "arm"),
10640 stable(feature = "neon_intrinsics", since = "1.59.0")
10641)]
10642#[cfg_attr(
10643 target_arch = "arm",
10644 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10645)]
10646pub fn vdup_n_s16(value: i16) -> int16x4_t {
10647 int16x4_t::splat(value)
10648}
10649#[doc = "Duplicate vector element to vector or scalar"]
10650#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_s32)"]
10651#[inline]
10652#[target_feature(enable = "neon")]
10653#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10654#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
10655#[cfg_attr(
10656 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10657 assert_instr(dup)
10658)]
10659#[cfg_attr(
10660 not(target_arch = "arm"),
10661 stable(feature = "neon_intrinsics", since = "1.59.0")
10662)]
10663#[cfg_attr(
10664 target_arch = "arm",
10665 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10666)]
10667pub fn vdup_n_s32(value: i32) -> int32x2_t {
10668 int32x2_t::splat(value)
10669}
10670#[doc = "Duplicate vector element to vector or scalar"]
10671#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_s64)"]
10672#[inline]
10673#[target_feature(enable = "neon")]
10674#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10675#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
10676#[cfg_attr(
10677 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10678 assert_instr(fmov)
10679)]
10680#[cfg_attr(
10681 not(target_arch = "arm"),
10682 stable(feature = "neon_intrinsics", since = "1.59.0")
10683)]
10684#[cfg_attr(
10685 target_arch = "arm",
10686 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10687)]
10688pub fn vdup_n_s64(value: i64) -> int64x1_t {
10689 int64x1_t::splat(value)
10690}
10691#[doc = "Duplicate vector element to vector or scalar"]
10692#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_s8)"]
10693#[inline]
10694#[target_feature(enable = "neon")]
10695#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10696#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
10697#[cfg_attr(
10698 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10699 assert_instr(dup)
10700)]
10701#[cfg_attr(
10702 not(target_arch = "arm"),
10703 stable(feature = "neon_intrinsics", since = "1.59.0")
10704)]
10705#[cfg_attr(
10706 target_arch = "arm",
10707 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10708)]
10709pub fn vdup_n_s8(value: i8) -> int8x8_t {
10710 int8x8_t::splat(value)
10711}
10712#[doc = "Duplicate vector element to vector or scalar"]
10713#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_u16)"]
10714#[inline]
10715#[target_feature(enable = "neon")]
10716#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10717#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
10718#[cfg_attr(
10719 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10720 assert_instr(dup)
10721)]
10722#[cfg_attr(
10723 not(target_arch = "arm"),
10724 stable(feature = "neon_intrinsics", since = "1.59.0")
10725)]
10726#[cfg_attr(
10727 target_arch = "arm",
10728 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10729)]
10730pub fn vdup_n_u16(value: u16) -> uint16x4_t {
10731 uint16x4_t::splat(value)
10732}
10733#[doc = "Duplicate vector element to vector or scalar"]
10734#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_u32)"]
10735#[inline]
10736#[target_feature(enable = "neon")]
10737#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10738#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
10739#[cfg_attr(
10740 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10741 assert_instr(dup)
10742)]
10743#[cfg_attr(
10744 not(target_arch = "arm"),
10745 stable(feature = "neon_intrinsics", since = "1.59.0")
10746)]
10747#[cfg_attr(
10748 target_arch = "arm",
10749 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10750)]
10751pub fn vdup_n_u32(value: u32) -> uint32x2_t {
10752 uint32x2_t::splat(value)
10753}
10754#[doc = "Duplicate vector element to vector or scalar"]
10755#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_u64)"]
10756#[inline]
10757#[target_feature(enable = "neon")]
10758#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10759#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
10760#[cfg_attr(
10761 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10762 assert_instr(fmov)
10763)]
10764#[cfg_attr(
10765 not(target_arch = "arm"),
10766 stable(feature = "neon_intrinsics", since = "1.59.0")
10767)]
10768#[cfg_attr(
10769 target_arch = "arm",
10770 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10771)]
10772pub fn vdup_n_u64(value: u64) -> uint64x1_t {
10773 uint64x1_t::splat(value)
10774}
10775#[doc = "Duplicate vector element to vector or scalar"]
10776#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_u8)"]
10777#[inline]
10778#[target_feature(enable = "neon")]
10779#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10780#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
10781#[cfg_attr(
10782 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10783 assert_instr(dup)
10784)]
10785#[cfg_attr(
10786 not(target_arch = "arm"),
10787 stable(feature = "neon_intrinsics", since = "1.59.0")
10788)]
10789#[cfg_attr(
10790 target_arch = "arm",
10791 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10792)]
10793pub fn vdup_n_u8(value: u8) -> uint8x8_t {
10794 uint8x8_t::splat(value)
10795}
10796#[doc = "Duplicate vector element to vector or scalar"]
10797#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_f32)"]
10798#[inline]
10799#[target_feature(enable = "neon")]
10800#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10801#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
10802#[cfg_attr(
10803 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10804 assert_instr(dup)
10805)]
10806#[cfg_attr(
10807 not(target_arch = "arm"),
10808 stable(feature = "neon_intrinsics", since = "1.59.0")
10809)]
10810#[cfg_attr(
10811 target_arch = "arm",
10812 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10813)]
10814pub fn vdupq_n_f32(value: f32) -> float32x4_t {
10815 float32x4_t::splat(value)
10816}
10817#[doc = "Duplicate vector element to vector or scalar"]
10818#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_p16)"]
10819#[inline]
10820#[target_feature(enable = "neon")]
10821#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10822#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
10823#[cfg_attr(
10824 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10825 assert_instr(dup)
10826)]
10827#[cfg_attr(
10828 not(target_arch = "arm"),
10829 stable(feature = "neon_intrinsics", since = "1.59.0")
10830)]
10831#[cfg_attr(
10832 target_arch = "arm",
10833 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10834)]
10835pub fn vdupq_n_p16(value: p16) -> poly16x8_t {
10836 poly16x8_t::splat(value)
10837}
10838#[doc = "Duplicate vector element to vector or scalar"]
10839#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_p8)"]
10840#[inline]
10841#[target_feature(enable = "neon")]
10842#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10843#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
10844#[cfg_attr(
10845 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10846 assert_instr(dup)
10847)]
10848#[cfg_attr(
10849 not(target_arch = "arm"),
10850 stable(feature = "neon_intrinsics", since = "1.59.0")
10851)]
10852#[cfg_attr(
10853 target_arch = "arm",
10854 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10855)]
10856pub fn vdupq_n_p8(value: p8) -> poly8x16_t {
10857 poly8x16_t::splat(value)
10858}
10859#[doc = "Duplicate vector element to vector or scalar"]
10860#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_s16)"]
10861#[inline]
10862#[target_feature(enable = "neon")]
10863#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10864#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
10865#[cfg_attr(
10866 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10867 assert_instr(dup)
10868)]
10869#[cfg_attr(
10870 not(target_arch = "arm"),
10871 stable(feature = "neon_intrinsics", since = "1.59.0")
10872)]
10873#[cfg_attr(
10874 target_arch = "arm",
10875 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10876)]
10877pub fn vdupq_n_s16(value: i16) -> int16x8_t {
10878 int16x8_t::splat(value)
10879}
10880#[doc = "Duplicate vector element to vector or scalar"]
10881#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_s32)"]
10882#[inline]
10883#[target_feature(enable = "neon")]
10884#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10885#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
10886#[cfg_attr(
10887 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10888 assert_instr(dup)
10889)]
10890#[cfg_attr(
10891 not(target_arch = "arm"),
10892 stable(feature = "neon_intrinsics", since = "1.59.0")
10893)]
10894#[cfg_attr(
10895 target_arch = "arm",
10896 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10897)]
10898pub fn vdupq_n_s32(value: i32) -> int32x4_t {
10899 int32x4_t::splat(value)
10900}
10901#[doc = "Duplicate vector element to vector or scalar"]
10902#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_s64)"]
10903#[inline]
10904#[target_feature(enable = "neon")]
10905#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10906#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
10907#[cfg_attr(
10908 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10909 assert_instr(dup)
10910)]
10911#[cfg_attr(
10912 not(target_arch = "arm"),
10913 stable(feature = "neon_intrinsics", since = "1.59.0")
10914)]
10915#[cfg_attr(
10916 target_arch = "arm",
10917 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10918)]
10919pub fn vdupq_n_s64(value: i64) -> int64x2_t {
10920 int64x2_t::splat(value)
10921}
10922#[doc = "Duplicate vector element to vector or scalar"]
10923#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_s8)"]
10924#[inline]
10925#[target_feature(enable = "neon")]
10926#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10927#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
10928#[cfg_attr(
10929 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10930 assert_instr(dup)
10931)]
10932#[cfg_attr(
10933 not(target_arch = "arm"),
10934 stable(feature = "neon_intrinsics", since = "1.59.0")
10935)]
10936#[cfg_attr(
10937 target_arch = "arm",
10938 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10939)]
10940pub fn vdupq_n_s8(value: i8) -> int8x16_t {
10941 int8x16_t::splat(value)
10942}
10943#[doc = "Duplicate vector element to vector or scalar"]
10944#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_u16)"]
10945#[inline]
10946#[target_feature(enable = "neon")]
10947#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10948#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
10949#[cfg_attr(
10950 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10951 assert_instr(dup)
10952)]
10953#[cfg_attr(
10954 not(target_arch = "arm"),
10955 stable(feature = "neon_intrinsics", since = "1.59.0")
10956)]
10957#[cfg_attr(
10958 target_arch = "arm",
10959 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10960)]
10961pub fn vdupq_n_u16(value: u16) -> uint16x8_t {
10962 uint16x8_t::splat(value)
10963}
10964#[doc = "Duplicate vector element to vector or scalar"]
10965#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_u32)"]
10966#[inline]
10967#[target_feature(enable = "neon")]
10968#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10969#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
10970#[cfg_attr(
10971 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10972 assert_instr(dup)
10973)]
10974#[cfg_attr(
10975 not(target_arch = "arm"),
10976 stable(feature = "neon_intrinsics", since = "1.59.0")
10977)]
10978#[cfg_attr(
10979 target_arch = "arm",
10980 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10981)]
10982pub fn vdupq_n_u32(value: u32) -> uint32x4_t {
10983 uint32x4_t::splat(value)
10984}
10985#[doc = "Duplicate vector element to vector or scalar"]
10986#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_u64)"]
10987#[inline]
10988#[target_feature(enable = "neon")]
10989#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10990#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
10991#[cfg_attr(
10992 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10993 assert_instr(dup)
10994)]
10995#[cfg_attr(
10996 not(target_arch = "arm"),
10997 stable(feature = "neon_intrinsics", since = "1.59.0")
10998)]
10999#[cfg_attr(
11000 target_arch = "arm",
11001 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11002)]
11003pub fn vdupq_n_u64(value: u64) -> uint64x2_t {
11004 uint64x2_t::splat(value)
11005}
11006#[doc = "Duplicate vector element to vector or scalar"]
11007#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_u8)"]
11008#[inline]
11009#[target_feature(enable = "neon")]
11010#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11011#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
11012#[cfg_attr(
11013 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11014 assert_instr(dup)
11015)]
11016#[cfg_attr(
11017 not(target_arch = "arm"),
11018 stable(feature = "neon_intrinsics", since = "1.59.0")
11019)]
11020#[cfg_attr(
11021 target_arch = "arm",
11022 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11023)]
11024pub fn vdupq_n_u8(value: u8) -> uint8x16_t {
11025 uint8x16_t::splat(value)
11026}
11027#[doc = "Duplicate vector element to vector or scalar"]
11028#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_f32_vfp4)"]
11029#[inline]
11030#[target_feature(enable = "neon")]
11031#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
11032#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11033#[cfg_attr(
11034 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11035 assert_instr(dup)
11036)]
11037#[cfg_attr(
11038 not(target_arch = "arm"),
11039 stable(feature = "neon_intrinsics", since = "1.59.0")
11040)]
11041#[cfg_attr(
11042 target_arch = "arm",
11043 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11044)]
11045fn vdup_n_f32_vfp4(value: f32) -> float32x2_t {
11046 float32x2_t::splat(value)
11047}
11048#[doc = "Duplicate vector element to vector or scalar"]
11049#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_f32_vfp4)"]
11050#[inline]
11051#[target_feature(enable = "neon")]
11052#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
11053#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11054#[cfg_attr(
11055 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11056 assert_instr(dup)
11057)]
11058#[cfg_attr(
11059 not(target_arch = "arm"),
11060 stable(feature = "neon_intrinsics", since = "1.59.0")
11061)]
11062#[cfg_attr(
11063 target_arch = "arm",
11064 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11065)]
11066fn vdupq_n_f32_vfp4(value: f32) -> float32x4_t {
11067 float32x4_t::splat(value)
11068}
11069#[doc = "Set all vector lanes to the same value"]
11070#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_s64)"]
11071#[inline]
11072#[target_feature(enable = "neon")]
11073#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11074#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 0))]
11075#[cfg_attr(
11076 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11077 assert_instr(dup, N = 0)
11078)]
11079#[rustc_legacy_const_generics(1)]
11080#[cfg_attr(
11081 not(target_arch = "arm"),
11082 stable(feature = "neon_intrinsics", since = "1.59.0")
11083)]
11084#[cfg_attr(
11085 target_arch = "arm",
11086 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11087)]
11088pub fn vdupq_lane_s64<const N: i32>(a: int64x1_t) -> int64x2_t {
11089 static_assert!(N == 0);
11090 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
11091}
11092#[doc = "Set all vector lanes to the same value"]
11093#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_u64)"]
11094#[inline]
11095#[target_feature(enable = "neon")]
11096#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11097#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 0))]
11098#[cfg_attr(
11099 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11100 assert_instr(dup, N = 0)
11101)]
11102#[rustc_legacy_const_generics(1)]
11103#[cfg_attr(
11104 not(target_arch = "arm"),
11105 stable(feature = "neon_intrinsics", since = "1.59.0")
11106)]
11107#[cfg_attr(
11108 target_arch = "arm",
11109 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11110)]
11111pub fn vdupq_lane_u64<const N: i32>(a: uint64x1_t) -> uint64x2_t {
11112 static_assert!(N == 0);
11113 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
11114}
11115#[doc = "Set all vector lanes to the same value"]
11116#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_s64)"]
11117#[inline]
11118#[target_feature(enable = "neon")]
11119#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11120#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
11121#[cfg_attr(
11122 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11123 assert_instr(dup, N = 1)
11124)]
11125#[rustc_legacy_const_generics(1)]
11126#[cfg_attr(
11127 not(target_arch = "arm"),
11128 stable(feature = "neon_intrinsics", since = "1.59.0")
11129)]
11130#[cfg_attr(
11131 target_arch = "arm",
11132 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11133)]
11134pub fn vdupq_laneq_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
11135 static_assert_uimm_bits!(N, 1);
11136 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
11137}
11138#[doc = "Set all vector lanes to the same value"]
11139#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_u64)"]
11140#[inline]
11141#[target_feature(enable = "neon")]
11142#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11143#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
11144#[cfg_attr(
11145 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11146 assert_instr(dup, N = 1)
11147)]
11148#[rustc_legacy_const_generics(1)]
11149#[cfg_attr(
11150 not(target_arch = "arm"),
11151 stable(feature = "neon_intrinsics", since = "1.59.0")
11152)]
11153#[cfg_attr(
11154 target_arch = "arm",
11155 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11156)]
11157pub fn vdupq_laneq_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
11158 static_assert_uimm_bits!(N, 1);
11159 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
11160}
11161#[doc = "Vector bitwise exclusive or (vector)"]
11162#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_s8)"]
11163#[inline]
11164#[target_feature(enable = "neon")]
11165#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11166#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11167#[cfg_attr(
11168 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11169 assert_instr(eor)
11170)]
11171#[cfg_attr(
11172 not(target_arch = "arm"),
11173 stable(feature = "neon_intrinsics", since = "1.59.0")
11174)]
11175#[cfg_attr(
11176 target_arch = "arm",
11177 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11178)]
11179pub fn veor_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
11180 unsafe { simd_xor(a, b) }
11181}
11182#[doc = "Vector bitwise exclusive or (vector)"]
11183#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_s8)"]
11184#[inline]
11185#[target_feature(enable = "neon")]
11186#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11187#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11188#[cfg_attr(
11189 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11190 assert_instr(eor)
11191)]
11192#[cfg_attr(
11193 not(target_arch = "arm"),
11194 stable(feature = "neon_intrinsics", since = "1.59.0")
11195)]
11196#[cfg_attr(
11197 target_arch = "arm",
11198 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11199)]
11200pub fn veorq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
11201 unsafe { simd_xor(a, b) }
11202}
11203#[doc = "Vector bitwise exclusive or (vector)"]
11204#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_s16)"]
11205#[inline]
11206#[target_feature(enable = "neon")]
11207#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11208#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11209#[cfg_attr(
11210 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11211 assert_instr(eor)
11212)]
11213#[cfg_attr(
11214 not(target_arch = "arm"),
11215 stable(feature = "neon_intrinsics", since = "1.59.0")
11216)]
11217#[cfg_attr(
11218 target_arch = "arm",
11219 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11220)]
11221pub fn veor_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
11222 unsafe { simd_xor(a, b) }
11223}
11224#[doc = "Vector bitwise exclusive or (vector)"]
11225#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_s16)"]
11226#[inline]
11227#[target_feature(enable = "neon")]
11228#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11229#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11230#[cfg_attr(
11231 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11232 assert_instr(eor)
11233)]
11234#[cfg_attr(
11235 not(target_arch = "arm"),
11236 stable(feature = "neon_intrinsics", since = "1.59.0")
11237)]
11238#[cfg_attr(
11239 target_arch = "arm",
11240 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11241)]
11242pub fn veorq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
11243 unsafe { simd_xor(a, b) }
11244}
11245#[doc = "Vector bitwise exclusive or (vector)"]
11246#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_s32)"]
11247#[inline]
11248#[target_feature(enable = "neon")]
11249#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11250#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11251#[cfg_attr(
11252 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11253 assert_instr(eor)
11254)]
11255#[cfg_attr(
11256 not(target_arch = "arm"),
11257 stable(feature = "neon_intrinsics", since = "1.59.0")
11258)]
11259#[cfg_attr(
11260 target_arch = "arm",
11261 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11262)]
11263pub fn veor_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
11264 unsafe { simd_xor(a, b) }
11265}
11266#[doc = "Vector bitwise exclusive or (vector)"]
11267#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_s32)"]
11268#[inline]
11269#[target_feature(enable = "neon")]
11270#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11271#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11272#[cfg_attr(
11273 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11274 assert_instr(eor)
11275)]
11276#[cfg_attr(
11277 not(target_arch = "arm"),
11278 stable(feature = "neon_intrinsics", since = "1.59.0")
11279)]
11280#[cfg_attr(
11281 target_arch = "arm",
11282 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11283)]
11284pub fn veorq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
11285 unsafe { simd_xor(a, b) }
11286}
11287#[doc = "Vector bitwise exclusive or (vector)"]
11288#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_s64)"]
11289#[inline]
11290#[target_feature(enable = "neon")]
11291#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11292#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11293#[cfg_attr(
11294 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11295 assert_instr(eor)
11296)]
11297#[cfg_attr(
11298 not(target_arch = "arm"),
11299 stable(feature = "neon_intrinsics", since = "1.59.0")
11300)]
11301#[cfg_attr(
11302 target_arch = "arm",
11303 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11304)]
11305pub fn veor_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
11306 unsafe { simd_xor(a, b) }
11307}
11308#[doc = "Vector bitwise exclusive or (vector)"]
11309#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_s64)"]
11310#[inline]
11311#[target_feature(enable = "neon")]
11312#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11313#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11314#[cfg_attr(
11315 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11316 assert_instr(eor)
11317)]
11318#[cfg_attr(
11319 not(target_arch = "arm"),
11320 stable(feature = "neon_intrinsics", since = "1.59.0")
11321)]
11322#[cfg_attr(
11323 target_arch = "arm",
11324 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11325)]
11326pub fn veorq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
11327 unsafe { simd_xor(a, b) }
11328}
11329#[doc = "Vector bitwise exclusive or (vector)"]
11330#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_u8)"]
11331#[inline]
11332#[target_feature(enable = "neon")]
11333#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11334#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11335#[cfg_attr(
11336 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11337 assert_instr(eor)
11338)]
11339#[cfg_attr(
11340 not(target_arch = "arm"),
11341 stable(feature = "neon_intrinsics", since = "1.59.0")
11342)]
11343#[cfg_attr(
11344 target_arch = "arm",
11345 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11346)]
11347pub fn veor_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
11348 unsafe { simd_xor(a, b) }
11349}
11350#[doc = "Vector bitwise exclusive or (vector)"]
11351#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_u8)"]
11352#[inline]
11353#[target_feature(enable = "neon")]
11354#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11355#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11356#[cfg_attr(
11357 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11358 assert_instr(eor)
11359)]
11360#[cfg_attr(
11361 not(target_arch = "arm"),
11362 stable(feature = "neon_intrinsics", since = "1.59.0")
11363)]
11364#[cfg_attr(
11365 target_arch = "arm",
11366 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11367)]
11368pub fn veorq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
11369 unsafe { simd_xor(a, b) }
11370}
11371#[doc = "Vector bitwise exclusive or (vector)"]
11372#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_u16)"]
11373#[inline]
11374#[target_feature(enable = "neon")]
11375#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11376#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11377#[cfg_attr(
11378 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11379 assert_instr(eor)
11380)]
11381#[cfg_attr(
11382 not(target_arch = "arm"),
11383 stable(feature = "neon_intrinsics", since = "1.59.0")
11384)]
11385#[cfg_attr(
11386 target_arch = "arm",
11387 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11388)]
11389pub fn veor_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
11390 unsafe { simd_xor(a, b) }
11391}
11392#[doc = "Vector bitwise exclusive or (vector)"]
11393#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_u16)"]
11394#[inline]
11395#[target_feature(enable = "neon")]
11396#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11397#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11398#[cfg_attr(
11399 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11400 assert_instr(eor)
11401)]
11402#[cfg_attr(
11403 not(target_arch = "arm"),
11404 stable(feature = "neon_intrinsics", since = "1.59.0")
11405)]
11406#[cfg_attr(
11407 target_arch = "arm",
11408 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11409)]
11410pub fn veorq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
11411 unsafe { simd_xor(a, b) }
11412}
11413#[doc = "Vector bitwise exclusive or (vector)"]
11414#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_u32)"]
11415#[inline]
11416#[target_feature(enable = "neon")]
11417#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11418#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11419#[cfg_attr(
11420 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11421 assert_instr(eor)
11422)]
11423#[cfg_attr(
11424 not(target_arch = "arm"),
11425 stable(feature = "neon_intrinsics", since = "1.59.0")
11426)]
11427#[cfg_attr(
11428 target_arch = "arm",
11429 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11430)]
11431pub fn veor_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
11432 unsafe { simd_xor(a, b) }
11433}
11434#[doc = "Vector bitwise exclusive or (vector)"]
11435#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_u32)"]
11436#[inline]
11437#[target_feature(enable = "neon")]
11438#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11439#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11440#[cfg_attr(
11441 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11442 assert_instr(eor)
11443)]
11444#[cfg_attr(
11445 not(target_arch = "arm"),
11446 stable(feature = "neon_intrinsics", since = "1.59.0")
11447)]
11448#[cfg_attr(
11449 target_arch = "arm",
11450 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11451)]
11452pub fn veorq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
11453 unsafe { simd_xor(a, b) }
11454}
11455#[doc = "Vector bitwise exclusive or (vector)"]
11456#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_u64)"]
11457#[inline]
11458#[target_feature(enable = "neon")]
11459#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11460#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11461#[cfg_attr(
11462 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11463 assert_instr(eor)
11464)]
11465#[cfg_attr(
11466 not(target_arch = "arm"),
11467 stable(feature = "neon_intrinsics", since = "1.59.0")
11468)]
11469#[cfg_attr(
11470 target_arch = "arm",
11471 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11472)]
11473pub fn veor_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
11474 unsafe { simd_xor(a, b) }
11475}
11476#[doc = "Vector bitwise exclusive or (vector)"]
11477#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_u64)"]
11478#[inline]
11479#[target_feature(enable = "neon")]
11480#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11481#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11482#[cfg_attr(
11483 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11484 assert_instr(eor)
11485)]
11486#[cfg_attr(
11487 not(target_arch = "arm"),
11488 stable(feature = "neon_intrinsics", since = "1.59.0")
11489)]
11490#[cfg_attr(
11491 target_arch = "arm",
11492 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11493)]
11494pub fn veorq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
11495 unsafe { simd_xor(a, b) }
11496}
11497#[doc = "Extract vector from pair of vectors"]
11498#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_f16)"]
11499#[inline]
11500#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11501#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
11502#[cfg_attr(
11503 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11504 assert_instr(ext, N = 3)
11505)]
11506#[rustc_legacy_const_generics(2)]
11507#[target_feature(enable = "neon,fp16")]
11508#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
11509#[cfg(not(target_arch = "arm64ec"))]
11510pub fn vext_f16<const N: i32>(a: float16x4_t, b: float16x4_t) -> float16x4_t {
11511 static_assert_uimm_bits!(N, 2);
11512 unsafe {
11513 match N & 0b11 {
11514 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
11515 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
11516 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
11517 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
11518 _ => unreachable_unchecked(),
11519 }
11520 }
11521}
11522#[doc = "Extract vector from pair of vectors"]
11523#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_f32)"]
11524#[inline]
11525#[target_feature(enable = "neon")]
11526#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11527#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 1))]
11528#[cfg_attr(
11529 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11530 assert_instr(ext, N = 1)
11531)]
11532#[rustc_legacy_const_generics(2)]
11533#[cfg_attr(
11534 not(target_arch = "arm"),
11535 stable(feature = "neon_intrinsics", since = "1.59.0")
11536)]
11537#[cfg_attr(
11538 target_arch = "arm",
11539 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11540)]
11541pub fn vext_f32<const N: i32>(a: float32x2_t, b: float32x2_t) -> float32x2_t {
11542 static_assert_uimm_bits!(N, 1);
11543 unsafe {
11544 match N & 0b1 {
11545 0 => simd_shuffle!(a, b, [0, 1]),
11546 1 => simd_shuffle!(a, b, [1, 2]),
11547 _ => unreachable_unchecked(),
11548 }
11549 }
11550}
11551#[doc = "Extract vector from pair of vectors"]
11552#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_s32)"]
11553#[inline]
11554#[target_feature(enable = "neon")]
11555#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11556#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 1))]
11557#[cfg_attr(
11558 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11559 assert_instr(ext, N = 1)
11560)]
11561#[rustc_legacy_const_generics(2)]
11562#[cfg_attr(
11563 not(target_arch = "arm"),
11564 stable(feature = "neon_intrinsics", since = "1.59.0")
11565)]
11566#[cfg_attr(
11567 target_arch = "arm",
11568 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11569)]
11570pub fn vext_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
11571 static_assert_uimm_bits!(N, 1);
11572 unsafe {
11573 match N & 0b1 {
11574 0 => simd_shuffle!(a, b, [0, 1]),
11575 1 => simd_shuffle!(a, b, [1, 2]),
11576 _ => unreachable_unchecked(),
11577 }
11578 }
11579}
11580#[doc = "Extract vector from pair of vectors"]
11581#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_u32)"]
11582#[inline]
11583#[target_feature(enable = "neon")]
11584#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11585#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 1))]
11586#[cfg_attr(
11587 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11588 assert_instr(ext, N = 1)
11589)]
11590#[rustc_legacy_const_generics(2)]
11591#[cfg_attr(
11592 not(target_arch = "arm"),
11593 stable(feature = "neon_intrinsics", since = "1.59.0")
11594)]
11595#[cfg_attr(
11596 target_arch = "arm",
11597 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11598)]
11599pub fn vext_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
11600 static_assert_uimm_bits!(N, 1);
11601 unsafe {
11602 match N & 0b1 {
11603 0 => simd_shuffle!(a, b, [0, 1]),
11604 1 => simd_shuffle!(a, b, [1, 2]),
11605 _ => unreachable_unchecked(),
11606 }
11607 }
11608}
11609#[doc = "Extract vector from pair of vectors"]
11610#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_s64)"]
11611#[doc = "## Safety"]
11612#[doc = " * Neon instrinsic unsafe"]
11613#[inline]
11614#[target_feature(enable = "neon")]
11615#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11616#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, N = 0))]
11617#[cfg_attr(
11618 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11619 assert_instr(nop, N = 0)
11620)]
11621#[rustc_legacy_const_generics(2)]
11622#[cfg_attr(
11623 not(target_arch = "arm"),
11624 stable(feature = "neon_intrinsics", since = "1.59.0")
11625)]
11626#[cfg_attr(
11627 target_arch = "arm",
11628 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11629)]
11630pub unsafe fn vext_s64<const N: i32>(a: int64x1_t, _b: int64x1_t) -> int64x1_t {
11631 static_assert!(N == 0);
11632 a
11633}
11634#[doc = "Extract vector from pair of vectors"]
11635#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_u64)"]
11636#[doc = "## Safety"]
11637#[doc = " * Neon instrinsic unsafe"]
11638#[inline]
11639#[target_feature(enable = "neon")]
11640#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11641#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, N = 0))]
11642#[cfg_attr(
11643 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11644 assert_instr(nop, N = 0)
11645)]
11646#[rustc_legacy_const_generics(2)]
11647#[cfg_attr(
11648 not(target_arch = "arm"),
11649 stable(feature = "neon_intrinsics", since = "1.59.0")
11650)]
11651#[cfg_attr(
11652 target_arch = "arm",
11653 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11654)]
11655pub unsafe fn vext_u64<const N: i32>(a: uint64x1_t, _b: uint64x1_t) -> uint64x1_t {
11656 static_assert!(N == 0);
11657 a
11658}
11659#[doc = "Extract vector from pair of vectors"]
11660#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_s8)"]
11661#[inline]
11662#[target_feature(enable = "neon")]
11663#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11664#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
11665#[cfg_attr(
11666 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11667 assert_instr(ext, N = 7)
11668)]
11669#[rustc_legacy_const_generics(2)]
11670#[cfg_attr(
11671 not(target_arch = "arm"),
11672 stable(feature = "neon_intrinsics", since = "1.59.0")
11673)]
11674#[cfg_attr(
11675 target_arch = "arm",
11676 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11677)]
11678pub fn vext_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
11679 static_assert_uimm_bits!(N, 3);
11680 unsafe {
11681 match N & 0b111 {
11682 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
11683 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
11684 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
11685 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
11686 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
11687 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
11688 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
11689 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
11690 _ => unreachable_unchecked(),
11691 }
11692 }
11693}
11694#[doc = "Extract vector from pair of vectors"]
11695#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_s16)"]
11696#[inline]
11697#[target_feature(enable = "neon")]
11698#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11699#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
11700#[cfg_attr(
11701 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11702 assert_instr(ext, N = 7)
11703)]
11704#[rustc_legacy_const_generics(2)]
11705#[cfg_attr(
11706 not(target_arch = "arm"),
11707 stable(feature = "neon_intrinsics", since = "1.59.0")
11708)]
11709#[cfg_attr(
11710 target_arch = "arm",
11711 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11712)]
11713pub fn vextq_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
11714 static_assert_uimm_bits!(N, 3);
11715 unsafe {
11716 match N & 0b111 {
11717 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
11718 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
11719 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
11720 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
11721 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
11722 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
11723 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
11724 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
11725 _ => unreachable_unchecked(),
11726 }
11727 }
11728}
11729#[doc = "Extract vector from pair of vectors"]
11730#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_u8)"]
11731#[inline]
11732#[target_feature(enable = "neon")]
11733#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11734#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
11735#[cfg_attr(
11736 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11737 assert_instr(ext, N = 7)
11738)]
11739#[rustc_legacy_const_generics(2)]
11740#[cfg_attr(
11741 not(target_arch = "arm"),
11742 stable(feature = "neon_intrinsics", since = "1.59.0")
11743)]
11744#[cfg_attr(
11745 target_arch = "arm",
11746 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11747)]
11748pub fn vext_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
11749 static_assert_uimm_bits!(N, 3);
11750 unsafe {
11751 match N & 0b111 {
11752 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
11753 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
11754 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
11755 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
11756 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
11757 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
11758 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
11759 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
11760 _ => unreachable_unchecked(),
11761 }
11762 }
11763}
11764#[doc = "Extract vector from pair of vectors"]
11765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_u16)"]
11766#[inline]
11767#[target_feature(enable = "neon")]
11768#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11769#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
11770#[cfg_attr(
11771 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11772 assert_instr(ext, N = 7)
11773)]
11774#[rustc_legacy_const_generics(2)]
11775#[cfg_attr(
11776 not(target_arch = "arm"),
11777 stable(feature = "neon_intrinsics", since = "1.59.0")
11778)]
11779#[cfg_attr(
11780 target_arch = "arm",
11781 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11782)]
11783pub fn vextq_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
11784 static_assert_uimm_bits!(N, 3);
11785 unsafe {
11786 match N & 0b111 {
11787 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
11788 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
11789 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
11790 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
11791 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
11792 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
11793 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
11794 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
11795 _ => unreachable_unchecked(),
11796 }
11797 }
11798}
11799#[doc = "Extract vector from pair of vectors"]
11800#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_p8)"]
11801#[inline]
11802#[target_feature(enable = "neon")]
11803#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11804#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
11805#[cfg_attr(
11806 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11807 assert_instr(ext, N = 7)
11808)]
11809#[rustc_legacy_const_generics(2)]
11810#[cfg_attr(
11811 not(target_arch = "arm"),
11812 stable(feature = "neon_intrinsics", since = "1.59.0")
11813)]
11814#[cfg_attr(
11815 target_arch = "arm",
11816 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11817)]
11818pub fn vext_p8<const N: i32>(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t {
11819 static_assert_uimm_bits!(N, 3);
11820 unsafe {
11821 match N & 0b111 {
11822 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
11823 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
11824 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
11825 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
11826 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
11827 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
11828 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
11829 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
11830 _ => unreachable_unchecked(),
11831 }
11832 }
11833}
11834#[doc = "Extract vector from pair of vectors"]
11835#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_p16)"]
11836#[inline]
11837#[target_feature(enable = "neon")]
11838#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11839#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
11840#[cfg_attr(
11841 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11842 assert_instr(ext, N = 7)
11843)]
11844#[rustc_legacy_const_generics(2)]
11845#[cfg_attr(
11846 not(target_arch = "arm"),
11847 stable(feature = "neon_intrinsics", since = "1.59.0")
11848)]
11849#[cfg_attr(
11850 target_arch = "arm",
11851 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11852)]
11853pub fn vextq_p16<const N: i32>(a: poly16x8_t, b: poly16x8_t) -> poly16x8_t {
11854 static_assert_uimm_bits!(N, 3);
11855 unsafe {
11856 match N & 0b111 {
11857 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
11858 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
11859 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
11860 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
11861 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
11862 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
11863 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
11864 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
11865 _ => unreachable_unchecked(),
11866 }
11867 }
11868}
11869#[doc = "Extract vector from pair of vectors"]
11870#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_f16)"]
11871#[inline]
11872#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11873#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
11874#[cfg_attr(
11875 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11876 assert_instr(ext, N = 7)
11877)]
11878#[rustc_legacy_const_generics(2)]
11879#[target_feature(enable = "neon,fp16")]
11880#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
11881#[cfg(not(target_arch = "arm64ec"))]
11882pub fn vextq_f16<const N: i32>(a: float16x8_t, b: float16x8_t) -> float16x8_t {
11883 static_assert_uimm_bits!(N, 3);
11884 unsafe {
11885 match N & 0b111 {
11886 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
11887 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
11888 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
11889 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
11890 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
11891 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
11892 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
11893 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
11894 _ => unreachable_unchecked(),
11895 }
11896 }
11897}
11898#[doc = "Extract vector from pair of vectors"]
11899#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_f32)"]
11900#[inline]
11901#[target_feature(enable = "neon")]
11902#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11903#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
11904#[cfg_attr(
11905 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11906 assert_instr(ext, N = 3)
11907)]
11908#[rustc_legacy_const_generics(2)]
11909#[cfg_attr(
11910 not(target_arch = "arm"),
11911 stable(feature = "neon_intrinsics", since = "1.59.0")
11912)]
11913#[cfg_attr(
11914 target_arch = "arm",
11915 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11916)]
11917pub fn vextq_f32<const N: i32>(a: float32x4_t, b: float32x4_t) -> float32x4_t {
11918 static_assert_uimm_bits!(N, 2);
11919 unsafe {
11920 match N & 0b11 {
11921 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
11922 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
11923 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
11924 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
11925 _ => unreachable_unchecked(),
11926 }
11927 }
11928}
11929#[doc = "Extract vector from pair of vectors"]
11930#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_s16)"]
11931#[inline]
11932#[target_feature(enable = "neon")]
11933#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11934#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
11935#[cfg_attr(
11936 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11937 assert_instr(ext, N = 3)
11938)]
11939#[rustc_legacy_const_generics(2)]
11940#[cfg_attr(
11941 not(target_arch = "arm"),
11942 stable(feature = "neon_intrinsics", since = "1.59.0")
11943)]
11944#[cfg_attr(
11945 target_arch = "arm",
11946 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11947)]
11948pub fn vext_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
11949 static_assert_uimm_bits!(N, 2);
11950 unsafe {
11951 match N & 0b11 {
11952 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
11953 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
11954 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
11955 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
11956 _ => unreachable_unchecked(),
11957 }
11958 }
11959}
11960#[doc = "Extract vector from pair of vectors"]
11961#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_s32)"]
11962#[inline]
11963#[target_feature(enable = "neon")]
11964#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11965#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
11966#[cfg_attr(
11967 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11968 assert_instr(ext, N = 3)
11969)]
11970#[rustc_legacy_const_generics(2)]
11971#[cfg_attr(
11972 not(target_arch = "arm"),
11973 stable(feature = "neon_intrinsics", since = "1.59.0")
11974)]
11975#[cfg_attr(
11976 target_arch = "arm",
11977 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11978)]
11979pub fn vextq_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
11980 static_assert_uimm_bits!(N, 2);
11981 unsafe {
11982 match N & 0b11 {
11983 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
11984 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
11985 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
11986 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
11987 _ => unreachable_unchecked(),
11988 }
11989 }
11990}
11991#[doc = "Extract vector from pair of vectors"]
11992#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_u16)"]
11993#[inline]
11994#[target_feature(enable = "neon")]
11995#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11996#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
11997#[cfg_attr(
11998 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11999 assert_instr(ext, N = 3)
12000)]
12001#[rustc_legacy_const_generics(2)]
12002#[cfg_attr(
12003 not(target_arch = "arm"),
12004 stable(feature = "neon_intrinsics", since = "1.59.0")
12005)]
12006#[cfg_attr(
12007 target_arch = "arm",
12008 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12009)]
12010pub fn vext_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
12011 static_assert_uimm_bits!(N, 2);
12012 unsafe {
12013 match N & 0b11 {
12014 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12015 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12016 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12017 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12018 _ => unreachable_unchecked(),
12019 }
12020 }
12021}
12022#[doc = "Extract vector from pair of vectors"]
12023#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_u32)"]
12024#[inline]
12025#[target_feature(enable = "neon")]
12026#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12027#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12028#[cfg_attr(
12029 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12030 assert_instr(ext, N = 3)
12031)]
12032#[rustc_legacy_const_generics(2)]
12033#[cfg_attr(
12034 not(target_arch = "arm"),
12035 stable(feature = "neon_intrinsics", since = "1.59.0")
12036)]
12037#[cfg_attr(
12038 target_arch = "arm",
12039 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12040)]
12041pub fn vextq_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
12042 static_assert_uimm_bits!(N, 2);
12043 unsafe {
12044 match N & 0b11 {
12045 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12046 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12047 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12048 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12049 _ => unreachable_unchecked(),
12050 }
12051 }
12052}
12053#[doc = "Extract vector from pair of vectors"]
12054#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_p16)"]
12055#[inline]
12056#[target_feature(enable = "neon")]
12057#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12058#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12059#[cfg_attr(
12060 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12061 assert_instr(ext, N = 3)
12062)]
12063#[rustc_legacy_const_generics(2)]
12064#[cfg_attr(
12065 not(target_arch = "arm"),
12066 stable(feature = "neon_intrinsics", since = "1.59.0")
12067)]
12068#[cfg_attr(
12069 target_arch = "arm",
12070 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12071)]
12072pub fn vext_p16<const N: i32>(a: poly16x4_t, b: poly16x4_t) -> poly16x4_t {
12073 static_assert_uimm_bits!(N, 2);
12074 unsafe {
12075 match N & 0b11 {
12076 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12077 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12078 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12079 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12080 _ => unreachable_unchecked(),
12081 }
12082 }
12083}
12084#[doc = "Extract vector from pair of vectors"]
12085#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_s64)"]
12086#[inline]
12087#[target_feature(enable = "neon")]
12088#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12089#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
12090#[cfg_attr(
12091 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12092 assert_instr(ext, N = 1)
12093)]
12094#[rustc_legacy_const_generics(2)]
12095#[cfg_attr(
12096 not(target_arch = "arm"),
12097 stable(feature = "neon_intrinsics", since = "1.59.0")
12098)]
12099#[cfg_attr(
12100 target_arch = "arm",
12101 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12102)]
12103pub fn vextq_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
12104 static_assert_uimm_bits!(N, 1);
12105 unsafe {
12106 match N & 0b1 {
12107 0 => simd_shuffle!(a, b, [0, 1]),
12108 1 => simd_shuffle!(a, b, [1, 2]),
12109 _ => unreachable_unchecked(),
12110 }
12111 }
12112}
12113#[doc = "Extract vector from pair of vectors"]
12114#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_u64)"]
12115#[inline]
12116#[target_feature(enable = "neon")]
12117#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12118#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
12119#[cfg_attr(
12120 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12121 assert_instr(ext, N = 1)
12122)]
12123#[rustc_legacy_const_generics(2)]
12124#[cfg_attr(
12125 not(target_arch = "arm"),
12126 stable(feature = "neon_intrinsics", since = "1.59.0")
12127)]
12128#[cfg_attr(
12129 target_arch = "arm",
12130 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12131)]
12132pub fn vextq_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
12133 static_assert_uimm_bits!(N, 1);
12134 unsafe {
12135 match N & 0b1 {
12136 0 => simd_shuffle!(a, b, [0, 1]),
12137 1 => simd_shuffle!(a, b, [1, 2]),
12138 _ => unreachable_unchecked(),
12139 }
12140 }
12141}
12142#[doc = "Extract vector from pair of vectors"]
12143#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_s8)"]
12144#[inline]
12145#[target_feature(enable = "neon")]
12146#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12147#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 15))]
12148#[cfg_attr(
12149 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12150 assert_instr(ext, N = 15)
12151)]
12152#[rustc_legacy_const_generics(2)]
12153#[cfg_attr(
12154 not(target_arch = "arm"),
12155 stable(feature = "neon_intrinsics", since = "1.59.0")
12156)]
12157#[cfg_attr(
12158 target_arch = "arm",
12159 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12160)]
12161pub fn vextq_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
12162 static_assert_uimm_bits!(N, 4);
12163 unsafe {
12164 match N & 0b1111 {
12165 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]),
12166 1 => simd_shuffle!(
12167 a,
12168 b,
12169 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
12170 ),
12171 2 => simd_shuffle!(
12172 a,
12173 b,
12174 [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
12175 ),
12176 3 => simd_shuffle!(
12177 a,
12178 b,
12179 [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
12180 ),
12181 4 => simd_shuffle!(
12182 a,
12183 b,
12184 [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
12185 ),
12186 5 => simd_shuffle!(
12187 a,
12188 b,
12189 [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
12190 ),
12191 6 => simd_shuffle!(
12192 a,
12193 b,
12194 [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
12195 ),
12196 7 => simd_shuffle!(
12197 a,
12198 b,
12199 [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
12200 ),
12201 8 => simd_shuffle!(
12202 a,
12203 b,
12204 [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
12205 ),
12206 9 => simd_shuffle!(
12207 a,
12208 b,
12209 [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
12210 ),
12211 10 => simd_shuffle!(
12212 a,
12213 b,
12214 [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
12215 ),
12216 11 => simd_shuffle!(
12217 a,
12218 b,
12219 [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
12220 ),
12221 12 => simd_shuffle!(
12222 a,
12223 b,
12224 [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
12225 ),
12226 13 => simd_shuffle!(
12227 a,
12228 b,
12229 [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]
12230 ),
12231 14 => simd_shuffle!(
12232 a,
12233 b,
12234 [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
12235 ),
12236 15 => simd_shuffle!(
12237 a,
12238 b,
12239 [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
12240 ),
12241 _ => unreachable_unchecked(),
12242 }
12243 }
12244}
12245#[doc = "Extract vector from pair of vectors"]
12246#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_u8)"]
12247#[inline]
12248#[target_feature(enable = "neon")]
12249#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12250#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 15))]
12251#[cfg_attr(
12252 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12253 assert_instr(ext, N = 15)
12254)]
12255#[rustc_legacy_const_generics(2)]
12256#[cfg_attr(
12257 not(target_arch = "arm"),
12258 stable(feature = "neon_intrinsics", since = "1.59.0")
12259)]
12260#[cfg_attr(
12261 target_arch = "arm",
12262 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12263)]
12264pub fn vextq_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
12265 static_assert_uimm_bits!(N, 4);
12266 unsafe {
12267 match N & 0b1111 {
12268 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]),
12269 1 => simd_shuffle!(
12270 a,
12271 b,
12272 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
12273 ),
12274 2 => simd_shuffle!(
12275 a,
12276 b,
12277 [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
12278 ),
12279 3 => simd_shuffle!(
12280 a,
12281 b,
12282 [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
12283 ),
12284 4 => simd_shuffle!(
12285 a,
12286 b,
12287 [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
12288 ),
12289 5 => simd_shuffle!(
12290 a,
12291 b,
12292 [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
12293 ),
12294 6 => simd_shuffle!(
12295 a,
12296 b,
12297 [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
12298 ),
12299 7 => simd_shuffle!(
12300 a,
12301 b,
12302 [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
12303 ),
12304 8 => simd_shuffle!(
12305 a,
12306 b,
12307 [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
12308 ),
12309 9 => simd_shuffle!(
12310 a,
12311 b,
12312 [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
12313 ),
12314 10 => simd_shuffle!(
12315 a,
12316 b,
12317 [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
12318 ),
12319 11 => simd_shuffle!(
12320 a,
12321 b,
12322 [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
12323 ),
12324 12 => simd_shuffle!(
12325 a,
12326 b,
12327 [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
12328 ),
12329 13 => simd_shuffle!(
12330 a,
12331 b,
12332 [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]
12333 ),
12334 14 => simd_shuffle!(
12335 a,
12336 b,
12337 [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
12338 ),
12339 15 => simd_shuffle!(
12340 a,
12341 b,
12342 [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
12343 ),
12344 _ => unreachable_unchecked(),
12345 }
12346 }
12347}
12348#[doc = "Extract vector from pair of vectors"]
12349#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_p8)"]
12350#[inline]
12351#[target_feature(enable = "neon")]
12352#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12353#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 15))]
12354#[cfg_attr(
12355 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12356 assert_instr(ext, N = 15)
12357)]
12358#[rustc_legacy_const_generics(2)]
12359#[cfg_attr(
12360 not(target_arch = "arm"),
12361 stable(feature = "neon_intrinsics", since = "1.59.0")
12362)]
12363#[cfg_attr(
12364 target_arch = "arm",
12365 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12366)]
12367pub fn vextq_p8<const N: i32>(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t {
12368 static_assert_uimm_bits!(N, 4);
12369 unsafe {
12370 match N & 0b1111 {
12371 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]),
12372 1 => simd_shuffle!(
12373 a,
12374 b,
12375 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
12376 ),
12377 2 => simd_shuffle!(
12378 a,
12379 b,
12380 [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
12381 ),
12382 3 => simd_shuffle!(
12383 a,
12384 b,
12385 [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
12386 ),
12387 4 => simd_shuffle!(
12388 a,
12389 b,
12390 [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
12391 ),
12392 5 => simd_shuffle!(
12393 a,
12394 b,
12395 [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
12396 ),
12397 6 => simd_shuffle!(
12398 a,
12399 b,
12400 [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
12401 ),
12402 7 => simd_shuffle!(
12403 a,
12404 b,
12405 [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
12406 ),
12407 8 => simd_shuffle!(
12408 a,
12409 b,
12410 [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
12411 ),
12412 9 => simd_shuffle!(
12413 a,
12414 b,
12415 [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
12416 ),
12417 10 => simd_shuffle!(
12418 a,
12419 b,
12420 [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
12421 ),
12422 11 => simd_shuffle!(
12423 a,
12424 b,
12425 [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
12426 ),
12427 12 => simd_shuffle!(
12428 a,
12429 b,
12430 [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
12431 ),
12432 13 => simd_shuffle!(
12433 a,
12434 b,
12435 [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]
12436 ),
12437 14 => simd_shuffle!(
12438 a,
12439 b,
12440 [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
12441 ),
12442 15 => simd_shuffle!(
12443 a,
12444 b,
12445 [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
12446 ),
12447 _ => unreachable_unchecked(),
12448 }
12449 }
12450}
12451#[doc = "Floating-point fused Multiply-Add to accumulator (vector)"]
12452#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfma_f16)"]
12453#[inline]
12454#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
12455#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
12456#[cfg_attr(
12457 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12458 assert_instr(fmla)
12459)]
12460#[target_feature(enable = "neon,fp16")]
12461#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
12462#[cfg(not(target_arch = "arm64ec"))]
12463pub fn vfma_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t) -> float16x4_t {
12464 unsafe { simd_fma(b, c, a) }
12465}
12466#[doc = "Floating-point fused Multiply-Add to accumulator (vector)"]
12467#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmaq_f16)"]
12468#[inline]
12469#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
12470#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
12471#[cfg_attr(
12472 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12473 assert_instr(fmla)
12474)]
12475#[target_feature(enable = "neon,fp16")]
12476#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
12477#[cfg(not(target_arch = "arm64ec"))]
12478pub fn vfmaq_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t) -> float16x8_t {
12479 unsafe { simd_fma(b, c, a) }
12480}
12481#[doc = "Floating-point fused Multiply-Add to accumulator(vector)"]
12482#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfma_f32)"]
12483#[inline]
12484#[target_feature(enable = "neon")]
12485#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
12486#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
12487#[cfg_attr(
12488 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12489 assert_instr(fmla)
12490)]
12491#[cfg_attr(
12492 not(target_arch = "arm"),
12493 stable(feature = "neon_intrinsics", since = "1.59.0")
12494)]
12495#[cfg_attr(
12496 target_arch = "arm",
12497 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12498)]
12499pub fn vfma_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t) -> float32x2_t {
12500 unsafe { simd_fma(b, c, a) }
12501}
12502#[doc = "Floating-point fused Multiply-Add to accumulator(vector)"]
12503#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmaq_f32)"]
12504#[inline]
12505#[target_feature(enable = "neon")]
12506#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
12507#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
12508#[cfg_attr(
12509 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12510 assert_instr(fmla)
12511)]
12512#[cfg_attr(
12513 not(target_arch = "arm"),
12514 stable(feature = "neon_intrinsics", since = "1.59.0")
12515)]
12516#[cfg_attr(
12517 target_arch = "arm",
12518 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12519)]
12520pub fn vfmaq_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t) -> float32x4_t {
12521 unsafe { simd_fma(b, c, a) }
12522}
12523#[doc = "Floating-point fused Multiply-Add to accumulator(vector)"]
12524#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfma_n_f32)"]
12525#[inline]
12526#[target_feature(enable = "neon")]
12527#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
12528#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
12529#[cfg_attr(
12530 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12531 assert_instr(fmla)
12532)]
12533#[cfg_attr(
12534 not(target_arch = "arm"),
12535 stable(feature = "neon_intrinsics", since = "1.59.0")
12536)]
12537#[cfg_attr(
12538 target_arch = "arm",
12539 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12540)]
12541pub fn vfma_n_f32(a: float32x2_t, b: float32x2_t, c: f32) -> float32x2_t {
12542 vfma_f32(a, b, vdup_n_f32_vfp4(c))
12543}
12544#[doc = "Floating-point fused Multiply-Add to accumulator(vector)"]
12545#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmaq_n_f32)"]
12546#[inline]
12547#[target_feature(enable = "neon")]
12548#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
12549#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
12550#[cfg_attr(
12551 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12552 assert_instr(fmla)
12553)]
12554#[cfg_attr(
12555 not(target_arch = "arm"),
12556 stable(feature = "neon_intrinsics", since = "1.59.0")
12557)]
12558#[cfg_attr(
12559 target_arch = "arm",
12560 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12561)]
12562pub fn vfmaq_n_f32(a: float32x4_t, b: float32x4_t, c: f32) -> float32x4_t {
12563 vfmaq_f32(a, b, vdupq_n_f32_vfp4(c))
12564}
12565#[doc = "Floating-point fused multiply-subtract from accumulator"]
12566#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfms_f16)"]
12567#[inline]
12568#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
12569#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
12570#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
12571#[cfg_attr(
12572 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12573 assert_instr(fmls)
12574)]
12575#[target_feature(enable = "neon,fp16")]
12576#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
12577#[cfg(not(target_arch = "arm64ec"))]
12578pub fn vfms_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t) -> float16x4_t {
12579 unsafe {
12580 let b: float16x4_t = simd_neg(b);
12581 vfma_f16(a, b, c)
12582 }
12583}
12584#[doc = "Floating-point fused multiply-subtract from accumulator"]
12585#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmsq_f16)"]
12586#[inline]
12587#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
12588#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
12589#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
12590#[cfg_attr(
12591 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12592 assert_instr(fmls)
12593)]
12594#[target_feature(enable = "neon,fp16")]
12595#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
12596#[cfg(not(target_arch = "arm64ec"))]
12597pub fn vfmsq_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t) -> float16x8_t {
12598 unsafe {
12599 let b: float16x8_t = simd_neg(b);
12600 vfmaq_f16(a, b, c)
12601 }
12602}
12603#[doc = "Floating-point fused multiply-subtract from accumulator"]
12604#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfms_f32)"]
12605#[inline]
12606#[target_feature(enable = "neon")]
12607#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
12608#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfms))]
12609#[cfg_attr(
12610 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12611 assert_instr(fmls)
12612)]
12613#[cfg_attr(
12614 not(target_arch = "arm"),
12615 stable(feature = "neon_intrinsics", since = "1.59.0")
12616)]
12617#[cfg_attr(
12618 target_arch = "arm",
12619 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12620)]
12621pub fn vfms_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t) -> float32x2_t {
12622 unsafe {
12623 let b: float32x2_t = simd_neg(b);
12624 vfma_f32(a, b, c)
12625 }
12626}
12627#[doc = "Floating-point fused multiply-subtract from accumulator"]
12628#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmsq_f32)"]
12629#[inline]
12630#[target_feature(enable = "neon")]
12631#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
12632#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfms))]
12633#[cfg_attr(
12634 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12635 assert_instr(fmls)
12636)]
12637#[cfg_attr(
12638 not(target_arch = "arm"),
12639 stable(feature = "neon_intrinsics", since = "1.59.0")
12640)]
12641#[cfg_attr(
12642 target_arch = "arm",
12643 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12644)]
12645pub fn vfmsq_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t) -> float32x4_t {
12646 unsafe {
12647 let b: float32x4_t = simd_neg(b);
12648 vfmaq_f32(a, b, c)
12649 }
12650}
12651#[doc = "Floating-point fused Multiply-subtract to accumulator(vector)"]
12652#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfms_n_f32)"]
12653#[inline]
12654#[target_feature(enable = "neon")]
12655#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
12656#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfms))]
12657#[cfg_attr(
12658 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12659 assert_instr(fmls)
12660)]
12661#[cfg_attr(
12662 not(target_arch = "arm"),
12663 stable(feature = "neon_intrinsics", since = "1.59.0")
12664)]
12665#[cfg_attr(
12666 target_arch = "arm",
12667 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12668)]
12669pub fn vfms_n_f32(a: float32x2_t, b: float32x2_t, c: f32) -> float32x2_t {
12670 vfms_f32(a, b, vdup_n_f32_vfp4(c))
12671}
12672#[doc = "Floating-point fused Multiply-subtract to accumulator(vector)"]
12673#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmsq_n_f32)"]
12674#[inline]
12675#[target_feature(enable = "neon")]
12676#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
12677#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfms))]
12678#[cfg_attr(
12679 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12680 assert_instr(fmls)
12681)]
12682#[cfg_attr(
12683 not(target_arch = "arm"),
12684 stable(feature = "neon_intrinsics", since = "1.59.0")
12685)]
12686#[cfg_attr(
12687 target_arch = "arm",
12688 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12689)]
12690pub fn vfmsq_n_f32(a: float32x4_t, b: float32x4_t, c: f32) -> float32x4_t {
12691 vfmsq_f32(a, b, vdupq_n_f32_vfp4(c))
12692}
12693#[doc = "Duplicate vector element to vector"]
12694#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_f16)"]
12695#[inline]
12696#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12697#[target_feature(enable = "neon,fp16")]
12698#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
12699#[cfg(not(target_arch = "arm64ec"))]
12700#[cfg_attr(test, assert_instr(nop))]
12701pub fn vget_high_f16(a: float16x8_t) -> float16x4_t {
12702 unsafe { simd_shuffle!(a, a, [4, 5, 6, 7]) }
12703}
12704#[doc = "Duplicate vector element to vector"]
12705#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_f16)"]
12706#[inline]
12707#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12708#[target_feature(enable = "neon,fp16")]
12709#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
12710#[cfg(not(target_arch = "arm64ec"))]
12711#[cfg_attr(test, assert_instr(nop))]
12712pub fn vget_low_f16(a: float16x8_t) -> float16x4_t {
12713 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3]) }
12714}
12715#[doc = "Duplicate vector element to vector or scalar"]
12716#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_f32)"]
12717#[inline]
12718#[target_feature(enable = "neon")]
12719#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12720#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
12721#[cfg_attr(
12722 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12723 assert_instr(ext)
12724)]
12725#[cfg_attr(
12726 not(target_arch = "arm"),
12727 stable(feature = "neon_intrinsics", since = "1.59.0")
12728)]
12729#[cfg_attr(
12730 target_arch = "arm",
12731 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12732)]
12733pub fn vget_high_f32(a: float32x4_t) -> float32x2_t {
12734 unsafe { simd_shuffle!(a, a, [2, 3]) }
12735}
12736#[doc = "Duplicate vector element to vector or scalar"]
12737#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_p16)"]
12738#[inline]
12739#[target_feature(enable = "neon")]
12740#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12741#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
12742#[cfg_attr(
12743 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12744 assert_instr(ext)
12745)]
12746#[cfg_attr(
12747 not(target_arch = "arm"),
12748 stable(feature = "neon_intrinsics", since = "1.59.0")
12749)]
12750#[cfg_attr(
12751 target_arch = "arm",
12752 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12753)]
12754pub fn vget_high_p16(a: poly16x8_t) -> poly16x4_t {
12755 unsafe { simd_shuffle!(a, a, [4, 5, 6, 7]) }
12756}
12757#[doc = "Duplicate vector element to vector or scalar"]
12758#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_p8)"]
12759#[inline]
12760#[target_feature(enable = "neon")]
12761#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12762#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
12763#[cfg_attr(
12764 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12765 assert_instr(ext)
12766)]
12767#[cfg_attr(
12768 not(target_arch = "arm"),
12769 stable(feature = "neon_intrinsics", since = "1.59.0")
12770)]
12771#[cfg_attr(
12772 target_arch = "arm",
12773 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12774)]
12775pub fn vget_high_p8(a: poly8x16_t) -> poly8x8_t {
12776 unsafe { simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]) }
12777}
12778#[doc = "Duplicate vector element to vector or scalar"]
12779#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_s16)"]
12780#[inline]
12781#[target_feature(enable = "neon")]
12782#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12783#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
12784#[cfg_attr(
12785 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12786 assert_instr(ext)
12787)]
12788#[cfg_attr(
12789 not(target_arch = "arm"),
12790 stable(feature = "neon_intrinsics", since = "1.59.0")
12791)]
12792#[cfg_attr(
12793 target_arch = "arm",
12794 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12795)]
12796pub fn vget_high_s16(a: int16x8_t) -> int16x4_t {
12797 unsafe { simd_shuffle!(a, a, [4, 5, 6, 7]) }
12798}
12799#[doc = "Duplicate vector element to vector or scalar"]
12800#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_s32)"]
12801#[inline]
12802#[target_feature(enable = "neon")]
12803#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12804#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
12805#[cfg_attr(
12806 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12807 assert_instr(ext)
12808)]
12809#[cfg_attr(
12810 not(target_arch = "arm"),
12811 stable(feature = "neon_intrinsics", since = "1.59.0")
12812)]
12813#[cfg_attr(
12814 target_arch = "arm",
12815 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12816)]
12817pub fn vget_high_s32(a: int32x4_t) -> int32x2_t {
12818 unsafe { simd_shuffle!(a, a, [2, 3]) }
12819}
12820#[doc = "Duplicate vector element to vector or scalar"]
12821#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_s8)"]
12822#[inline]
12823#[target_feature(enable = "neon")]
12824#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12825#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
12826#[cfg_attr(
12827 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12828 assert_instr(ext)
12829)]
12830#[cfg_attr(
12831 not(target_arch = "arm"),
12832 stable(feature = "neon_intrinsics", since = "1.59.0")
12833)]
12834#[cfg_attr(
12835 target_arch = "arm",
12836 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12837)]
12838pub fn vget_high_s8(a: int8x16_t) -> int8x8_t {
12839 unsafe { simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]) }
12840}
12841#[doc = "Duplicate vector element to vector or scalar"]
12842#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_u16)"]
12843#[inline]
12844#[target_feature(enable = "neon")]
12845#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12846#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
12847#[cfg_attr(
12848 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12849 assert_instr(ext)
12850)]
12851#[cfg_attr(
12852 not(target_arch = "arm"),
12853 stable(feature = "neon_intrinsics", since = "1.59.0")
12854)]
12855#[cfg_attr(
12856 target_arch = "arm",
12857 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12858)]
12859pub fn vget_high_u16(a: uint16x8_t) -> uint16x4_t {
12860 unsafe { simd_shuffle!(a, a, [4, 5, 6, 7]) }
12861}
12862#[doc = "Duplicate vector element to vector or scalar"]
12863#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_u32)"]
12864#[inline]
12865#[target_feature(enable = "neon")]
12866#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12867#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
12868#[cfg_attr(
12869 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12870 assert_instr(ext)
12871)]
12872#[cfg_attr(
12873 not(target_arch = "arm"),
12874 stable(feature = "neon_intrinsics", since = "1.59.0")
12875)]
12876#[cfg_attr(
12877 target_arch = "arm",
12878 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12879)]
12880pub fn vget_high_u32(a: uint32x4_t) -> uint32x2_t {
12881 unsafe { simd_shuffle!(a, a, [2, 3]) }
12882}
12883#[doc = "Duplicate vector element to vector or scalar"]
12884#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_u8)"]
12885#[inline]
12886#[target_feature(enable = "neon")]
12887#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12888#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
12889#[cfg_attr(
12890 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12891 assert_instr(ext)
12892)]
12893#[cfg_attr(
12894 not(target_arch = "arm"),
12895 stable(feature = "neon_intrinsics", since = "1.59.0")
12896)]
12897#[cfg_attr(
12898 target_arch = "arm",
12899 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12900)]
12901pub fn vget_high_u8(a: uint8x16_t) -> uint8x8_t {
12902 unsafe { simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]) }
12903}
12904#[doc = "Duplicate vector element to vector or scalar"]
12905#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_s64)"]
12906#[inline]
12907#[target_feature(enable = "neon")]
12908#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12909#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
12910#[cfg_attr(
12911 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12912 assert_instr(ext)
12913)]
12914#[cfg_attr(
12915 not(target_arch = "arm"),
12916 stable(feature = "neon_intrinsics", since = "1.59.0")
12917)]
12918#[cfg_attr(
12919 target_arch = "arm",
12920 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12921)]
12922pub fn vget_high_s64(a: int64x2_t) -> int64x1_t {
12923 unsafe { int64x1_t([simd_extract!(a, 1)]) }
12924}
12925#[doc = "Duplicate vector element to vector or scalar"]
12926#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_u64)"]
12927#[inline]
12928#[target_feature(enable = "neon")]
12929#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12930#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
12931#[cfg_attr(
12932 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12933 assert_instr(ext)
12934)]
12935#[cfg_attr(
12936 not(target_arch = "arm"),
12937 stable(feature = "neon_intrinsics", since = "1.59.0")
12938)]
12939#[cfg_attr(
12940 target_arch = "arm",
12941 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12942)]
12943pub fn vget_high_u64(a: uint64x2_t) -> uint64x1_t {
12944 unsafe { uint64x1_t([simd_extract!(a, 1)]) }
12945}
12946#[doc = "Duplicate vector element to scalar"]
12947#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_f16)"]
12948#[inline]
12949#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12950#[target_feature(enable = "neon,fp16")]
12951#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
12952#[cfg_attr(
12953 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12954 assert_instr(nop, LANE = 0)
12955)]
12956#[rustc_legacy_const_generics(1)]
12957#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
12958#[cfg(not(target_arch = "arm64ec"))]
12959pub fn vget_lane_f16<const LANE: i32>(a: float16x4_t) -> f16 {
12960 static_assert_uimm_bits!(LANE, 2);
12961 unsafe { simd_extract!(a, LANE as u32) }
12962}
12963#[doc = "Duplicate vector element to scalar"]
12964#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_f16)"]
12965#[inline]
12966#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12967#[target_feature(enable = "neon,fp16")]
12968#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
12969#[cfg_attr(
12970 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12971 assert_instr(nop, LANE = 0)
12972)]
12973#[rustc_legacy_const_generics(1)]
12974#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
12975#[cfg(not(target_arch = "arm64ec"))]
12976pub fn vgetq_lane_f16<const LANE: i32>(a: float16x8_t) -> f16 {
12977 static_assert_uimm_bits!(LANE, 3);
12978 unsafe { simd_extract!(a, LANE as u32) }
12979}
12980#[doc = "Move vector element to general-purpose register"]
12981#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_f32)"]
12982#[inline]
12983#[target_feature(enable = "neon")]
12984#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12985#[rustc_legacy_const_generics(1)]
12986#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
12987#[cfg_attr(
12988 not(target_arch = "arm"),
12989 stable(feature = "neon_intrinsics", since = "1.59.0")
12990)]
12991#[cfg_attr(
12992 target_arch = "arm",
12993 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12994)]
12995pub fn vget_lane_f32<const IMM5: i32>(v: float32x2_t) -> f32 {
12996 static_assert_uimm_bits!(IMM5, 1);
12997 unsafe { simd_extract!(v, IMM5 as u32) }
12998}
12999#[doc = "Move vector element to general-purpose register"]
13000#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_p16)"]
13001#[inline]
13002#[target_feature(enable = "neon")]
13003#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13004#[rustc_legacy_const_generics(1)]
13005#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13006#[cfg_attr(
13007 not(target_arch = "arm"),
13008 stable(feature = "neon_intrinsics", since = "1.59.0")
13009)]
13010#[cfg_attr(
13011 target_arch = "arm",
13012 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13013)]
13014pub fn vget_lane_p16<const IMM5: i32>(v: poly16x4_t) -> p16 {
13015 static_assert_uimm_bits!(IMM5, 2);
13016 unsafe { simd_extract!(v, IMM5 as u32) }
13017}
13018#[doc = "Move vector element to general-purpose register"]
13019#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_p8)"]
13020#[inline]
13021#[target_feature(enable = "neon")]
13022#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13023#[rustc_legacy_const_generics(1)]
13024#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13025#[cfg_attr(
13026 not(target_arch = "arm"),
13027 stable(feature = "neon_intrinsics", since = "1.59.0")
13028)]
13029#[cfg_attr(
13030 target_arch = "arm",
13031 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13032)]
13033pub fn vget_lane_p8<const IMM5: i32>(v: poly8x8_t) -> p8 {
13034 static_assert_uimm_bits!(IMM5, 3);
13035 unsafe { simd_extract!(v, IMM5 as u32) }
13036}
13037#[doc = "Move vector element to general-purpose register"]
13038#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_s16)"]
13039#[inline]
13040#[target_feature(enable = "neon")]
13041#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13042#[rustc_legacy_const_generics(1)]
13043#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13044#[cfg_attr(
13045 not(target_arch = "arm"),
13046 stable(feature = "neon_intrinsics", since = "1.59.0")
13047)]
13048#[cfg_attr(
13049 target_arch = "arm",
13050 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13051)]
13052pub fn vget_lane_s16<const IMM5: i32>(v: int16x4_t) -> i16 {
13053 static_assert_uimm_bits!(IMM5, 2);
13054 unsafe { simd_extract!(v, IMM5 as u32) }
13055}
13056#[doc = "Move vector element to general-purpose register"]
13057#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_s32)"]
13058#[inline]
13059#[target_feature(enable = "neon")]
13060#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13061#[rustc_legacy_const_generics(1)]
13062#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13063#[cfg_attr(
13064 not(target_arch = "arm"),
13065 stable(feature = "neon_intrinsics", since = "1.59.0")
13066)]
13067#[cfg_attr(
13068 target_arch = "arm",
13069 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13070)]
13071pub fn vget_lane_s32<const IMM5: i32>(v: int32x2_t) -> i32 {
13072 static_assert_uimm_bits!(IMM5, 1);
13073 unsafe { simd_extract!(v, IMM5 as u32) }
13074}
13075#[doc = "Move vector element to general-purpose register"]
13076#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_s8)"]
13077#[inline]
13078#[target_feature(enable = "neon")]
13079#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13080#[rustc_legacy_const_generics(1)]
13081#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13082#[cfg_attr(
13083 not(target_arch = "arm"),
13084 stable(feature = "neon_intrinsics", since = "1.59.0")
13085)]
13086#[cfg_attr(
13087 target_arch = "arm",
13088 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13089)]
13090pub fn vget_lane_s8<const IMM5: i32>(v: int8x8_t) -> i8 {
13091 static_assert_uimm_bits!(IMM5, 3);
13092 unsafe { simd_extract!(v, IMM5 as u32) }
13093}
13094#[doc = "Move vector element to general-purpose register"]
13095#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_u16)"]
13096#[inline]
13097#[target_feature(enable = "neon")]
13098#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13099#[rustc_legacy_const_generics(1)]
13100#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13101#[cfg_attr(
13102 not(target_arch = "arm"),
13103 stable(feature = "neon_intrinsics", since = "1.59.0")
13104)]
13105#[cfg_attr(
13106 target_arch = "arm",
13107 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13108)]
13109pub fn vget_lane_u16<const IMM5: i32>(v: uint16x4_t) -> u16 {
13110 static_assert_uimm_bits!(IMM5, 2);
13111 unsafe { simd_extract!(v, IMM5 as u32) }
13112}
13113#[doc = "Move vector element to general-purpose register"]
13114#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_u32)"]
13115#[inline]
13116#[target_feature(enable = "neon")]
13117#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13118#[rustc_legacy_const_generics(1)]
13119#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13120#[cfg_attr(
13121 not(target_arch = "arm"),
13122 stable(feature = "neon_intrinsics", since = "1.59.0")
13123)]
13124#[cfg_attr(
13125 target_arch = "arm",
13126 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13127)]
13128pub fn vget_lane_u32<const IMM5: i32>(v: uint32x2_t) -> u32 {
13129 static_assert_uimm_bits!(IMM5, 1);
13130 unsafe { simd_extract!(v, IMM5 as u32) }
13131}
13132#[doc = "Move vector element to general-purpose register"]
13133#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_u8)"]
13134#[inline]
13135#[target_feature(enable = "neon")]
13136#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13137#[rustc_legacy_const_generics(1)]
13138#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13139#[cfg_attr(
13140 not(target_arch = "arm"),
13141 stable(feature = "neon_intrinsics", since = "1.59.0")
13142)]
13143#[cfg_attr(
13144 target_arch = "arm",
13145 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13146)]
13147pub fn vget_lane_u8<const IMM5: i32>(v: uint8x8_t) -> u8 {
13148 static_assert_uimm_bits!(IMM5, 3);
13149 unsafe { simd_extract!(v, IMM5 as u32) }
13150}
13151#[doc = "Move vector element to general-purpose register"]
13152#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_f32)"]
13153#[inline]
13154#[target_feature(enable = "neon")]
13155#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13156#[rustc_legacy_const_generics(1)]
13157#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13158#[cfg_attr(
13159 not(target_arch = "arm"),
13160 stable(feature = "neon_intrinsics", since = "1.59.0")
13161)]
13162#[cfg_attr(
13163 target_arch = "arm",
13164 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13165)]
13166pub fn vgetq_lane_f32<const IMM5: i32>(v: float32x4_t) -> f32 {
13167 static_assert_uimm_bits!(IMM5, 2);
13168 unsafe { simd_extract!(v, IMM5 as u32) }
13169}
13170#[doc = "Move vector element to general-purpose register"]
13171#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_p16)"]
13172#[inline]
13173#[target_feature(enable = "neon")]
13174#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13175#[rustc_legacy_const_generics(1)]
13176#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13177#[cfg_attr(
13178 not(target_arch = "arm"),
13179 stable(feature = "neon_intrinsics", since = "1.59.0")
13180)]
13181#[cfg_attr(
13182 target_arch = "arm",
13183 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13184)]
13185pub fn vgetq_lane_p16<const IMM5: i32>(v: poly16x8_t) -> p16 {
13186 static_assert_uimm_bits!(IMM5, 3);
13187 unsafe { simd_extract!(v, IMM5 as u32) }
13188}
13189#[doc = "Move vector element to general-purpose register"]
13190#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_p64)"]
13191#[inline]
13192#[target_feature(enable = "neon")]
13193#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13194#[rustc_legacy_const_generics(1)]
13195#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13196#[cfg_attr(
13197 not(target_arch = "arm"),
13198 stable(feature = "neon_intrinsics", since = "1.59.0")
13199)]
13200#[cfg_attr(
13201 target_arch = "arm",
13202 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13203)]
13204pub fn vgetq_lane_p64<const IMM5: i32>(v: poly64x2_t) -> p64 {
13205 static_assert_uimm_bits!(IMM5, 1);
13206 unsafe { simd_extract!(v, IMM5 as u32) }
13207}
13208#[doc = "Move vector element to general-purpose register"]
13209#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_p8)"]
13210#[inline]
13211#[target_feature(enable = "neon")]
13212#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13213#[rustc_legacy_const_generics(1)]
13214#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13215#[cfg_attr(
13216 not(target_arch = "arm"),
13217 stable(feature = "neon_intrinsics", since = "1.59.0")
13218)]
13219#[cfg_attr(
13220 target_arch = "arm",
13221 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13222)]
13223pub fn vgetq_lane_p8<const IMM5: i32>(v: poly8x16_t) -> p8 {
13224 static_assert_uimm_bits!(IMM5, 4);
13225 unsafe { simd_extract!(v, IMM5 as u32) }
13226}
13227#[doc = "Move vector element to general-purpose register"]
13228#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_s16)"]
13229#[inline]
13230#[target_feature(enable = "neon")]
13231#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13232#[rustc_legacy_const_generics(1)]
13233#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13234#[cfg_attr(
13235 not(target_arch = "arm"),
13236 stable(feature = "neon_intrinsics", since = "1.59.0")
13237)]
13238#[cfg_attr(
13239 target_arch = "arm",
13240 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13241)]
13242pub fn vgetq_lane_s16<const IMM5: i32>(v: int16x8_t) -> i16 {
13243 static_assert_uimm_bits!(IMM5, 3);
13244 unsafe { simd_extract!(v, IMM5 as u32) }
13245}
13246#[doc = "Move vector element to general-purpose register"]
13247#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_s32)"]
13248#[inline]
13249#[target_feature(enable = "neon")]
13250#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13251#[rustc_legacy_const_generics(1)]
13252#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13253#[cfg_attr(
13254 not(target_arch = "arm"),
13255 stable(feature = "neon_intrinsics", since = "1.59.0")
13256)]
13257#[cfg_attr(
13258 target_arch = "arm",
13259 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13260)]
13261pub fn vgetq_lane_s32<const IMM5: i32>(v: int32x4_t) -> i32 {
13262 static_assert_uimm_bits!(IMM5, 2);
13263 unsafe { simd_extract!(v, IMM5 as u32) }
13264}
13265#[doc = "Move vector element to general-purpose register"]
13266#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_s64)"]
13267#[inline]
13268#[target_feature(enable = "neon")]
13269#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13270#[rustc_legacy_const_generics(1)]
13271#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13272#[cfg_attr(
13273 not(target_arch = "arm"),
13274 stable(feature = "neon_intrinsics", since = "1.59.0")
13275)]
13276#[cfg_attr(
13277 target_arch = "arm",
13278 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13279)]
13280pub fn vgetq_lane_s64<const IMM5: i32>(v: int64x2_t) -> i64 {
13281 static_assert_uimm_bits!(IMM5, 1);
13282 unsafe { simd_extract!(v, IMM5 as u32) }
13283}
13284#[doc = "Move vector element to general-purpose register"]
13285#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_s8)"]
13286#[inline]
13287#[target_feature(enable = "neon")]
13288#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13289#[rustc_legacy_const_generics(1)]
13290#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13291#[cfg_attr(
13292 not(target_arch = "arm"),
13293 stable(feature = "neon_intrinsics", since = "1.59.0")
13294)]
13295#[cfg_attr(
13296 target_arch = "arm",
13297 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13298)]
13299pub fn vgetq_lane_s8<const IMM5: i32>(v: int8x16_t) -> i8 {
13300 static_assert_uimm_bits!(IMM5, 4);
13301 unsafe { simd_extract!(v, IMM5 as u32) }
13302}
13303#[doc = "Move vector element to general-purpose register"]
13304#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_u16)"]
13305#[inline]
13306#[target_feature(enable = "neon")]
13307#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13308#[rustc_legacy_const_generics(1)]
13309#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13310#[cfg_attr(
13311 not(target_arch = "arm"),
13312 stable(feature = "neon_intrinsics", since = "1.59.0")
13313)]
13314#[cfg_attr(
13315 target_arch = "arm",
13316 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13317)]
13318pub fn vgetq_lane_u16<const IMM5: i32>(v: uint16x8_t) -> u16 {
13319 static_assert_uimm_bits!(IMM5, 3);
13320 unsafe { simd_extract!(v, IMM5 as u32) }
13321}
13322#[doc = "Move vector element to general-purpose register"]
13323#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_u32)"]
13324#[inline]
13325#[target_feature(enable = "neon")]
13326#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13327#[rustc_legacy_const_generics(1)]
13328#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13329#[cfg_attr(
13330 not(target_arch = "arm"),
13331 stable(feature = "neon_intrinsics", since = "1.59.0")
13332)]
13333#[cfg_attr(
13334 target_arch = "arm",
13335 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13336)]
13337pub fn vgetq_lane_u32<const IMM5: i32>(v: uint32x4_t) -> u32 {
13338 static_assert_uimm_bits!(IMM5, 2);
13339 unsafe { simd_extract!(v, IMM5 as u32) }
13340}
13341#[doc = "Move vector element to general-purpose register"]
13342#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_u64)"]
13343#[inline]
13344#[target_feature(enable = "neon")]
13345#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13346#[rustc_legacy_const_generics(1)]
13347#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13348#[cfg_attr(
13349 not(target_arch = "arm"),
13350 stable(feature = "neon_intrinsics", since = "1.59.0")
13351)]
13352#[cfg_attr(
13353 target_arch = "arm",
13354 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13355)]
13356pub fn vgetq_lane_u64<const IMM5: i32>(v: uint64x2_t) -> u64 {
13357 static_assert_uimm_bits!(IMM5, 2);
13358 unsafe { simd_extract!(v, IMM5 as u32) }
13359}
13360#[doc = "Move vector element to general-purpose register"]
13361#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_u8)"]
13362#[inline]
13363#[target_feature(enable = "neon")]
13364#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13365#[rustc_legacy_const_generics(1)]
13366#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13367#[cfg_attr(
13368 not(target_arch = "arm"),
13369 stable(feature = "neon_intrinsics", since = "1.59.0")
13370)]
13371#[cfg_attr(
13372 target_arch = "arm",
13373 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13374)]
13375pub fn vgetq_lane_u8<const IMM5: i32>(v: uint8x16_t) -> u8 {
13376 static_assert_uimm_bits!(IMM5, 4);
13377 unsafe { simd_extract!(v, IMM5 as u32) }
13378}
13379#[doc = "Move vector element to general-purpose register"]
13380#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_p64)"]
13381#[inline]
13382#[target_feature(enable = "neon")]
13383#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13384#[rustc_legacy_const_generics(1)]
13385#[cfg_attr(test, assert_instr(nop, IMM5 = 0))]
13386#[cfg_attr(
13387 not(target_arch = "arm"),
13388 stable(feature = "neon_intrinsics", since = "1.59.0")
13389)]
13390#[cfg_attr(
13391 target_arch = "arm",
13392 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13393)]
13394pub fn vget_lane_p64<const IMM5: i32>(v: poly64x1_t) -> p64 {
13395 static_assert!(IMM5 == 0);
13396 unsafe { simd_extract!(v, IMM5 as u32) }
13397}
13398#[doc = "Move vector element to general-purpose register"]
13399#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_s64)"]
13400#[inline]
13401#[target_feature(enable = "neon")]
13402#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13403#[rustc_legacy_const_generics(1)]
13404#[cfg_attr(test, assert_instr(nop, IMM5 = 0))]
13405#[cfg_attr(
13406 not(target_arch = "arm"),
13407 stable(feature = "neon_intrinsics", since = "1.59.0")
13408)]
13409#[cfg_attr(
13410 target_arch = "arm",
13411 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13412)]
13413pub fn vget_lane_s64<const IMM5: i32>(v: int64x1_t) -> i64 {
13414 static_assert!(IMM5 == 0);
13415 unsafe { simd_extract!(v, IMM5 as u32) }
13416}
13417#[doc = "Move vector element to general-purpose register"]
13418#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_u64)"]
13419#[inline]
13420#[target_feature(enable = "neon")]
13421#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13422#[rustc_legacy_const_generics(1)]
13423#[cfg_attr(test, assert_instr(nop, IMM5 = 0))]
13424#[cfg_attr(
13425 not(target_arch = "arm"),
13426 stable(feature = "neon_intrinsics", since = "1.59.0")
13427)]
13428#[cfg_attr(
13429 target_arch = "arm",
13430 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13431)]
13432pub fn vget_lane_u64<const IMM5: i32>(v: uint64x1_t) -> u64 {
13433 static_assert!(IMM5 == 0);
13434 unsafe { simd_extract!(v, 0) }
13435}
13436#[doc = "Duplicate vector element to vector or scalar"]
13437#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_f32)"]
13438#[inline]
13439#[target_feature(enable = "neon")]
13440#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13441#[cfg_attr(test, assert_instr(nop))]
13442#[cfg_attr(
13443 not(target_arch = "arm"),
13444 stable(feature = "neon_intrinsics", since = "1.59.0")
13445)]
13446#[cfg_attr(
13447 target_arch = "arm",
13448 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13449)]
13450pub fn vget_low_f32(a: float32x4_t) -> float32x2_t {
13451 unsafe { simd_shuffle!(a, a, [0, 1]) }
13452}
13453#[doc = "Duplicate vector element to vector or scalar"]
13454#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_p16)"]
13455#[inline]
13456#[target_feature(enable = "neon")]
13457#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13458#[cfg_attr(test, assert_instr(nop))]
13459#[cfg_attr(
13460 not(target_arch = "arm"),
13461 stable(feature = "neon_intrinsics", since = "1.59.0")
13462)]
13463#[cfg_attr(
13464 target_arch = "arm",
13465 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13466)]
13467pub fn vget_low_p16(a: poly16x8_t) -> poly16x4_t {
13468 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3]) }
13469}
13470#[doc = "Duplicate vector element to vector or scalar"]
13471#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_p8)"]
13472#[inline]
13473#[target_feature(enable = "neon")]
13474#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13475#[cfg_attr(test, assert_instr(nop))]
13476#[cfg_attr(
13477 not(target_arch = "arm"),
13478 stable(feature = "neon_intrinsics", since = "1.59.0")
13479)]
13480#[cfg_attr(
13481 target_arch = "arm",
13482 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13483)]
13484pub fn vget_low_p8(a: poly8x16_t) -> poly8x8_t {
13485 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]) }
13486}
13487#[doc = "Duplicate vector element to vector or scalar"]
13488#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_s16)"]
13489#[inline]
13490#[target_feature(enable = "neon")]
13491#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13492#[cfg_attr(test, assert_instr(nop))]
13493#[cfg_attr(
13494 not(target_arch = "arm"),
13495 stable(feature = "neon_intrinsics", since = "1.59.0")
13496)]
13497#[cfg_attr(
13498 target_arch = "arm",
13499 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13500)]
13501pub fn vget_low_s16(a: int16x8_t) -> int16x4_t {
13502 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3]) }
13503}
13504#[doc = "Duplicate vector element to vector or scalar"]
13505#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_s32)"]
13506#[inline]
13507#[target_feature(enable = "neon")]
13508#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13509#[cfg_attr(test, assert_instr(nop))]
13510#[cfg_attr(
13511 not(target_arch = "arm"),
13512 stable(feature = "neon_intrinsics", since = "1.59.0")
13513)]
13514#[cfg_attr(
13515 target_arch = "arm",
13516 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13517)]
13518pub fn vget_low_s32(a: int32x4_t) -> int32x2_t {
13519 unsafe { simd_shuffle!(a, a, [0, 1]) }
13520}
13521#[doc = "Duplicate vector element to vector or scalar"]
13522#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_s8)"]
13523#[inline]
13524#[target_feature(enable = "neon")]
13525#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13526#[cfg_attr(test, assert_instr(nop))]
13527#[cfg_attr(
13528 not(target_arch = "arm"),
13529 stable(feature = "neon_intrinsics", since = "1.59.0")
13530)]
13531#[cfg_attr(
13532 target_arch = "arm",
13533 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13534)]
13535pub fn vget_low_s8(a: int8x16_t) -> int8x8_t {
13536 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]) }
13537}
13538#[doc = "Duplicate vector element to vector or scalar"]
13539#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_u16)"]
13540#[inline]
13541#[target_feature(enable = "neon")]
13542#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13543#[cfg_attr(test, assert_instr(nop))]
13544#[cfg_attr(
13545 not(target_arch = "arm"),
13546 stable(feature = "neon_intrinsics", since = "1.59.0")
13547)]
13548#[cfg_attr(
13549 target_arch = "arm",
13550 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13551)]
13552pub fn vget_low_u16(a: uint16x8_t) -> uint16x4_t {
13553 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3]) }
13554}
13555#[doc = "Duplicate vector element to vector or scalar"]
13556#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_u32)"]
13557#[inline]
13558#[target_feature(enable = "neon")]
13559#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13560#[cfg_attr(test, assert_instr(nop))]
13561#[cfg_attr(
13562 not(target_arch = "arm"),
13563 stable(feature = "neon_intrinsics", since = "1.59.0")
13564)]
13565#[cfg_attr(
13566 target_arch = "arm",
13567 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13568)]
13569pub fn vget_low_u32(a: uint32x4_t) -> uint32x2_t {
13570 unsafe { simd_shuffle!(a, a, [0, 1]) }
13571}
13572#[doc = "Duplicate vector element to vector or scalar"]
13573#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_u8)"]
13574#[inline]
13575#[target_feature(enable = "neon")]
13576#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13577#[cfg_attr(test, assert_instr(nop))]
13578#[cfg_attr(
13579 not(target_arch = "arm"),
13580 stable(feature = "neon_intrinsics", since = "1.59.0")
13581)]
13582#[cfg_attr(
13583 target_arch = "arm",
13584 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13585)]
13586pub fn vget_low_u8(a: uint8x16_t) -> uint8x8_t {
13587 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]) }
13588}
13589#[doc = "Duplicate vector element to vector or scalar"]
13590#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_s64)"]
13591#[inline]
13592#[target_feature(enable = "neon")]
13593#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13594#[cfg_attr(test, assert_instr(nop))]
13595#[cfg_attr(
13596 not(target_arch = "arm"),
13597 stable(feature = "neon_intrinsics", since = "1.59.0")
13598)]
13599#[cfg_attr(
13600 target_arch = "arm",
13601 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13602)]
13603pub fn vget_low_s64(a: int64x2_t) -> int64x1_t {
13604 unsafe { int64x1_t([simd_extract!(a, 0)]) }
13605}
13606#[doc = "Duplicate vector element to vector or scalar"]
13607#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_u64)"]
13608#[inline]
13609#[target_feature(enable = "neon")]
13610#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13611#[cfg_attr(test, assert_instr(nop))]
13612#[cfg_attr(
13613 not(target_arch = "arm"),
13614 stable(feature = "neon_intrinsics", since = "1.59.0")
13615)]
13616#[cfg_attr(
13617 target_arch = "arm",
13618 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13619)]
13620pub fn vget_low_u64(a: uint64x2_t) -> uint64x1_t {
13621 unsafe { uint64x1_t([simd_extract!(a, 0)]) }
13622}
13623#[doc = "Halving add"]
13624#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_s8)"]
13625#[inline]
13626#[target_feature(enable = "neon")]
13627#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13628#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s8"))]
13629#[cfg_attr(
13630 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13631 assert_instr(shadd)
13632)]
13633#[cfg_attr(
13634 not(target_arch = "arm"),
13635 stable(feature = "neon_intrinsics", since = "1.59.0")
13636)]
13637#[cfg_attr(
13638 target_arch = "arm",
13639 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13640)]
13641pub fn vhadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
13642 unsafe extern "unadjusted" {
13643 #[cfg_attr(
13644 any(target_arch = "aarch64", target_arch = "arm64ec"),
13645 link_name = "llvm.aarch64.neon.shadd.v8i8"
13646 )]
13647 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v8i8")]
13648 fn _vhadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
13649 }
13650 unsafe { _vhadd_s8(a, b) }
13651}
13652#[doc = "Halving add"]
13653#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_s8)"]
13654#[inline]
13655#[target_feature(enable = "neon")]
13656#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13657#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s8"))]
13658#[cfg_attr(
13659 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13660 assert_instr(shadd)
13661)]
13662#[cfg_attr(
13663 not(target_arch = "arm"),
13664 stable(feature = "neon_intrinsics", since = "1.59.0")
13665)]
13666#[cfg_attr(
13667 target_arch = "arm",
13668 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13669)]
13670pub fn vhaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
13671 unsafe extern "unadjusted" {
13672 #[cfg_attr(
13673 any(target_arch = "aarch64", target_arch = "arm64ec"),
13674 link_name = "llvm.aarch64.neon.shadd.v16i8"
13675 )]
13676 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v16i8")]
13677 fn _vhaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
13678 }
13679 unsafe { _vhaddq_s8(a, b) }
13680}
13681#[doc = "Halving add"]
13682#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_s16)"]
13683#[inline]
13684#[target_feature(enable = "neon")]
13685#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13686#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s16"))]
13687#[cfg_attr(
13688 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13689 assert_instr(shadd)
13690)]
13691#[cfg_attr(
13692 not(target_arch = "arm"),
13693 stable(feature = "neon_intrinsics", since = "1.59.0")
13694)]
13695#[cfg_attr(
13696 target_arch = "arm",
13697 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13698)]
13699pub fn vhadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
13700 unsafe extern "unadjusted" {
13701 #[cfg_attr(
13702 any(target_arch = "aarch64", target_arch = "arm64ec"),
13703 link_name = "llvm.aarch64.neon.shadd.v4i16"
13704 )]
13705 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v4i16")]
13706 fn _vhadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
13707 }
13708 unsafe { _vhadd_s16(a, b) }
13709}
13710#[doc = "Halving add"]
13711#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_s16)"]
13712#[inline]
13713#[target_feature(enable = "neon")]
13714#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13715#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s16"))]
13716#[cfg_attr(
13717 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13718 assert_instr(shadd)
13719)]
13720#[cfg_attr(
13721 not(target_arch = "arm"),
13722 stable(feature = "neon_intrinsics", since = "1.59.0")
13723)]
13724#[cfg_attr(
13725 target_arch = "arm",
13726 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13727)]
13728pub fn vhaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
13729 unsafe extern "unadjusted" {
13730 #[cfg_attr(
13731 any(target_arch = "aarch64", target_arch = "arm64ec"),
13732 link_name = "llvm.aarch64.neon.shadd.v8i16"
13733 )]
13734 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v8i16")]
13735 fn _vhaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
13736 }
13737 unsafe { _vhaddq_s16(a, b) }
13738}
13739#[doc = "Halving add"]
13740#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_s32)"]
13741#[inline]
13742#[target_feature(enable = "neon")]
13743#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13744#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s32"))]
13745#[cfg_attr(
13746 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13747 assert_instr(shadd)
13748)]
13749#[cfg_attr(
13750 not(target_arch = "arm"),
13751 stable(feature = "neon_intrinsics", since = "1.59.0")
13752)]
13753#[cfg_attr(
13754 target_arch = "arm",
13755 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13756)]
13757pub fn vhadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
13758 unsafe extern "unadjusted" {
13759 #[cfg_attr(
13760 any(target_arch = "aarch64", target_arch = "arm64ec"),
13761 link_name = "llvm.aarch64.neon.shadd.v2i32"
13762 )]
13763 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v2i32")]
13764 fn _vhadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
13765 }
13766 unsafe { _vhadd_s32(a, b) }
13767}
13768#[doc = "Halving add"]
13769#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_s32)"]
13770#[inline]
13771#[target_feature(enable = "neon")]
13772#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13773#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s32"))]
13774#[cfg_attr(
13775 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13776 assert_instr(shadd)
13777)]
13778#[cfg_attr(
13779 not(target_arch = "arm"),
13780 stable(feature = "neon_intrinsics", since = "1.59.0")
13781)]
13782#[cfg_attr(
13783 target_arch = "arm",
13784 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13785)]
13786pub fn vhaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
13787 unsafe extern "unadjusted" {
13788 #[cfg_attr(
13789 any(target_arch = "aarch64", target_arch = "arm64ec"),
13790 link_name = "llvm.aarch64.neon.shadd.v4i32"
13791 )]
13792 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v4i32")]
13793 fn _vhaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
13794 }
13795 unsafe { _vhaddq_s32(a, b) }
13796}
13797#[doc = "Halving add"]
13798#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_u8)"]
13799#[inline]
13800#[target_feature(enable = "neon")]
13801#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13802#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u8"))]
13803#[cfg_attr(
13804 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13805 assert_instr(uhadd)
13806)]
13807#[cfg_attr(
13808 not(target_arch = "arm"),
13809 stable(feature = "neon_intrinsics", since = "1.59.0")
13810)]
13811#[cfg_attr(
13812 target_arch = "arm",
13813 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13814)]
13815pub fn vhadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
13816 unsafe extern "unadjusted" {
13817 #[cfg_attr(
13818 any(target_arch = "aarch64", target_arch = "arm64ec"),
13819 link_name = "llvm.aarch64.neon.uhadd.v8i8"
13820 )]
13821 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v8i8")]
13822 fn _vhadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
13823 }
13824 unsafe { _vhadd_u8(a, b) }
13825}
13826#[doc = "Halving add"]
13827#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_u8)"]
13828#[inline]
13829#[target_feature(enable = "neon")]
13830#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13831#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u8"))]
13832#[cfg_attr(
13833 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13834 assert_instr(uhadd)
13835)]
13836#[cfg_attr(
13837 not(target_arch = "arm"),
13838 stable(feature = "neon_intrinsics", since = "1.59.0")
13839)]
13840#[cfg_attr(
13841 target_arch = "arm",
13842 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13843)]
13844pub fn vhaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
13845 unsafe extern "unadjusted" {
13846 #[cfg_attr(
13847 any(target_arch = "aarch64", target_arch = "arm64ec"),
13848 link_name = "llvm.aarch64.neon.uhadd.v16i8"
13849 )]
13850 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v16i8")]
13851 fn _vhaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
13852 }
13853 unsafe { _vhaddq_u8(a, b) }
13854}
13855#[doc = "Halving add"]
13856#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_u16)"]
13857#[inline]
13858#[target_feature(enable = "neon")]
13859#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13860#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u16"))]
13861#[cfg_attr(
13862 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13863 assert_instr(uhadd)
13864)]
13865#[cfg_attr(
13866 not(target_arch = "arm"),
13867 stable(feature = "neon_intrinsics", since = "1.59.0")
13868)]
13869#[cfg_attr(
13870 target_arch = "arm",
13871 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13872)]
13873pub fn vhadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
13874 unsafe extern "unadjusted" {
13875 #[cfg_attr(
13876 any(target_arch = "aarch64", target_arch = "arm64ec"),
13877 link_name = "llvm.aarch64.neon.uhadd.v4i16"
13878 )]
13879 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v4i16")]
13880 fn _vhadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
13881 }
13882 unsafe { _vhadd_u16(a, b) }
13883}
13884#[doc = "Halving add"]
13885#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_u16)"]
13886#[inline]
13887#[target_feature(enable = "neon")]
13888#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13889#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u16"))]
13890#[cfg_attr(
13891 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13892 assert_instr(uhadd)
13893)]
13894#[cfg_attr(
13895 not(target_arch = "arm"),
13896 stable(feature = "neon_intrinsics", since = "1.59.0")
13897)]
13898#[cfg_attr(
13899 target_arch = "arm",
13900 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13901)]
13902pub fn vhaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
13903 unsafe extern "unadjusted" {
13904 #[cfg_attr(
13905 any(target_arch = "aarch64", target_arch = "arm64ec"),
13906 link_name = "llvm.aarch64.neon.uhadd.v8i16"
13907 )]
13908 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v8i16")]
13909 fn _vhaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
13910 }
13911 unsafe { _vhaddq_u16(a, b) }
13912}
13913#[doc = "Halving add"]
13914#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_u32)"]
13915#[inline]
13916#[target_feature(enable = "neon")]
13917#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13918#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u32"))]
13919#[cfg_attr(
13920 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13921 assert_instr(uhadd)
13922)]
13923#[cfg_attr(
13924 not(target_arch = "arm"),
13925 stable(feature = "neon_intrinsics", since = "1.59.0")
13926)]
13927#[cfg_attr(
13928 target_arch = "arm",
13929 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13930)]
13931pub fn vhadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
13932 unsafe extern "unadjusted" {
13933 #[cfg_attr(
13934 any(target_arch = "aarch64", target_arch = "arm64ec"),
13935 link_name = "llvm.aarch64.neon.uhadd.v2i32"
13936 )]
13937 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v2i32")]
13938 fn _vhadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
13939 }
13940 unsafe { _vhadd_u32(a, b) }
13941}
13942#[doc = "Halving add"]
13943#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_u32)"]
13944#[inline]
13945#[target_feature(enable = "neon")]
13946#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13947#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u32"))]
13948#[cfg_attr(
13949 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13950 assert_instr(uhadd)
13951)]
13952#[cfg_attr(
13953 not(target_arch = "arm"),
13954 stable(feature = "neon_intrinsics", since = "1.59.0")
13955)]
13956#[cfg_attr(
13957 target_arch = "arm",
13958 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13959)]
13960pub fn vhaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
13961 unsafe extern "unadjusted" {
13962 #[cfg_attr(
13963 any(target_arch = "aarch64", target_arch = "arm64ec"),
13964 link_name = "llvm.aarch64.neon.uhadd.v4i32"
13965 )]
13966 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v4i32")]
13967 fn _vhaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
13968 }
13969 unsafe { _vhaddq_u32(a, b) }
13970}
13971#[doc = "Signed halving subtract"]
13972#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_s16)"]
13973#[inline]
13974#[target_feature(enable = "neon")]
13975#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13976#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s16"))]
13977#[cfg_attr(
13978 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13979 assert_instr(shsub)
13980)]
13981#[cfg_attr(
13982 not(target_arch = "arm"),
13983 stable(feature = "neon_intrinsics", since = "1.59.0")
13984)]
13985#[cfg_attr(
13986 target_arch = "arm",
13987 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13988)]
13989pub fn vhsub_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
13990 unsafe extern "unadjusted" {
13991 #[cfg_attr(
13992 any(target_arch = "aarch64", target_arch = "arm64ec"),
13993 link_name = "llvm.aarch64.neon.shsub.v4i16"
13994 )]
13995 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v4i16")]
13996 fn _vhsub_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
13997 }
13998 unsafe { _vhsub_s16(a, b) }
13999}
14000#[doc = "Signed halving subtract"]
14001#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_s16)"]
14002#[inline]
14003#[target_feature(enable = "neon")]
14004#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14005#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s16"))]
14006#[cfg_attr(
14007 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14008 assert_instr(shsub)
14009)]
14010#[cfg_attr(
14011 not(target_arch = "arm"),
14012 stable(feature = "neon_intrinsics", since = "1.59.0")
14013)]
14014#[cfg_attr(
14015 target_arch = "arm",
14016 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14017)]
14018pub fn vhsubq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
14019 unsafe extern "unadjusted" {
14020 #[cfg_attr(
14021 any(target_arch = "aarch64", target_arch = "arm64ec"),
14022 link_name = "llvm.aarch64.neon.shsub.v8i16"
14023 )]
14024 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v8i16")]
14025 fn _vhsubq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
14026 }
14027 unsafe { _vhsubq_s16(a, b) }
14028}
14029#[doc = "Signed halving subtract"]
14030#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_s32)"]
14031#[inline]
14032#[target_feature(enable = "neon")]
14033#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14034#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s32"))]
14035#[cfg_attr(
14036 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14037 assert_instr(shsub)
14038)]
14039#[cfg_attr(
14040 not(target_arch = "arm"),
14041 stable(feature = "neon_intrinsics", since = "1.59.0")
14042)]
14043#[cfg_attr(
14044 target_arch = "arm",
14045 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14046)]
14047pub fn vhsub_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
14048 unsafe extern "unadjusted" {
14049 #[cfg_attr(
14050 any(target_arch = "aarch64", target_arch = "arm64ec"),
14051 link_name = "llvm.aarch64.neon.shsub.v2i32"
14052 )]
14053 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v2i32")]
14054 fn _vhsub_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
14055 }
14056 unsafe { _vhsub_s32(a, b) }
14057}
14058#[doc = "Signed halving subtract"]
14059#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_s32)"]
14060#[inline]
14061#[target_feature(enable = "neon")]
14062#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14063#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s32"))]
14064#[cfg_attr(
14065 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14066 assert_instr(shsub)
14067)]
14068#[cfg_attr(
14069 not(target_arch = "arm"),
14070 stable(feature = "neon_intrinsics", since = "1.59.0")
14071)]
14072#[cfg_attr(
14073 target_arch = "arm",
14074 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14075)]
14076pub fn vhsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
14077 unsafe extern "unadjusted" {
14078 #[cfg_attr(
14079 any(target_arch = "aarch64", target_arch = "arm64ec"),
14080 link_name = "llvm.aarch64.neon.shsub.v4i32"
14081 )]
14082 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v4i32")]
14083 fn _vhsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
14084 }
14085 unsafe { _vhsubq_s32(a, b) }
14086}
14087#[doc = "Signed halving subtract"]
14088#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_s8)"]
14089#[inline]
14090#[target_feature(enable = "neon")]
14091#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14092#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s8"))]
14093#[cfg_attr(
14094 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14095 assert_instr(shsub)
14096)]
14097#[cfg_attr(
14098 not(target_arch = "arm"),
14099 stable(feature = "neon_intrinsics", since = "1.59.0")
14100)]
14101#[cfg_attr(
14102 target_arch = "arm",
14103 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14104)]
14105pub fn vhsub_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
14106 unsafe extern "unadjusted" {
14107 #[cfg_attr(
14108 any(target_arch = "aarch64", target_arch = "arm64ec"),
14109 link_name = "llvm.aarch64.neon.shsub.v8i8"
14110 )]
14111 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v8i8")]
14112 fn _vhsub_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
14113 }
14114 unsafe { _vhsub_s8(a, b) }
14115}
14116#[doc = "Signed halving subtract"]
14117#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_s8)"]
14118#[inline]
14119#[target_feature(enable = "neon")]
14120#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14121#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s8"))]
14122#[cfg_attr(
14123 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14124 assert_instr(shsub)
14125)]
14126#[cfg_attr(
14127 not(target_arch = "arm"),
14128 stable(feature = "neon_intrinsics", since = "1.59.0")
14129)]
14130#[cfg_attr(
14131 target_arch = "arm",
14132 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14133)]
14134pub fn vhsubq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
14135 unsafe extern "unadjusted" {
14136 #[cfg_attr(
14137 any(target_arch = "aarch64", target_arch = "arm64ec"),
14138 link_name = "llvm.aarch64.neon.shsub.v16i8"
14139 )]
14140 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v16i8")]
14141 fn _vhsubq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
14142 }
14143 unsafe { _vhsubq_s8(a, b) }
14144}
14145#[doc = "Signed halving subtract"]
14146#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_u8)"]
14147#[inline]
14148#[target_feature(enable = "neon")]
14149#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14150#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u8"))]
14151#[cfg_attr(
14152 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14153 assert_instr(uhsub)
14154)]
14155#[cfg_attr(
14156 not(target_arch = "arm"),
14157 stable(feature = "neon_intrinsics", since = "1.59.0")
14158)]
14159#[cfg_attr(
14160 target_arch = "arm",
14161 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14162)]
14163pub fn vhsub_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
14164 unsafe extern "unadjusted" {
14165 #[cfg_attr(
14166 any(target_arch = "aarch64", target_arch = "arm64ec"),
14167 link_name = "llvm.aarch64.neon.uhsub.v8i8"
14168 )]
14169 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v8i8")]
14170 fn _vhsub_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
14171 }
14172 unsafe { _vhsub_u8(a, b) }
14173}
14174#[doc = "Signed halving subtract"]
14175#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_u8)"]
14176#[inline]
14177#[target_feature(enable = "neon")]
14178#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14179#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u8"))]
14180#[cfg_attr(
14181 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14182 assert_instr(uhsub)
14183)]
14184#[cfg_attr(
14185 not(target_arch = "arm"),
14186 stable(feature = "neon_intrinsics", since = "1.59.0")
14187)]
14188#[cfg_attr(
14189 target_arch = "arm",
14190 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14191)]
14192pub fn vhsubq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
14193 unsafe extern "unadjusted" {
14194 #[cfg_attr(
14195 any(target_arch = "aarch64", target_arch = "arm64ec"),
14196 link_name = "llvm.aarch64.neon.uhsub.v16i8"
14197 )]
14198 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v16i8")]
14199 fn _vhsubq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
14200 }
14201 unsafe { _vhsubq_u8(a, b) }
14202}
14203#[doc = "Signed halving subtract"]
14204#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_u16)"]
14205#[inline]
14206#[target_feature(enable = "neon")]
14207#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14208#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u16"))]
14209#[cfg_attr(
14210 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14211 assert_instr(uhsub)
14212)]
14213#[cfg_attr(
14214 not(target_arch = "arm"),
14215 stable(feature = "neon_intrinsics", since = "1.59.0")
14216)]
14217#[cfg_attr(
14218 target_arch = "arm",
14219 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14220)]
14221pub fn vhsub_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
14222 unsafe extern "unadjusted" {
14223 #[cfg_attr(
14224 any(target_arch = "aarch64", target_arch = "arm64ec"),
14225 link_name = "llvm.aarch64.neon.uhsub.v4i16"
14226 )]
14227 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v4i16")]
14228 fn _vhsub_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
14229 }
14230 unsafe { _vhsub_u16(a, b) }
14231}
14232#[doc = "Signed halving subtract"]
14233#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_u16)"]
14234#[inline]
14235#[target_feature(enable = "neon")]
14236#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14237#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u16"))]
14238#[cfg_attr(
14239 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14240 assert_instr(uhsub)
14241)]
14242#[cfg_attr(
14243 not(target_arch = "arm"),
14244 stable(feature = "neon_intrinsics", since = "1.59.0")
14245)]
14246#[cfg_attr(
14247 target_arch = "arm",
14248 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14249)]
14250pub fn vhsubq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
14251 unsafe extern "unadjusted" {
14252 #[cfg_attr(
14253 any(target_arch = "aarch64", target_arch = "arm64ec"),
14254 link_name = "llvm.aarch64.neon.uhsub.v8i16"
14255 )]
14256 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v8i16")]
14257 fn _vhsubq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
14258 }
14259 unsafe { _vhsubq_u16(a, b) }
14260}
14261#[doc = "Signed halving subtract"]
14262#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_u32)"]
14263#[inline]
14264#[target_feature(enable = "neon")]
14265#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14266#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u32"))]
14267#[cfg_attr(
14268 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14269 assert_instr(uhsub)
14270)]
14271#[cfg_attr(
14272 not(target_arch = "arm"),
14273 stable(feature = "neon_intrinsics", since = "1.59.0")
14274)]
14275#[cfg_attr(
14276 target_arch = "arm",
14277 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14278)]
14279pub fn vhsub_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
14280 unsafe extern "unadjusted" {
14281 #[cfg_attr(
14282 any(target_arch = "aarch64", target_arch = "arm64ec"),
14283 link_name = "llvm.aarch64.neon.uhsub.v2i32"
14284 )]
14285 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v2i32")]
14286 fn _vhsub_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
14287 }
14288 unsafe { _vhsub_u32(a, b) }
14289}
14290#[doc = "Signed halving subtract"]
14291#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_u32)"]
14292#[inline]
14293#[target_feature(enable = "neon")]
14294#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14295#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u32"))]
14296#[cfg_attr(
14297 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14298 assert_instr(uhsub)
14299)]
14300#[cfg_attr(
14301 not(target_arch = "arm"),
14302 stable(feature = "neon_intrinsics", since = "1.59.0")
14303)]
14304#[cfg_attr(
14305 target_arch = "arm",
14306 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14307)]
14308pub fn vhsubq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
14309 unsafe extern "unadjusted" {
14310 #[cfg_attr(
14311 any(target_arch = "aarch64", target_arch = "arm64ec"),
14312 link_name = "llvm.aarch64.neon.uhsub.v4i32"
14313 )]
14314 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v4i32")]
14315 fn _vhsubq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
14316 }
14317 unsafe { _vhsubq_u32(a, b) }
14318}
14319#[doc = "Load one single-element structure and replicate to all lanes of one register"]
14320#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_f16)"]
14321#[doc = "## Safety"]
14322#[doc = " * Neon instrinsic unsafe"]
14323#[inline]
14324#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14325#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
14326#[cfg_attr(
14327 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14328 assert_instr(ld1r)
14329)]
14330#[target_feature(enable = "neon,fp16")]
14331#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
14332#[cfg(not(target_arch = "arm64ec"))]
14333pub unsafe fn vld1_dup_f16(ptr: *const f16) -> float16x4_t {
14334 let x: float16x4_t = vld1_lane_f16::<0>(ptr, transmute(f16x4::splat(0.0)));
14335 simd_shuffle!(x, x, [0, 0, 0, 0])
14336}
14337#[doc = "Load one single-element structure and replicate to all lanes of one register"]
14338#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_f16)"]
14339#[doc = "## Safety"]
14340#[doc = " * Neon instrinsic unsafe"]
14341#[inline]
14342#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14343#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
14344#[cfg_attr(
14345 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14346 assert_instr(ld1r)
14347)]
14348#[target_feature(enable = "neon,fp16")]
14349#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
14350#[cfg(not(target_arch = "arm64ec"))]
14351pub unsafe fn vld1q_dup_f16(ptr: *const f16) -> float16x8_t {
14352 let x: float16x8_t = vld1q_lane_f16::<0>(ptr, transmute(f16x8::splat(0.0)));
14353 simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0])
14354}
14355#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14356#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_f32)"]
14357#[doc = "## Safety"]
14358#[doc = " * Neon instrinsic unsafe"]
14359#[inline]
14360#[target_feature(enable = "neon")]
14361#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14362#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
14363#[cfg_attr(
14364 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14365 assert_instr(ld1r)
14366)]
14367#[cfg_attr(
14368 not(target_arch = "arm"),
14369 stable(feature = "neon_intrinsics", since = "1.59.0")
14370)]
14371#[cfg_attr(
14372 target_arch = "arm",
14373 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14374)]
14375pub unsafe fn vld1_dup_f32(ptr: *const f32) -> float32x2_t {
14376 transmute(f32x2::splat(*ptr))
14377}
14378#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14379#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p16)"]
14380#[doc = "## Safety"]
14381#[doc = " * Neon instrinsic unsafe"]
14382#[inline]
14383#[target_feature(enable = "neon")]
14384#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14385#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
14386#[cfg_attr(
14387 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14388 assert_instr(ld1r)
14389)]
14390#[cfg_attr(
14391 not(target_arch = "arm"),
14392 stable(feature = "neon_intrinsics", since = "1.59.0")
14393)]
14394#[cfg_attr(
14395 target_arch = "arm",
14396 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14397)]
14398pub unsafe fn vld1_dup_p16(ptr: *const p16) -> poly16x4_t {
14399 transmute(u16x4::splat(*ptr))
14400}
14401#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14402#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p8)"]
14403#[doc = "## Safety"]
14404#[doc = " * Neon instrinsic unsafe"]
14405#[inline]
14406#[target_feature(enable = "neon")]
14407#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14408#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
14409#[cfg_attr(
14410 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14411 assert_instr(ld1r)
14412)]
14413#[cfg_attr(
14414 not(target_arch = "arm"),
14415 stable(feature = "neon_intrinsics", since = "1.59.0")
14416)]
14417#[cfg_attr(
14418 target_arch = "arm",
14419 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14420)]
14421pub unsafe fn vld1_dup_p8(ptr: *const p8) -> poly8x8_t {
14422 transmute(u8x8::splat(*ptr))
14423}
14424#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14425#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s16)"]
14426#[doc = "## Safety"]
14427#[doc = " * Neon instrinsic unsafe"]
14428#[inline]
14429#[target_feature(enable = "neon")]
14430#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14431#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
14432#[cfg_attr(
14433 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14434 assert_instr(ld1r)
14435)]
14436#[cfg_attr(
14437 not(target_arch = "arm"),
14438 stable(feature = "neon_intrinsics", since = "1.59.0")
14439)]
14440#[cfg_attr(
14441 target_arch = "arm",
14442 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14443)]
14444pub unsafe fn vld1_dup_s16(ptr: *const i16) -> int16x4_t {
14445 transmute(i16x4::splat(*ptr))
14446}
14447#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14448#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s32)"]
14449#[doc = "## Safety"]
14450#[doc = " * Neon instrinsic unsafe"]
14451#[inline]
14452#[target_feature(enable = "neon")]
14453#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14454#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
14455#[cfg_attr(
14456 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14457 assert_instr(ld1r)
14458)]
14459#[cfg_attr(
14460 not(target_arch = "arm"),
14461 stable(feature = "neon_intrinsics", since = "1.59.0")
14462)]
14463#[cfg_attr(
14464 target_arch = "arm",
14465 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14466)]
14467pub unsafe fn vld1_dup_s32(ptr: *const i32) -> int32x2_t {
14468 transmute(i32x2::splat(*ptr))
14469}
14470#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14471#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s8)"]
14472#[doc = "## Safety"]
14473#[doc = " * Neon instrinsic unsafe"]
14474#[inline]
14475#[target_feature(enable = "neon")]
14476#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14477#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
14478#[cfg_attr(
14479 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14480 assert_instr(ld1r)
14481)]
14482#[cfg_attr(
14483 not(target_arch = "arm"),
14484 stable(feature = "neon_intrinsics", since = "1.59.0")
14485)]
14486#[cfg_attr(
14487 target_arch = "arm",
14488 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14489)]
14490pub unsafe fn vld1_dup_s8(ptr: *const i8) -> int8x8_t {
14491 transmute(i8x8::splat(*ptr))
14492}
14493#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14494#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u16)"]
14495#[doc = "## Safety"]
14496#[doc = " * Neon instrinsic unsafe"]
14497#[inline]
14498#[target_feature(enable = "neon")]
14499#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14500#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
14501#[cfg_attr(
14502 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14503 assert_instr(ld1r)
14504)]
14505#[cfg_attr(
14506 not(target_arch = "arm"),
14507 stable(feature = "neon_intrinsics", since = "1.59.0")
14508)]
14509#[cfg_attr(
14510 target_arch = "arm",
14511 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14512)]
14513pub unsafe fn vld1_dup_u16(ptr: *const u16) -> uint16x4_t {
14514 transmute(u16x4::splat(*ptr))
14515}
14516#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14517#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u32)"]
14518#[doc = "## Safety"]
14519#[doc = " * Neon instrinsic unsafe"]
14520#[inline]
14521#[target_feature(enable = "neon")]
14522#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14523#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
14524#[cfg_attr(
14525 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14526 assert_instr(ld1r)
14527)]
14528#[cfg_attr(
14529 not(target_arch = "arm"),
14530 stable(feature = "neon_intrinsics", since = "1.59.0")
14531)]
14532#[cfg_attr(
14533 target_arch = "arm",
14534 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14535)]
14536pub unsafe fn vld1_dup_u32(ptr: *const u32) -> uint32x2_t {
14537 transmute(u32x2::splat(*ptr))
14538}
14539#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14540#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u8)"]
14541#[doc = "## Safety"]
14542#[doc = " * Neon instrinsic unsafe"]
14543#[inline]
14544#[target_feature(enable = "neon")]
14545#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14546#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
14547#[cfg_attr(
14548 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14549 assert_instr(ld1r)
14550)]
14551#[cfg_attr(
14552 not(target_arch = "arm"),
14553 stable(feature = "neon_intrinsics", since = "1.59.0")
14554)]
14555#[cfg_attr(
14556 target_arch = "arm",
14557 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14558)]
14559pub unsafe fn vld1_dup_u8(ptr: *const u8) -> uint8x8_t {
14560 transmute(u8x8::splat(*ptr))
14561}
14562#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14563#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_f32)"]
14564#[doc = "## Safety"]
14565#[doc = " * Neon instrinsic unsafe"]
14566#[inline]
14567#[target_feature(enable = "neon")]
14568#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14569#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
14570#[cfg_attr(
14571 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14572 assert_instr(ld1r)
14573)]
14574#[cfg_attr(
14575 not(target_arch = "arm"),
14576 stable(feature = "neon_intrinsics", since = "1.59.0")
14577)]
14578#[cfg_attr(
14579 target_arch = "arm",
14580 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14581)]
14582pub unsafe fn vld1q_dup_f32(ptr: *const f32) -> float32x4_t {
14583 transmute(f32x4::splat(*ptr))
14584}
14585#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14586#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_p16)"]
14587#[doc = "## Safety"]
14588#[doc = " * Neon instrinsic unsafe"]
14589#[inline]
14590#[target_feature(enable = "neon")]
14591#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14592#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
14593#[cfg_attr(
14594 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14595 assert_instr(ld1r)
14596)]
14597#[cfg_attr(
14598 not(target_arch = "arm"),
14599 stable(feature = "neon_intrinsics", since = "1.59.0")
14600)]
14601#[cfg_attr(
14602 target_arch = "arm",
14603 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14604)]
14605pub unsafe fn vld1q_dup_p16(ptr: *const p16) -> poly16x8_t {
14606 transmute(u16x8::splat(*ptr))
14607}
14608#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14609#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_p8)"]
14610#[doc = "## Safety"]
14611#[doc = " * Neon instrinsic unsafe"]
14612#[inline]
14613#[target_feature(enable = "neon")]
14614#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14615#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
14616#[cfg_attr(
14617 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14618 assert_instr(ld1r)
14619)]
14620#[cfg_attr(
14621 not(target_arch = "arm"),
14622 stable(feature = "neon_intrinsics", since = "1.59.0")
14623)]
14624#[cfg_attr(
14625 target_arch = "arm",
14626 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14627)]
14628pub unsafe fn vld1q_dup_p8(ptr: *const p8) -> poly8x16_t {
14629 transmute(u8x16::splat(*ptr))
14630}
14631#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14632#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s16)"]
14633#[doc = "## Safety"]
14634#[doc = " * Neon instrinsic unsafe"]
14635#[inline]
14636#[target_feature(enable = "neon")]
14637#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14638#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
14639#[cfg_attr(
14640 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14641 assert_instr(ld1r)
14642)]
14643#[cfg_attr(
14644 not(target_arch = "arm"),
14645 stable(feature = "neon_intrinsics", since = "1.59.0")
14646)]
14647#[cfg_attr(
14648 target_arch = "arm",
14649 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14650)]
14651pub unsafe fn vld1q_dup_s16(ptr: *const i16) -> int16x8_t {
14652 transmute(i16x8::splat(*ptr))
14653}
14654#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14655#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s32)"]
14656#[doc = "## Safety"]
14657#[doc = " * Neon instrinsic unsafe"]
14658#[inline]
14659#[target_feature(enable = "neon")]
14660#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14661#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
14662#[cfg_attr(
14663 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14664 assert_instr(ld1r)
14665)]
14666#[cfg_attr(
14667 not(target_arch = "arm"),
14668 stable(feature = "neon_intrinsics", since = "1.59.0")
14669)]
14670#[cfg_attr(
14671 target_arch = "arm",
14672 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14673)]
14674pub unsafe fn vld1q_dup_s32(ptr: *const i32) -> int32x4_t {
14675 transmute(i32x4::splat(*ptr))
14676}
14677#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14678#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s64)"]
14679#[doc = "## Safety"]
14680#[doc = " * Neon instrinsic unsafe"]
14681#[inline]
14682#[target_feature(enable = "neon")]
14683#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14684#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vldr"))]
14685#[cfg_attr(
14686 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14687 assert_instr(ld1r)
14688)]
14689#[cfg_attr(
14690 not(target_arch = "arm"),
14691 stable(feature = "neon_intrinsics", since = "1.59.0")
14692)]
14693#[cfg_attr(
14694 target_arch = "arm",
14695 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14696)]
14697pub unsafe fn vld1q_dup_s64(ptr: *const i64) -> int64x2_t {
14698 transmute(i64x2::splat(*ptr))
14699}
14700#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14701#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s8)"]
14702#[doc = "## Safety"]
14703#[doc = " * Neon instrinsic unsafe"]
14704#[inline]
14705#[target_feature(enable = "neon")]
14706#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14707#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
14708#[cfg_attr(
14709 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14710 assert_instr(ld1r)
14711)]
14712#[cfg_attr(
14713 not(target_arch = "arm"),
14714 stable(feature = "neon_intrinsics", since = "1.59.0")
14715)]
14716#[cfg_attr(
14717 target_arch = "arm",
14718 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14719)]
14720pub unsafe fn vld1q_dup_s8(ptr: *const i8) -> int8x16_t {
14721 transmute(i8x16::splat(*ptr))
14722}
14723#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14724#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u16)"]
14725#[doc = "## Safety"]
14726#[doc = " * Neon instrinsic unsafe"]
14727#[inline]
14728#[target_feature(enable = "neon")]
14729#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14730#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
14731#[cfg_attr(
14732 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14733 assert_instr(ld1r)
14734)]
14735#[cfg_attr(
14736 not(target_arch = "arm"),
14737 stable(feature = "neon_intrinsics", since = "1.59.0")
14738)]
14739#[cfg_attr(
14740 target_arch = "arm",
14741 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14742)]
14743pub unsafe fn vld1q_dup_u16(ptr: *const u16) -> uint16x8_t {
14744 transmute(u16x8::splat(*ptr))
14745}
14746#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14747#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u32)"]
14748#[doc = "## Safety"]
14749#[doc = " * Neon instrinsic unsafe"]
14750#[inline]
14751#[target_feature(enable = "neon")]
14752#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14753#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
14754#[cfg_attr(
14755 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14756 assert_instr(ld1r)
14757)]
14758#[cfg_attr(
14759 not(target_arch = "arm"),
14760 stable(feature = "neon_intrinsics", since = "1.59.0")
14761)]
14762#[cfg_attr(
14763 target_arch = "arm",
14764 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14765)]
14766pub unsafe fn vld1q_dup_u32(ptr: *const u32) -> uint32x4_t {
14767 transmute(u32x4::splat(*ptr))
14768}
14769#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14770#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u64)"]
14771#[doc = "## Safety"]
14772#[doc = " * Neon instrinsic unsafe"]
14773#[inline]
14774#[target_feature(enable = "neon")]
14775#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14776#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vldr"))]
14777#[cfg_attr(
14778 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14779 assert_instr(ld1r)
14780)]
14781#[cfg_attr(
14782 not(target_arch = "arm"),
14783 stable(feature = "neon_intrinsics", since = "1.59.0")
14784)]
14785#[cfg_attr(
14786 target_arch = "arm",
14787 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14788)]
14789pub unsafe fn vld1q_dup_u64(ptr: *const u64) -> uint64x2_t {
14790 transmute(u64x2::splat(*ptr))
14791}
14792#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14793#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u8)"]
14794#[doc = "## Safety"]
14795#[doc = " * Neon instrinsic unsafe"]
14796#[inline]
14797#[target_feature(enable = "neon")]
14798#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14799#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
14800#[cfg_attr(
14801 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14802 assert_instr(ld1r)
14803)]
14804#[cfg_attr(
14805 not(target_arch = "arm"),
14806 stable(feature = "neon_intrinsics", since = "1.59.0")
14807)]
14808#[cfg_attr(
14809 target_arch = "arm",
14810 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14811)]
14812pub unsafe fn vld1q_dup_u8(ptr: *const u8) -> uint8x16_t {
14813 transmute(u8x16::splat(*ptr))
14814}
14815#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14816#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p64)"]
14817#[doc = "## Safety"]
14818#[doc = " * Neon instrinsic unsafe"]
14819#[inline]
14820#[target_feature(enable = "neon,aes")]
14821#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14822#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
14823#[cfg_attr(
14824 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14825 assert_instr(ldr)
14826)]
14827#[cfg_attr(
14828 not(target_arch = "arm"),
14829 stable(feature = "neon_intrinsics", since = "1.59.0")
14830)]
14831#[cfg_attr(
14832 target_arch = "arm",
14833 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14834)]
14835pub unsafe fn vld1_dup_p64(ptr: *const p64) -> poly64x1_t {
14836 let x: poly64x1_t;
14837 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
14838 {
14839 x = crate::core_arch::aarch64::vld1_p64(ptr);
14840 }
14841 #[cfg(target_arch = "arm")]
14842 {
14843 x = crate::core_arch::arm::vld1_p64(ptr);
14844 };
14845 x
14846}
14847#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14848#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s64)"]
14849#[doc = "## Safety"]
14850#[doc = " * Neon instrinsic unsafe"]
14851#[inline]
14852#[target_feature(enable = "neon")]
14853#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14854#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
14855#[cfg_attr(
14856 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14857 assert_instr(ldr)
14858)]
14859#[cfg_attr(
14860 not(target_arch = "arm"),
14861 stable(feature = "neon_intrinsics", since = "1.59.0")
14862)]
14863#[cfg_attr(
14864 target_arch = "arm",
14865 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14866)]
14867pub unsafe fn vld1_dup_s64(ptr: *const i64) -> int64x1_t {
14868 let x: int64x1_t;
14869 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
14870 {
14871 x = crate::core_arch::aarch64::vld1_s64(ptr);
14872 }
14873 #[cfg(target_arch = "arm")]
14874 {
14875 x = crate::core_arch::arm::vld1_s64(ptr);
14876 };
14877 x
14878}
14879#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14880#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u64)"]
14881#[doc = "## Safety"]
14882#[doc = " * Neon instrinsic unsafe"]
14883#[inline]
14884#[target_feature(enable = "neon")]
14885#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14886#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
14887#[cfg_attr(
14888 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14889 assert_instr(ldr)
14890)]
14891#[cfg_attr(
14892 not(target_arch = "arm"),
14893 stable(feature = "neon_intrinsics", since = "1.59.0")
14894)]
14895#[cfg_attr(
14896 target_arch = "arm",
14897 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14898)]
14899pub unsafe fn vld1_dup_u64(ptr: *const u64) -> uint64x1_t {
14900 let x: uint64x1_t;
14901 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
14902 {
14903 x = crate::core_arch::aarch64::vld1_u64(ptr);
14904 }
14905 #[cfg(target_arch = "arm")]
14906 {
14907 x = crate::core_arch::arm::vld1_u64(ptr);
14908 };
14909 x
14910}
14911#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
14912#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16)"]
14913#[doc = "## Safety"]
14914#[doc = " * Neon instrinsic unsafe"]
14915#[inline]
14916#[cfg(target_endian = "little")]
14917#[cfg(target_arch = "arm")]
14918#[target_feature(enable = "neon,v7")]
14919#[target_feature(enable = "neon,fp16")]
14920#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
14921#[cfg(not(target_arch = "arm64ec"))]
14922#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
14923pub unsafe fn vld1_f16(ptr: *const f16) -> float16x4_t {
14924 transmute(vld1_v4f16(
14925 ptr as *const i8,
14926 crate::mem::align_of::<f16>() as i32,
14927 ))
14928}
14929#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
14930#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16)"]
14931#[doc = "## Safety"]
14932#[doc = " * Neon instrinsic unsafe"]
14933#[inline]
14934#[cfg(target_endian = "big")]
14935#[cfg(target_arch = "arm")]
14936#[target_feature(enable = "neon,v7")]
14937#[target_feature(enable = "neon,fp16")]
14938#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
14939#[cfg(not(target_arch = "arm64ec"))]
14940#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
14941pub unsafe fn vld1_f16(ptr: *const f16) -> float16x4_t {
14942 let ret_val: float16x4_t = transmute(vld1_v4f16(
14943 ptr as *const i8,
14944 crate::mem::align_of::<f16>() as i32,
14945 ));
14946 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
14947}
14948#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
14949#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f16)"]
14950#[doc = "## Safety"]
14951#[doc = " * Neon instrinsic unsafe"]
14952#[inline]
14953#[cfg(target_endian = "little")]
14954#[cfg(target_arch = "arm")]
14955#[target_feature(enable = "neon,v7")]
14956#[target_feature(enable = "neon,fp16")]
14957#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
14958#[cfg(not(target_arch = "arm64ec"))]
14959#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
14960pub unsafe fn vld1q_f16(ptr: *const f16) -> float16x8_t {
14961 transmute(vld1q_v8f16(
14962 ptr as *const i8,
14963 crate::mem::align_of::<f16>() as i32,
14964 ))
14965}
14966#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
14967#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f16)"]
14968#[doc = "## Safety"]
14969#[doc = " * Neon instrinsic unsafe"]
14970#[inline]
14971#[cfg(target_endian = "big")]
14972#[cfg(target_arch = "arm")]
14973#[target_feature(enable = "neon,v7")]
14974#[target_feature(enable = "neon,fp16")]
14975#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
14976#[cfg(not(target_arch = "arm64ec"))]
14977#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
14978pub unsafe fn vld1q_f16(ptr: *const f16) -> float16x8_t {
14979 let ret_val: float16x8_t = transmute(vld1q_v8f16(
14980 ptr as *const i8,
14981 crate::mem::align_of::<f16>() as i32,
14982 ));
14983 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
14984}
14985#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
14986#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16_x2)"]
14987#[doc = "## Safety"]
14988#[doc = " * Neon instrinsic unsafe"]
14989#[inline]
14990#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14991#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
14992#[cfg_attr(
14993 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14994 assert_instr(ld1)
14995)]
14996#[target_feature(enable = "neon,fp16")]
14997#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
14998#[cfg(not(target_arch = "arm64ec"))]
14999pub unsafe fn vld1_f16_x2(a: *const f16) -> float16x4x2_t {
15000 unsafe extern "unadjusted" {
15001 #[cfg_attr(
15002 any(target_arch = "aarch64", target_arch = "arm64ec"),
15003 link_name = "llvm.aarch64.neon.ld1x2.v4f16.p0"
15004 )]
15005 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v4f16.p0")]
15006 fn _vld1_f16_x2(a: *const f16) -> float16x4x2_t;
15007 }
15008 _vld1_f16_x2(a)
15009}
15010#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15011#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16_x3)"]
15012#[doc = "## Safety"]
15013#[doc = " * Neon instrinsic unsafe"]
15014#[inline]
15015#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15016#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15017#[cfg_attr(
15018 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15019 assert_instr(ld1)
15020)]
15021#[target_feature(enable = "neon,fp16")]
15022#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15023#[cfg(not(target_arch = "arm64ec"))]
15024pub unsafe fn vld1_f16_x3(a: *const f16) -> float16x4x3_t {
15025 unsafe extern "unadjusted" {
15026 #[cfg_attr(
15027 any(target_arch = "aarch64", target_arch = "arm64ec"),
15028 link_name = "llvm.aarch64.neon.ld1x3.v4f16.p0"
15029 )]
15030 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v4f16.p0")]
15031 fn _vld1_f16_x3(a: *const f16) -> float16x4x3_t;
15032 }
15033 _vld1_f16_x3(a)
15034}
15035#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15036#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16_x4)"]
15037#[doc = "## Safety"]
15038#[doc = " * Neon instrinsic unsafe"]
15039#[inline]
15040#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15041#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15042#[cfg_attr(
15043 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15044 assert_instr(ld1)
15045)]
15046#[target_feature(enable = "neon,fp16")]
15047#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15048#[cfg(not(target_arch = "arm64ec"))]
15049pub unsafe fn vld1_f16_x4(a: *const f16) -> float16x4x4_t {
15050 unsafe extern "unadjusted" {
15051 #[cfg_attr(
15052 any(target_arch = "aarch64", target_arch = "arm64ec"),
15053 link_name = "llvm.aarch64.neon.ld1x4.v4f16.p0"
15054 )]
15055 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v4f16.p0")]
15056 fn _vld1_f16_x4(a: *const f16) -> float16x4x4_t;
15057 }
15058 _vld1_f16_x4(a)
15059}
15060#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15061#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f16_x2)"]
15062#[doc = "## Safety"]
15063#[doc = " * Neon instrinsic unsafe"]
15064#[inline]
15065#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15066#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15067#[cfg_attr(
15068 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15069 assert_instr(ld1)
15070)]
15071#[target_feature(enable = "neon,fp16")]
15072#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15073#[cfg(not(target_arch = "arm64ec"))]
15074pub unsafe fn vld1q_f16_x2(a: *const f16) -> float16x8x2_t {
15075 unsafe extern "unadjusted" {
15076 #[cfg_attr(
15077 any(target_arch = "aarch64", target_arch = "arm64ec"),
15078 link_name = "llvm.aarch64.neon.ld1x2.v8f16.p0"
15079 )]
15080 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v8f16.p0")]
15081 fn _vld1q_f16_x2(a: *const f16) -> float16x8x2_t;
15082 }
15083 _vld1q_f16_x2(a)
15084}
15085#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15086#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f16_x3)"]
15087#[doc = "## Safety"]
15088#[doc = " * Neon instrinsic unsafe"]
15089#[inline]
15090#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15091#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15092#[cfg_attr(
15093 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15094 assert_instr(ld1)
15095)]
15096#[target_feature(enable = "neon,fp16")]
15097#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15098#[cfg(not(target_arch = "arm64ec"))]
15099pub unsafe fn vld1q_f16_x3(a: *const f16) -> float16x8x3_t {
15100 unsafe extern "unadjusted" {
15101 #[cfg_attr(
15102 any(target_arch = "aarch64", target_arch = "arm64ec"),
15103 link_name = "llvm.aarch64.neon.ld1x3.v8f16.p0"
15104 )]
15105 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v8f16.p0")]
15106 fn _vld1q_f16_x3(a: *const f16) -> float16x8x3_t;
15107 }
15108 _vld1q_f16_x3(a)
15109}
15110#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15111#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f16_x4)"]
15112#[doc = "## Safety"]
15113#[doc = " * Neon instrinsic unsafe"]
15114#[inline]
15115#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15116#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15117#[cfg_attr(
15118 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15119 assert_instr(ld1)
15120)]
15121#[target_feature(enable = "neon,fp16")]
15122#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15123#[cfg(not(target_arch = "arm64ec"))]
15124pub unsafe fn vld1q_f16_x4(a: *const f16) -> float16x8x4_t {
15125 unsafe extern "unadjusted" {
15126 #[cfg_attr(
15127 any(target_arch = "aarch64", target_arch = "arm64ec"),
15128 link_name = "llvm.aarch64.neon.ld1x4.v8f16.p0"
15129 )]
15130 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v8f16.p0")]
15131 fn _vld1q_f16_x4(a: *const f16) -> float16x8x4_t;
15132 }
15133 _vld1q_f16_x4(a)
15134}
15135#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15136#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f32)"]
15137#[doc = "## Safety"]
15138#[doc = " * Neon instrinsic unsafe"]
15139#[inline]
15140#[cfg(target_endian = "little")]
15141#[cfg(target_arch = "arm")]
15142#[target_feature(enable = "neon,v7")]
15143#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15144#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15145pub unsafe fn vld1_f32(ptr: *const f32) -> float32x2_t {
15146 transmute(vld1_v2f32(
15147 ptr as *const i8,
15148 crate::mem::align_of::<f32>() as i32,
15149 ))
15150}
15151#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15152#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f32)"]
15153#[doc = "## Safety"]
15154#[doc = " * Neon instrinsic unsafe"]
15155#[inline]
15156#[cfg(target_endian = "big")]
15157#[cfg(target_arch = "arm")]
15158#[target_feature(enable = "neon,v7")]
15159#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15160#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15161pub unsafe fn vld1_f32(ptr: *const f32) -> float32x2_t {
15162 let ret_val: float32x2_t = transmute(vld1_v2f32(
15163 ptr as *const i8,
15164 crate::mem::align_of::<f32>() as i32,
15165 ));
15166 simd_shuffle!(ret_val, ret_val, [1, 0])
15167}
15168#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15169#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f32)"]
15170#[doc = "## Safety"]
15171#[doc = " * Neon instrinsic unsafe"]
15172#[inline]
15173#[cfg(target_endian = "little")]
15174#[cfg(target_arch = "arm")]
15175#[target_feature(enable = "neon,v7")]
15176#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15177#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15178pub unsafe fn vld1q_f32(ptr: *const f32) -> float32x4_t {
15179 transmute(vld1q_v4f32(
15180 ptr as *const i8,
15181 crate::mem::align_of::<f32>() as i32,
15182 ))
15183}
15184#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15185#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f32)"]
15186#[doc = "## Safety"]
15187#[doc = " * Neon instrinsic unsafe"]
15188#[inline]
15189#[cfg(target_endian = "big")]
15190#[cfg(target_arch = "arm")]
15191#[target_feature(enable = "neon,v7")]
15192#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15193#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15194pub unsafe fn vld1q_f32(ptr: *const f32) -> float32x4_t {
15195 let ret_val: float32x4_t = transmute(vld1q_v4f32(
15196 ptr as *const i8,
15197 crate::mem::align_of::<f32>() as i32,
15198 ));
15199 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
15200}
15201#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15202#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8)"]
15203#[doc = "## Safety"]
15204#[doc = " * Neon instrinsic unsafe"]
15205#[inline]
15206#[cfg(target_endian = "little")]
15207#[cfg(target_arch = "arm")]
15208#[target_feature(enable = "neon,v7")]
15209#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15210#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15211pub unsafe fn vld1_u8(ptr: *const u8) -> uint8x8_t {
15212 transmute(vld1_v8i8(
15213 ptr as *const i8,
15214 crate::mem::align_of::<u8>() as i32,
15215 ))
15216}
15217#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15218#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8)"]
15219#[doc = "## Safety"]
15220#[doc = " * Neon instrinsic unsafe"]
15221#[inline]
15222#[cfg(target_endian = "big")]
15223#[cfg(target_arch = "arm")]
15224#[target_feature(enable = "neon,v7")]
15225#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15226#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15227pub unsafe fn vld1_u8(ptr: *const u8) -> uint8x8_t {
15228 let ret_val: uint8x8_t = transmute(vld1_v8i8(
15229 ptr as *const i8,
15230 crate::mem::align_of::<u8>() as i32,
15231 ));
15232 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
15233}
15234#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15235#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8)"]
15236#[doc = "## Safety"]
15237#[doc = " * Neon instrinsic unsafe"]
15238#[inline]
15239#[cfg(target_endian = "little")]
15240#[cfg(target_arch = "arm")]
15241#[target_feature(enable = "neon,v7")]
15242#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15243#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15244pub unsafe fn vld1q_u8(ptr: *const u8) -> uint8x16_t {
15245 transmute(vld1q_v16i8(
15246 ptr as *const i8,
15247 crate::mem::align_of::<u8>() as i32,
15248 ))
15249}
15250#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15251#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8)"]
15252#[doc = "## Safety"]
15253#[doc = " * Neon instrinsic unsafe"]
15254#[inline]
15255#[cfg(target_endian = "big")]
15256#[cfg(target_arch = "arm")]
15257#[target_feature(enable = "neon,v7")]
15258#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15259#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15260pub unsafe fn vld1q_u8(ptr: *const u8) -> uint8x16_t {
15261 let ret_val: uint8x16_t = transmute(vld1q_v16i8(
15262 ptr as *const i8,
15263 crate::mem::align_of::<u8>() as i32,
15264 ));
15265 simd_shuffle!(
15266 ret_val,
15267 ret_val,
15268 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
15269 )
15270}
15271#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15272#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16)"]
15273#[doc = "## Safety"]
15274#[doc = " * Neon instrinsic unsafe"]
15275#[inline]
15276#[cfg(target_endian = "little")]
15277#[cfg(target_arch = "arm")]
15278#[target_feature(enable = "neon,v7")]
15279#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15280#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15281pub unsafe fn vld1_u16(ptr: *const u16) -> uint16x4_t {
15282 transmute(vld1_v4i16(
15283 ptr as *const i8,
15284 crate::mem::align_of::<u16>() as i32,
15285 ))
15286}
15287#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15288#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16)"]
15289#[doc = "## Safety"]
15290#[doc = " * Neon instrinsic unsafe"]
15291#[inline]
15292#[cfg(target_endian = "big")]
15293#[cfg(target_arch = "arm")]
15294#[target_feature(enable = "neon,v7")]
15295#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15296#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15297pub unsafe fn vld1_u16(ptr: *const u16) -> uint16x4_t {
15298 let ret_val: uint16x4_t = transmute(vld1_v4i16(
15299 ptr as *const i8,
15300 crate::mem::align_of::<u16>() as i32,
15301 ));
15302 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
15303}
15304#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16)"]
15306#[doc = "## Safety"]
15307#[doc = " * Neon instrinsic unsafe"]
15308#[inline]
15309#[cfg(target_endian = "little")]
15310#[cfg(target_arch = "arm")]
15311#[target_feature(enable = "neon,v7")]
15312#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15313#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15314pub unsafe fn vld1q_u16(ptr: *const u16) -> uint16x8_t {
15315 transmute(vld1q_v8i16(
15316 ptr as *const i8,
15317 crate::mem::align_of::<u16>() as i32,
15318 ))
15319}
15320#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15321#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16)"]
15322#[doc = "## Safety"]
15323#[doc = " * Neon instrinsic unsafe"]
15324#[inline]
15325#[cfg(target_endian = "big")]
15326#[cfg(target_arch = "arm")]
15327#[target_feature(enable = "neon,v7")]
15328#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15329#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15330pub unsafe fn vld1q_u16(ptr: *const u16) -> uint16x8_t {
15331 let ret_val: uint16x8_t = transmute(vld1q_v8i16(
15332 ptr as *const i8,
15333 crate::mem::align_of::<u16>() as i32,
15334 ));
15335 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
15336}
15337#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15338#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32)"]
15339#[doc = "## Safety"]
15340#[doc = " * Neon instrinsic unsafe"]
15341#[inline]
15342#[cfg(target_endian = "little")]
15343#[cfg(target_arch = "arm")]
15344#[target_feature(enable = "neon,v7")]
15345#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15346#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15347pub unsafe fn vld1_u32(ptr: *const u32) -> uint32x2_t {
15348 transmute(vld1_v2i32(
15349 ptr as *const i8,
15350 crate::mem::align_of::<u32>() as i32,
15351 ))
15352}
15353#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15354#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32)"]
15355#[doc = "## Safety"]
15356#[doc = " * Neon instrinsic unsafe"]
15357#[inline]
15358#[cfg(target_endian = "big")]
15359#[cfg(target_arch = "arm")]
15360#[target_feature(enable = "neon,v7")]
15361#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15362#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15363pub unsafe fn vld1_u32(ptr: *const u32) -> uint32x2_t {
15364 let ret_val: uint32x2_t = transmute(vld1_v2i32(
15365 ptr as *const i8,
15366 crate::mem::align_of::<u32>() as i32,
15367 ));
15368 simd_shuffle!(ret_val, ret_val, [1, 0])
15369}
15370#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15371#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32)"]
15372#[doc = "## Safety"]
15373#[doc = " * Neon instrinsic unsafe"]
15374#[inline]
15375#[cfg(target_endian = "little")]
15376#[cfg(target_arch = "arm")]
15377#[target_feature(enable = "neon,v7")]
15378#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15379#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15380pub unsafe fn vld1q_u32(ptr: *const u32) -> uint32x4_t {
15381 transmute(vld1q_v4i32(
15382 ptr as *const i8,
15383 crate::mem::align_of::<u32>() as i32,
15384 ))
15385}
15386#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15387#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32)"]
15388#[doc = "## Safety"]
15389#[doc = " * Neon instrinsic unsafe"]
15390#[inline]
15391#[cfg(target_endian = "big")]
15392#[cfg(target_arch = "arm")]
15393#[target_feature(enable = "neon,v7")]
15394#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15395#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15396pub unsafe fn vld1q_u32(ptr: *const u32) -> uint32x4_t {
15397 let ret_val: uint32x4_t = transmute(vld1q_v4i32(
15398 ptr as *const i8,
15399 crate::mem::align_of::<u32>() as i32,
15400 ));
15401 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
15402}
15403#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15404#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u64)"]
15405#[doc = "## Safety"]
15406#[doc = " * Neon instrinsic unsafe"]
15407#[inline]
15408#[cfg(target_arch = "arm")]
15409#[target_feature(enable = "neon,v7")]
15410#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15411#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15412pub unsafe fn vld1_u64(ptr: *const u64) -> uint64x1_t {
15413 transmute(vld1_v1i64(
15414 ptr as *const i8,
15415 crate::mem::align_of::<u64>() as i32,
15416 ))
15417}
15418#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15419#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u64)"]
15420#[doc = "## Safety"]
15421#[doc = " * Neon instrinsic unsafe"]
15422#[inline]
15423#[cfg(target_endian = "little")]
15424#[cfg(target_arch = "arm")]
15425#[target_feature(enable = "neon,v7")]
15426#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15427#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.64"))]
15428pub unsafe fn vld1q_u64(ptr: *const u64) -> uint64x2_t {
15429 transmute(vld1q_v2i64(
15430 ptr as *const i8,
15431 crate::mem::align_of::<u64>() as i32,
15432 ))
15433}
15434#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15435#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u64)"]
15436#[doc = "## Safety"]
15437#[doc = " * Neon instrinsic unsafe"]
15438#[inline]
15439#[cfg(target_endian = "big")]
15440#[cfg(target_arch = "arm")]
15441#[target_feature(enable = "neon,v7")]
15442#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15443#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.64"))]
15444pub unsafe fn vld1q_u64(ptr: *const u64) -> uint64x2_t {
15445 let ret_val: uint64x2_t = transmute(vld1q_v2i64(
15446 ptr as *const i8,
15447 crate::mem::align_of::<u64>() as i32,
15448 ));
15449 simd_shuffle!(ret_val, ret_val, [1, 0])
15450}
15451#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15452#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p8)"]
15453#[doc = "## Safety"]
15454#[doc = " * Neon instrinsic unsafe"]
15455#[inline]
15456#[cfg(target_endian = "little")]
15457#[cfg(target_arch = "arm")]
15458#[target_feature(enable = "neon,v7")]
15459#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15460#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15461pub unsafe fn vld1_p8(ptr: *const p8) -> poly8x8_t {
15462 transmute(vld1_v8i8(
15463 ptr as *const i8,
15464 crate::mem::align_of::<p8>() as i32,
15465 ))
15466}
15467#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15468#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p8)"]
15469#[doc = "## Safety"]
15470#[doc = " * Neon instrinsic unsafe"]
15471#[inline]
15472#[cfg(target_endian = "big")]
15473#[cfg(target_arch = "arm")]
15474#[target_feature(enable = "neon,v7")]
15475#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15476#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15477pub unsafe fn vld1_p8(ptr: *const p8) -> poly8x8_t {
15478 let ret_val: poly8x8_t = transmute(vld1_v8i8(
15479 ptr as *const i8,
15480 crate::mem::align_of::<p8>() as i32,
15481 ));
15482 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
15483}
15484#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15485#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8)"]
15486#[doc = "## Safety"]
15487#[doc = " * Neon instrinsic unsafe"]
15488#[inline]
15489#[cfg(target_endian = "little")]
15490#[cfg(target_arch = "arm")]
15491#[target_feature(enable = "neon,v7")]
15492#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15493#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15494pub unsafe fn vld1q_p8(ptr: *const p8) -> poly8x16_t {
15495 transmute(vld1q_v16i8(
15496 ptr as *const i8,
15497 crate::mem::align_of::<p8>() as i32,
15498 ))
15499}
15500#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15501#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8)"]
15502#[doc = "## Safety"]
15503#[doc = " * Neon instrinsic unsafe"]
15504#[inline]
15505#[cfg(target_endian = "big")]
15506#[cfg(target_arch = "arm")]
15507#[target_feature(enable = "neon,v7")]
15508#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15509#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15510pub unsafe fn vld1q_p8(ptr: *const p8) -> poly8x16_t {
15511 let ret_val: poly8x16_t = transmute(vld1q_v16i8(
15512 ptr as *const i8,
15513 crate::mem::align_of::<p8>() as i32,
15514 ));
15515 simd_shuffle!(
15516 ret_val,
15517 ret_val,
15518 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
15519 )
15520}
15521#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15522#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p16)"]
15523#[doc = "## Safety"]
15524#[doc = " * Neon instrinsic unsafe"]
15525#[inline]
15526#[cfg(target_endian = "little")]
15527#[cfg(target_arch = "arm")]
15528#[target_feature(enable = "neon,v7")]
15529#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15530#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15531pub unsafe fn vld1_p16(ptr: *const p16) -> poly16x4_t {
15532 transmute(vld1_v4i16(
15533 ptr as *const i8,
15534 crate::mem::align_of::<p16>() as i32,
15535 ))
15536}
15537#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15538#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p16)"]
15539#[doc = "## Safety"]
15540#[doc = " * Neon instrinsic unsafe"]
15541#[inline]
15542#[cfg(target_endian = "big")]
15543#[cfg(target_arch = "arm")]
15544#[target_feature(enable = "neon,v7")]
15545#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15546#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15547pub unsafe fn vld1_p16(ptr: *const p16) -> poly16x4_t {
15548 let ret_val: poly16x4_t = transmute(vld1_v4i16(
15549 ptr as *const i8,
15550 crate::mem::align_of::<p16>() as i32,
15551 ));
15552 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
15553}
15554#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15555#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16)"]
15556#[doc = "## Safety"]
15557#[doc = " * Neon instrinsic unsafe"]
15558#[inline]
15559#[cfg(target_endian = "little")]
15560#[cfg(target_arch = "arm")]
15561#[target_feature(enable = "neon,v7")]
15562#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15563#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15564pub unsafe fn vld1q_p16(ptr: *const p16) -> poly16x8_t {
15565 transmute(vld1q_v8i16(
15566 ptr as *const i8,
15567 crate::mem::align_of::<p16>() as i32,
15568 ))
15569}
15570#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15571#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16)"]
15572#[doc = "## Safety"]
15573#[doc = " * Neon instrinsic unsafe"]
15574#[inline]
15575#[cfg(target_endian = "big")]
15576#[cfg(target_arch = "arm")]
15577#[target_feature(enable = "neon,v7")]
15578#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15579#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15580pub unsafe fn vld1q_p16(ptr: *const p16) -> poly16x8_t {
15581 let ret_val: poly16x8_t = transmute(vld1q_v8i16(
15582 ptr as *const i8,
15583 crate::mem::align_of::<p16>() as i32,
15584 ));
15585 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
15586}
15587#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15588#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64)"]
15589#[doc = "## Safety"]
15590#[doc = " * Neon instrinsic unsafe"]
15591#[inline]
15592#[cfg(target_endian = "little")]
15593#[cfg(target_arch = "arm")]
15594#[target_feature(enable = "neon,aes")]
15595#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15596#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.64"))]
15597pub unsafe fn vld1q_p64(ptr: *const p64) -> poly64x2_t {
15598 transmute(vld1q_v2i64(
15599 ptr as *const i8,
15600 crate::mem::align_of::<p64>() as i32,
15601 ))
15602}
15603#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15604#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64)"]
15605#[doc = "## Safety"]
15606#[doc = " * Neon instrinsic unsafe"]
15607#[inline]
15608#[cfg(target_endian = "big")]
15609#[cfg(target_arch = "arm")]
15610#[target_feature(enable = "neon,aes")]
15611#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15612#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.64"))]
15613pub unsafe fn vld1q_p64(ptr: *const p64) -> poly64x2_t {
15614 let ret_val: poly64x2_t = transmute(vld1q_v2i64(
15615 ptr as *const i8,
15616 crate::mem::align_of::<p64>() as i32,
15617 ));
15618 simd_shuffle!(ret_val, ret_val, [1, 0])
15619}
15620#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15621#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f32_x2)"]
15622#[doc = "## Safety"]
15623#[doc = " * Neon instrinsic unsafe"]
15624#[inline]
15625#[target_feature(enable = "neon")]
15626#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15627#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15628#[cfg_attr(
15629 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15630 assert_instr(ld1)
15631)]
15632#[cfg_attr(
15633 not(target_arch = "arm"),
15634 stable(feature = "neon_intrinsics", since = "1.59.0")
15635)]
15636#[cfg_attr(
15637 target_arch = "arm",
15638 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15639)]
15640pub unsafe fn vld1_f32_x2(a: *const f32) -> float32x2x2_t {
15641 unsafe extern "unadjusted" {
15642 #[cfg_attr(
15643 any(target_arch = "aarch64", target_arch = "arm64ec"),
15644 link_name = "llvm.aarch64.neon.ld1x2.v2f32.p0"
15645 )]
15646 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v2f32.p0")]
15647 fn _vld1_f32_x2(a: *const f32) -> float32x2x2_t;
15648 }
15649 _vld1_f32_x2(a)
15650}
15651#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15652#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f32_x3)"]
15653#[doc = "## Safety"]
15654#[doc = " * Neon instrinsic unsafe"]
15655#[inline]
15656#[target_feature(enable = "neon")]
15657#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15658#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15659#[cfg_attr(
15660 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15661 assert_instr(ld1)
15662)]
15663#[cfg_attr(
15664 not(target_arch = "arm"),
15665 stable(feature = "neon_intrinsics", since = "1.59.0")
15666)]
15667#[cfg_attr(
15668 target_arch = "arm",
15669 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15670)]
15671pub unsafe fn vld1_f32_x3(a: *const f32) -> float32x2x3_t {
15672 unsafe extern "unadjusted" {
15673 #[cfg_attr(
15674 any(target_arch = "aarch64", target_arch = "arm64ec"),
15675 link_name = "llvm.aarch64.neon.ld1x3.v2f32.p0"
15676 )]
15677 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v2f32.p0")]
15678 fn _vld1_f32_x3(a: *const f32) -> float32x2x3_t;
15679 }
15680 _vld1_f32_x3(a)
15681}
15682#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15683#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f32_x4)"]
15684#[doc = "## Safety"]
15685#[doc = " * Neon instrinsic unsafe"]
15686#[inline]
15687#[target_feature(enable = "neon")]
15688#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15689#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15690#[cfg_attr(
15691 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15692 assert_instr(ld1)
15693)]
15694#[cfg_attr(
15695 not(target_arch = "arm"),
15696 stable(feature = "neon_intrinsics", since = "1.59.0")
15697)]
15698#[cfg_attr(
15699 target_arch = "arm",
15700 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15701)]
15702pub unsafe fn vld1_f32_x4(a: *const f32) -> float32x2x4_t {
15703 unsafe extern "unadjusted" {
15704 #[cfg_attr(
15705 any(target_arch = "aarch64", target_arch = "arm64ec"),
15706 link_name = "llvm.aarch64.neon.ld1x4.v2f32.p0"
15707 )]
15708 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v2f32.p0")]
15709 fn _vld1_f32_x4(a: *const f32) -> float32x2x4_t;
15710 }
15711 _vld1_f32_x4(a)
15712}
15713#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15714#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f32_x2)"]
15715#[doc = "## Safety"]
15716#[doc = " * Neon instrinsic unsafe"]
15717#[inline]
15718#[target_feature(enable = "neon")]
15719#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15720#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15721#[cfg_attr(
15722 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15723 assert_instr(ld1)
15724)]
15725#[cfg_attr(
15726 not(target_arch = "arm"),
15727 stable(feature = "neon_intrinsics", since = "1.59.0")
15728)]
15729#[cfg_attr(
15730 target_arch = "arm",
15731 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15732)]
15733pub unsafe fn vld1q_f32_x2(a: *const f32) -> float32x4x2_t {
15734 unsafe extern "unadjusted" {
15735 #[cfg_attr(
15736 any(target_arch = "aarch64", target_arch = "arm64ec"),
15737 link_name = "llvm.aarch64.neon.ld1x2.v4f32.p0"
15738 )]
15739 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v4f32.p0")]
15740 fn _vld1q_f32_x2(a: *const f32) -> float32x4x2_t;
15741 }
15742 _vld1q_f32_x2(a)
15743}
15744#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15745#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f32_x3)"]
15746#[doc = "## Safety"]
15747#[doc = " * Neon instrinsic unsafe"]
15748#[inline]
15749#[target_feature(enable = "neon")]
15750#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15751#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15752#[cfg_attr(
15753 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15754 assert_instr(ld1)
15755)]
15756#[cfg_attr(
15757 not(target_arch = "arm"),
15758 stable(feature = "neon_intrinsics", since = "1.59.0")
15759)]
15760#[cfg_attr(
15761 target_arch = "arm",
15762 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15763)]
15764pub unsafe fn vld1q_f32_x3(a: *const f32) -> float32x4x3_t {
15765 unsafe extern "unadjusted" {
15766 #[cfg_attr(
15767 any(target_arch = "aarch64", target_arch = "arm64ec"),
15768 link_name = "llvm.aarch64.neon.ld1x3.v4f32.p0"
15769 )]
15770 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v4f32.p0")]
15771 fn _vld1q_f32_x3(a: *const f32) -> float32x4x3_t;
15772 }
15773 _vld1q_f32_x3(a)
15774}
15775#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15776#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f32_x4)"]
15777#[doc = "## Safety"]
15778#[doc = " * Neon instrinsic unsafe"]
15779#[inline]
15780#[target_feature(enable = "neon")]
15781#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15782#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15783#[cfg_attr(
15784 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15785 assert_instr(ld1)
15786)]
15787#[cfg_attr(
15788 not(target_arch = "arm"),
15789 stable(feature = "neon_intrinsics", since = "1.59.0")
15790)]
15791#[cfg_attr(
15792 target_arch = "arm",
15793 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15794)]
15795pub unsafe fn vld1q_f32_x4(a: *const f32) -> float32x4x4_t {
15796 unsafe extern "unadjusted" {
15797 #[cfg_attr(
15798 any(target_arch = "aarch64", target_arch = "arm64ec"),
15799 link_name = "llvm.aarch64.neon.ld1x4.v4f32.p0"
15800 )]
15801 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v4f32.p0")]
15802 fn _vld1q_f32_x4(a: *const f32) -> float32x4x4_t;
15803 }
15804 _vld1q_f32_x4(a)
15805}
15806#[doc = "Load one single-element structure to one lane of one register"]
15807#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_f16)"]
15808#[doc = "## Safety"]
15809#[doc = " * Neon instrinsic unsafe"]
15810#[inline]
15811#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15812#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1, LANE = 0))]
15813#[cfg_attr(
15814 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15815 assert_instr(ld1, LANE = 0)
15816)]
15817#[rustc_legacy_const_generics(2)]
15818#[target_feature(enable = "neon,fp16")]
15819#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15820#[cfg(not(target_arch = "arm64ec"))]
15821pub unsafe fn vld1_lane_f16<const LANE: i32>(ptr: *const f16, src: float16x4_t) -> float16x4_t {
15822 static_assert_uimm_bits!(LANE, 2);
15823 simd_insert!(src, LANE as u32, *ptr)
15824}
15825#[doc = "Load one single-element structure to one lane of one register"]
15826#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_f16)"]
15827#[doc = "## Safety"]
15828#[doc = " * Neon instrinsic unsafe"]
15829#[inline]
15830#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15831#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1, LANE = 0))]
15832#[cfg_attr(
15833 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15834 assert_instr(ld1, LANE = 0)
15835)]
15836#[rustc_legacy_const_generics(2)]
15837#[target_feature(enable = "neon,fp16")]
15838#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15839#[cfg(not(target_arch = "arm64ec"))]
15840pub unsafe fn vld1q_lane_f16<const LANE: i32>(ptr: *const f16, src: float16x8_t) -> float16x8_t {
15841 static_assert_uimm_bits!(LANE, 3);
15842 simd_insert!(src, LANE as u32, *ptr)
15843}
15844#[doc = "Load one single-element structure to one lane of one register."]
15845#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_f32)"]
15846#[doc = "## Safety"]
15847#[doc = " * Neon instrinsic unsafe"]
15848#[inline]
15849#[target_feature(enable = "neon")]
15850#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15851#[rustc_legacy_const_generics(2)]
15852#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 1))]
15853#[cfg_attr(
15854 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15855 assert_instr(ld1, LANE = 1)
15856)]
15857#[cfg_attr(
15858 not(target_arch = "arm"),
15859 stable(feature = "neon_intrinsics", since = "1.59.0")
15860)]
15861#[cfg_attr(
15862 target_arch = "arm",
15863 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15864)]
15865pub unsafe fn vld1_lane_f32<const LANE: i32>(ptr: *const f32, src: float32x2_t) -> float32x2_t {
15866 static_assert_uimm_bits!(LANE, 1);
15867 simd_insert!(src, LANE as u32, *ptr)
15868}
15869#[doc = "Load one single-element structure to one lane of one register."]
15870#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_p16)"]
15871#[doc = "## Safety"]
15872#[doc = " * Neon instrinsic unsafe"]
15873#[inline]
15874#[target_feature(enable = "neon")]
15875#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15876#[rustc_legacy_const_generics(2)]
15877#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 3))]
15878#[cfg_attr(
15879 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15880 assert_instr(ld1, LANE = 3)
15881)]
15882#[cfg_attr(
15883 not(target_arch = "arm"),
15884 stable(feature = "neon_intrinsics", since = "1.59.0")
15885)]
15886#[cfg_attr(
15887 target_arch = "arm",
15888 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15889)]
15890pub unsafe fn vld1_lane_p16<const LANE: i32>(ptr: *const p16, src: poly16x4_t) -> poly16x4_t {
15891 static_assert_uimm_bits!(LANE, 2);
15892 simd_insert!(src, LANE as u32, *ptr)
15893}
15894#[doc = "Load one single-element structure to one lane of one register."]
15895#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_p8)"]
15896#[doc = "## Safety"]
15897#[doc = " * Neon instrinsic unsafe"]
15898#[inline]
15899#[target_feature(enable = "neon")]
15900#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15901#[rustc_legacy_const_generics(2)]
15902#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 7))]
15903#[cfg_attr(
15904 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15905 assert_instr(ld1, LANE = 7)
15906)]
15907#[cfg_attr(
15908 not(target_arch = "arm"),
15909 stable(feature = "neon_intrinsics", since = "1.59.0")
15910)]
15911#[cfg_attr(
15912 target_arch = "arm",
15913 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15914)]
15915pub unsafe fn vld1_lane_p8<const LANE: i32>(ptr: *const p8, src: poly8x8_t) -> poly8x8_t {
15916 static_assert_uimm_bits!(LANE, 3);
15917 simd_insert!(src, LANE as u32, *ptr)
15918}
15919#[doc = "Load one single-element structure to one lane of one register."]
15920#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_s16)"]
15921#[doc = "## Safety"]
15922#[doc = " * Neon instrinsic unsafe"]
15923#[inline]
15924#[target_feature(enable = "neon")]
15925#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15926#[rustc_legacy_const_generics(2)]
15927#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 3))]
15928#[cfg_attr(
15929 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15930 assert_instr(ld1, LANE = 3)
15931)]
15932#[cfg_attr(
15933 not(target_arch = "arm"),
15934 stable(feature = "neon_intrinsics", since = "1.59.0")
15935)]
15936#[cfg_attr(
15937 target_arch = "arm",
15938 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15939)]
15940pub unsafe fn vld1_lane_s16<const LANE: i32>(ptr: *const i16, src: int16x4_t) -> int16x4_t {
15941 static_assert_uimm_bits!(LANE, 2);
15942 simd_insert!(src, LANE as u32, *ptr)
15943}
15944#[doc = "Load one single-element structure to one lane of one register."]
15945#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_s32)"]
15946#[doc = "## Safety"]
15947#[doc = " * Neon instrinsic unsafe"]
15948#[inline]
15949#[target_feature(enable = "neon")]
15950#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15951#[rustc_legacy_const_generics(2)]
15952#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 1))]
15953#[cfg_attr(
15954 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15955 assert_instr(ld1, LANE = 1)
15956)]
15957#[cfg_attr(
15958 not(target_arch = "arm"),
15959 stable(feature = "neon_intrinsics", since = "1.59.0")
15960)]
15961#[cfg_attr(
15962 target_arch = "arm",
15963 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15964)]
15965pub unsafe fn vld1_lane_s32<const LANE: i32>(ptr: *const i32, src: int32x2_t) -> int32x2_t {
15966 static_assert_uimm_bits!(LANE, 1);
15967 simd_insert!(src, LANE as u32, *ptr)
15968}
15969#[doc = "Load one single-element structure to one lane of one register."]
15970#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_s64)"]
15971#[doc = "## Safety"]
15972#[doc = " * Neon instrinsic unsafe"]
15973#[inline]
15974#[target_feature(enable = "neon")]
15975#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15976#[rustc_legacy_const_generics(2)]
15977#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 0))]
15978#[cfg_attr(
15979 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15980 assert_instr(ldr, LANE = 0)
15981)]
15982#[cfg_attr(
15983 not(target_arch = "arm"),
15984 stable(feature = "neon_intrinsics", since = "1.59.0")
15985)]
15986#[cfg_attr(
15987 target_arch = "arm",
15988 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15989)]
15990pub unsafe fn vld1_lane_s64<const LANE: i32>(ptr: *const i64, src: int64x1_t) -> int64x1_t {
15991 static_assert!(LANE == 0);
15992 simd_insert!(src, LANE as u32, *ptr)
15993}
15994#[doc = "Load one single-element structure to one lane of one register."]
15995#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_s8)"]
15996#[doc = "## Safety"]
15997#[doc = " * Neon instrinsic unsafe"]
15998#[inline]
15999#[target_feature(enable = "neon")]
16000#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16001#[rustc_legacy_const_generics(2)]
16002#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 7))]
16003#[cfg_attr(
16004 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16005 assert_instr(ld1, LANE = 7)
16006)]
16007#[cfg_attr(
16008 not(target_arch = "arm"),
16009 stable(feature = "neon_intrinsics", since = "1.59.0")
16010)]
16011#[cfg_attr(
16012 target_arch = "arm",
16013 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16014)]
16015pub unsafe fn vld1_lane_s8<const LANE: i32>(ptr: *const i8, src: int8x8_t) -> int8x8_t {
16016 static_assert_uimm_bits!(LANE, 3);
16017 simd_insert!(src, LANE as u32, *ptr)
16018}
16019#[doc = "Load one single-element structure to one lane of one register."]
16020#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_u16)"]
16021#[doc = "## Safety"]
16022#[doc = " * Neon instrinsic unsafe"]
16023#[inline]
16024#[target_feature(enable = "neon")]
16025#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16026#[rustc_legacy_const_generics(2)]
16027#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 3))]
16028#[cfg_attr(
16029 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16030 assert_instr(ld1, LANE = 3)
16031)]
16032#[cfg_attr(
16033 not(target_arch = "arm"),
16034 stable(feature = "neon_intrinsics", since = "1.59.0")
16035)]
16036#[cfg_attr(
16037 target_arch = "arm",
16038 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16039)]
16040pub unsafe fn vld1_lane_u16<const LANE: i32>(ptr: *const u16, src: uint16x4_t) -> uint16x4_t {
16041 static_assert_uimm_bits!(LANE, 2);
16042 simd_insert!(src, LANE as u32, *ptr)
16043}
16044#[doc = "Load one single-element structure to one lane of one register."]
16045#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_u32)"]
16046#[doc = "## Safety"]
16047#[doc = " * Neon instrinsic unsafe"]
16048#[inline]
16049#[target_feature(enable = "neon")]
16050#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16051#[rustc_legacy_const_generics(2)]
16052#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 1))]
16053#[cfg_attr(
16054 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16055 assert_instr(ld1, LANE = 1)
16056)]
16057#[cfg_attr(
16058 not(target_arch = "arm"),
16059 stable(feature = "neon_intrinsics", since = "1.59.0")
16060)]
16061#[cfg_attr(
16062 target_arch = "arm",
16063 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16064)]
16065pub unsafe fn vld1_lane_u32<const LANE: i32>(ptr: *const u32, src: uint32x2_t) -> uint32x2_t {
16066 static_assert_uimm_bits!(LANE, 1);
16067 simd_insert!(src, LANE as u32, *ptr)
16068}
16069#[doc = "Load one single-element structure to one lane of one register."]
16070#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_u64)"]
16071#[doc = "## Safety"]
16072#[doc = " * Neon instrinsic unsafe"]
16073#[inline]
16074#[target_feature(enable = "neon")]
16075#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16076#[rustc_legacy_const_generics(2)]
16077#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 0))]
16078#[cfg_attr(
16079 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16080 assert_instr(ldr, LANE = 0)
16081)]
16082#[cfg_attr(
16083 not(target_arch = "arm"),
16084 stable(feature = "neon_intrinsics", since = "1.59.0")
16085)]
16086#[cfg_attr(
16087 target_arch = "arm",
16088 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16089)]
16090pub unsafe fn vld1_lane_u64<const LANE: i32>(ptr: *const u64, src: uint64x1_t) -> uint64x1_t {
16091 static_assert!(LANE == 0);
16092 simd_insert!(src, LANE as u32, *ptr)
16093}
16094#[doc = "Load one single-element structure to one lane of one register."]
16095#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_u8)"]
16096#[doc = "## Safety"]
16097#[doc = " * Neon instrinsic unsafe"]
16098#[inline]
16099#[target_feature(enable = "neon")]
16100#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16101#[rustc_legacy_const_generics(2)]
16102#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 7))]
16103#[cfg_attr(
16104 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16105 assert_instr(ld1, LANE = 7)
16106)]
16107#[cfg_attr(
16108 not(target_arch = "arm"),
16109 stable(feature = "neon_intrinsics", since = "1.59.0")
16110)]
16111#[cfg_attr(
16112 target_arch = "arm",
16113 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16114)]
16115pub unsafe fn vld1_lane_u8<const LANE: i32>(ptr: *const u8, src: uint8x8_t) -> uint8x8_t {
16116 static_assert_uimm_bits!(LANE, 3);
16117 simd_insert!(src, LANE as u32, *ptr)
16118}
16119#[doc = "Load one single-element structure to one lane of one register."]
16120#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_f32)"]
16121#[doc = "## Safety"]
16122#[doc = " * Neon instrinsic unsafe"]
16123#[inline]
16124#[target_feature(enable = "neon")]
16125#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16126#[rustc_legacy_const_generics(2)]
16127#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 3))]
16128#[cfg_attr(
16129 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16130 assert_instr(ld1, LANE = 3)
16131)]
16132#[cfg_attr(
16133 not(target_arch = "arm"),
16134 stable(feature = "neon_intrinsics", since = "1.59.0")
16135)]
16136#[cfg_attr(
16137 target_arch = "arm",
16138 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16139)]
16140pub unsafe fn vld1q_lane_f32<const LANE: i32>(ptr: *const f32, src: float32x4_t) -> float32x4_t {
16141 static_assert_uimm_bits!(LANE, 2);
16142 simd_insert!(src, LANE as u32, *ptr)
16143}
16144#[doc = "Load one single-element structure to one lane of one register."]
16145#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_p16)"]
16146#[doc = "## Safety"]
16147#[doc = " * Neon instrinsic unsafe"]
16148#[inline]
16149#[target_feature(enable = "neon")]
16150#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16151#[rustc_legacy_const_generics(2)]
16152#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 7))]
16153#[cfg_attr(
16154 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16155 assert_instr(ld1, LANE = 7)
16156)]
16157#[cfg_attr(
16158 not(target_arch = "arm"),
16159 stable(feature = "neon_intrinsics", since = "1.59.0")
16160)]
16161#[cfg_attr(
16162 target_arch = "arm",
16163 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16164)]
16165pub unsafe fn vld1q_lane_p16<const LANE: i32>(ptr: *const p16, src: poly16x8_t) -> poly16x8_t {
16166 static_assert_uimm_bits!(LANE, 3);
16167 simd_insert!(src, LANE as u32, *ptr)
16168}
16169#[doc = "Load one single-element structure to one lane of one register."]
16170#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_p8)"]
16171#[doc = "## Safety"]
16172#[doc = " * Neon instrinsic unsafe"]
16173#[inline]
16174#[target_feature(enable = "neon")]
16175#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16176#[rustc_legacy_const_generics(2)]
16177#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 15))]
16178#[cfg_attr(
16179 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16180 assert_instr(ld1, LANE = 15)
16181)]
16182#[cfg_attr(
16183 not(target_arch = "arm"),
16184 stable(feature = "neon_intrinsics", since = "1.59.0")
16185)]
16186#[cfg_attr(
16187 target_arch = "arm",
16188 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16189)]
16190pub unsafe fn vld1q_lane_p8<const LANE: i32>(ptr: *const p8, src: poly8x16_t) -> poly8x16_t {
16191 static_assert_uimm_bits!(LANE, 4);
16192 simd_insert!(src, LANE as u32, *ptr)
16193}
16194#[doc = "Load one single-element structure to one lane of one register."]
16195#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_s16)"]
16196#[doc = "## Safety"]
16197#[doc = " * Neon instrinsic unsafe"]
16198#[inline]
16199#[target_feature(enable = "neon")]
16200#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16201#[rustc_legacy_const_generics(2)]
16202#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 7))]
16203#[cfg_attr(
16204 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16205 assert_instr(ld1, LANE = 7)
16206)]
16207#[cfg_attr(
16208 not(target_arch = "arm"),
16209 stable(feature = "neon_intrinsics", since = "1.59.0")
16210)]
16211#[cfg_attr(
16212 target_arch = "arm",
16213 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16214)]
16215pub unsafe fn vld1q_lane_s16<const LANE: i32>(ptr: *const i16, src: int16x8_t) -> int16x8_t {
16216 static_assert_uimm_bits!(LANE, 3);
16217 simd_insert!(src, LANE as u32, *ptr)
16218}
16219#[doc = "Load one single-element structure to one lane of one register."]
16220#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_s32)"]
16221#[doc = "## Safety"]
16222#[doc = " * Neon instrinsic unsafe"]
16223#[inline]
16224#[target_feature(enable = "neon")]
16225#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16226#[rustc_legacy_const_generics(2)]
16227#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 3))]
16228#[cfg_attr(
16229 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16230 assert_instr(ld1, LANE = 3)
16231)]
16232#[cfg_attr(
16233 not(target_arch = "arm"),
16234 stable(feature = "neon_intrinsics", since = "1.59.0")
16235)]
16236#[cfg_attr(
16237 target_arch = "arm",
16238 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16239)]
16240pub unsafe fn vld1q_lane_s32<const LANE: i32>(ptr: *const i32, src: int32x4_t) -> int32x4_t {
16241 static_assert_uimm_bits!(LANE, 2);
16242 simd_insert!(src, LANE as u32, *ptr)
16243}
16244#[doc = "Load one single-element structure to one lane of one register."]
16245#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_s64)"]
16246#[doc = "## Safety"]
16247#[doc = " * Neon instrinsic unsafe"]
16248#[inline]
16249#[target_feature(enable = "neon")]
16250#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16251#[rustc_legacy_const_generics(2)]
16252#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 1))]
16253#[cfg_attr(
16254 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16255 assert_instr(ld1, LANE = 1)
16256)]
16257#[cfg_attr(
16258 not(target_arch = "arm"),
16259 stable(feature = "neon_intrinsics", since = "1.59.0")
16260)]
16261#[cfg_attr(
16262 target_arch = "arm",
16263 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16264)]
16265pub unsafe fn vld1q_lane_s64<const LANE: i32>(ptr: *const i64, src: int64x2_t) -> int64x2_t {
16266 static_assert_uimm_bits!(LANE, 1);
16267 simd_insert!(src, LANE as u32, *ptr)
16268}
16269#[doc = "Load one single-element structure to one lane of one register."]
16270#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_s8)"]
16271#[doc = "## Safety"]
16272#[doc = " * Neon instrinsic unsafe"]
16273#[inline]
16274#[target_feature(enable = "neon")]
16275#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16276#[rustc_legacy_const_generics(2)]
16277#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 15))]
16278#[cfg_attr(
16279 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16280 assert_instr(ld1, LANE = 15)
16281)]
16282#[cfg_attr(
16283 not(target_arch = "arm"),
16284 stable(feature = "neon_intrinsics", since = "1.59.0")
16285)]
16286#[cfg_attr(
16287 target_arch = "arm",
16288 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16289)]
16290pub unsafe fn vld1q_lane_s8<const LANE: i32>(ptr: *const i8, src: int8x16_t) -> int8x16_t {
16291 static_assert_uimm_bits!(LANE, 4);
16292 simd_insert!(src, LANE as u32, *ptr)
16293}
16294#[doc = "Load one single-element structure to one lane of one register."]
16295#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_u16)"]
16296#[doc = "## Safety"]
16297#[doc = " * Neon instrinsic unsafe"]
16298#[inline]
16299#[target_feature(enable = "neon")]
16300#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16301#[rustc_legacy_const_generics(2)]
16302#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 7))]
16303#[cfg_attr(
16304 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16305 assert_instr(ld1, LANE = 7)
16306)]
16307#[cfg_attr(
16308 not(target_arch = "arm"),
16309 stable(feature = "neon_intrinsics", since = "1.59.0")
16310)]
16311#[cfg_attr(
16312 target_arch = "arm",
16313 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16314)]
16315pub unsafe fn vld1q_lane_u16<const LANE: i32>(ptr: *const u16, src: uint16x8_t) -> uint16x8_t {
16316 static_assert_uimm_bits!(LANE, 3);
16317 simd_insert!(src, LANE as u32, *ptr)
16318}
16319#[doc = "Load one single-element structure to one lane of one register."]
16320#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_u32)"]
16321#[doc = "## Safety"]
16322#[doc = " * Neon instrinsic unsafe"]
16323#[inline]
16324#[target_feature(enable = "neon")]
16325#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16326#[rustc_legacy_const_generics(2)]
16327#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 3))]
16328#[cfg_attr(
16329 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16330 assert_instr(ld1, LANE = 3)
16331)]
16332#[cfg_attr(
16333 not(target_arch = "arm"),
16334 stable(feature = "neon_intrinsics", since = "1.59.0")
16335)]
16336#[cfg_attr(
16337 target_arch = "arm",
16338 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16339)]
16340pub unsafe fn vld1q_lane_u32<const LANE: i32>(ptr: *const u32, src: uint32x4_t) -> uint32x4_t {
16341 static_assert_uimm_bits!(LANE, 2);
16342 simd_insert!(src, LANE as u32, *ptr)
16343}
16344#[doc = "Load one single-element structure to one lane of one register."]
16345#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_u64)"]
16346#[doc = "## Safety"]
16347#[doc = " * Neon instrinsic unsafe"]
16348#[inline]
16349#[target_feature(enable = "neon")]
16350#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16351#[rustc_legacy_const_generics(2)]
16352#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 1))]
16353#[cfg_attr(
16354 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16355 assert_instr(ld1, LANE = 1)
16356)]
16357#[cfg_attr(
16358 not(target_arch = "arm"),
16359 stable(feature = "neon_intrinsics", since = "1.59.0")
16360)]
16361#[cfg_attr(
16362 target_arch = "arm",
16363 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16364)]
16365pub unsafe fn vld1q_lane_u64<const LANE: i32>(ptr: *const u64, src: uint64x2_t) -> uint64x2_t {
16366 static_assert_uimm_bits!(LANE, 1);
16367 simd_insert!(src, LANE as u32, *ptr)
16368}
16369#[doc = "Load one single-element structure to one lane of one register."]
16370#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_u8)"]
16371#[doc = "## Safety"]
16372#[doc = " * Neon instrinsic unsafe"]
16373#[inline]
16374#[target_feature(enable = "neon")]
16375#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16376#[rustc_legacy_const_generics(2)]
16377#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 15))]
16378#[cfg_attr(
16379 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16380 assert_instr(ld1, LANE = 15)
16381)]
16382#[cfg_attr(
16383 not(target_arch = "arm"),
16384 stable(feature = "neon_intrinsics", since = "1.59.0")
16385)]
16386#[cfg_attr(
16387 target_arch = "arm",
16388 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16389)]
16390pub unsafe fn vld1q_lane_u8<const LANE: i32>(ptr: *const u8, src: uint8x16_t) -> uint8x16_t {
16391 static_assert_uimm_bits!(LANE, 4);
16392 simd_insert!(src, LANE as u32, *ptr)
16393}
16394#[doc = "Load one single-element structure to one lane of one register."]
16395#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_p64)"]
16396#[doc = "## Safety"]
16397#[doc = " * Neon instrinsic unsafe"]
16398#[inline]
16399#[target_feature(enable = "neon,aes")]
16400#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16401#[rustc_legacy_const_generics(2)]
16402#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 0))]
16403#[cfg_attr(
16404 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16405 assert_instr(ldr, LANE = 0)
16406)]
16407#[cfg_attr(
16408 not(target_arch = "arm"),
16409 stable(feature = "neon_intrinsics", since = "1.59.0")
16410)]
16411#[cfg_attr(
16412 target_arch = "arm",
16413 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16414)]
16415pub unsafe fn vld1_lane_p64<const LANE: i32>(ptr: *const p64, src: poly64x1_t) -> poly64x1_t {
16416 static_assert!(LANE == 0);
16417 simd_insert!(src, LANE as u32, *ptr)
16418}
16419#[doc = "Load one single-element structure to one lane of one register."]
16420#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_p64)"]
16421#[doc = "## Safety"]
16422#[doc = " * Neon instrinsic unsafe"]
16423#[inline]
16424#[target_feature(enable = "neon,aes")]
16425#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16426#[rustc_legacy_const_generics(2)]
16427#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 1))]
16428#[cfg_attr(
16429 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16430 assert_instr(ld1, LANE = 1)
16431)]
16432#[cfg_attr(
16433 not(target_arch = "arm"),
16434 stable(feature = "neon_intrinsics", since = "1.59.0")
16435)]
16436#[cfg_attr(
16437 target_arch = "arm",
16438 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16439)]
16440pub unsafe fn vld1q_lane_p64<const LANE: i32>(ptr: *const p64, src: poly64x2_t) -> poly64x2_t {
16441 static_assert_uimm_bits!(LANE, 1);
16442 simd_insert!(src, LANE as u32, *ptr)
16443}
16444#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16445#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p64)"]
16446#[doc = "## Safety"]
16447#[doc = " * Neon instrinsic unsafe"]
16448#[inline]
16449#[cfg(target_arch = "arm")]
16450#[target_feature(enable = "neon,aes")]
16451#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16452#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
16453pub unsafe fn vld1_p64(ptr: *const p64) -> poly64x1_t {
16454 let a: *const i8 = ptr as *const i8;
16455 let b: i32 = crate::mem::align_of::<p64>() as i32;
16456 unsafe extern "unadjusted" {
16457 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v1i64")]
16458 fn _vld1_v1i64(a: *const i8, b: i32) -> int64x1_t;
16459 }
16460 transmute(_vld1_v1i64(a, b))
16461}
16462#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16463#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p64_x2)"]
16464#[doc = "## Safety"]
16465#[doc = " * Neon instrinsic unsafe"]
16466#[inline]
16467#[target_feature(enable = "neon,aes")]
16468#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16469#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
16470#[cfg_attr(
16471 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16472 assert_instr(ld1)
16473)]
16474#[cfg_attr(
16475 not(target_arch = "arm"),
16476 stable(feature = "neon_intrinsics", since = "1.59.0")
16477)]
16478#[cfg_attr(
16479 target_arch = "arm",
16480 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16481)]
16482pub unsafe fn vld1_p64_x2(a: *const p64) -> poly64x1x2_t {
16483 transmute(vld1_s64_x2(transmute(a)))
16484}
16485#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16486#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p64_x3)"]
16487#[doc = "## Safety"]
16488#[doc = " * Neon instrinsic unsafe"]
16489#[inline]
16490#[target_feature(enable = "neon,aes")]
16491#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16492#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16493#[cfg_attr(
16494 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16495 assert_instr(ld1)
16496)]
16497#[cfg_attr(
16498 not(target_arch = "arm"),
16499 stable(feature = "neon_intrinsics", since = "1.59.0")
16500)]
16501#[cfg_attr(
16502 target_arch = "arm",
16503 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16504)]
16505pub unsafe fn vld1_p64_x3(a: *const p64) -> poly64x1x3_t {
16506 transmute(vld1_s64_x3(transmute(a)))
16507}
16508#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16509#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p64_x4)"]
16510#[doc = "## Safety"]
16511#[doc = " * Neon instrinsic unsafe"]
16512#[inline]
16513#[target_feature(enable = "neon,aes")]
16514#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16515#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16516#[cfg_attr(
16517 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16518 assert_instr(ld1)
16519)]
16520#[cfg_attr(
16521 not(target_arch = "arm"),
16522 stable(feature = "neon_intrinsics", since = "1.59.0")
16523)]
16524#[cfg_attr(
16525 target_arch = "arm",
16526 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16527)]
16528pub unsafe fn vld1_p64_x4(a: *const p64) -> poly64x1x4_t {
16529 transmute(vld1_s64_x4(transmute(a)))
16530}
16531#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16532#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64_x2)"]
16533#[doc = "## Safety"]
16534#[doc = " * Neon instrinsic unsafe"]
16535#[inline]
16536#[cfg(target_endian = "little")]
16537#[target_feature(enable = "neon,aes")]
16538#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16539#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16540#[cfg_attr(
16541 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16542 assert_instr(ld1)
16543)]
16544#[cfg_attr(
16545 not(target_arch = "arm"),
16546 stable(feature = "neon_intrinsics", since = "1.59.0")
16547)]
16548#[cfg_attr(
16549 target_arch = "arm",
16550 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16551)]
16552pub unsafe fn vld1q_p64_x2(a: *const p64) -> poly64x2x2_t {
16553 transmute(vld1q_s64_x2(transmute(a)))
16554}
16555#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16556#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64_x2)"]
16557#[doc = "## Safety"]
16558#[doc = " * Neon instrinsic unsafe"]
16559#[inline]
16560#[cfg(target_endian = "big")]
16561#[target_feature(enable = "neon,aes")]
16562#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16563#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16564#[cfg_attr(
16565 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16566 assert_instr(ld1)
16567)]
16568#[cfg_attr(
16569 not(target_arch = "arm"),
16570 stable(feature = "neon_intrinsics", since = "1.59.0")
16571)]
16572#[cfg_attr(
16573 target_arch = "arm",
16574 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16575)]
16576pub unsafe fn vld1q_p64_x2(a: *const p64) -> poly64x2x2_t {
16577 let mut ret_val: poly64x2x2_t = transmute(vld1q_s64_x2(transmute(a)));
16578 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
16579 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
16580 ret_val
16581}
16582#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16583#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64_x3)"]
16584#[doc = "## Safety"]
16585#[doc = " * Neon instrinsic unsafe"]
16586#[inline]
16587#[cfg(target_endian = "little")]
16588#[target_feature(enable = "neon,aes")]
16589#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16590#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16591#[cfg_attr(
16592 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16593 assert_instr(ld1)
16594)]
16595#[cfg_attr(
16596 not(target_arch = "arm"),
16597 stable(feature = "neon_intrinsics", since = "1.59.0")
16598)]
16599#[cfg_attr(
16600 target_arch = "arm",
16601 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16602)]
16603pub unsafe fn vld1q_p64_x3(a: *const p64) -> poly64x2x3_t {
16604 transmute(vld1q_s64_x3(transmute(a)))
16605}
16606#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16607#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64_x3)"]
16608#[doc = "## Safety"]
16609#[doc = " * Neon instrinsic unsafe"]
16610#[inline]
16611#[cfg(target_endian = "big")]
16612#[target_feature(enable = "neon,aes")]
16613#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16614#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16615#[cfg_attr(
16616 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16617 assert_instr(ld1)
16618)]
16619#[cfg_attr(
16620 not(target_arch = "arm"),
16621 stable(feature = "neon_intrinsics", since = "1.59.0")
16622)]
16623#[cfg_attr(
16624 target_arch = "arm",
16625 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16626)]
16627pub unsafe fn vld1q_p64_x3(a: *const p64) -> poly64x2x3_t {
16628 let mut ret_val: poly64x2x3_t = transmute(vld1q_s64_x3(transmute(a)));
16629 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
16630 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
16631 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
16632 ret_val
16633}
16634#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16635#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64_x4)"]
16636#[doc = "## Safety"]
16637#[doc = " * Neon instrinsic unsafe"]
16638#[inline]
16639#[cfg(target_endian = "little")]
16640#[target_feature(enable = "neon,aes")]
16641#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16642#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16643#[cfg_attr(
16644 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16645 assert_instr(ld1)
16646)]
16647#[cfg_attr(
16648 not(target_arch = "arm"),
16649 stable(feature = "neon_intrinsics", since = "1.59.0")
16650)]
16651#[cfg_attr(
16652 target_arch = "arm",
16653 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16654)]
16655pub unsafe fn vld1q_p64_x4(a: *const p64) -> poly64x2x4_t {
16656 transmute(vld1q_s64_x4(transmute(a)))
16657}
16658#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16659#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64_x4)"]
16660#[doc = "## Safety"]
16661#[doc = " * Neon instrinsic unsafe"]
16662#[inline]
16663#[cfg(target_endian = "big")]
16664#[target_feature(enable = "neon,aes")]
16665#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16666#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16667#[cfg_attr(
16668 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16669 assert_instr(ld1)
16670)]
16671#[cfg_attr(
16672 not(target_arch = "arm"),
16673 stable(feature = "neon_intrinsics", since = "1.59.0")
16674)]
16675#[cfg_attr(
16676 target_arch = "arm",
16677 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16678)]
16679pub unsafe fn vld1q_p64_x4(a: *const p64) -> poly64x2x4_t {
16680 let mut ret_val: poly64x2x4_t = transmute(vld1q_s64_x4(transmute(a)));
16681 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
16682 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
16683 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
16684 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [1, 0]) };
16685 ret_val
16686}
16687#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16688#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s8)"]
16689#[doc = "## Safety"]
16690#[doc = " * Neon instrinsic unsafe"]
16691#[inline]
16692#[cfg(target_arch = "arm")]
16693#[target_feature(enable = "neon,v7")]
16694#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16695#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
16696pub unsafe fn vld1_s8(ptr: *const i8) -> int8x8_t {
16697 vld1_v8i8(ptr as *const i8, crate::mem::align_of::<i8>() as i32)
16698}
16699#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16700#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s8)"]
16701#[doc = "## Safety"]
16702#[doc = " * Neon instrinsic unsafe"]
16703#[inline]
16704#[cfg(target_arch = "arm")]
16705#[target_feature(enable = "neon,v7")]
16706#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16707#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
16708pub unsafe fn vld1q_s8(ptr: *const i8) -> int8x16_t {
16709 vld1q_v16i8(ptr as *const i8, crate::mem::align_of::<i8>() as i32)
16710}
16711#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16712#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s16)"]
16713#[doc = "## Safety"]
16714#[doc = " * Neon instrinsic unsafe"]
16715#[inline]
16716#[cfg(target_arch = "arm")]
16717#[target_feature(enable = "neon,v7")]
16718#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16719#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
16720pub unsafe fn vld1_s16(ptr: *const i16) -> int16x4_t {
16721 vld1_v4i16(ptr as *const i8, crate::mem::align_of::<i16>() as i32)
16722}
16723#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16724#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s16)"]
16725#[doc = "## Safety"]
16726#[doc = " * Neon instrinsic unsafe"]
16727#[inline]
16728#[cfg(target_arch = "arm")]
16729#[target_feature(enable = "neon,v7")]
16730#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16731#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
16732pub unsafe fn vld1q_s16(ptr: *const i16) -> int16x8_t {
16733 vld1q_v8i16(ptr as *const i8, crate::mem::align_of::<i16>() as i32)
16734}
16735#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16736#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s32)"]
16737#[doc = "## Safety"]
16738#[doc = " * Neon instrinsic unsafe"]
16739#[inline]
16740#[cfg(target_arch = "arm")]
16741#[target_feature(enable = "neon,v7")]
16742#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16743#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
16744pub unsafe fn vld1_s32(ptr: *const i32) -> int32x2_t {
16745 vld1_v2i32(ptr as *const i8, crate::mem::align_of::<i32>() as i32)
16746}
16747#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16748#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s32)"]
16749#[doc = "## Safety"]
16750#[doc = " * Neon instrinsic unsafe"]
16751#[inline]
16752#[cfg(target_arch = "arm")]
16753#[target_feature(enable = "neon,v7")]
16754#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16755#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
16756pub unsafe fn vld1q_s32(ptr: *const i32) -> int32x4_t {
16757 vld1q_v4i32(ptr as *const i8, crate::mem::align_of::<i32>() as i32)
16758}
16759#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16760#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s64)"]
16761#[doc = "## Safety"]
16762#[doc = " * Neon instrinsic unsafe"]
16763#[inline]
16764#[cfg(target_arch = "arm")]
16765#[target_feature(enable = "neon,v7")]
16766#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16767#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
16768pub unsafe fn vld1_s64(ptr: *const i64) -> int64x1_t {
16769 vld1_v1i64(ptr as *const i8, crate::mem::align_of::<i64>() as i32)
16770}
16771#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16772#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s64)"]
16773#[doc = "## Safety"]
16774#[doc = " * Neon instrinsic unsafe"]
16775#[inline]
16776#[cfg(target_arch = "arm")]
16777#[target_feature(enable = "neon,v7")]
16778#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16779#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.64"))]
16780pub unsafe fn vld1q_s64(ptr: *const i64) -> int64x2_t {
16781 vld1q_v2i64(ptr as *const i8, crate::mem::align_of::<i64>() as i32)
16782}
16783#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16784#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s8_x2)"]
16785#[doc = "## Safety"]
16786#[doc = " * Neon instrinsic unsafe"]
16787#[inline]
16788#[target_feature(enable = "neon")]
16789#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16790#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
16791#[cfg_attr(
16792 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16793 assert_instr(ld1)
16794)]
16795#[cfg_attr(
16796 not(target_arch = "arm"),
16797 stable(feature = "neon_intrinsics", since = "1.59.0")
16798)]
16799#[cfg_attr(
16800 target_arch = "arm",
16801 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16802)]
16803pub unsafe fn vld1_s8_x2(a: *const i8) -> int8x8x2_t {
16804 unsafe extern "unadjusted" {
16805 #[cfg_attr(
16806 any(target_arch = "aarch64", target_arch = "arm64ec"),
16807 link_name = "llvm.aarch64.neon.ld1x2.v8i8.p0"
16808 )]
16809 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v8i8.p0")]
16810 fn _vld1_s8_x2(a: *const i8) -> int8x8x2_t;
16811 }
16812 _vld1_s8_x2(a)
16813}
16814#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16815#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s8_x3)"]
16816#[doc = "## Safety"]
16817#[doc = " * Neon instrinsic unsafe"]
16818#[inline]
16819#[target_feature(enable = "neon")]
16820#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16821#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
16822#[cfg_attr(
16823 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16824 assert_instr(ld1)
16825)]
16826#[cfg_attr(
16827 not(target_arch = "arm"),
16828 stable(feature = "neon_intrinsics", since = "1.59.0")
16829)]
16830#[cfg_attr(
16831 target_arch = "arm",
16832 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16833)]
16834pub unsafe fn vld1_s8_x3(a: *const i8) -> int8x8x3_t {
16835 unsafe extern "unadjusted" {
16836 #[cfg_attr(
16837 any(target_arch = "aarch64", target_arch = "arm64ec"),
16838 link_name = "llvm.aarch64.neon.ld1x3.v8i8.p0"
16839 )]
16840 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v8i8.p0")]
16841 fn _vld1_s8_x3(a: *const i8) -> int8x8x3_t;
16842 }
16843 _vld1_s8_x3(a)
16844}
16845#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16846#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s8_x4)"]
16847#[doc = "## Safety"]
16848#[doc = " * Neon instrinsic unsafe"]
16849#[inline]
16850#[target_feature(enable = "neon")]
16851#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16852#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
16853#[cfg_attr(
16854 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16855 assert_instr(ld1)
16856)]
16857#[cfg_attr(
16858 not(target_arch = "arm"),
16859 stable(feature = "neon_intrinsics", since = "1.59.0")
16860)]
16861#[cfg_attr(
16862 target_arch = "arm",
16863 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16864)]
16865pub unsafe fn vld1_s8_x4(a: *const i8) -> int8x8x4_t {
16866 unsafe extern "unadjusted" {
16867 #[cfg_attr(
16868 any(target_arch = "aarch64", target_arch = "arm64ec"),
16869 link_name = "llvm.aarch64.neon.ld1x4.v8i8.p0"
16870 )]
16871 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v8i8.p0")]
16872 fn _vld1_s8_x4(a: *const i8) -> int8x8x4_t;
16873 }
16874 _vld1_s8_x4(a)
16875}
16876#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16877#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s8_x2)"]
16878#[doc = "## Safety"]
16879#[doc = " * Neon instrinsic unsafe"]
16880#[inline]
16881#[target_feature(enable = "neon")]
16882#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16883#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
16884#[cfg_attr(
16885 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16886 assert_instr(ld1)
16887)]
16888#[cfg_attr(
16889 not(target_arch = "arm"),
16890 stable(feature = "neon_intrinsics", since = "1.59.0")
16891)]
16892#[cfg_attr(
16893 target_arch = "arm",
16894 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16895)]
16896pub unsafe fn vld1q_s8_x2(a: *const i8) -> int8x16x2_t {
16897 unsafe extern "unadjusted" {
16898 #[cfg_attr(
16899 any(target_arch = "aarch64", target_arch = "arm64ec"),
16900 link_name = "llvm.aarch64.neon.ld1x2.v16i8.p0"
16901 )]
16902 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v16i8.p0")]
16903 fn _vld1q_s8_x2(a: *const i8) -> int8x16x2_t;
16904 }
16905 _vld1q_s8_x2(a)
16906}
16907#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16908#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s8_x3)"]
16909#[doc = "## Safety"]
16910#[doc = " * Neon instrinsic unsafe"]
16911#[inline]
16912#[target_feature(enable = "neon")]
16913#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16914#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
16915#[cfg_attr(
16916 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16917 assert_instr(ld1)
16918)]
16919#[cfg_attr(
16920 not(target_arch = "arm"),
16921 stable(feature = "neon_intrinsics", since = "1.59.0")
16922)]
16923#[cfg_attr(
16924 target_arch = "arm",
16925 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16926)]
16927pub unsafe fn vld1q_s8_x3(a: *const i8) -> int8x16x3_t {
16928 unsafe extern "unadjusted" {
16929 #[cfg_attr(
16930 any(target_arch = "aarch64", target_arch = "arm64ec"),
16931 link_name = "llvm.aarch64.neon.ld1x3.v16i8.p0"
16932 )]
16933 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v16i8.p0")]
16934 fn _vld1q_s8_x3(a: *const i8) -> int8x16x3_t;
16935 }
16936 _vld1q_s8_x3(a)
16937}
16938#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16939#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s8_x4)"]
16940#[doc = "## Safety"]
16941#[doc = " * Neon instrinsic unsafe"]
16942#[inline]
16943#[target_feature(enable = "neon")]
16944#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16945#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
16946#[cfg_attr(
16947 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16948 assert_instr(ld1)
16949)]
16950#[cfg_attr(
16951 not(target_arch = "arm"),
16952 stable(feature = "neon_intrinsics", since = "1.59.0")
16953)]
16954#[cfg_attr(
16955 target_arch = "arm",
16956 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16957)]
16958pub unsafe fn vld1q_s8_x4(a: *const i8) -> int8x16x4_t {
16959 unsafe extern "unadjusted" {
16960 #[cfg_attr(
16961 any(target_arch = "aarch64", target_arch = "arm64ec"),
16962 link_name = "llvm.aarch64.neon.ld1x4.v16i8.p0"
16963 )]
16964 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v16i8.p0")]
16965 fn _vld1q_s8_x4(a: *const i8) -> int8x16x4_t;
16966 }
16967 _vld1q_s8_x4(a)
16968}
16969#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16970#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s16_x2)"]
16971#[doc = "## Safety"]
16972#[doc = " * Neon instrinsic unsafe"]
16973#[inline]
16974#[target_feature(enable = "neon")]
16975#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16976#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
16977#[cfg_attr(
16978 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16979 assert_instr(ld1)
16980)]
16981#[cfg_attr(
16982 not(target_arch = "arm"),
16983 stable(feature = "neon_intrinsics", since = "1.59.0")
16984)]
16985#[cfg_attr(
16986 target_arch = "arm",
16987 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16988)]
16989pub unsafe fn vld1_s16_x2(a: *const i16) -> int16x4x2_t {
16990 unsafe extern "unadjusted" {
16991 #[cfg_attr(
16992 any(target_arch = "aarch64", target_arch = "arm64ec"),
16993 link_name = "llvm.aarch64.neon.ld1x2.v4i16.p0"
16994 )]
16995 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v4i16.p0")]
16996 fn _vld1_s16_x2(a: *const i16) -> int16x4x2_t;
16997 }
16998 _vld1_s16_x2(a)
16999}
17000#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17001#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s16_x3)"]
17002#[doc = "## Safety"]
17003#[doc = " * Neon instrinsic unsafe"]
17004#[inline]
17005#[target_feature(enable = "neon")]
17006#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17007#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17008#[cfg_attr(
17009 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17010 assert_instr(ld1)
17011)]
17012#[cfg_attr(
17013 not(target_arch = "arm"),
17014 stable(feature = "neon_intrinsics", since = "1.59.0")
17015)]
17016#[cfg_attr(
17017 target_arch = "arm",
17018 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17019)]
17020pub unsafe fn vld1_s16_x3(a: *const i16) -> int16x4x3_t {
17021 unsafe extern "unadjusted" {
17022 #[cfg_attr(
17023 any(target_arch = "aarch64", target_arch = "arm64ec"),
17024 link_name = "llvm.aarch64.neon.ld1x3.v4i16.p0"
17025 )]
17026 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v4i16.p0")]
17027 fn _vld1_s16_x3(a: *const i16) -> int16x4x3_t;
17028 }
17029 _vld1_s16_x3(a)
17030}
17031#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s16_x4)"]
17033#[doc = "## Safety"]
17034#[doc = " * Neon instrinsic unsafe"]
17035#[inline]
17036#[target_feature(enable = "neon")]
17037#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17038#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17039#[cfg_attr(
17040 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17041 assert_instr(ld1)
17042)]
17043#[cfg_attr(
17044 not(target_arch = "arm"),
17045 stable(feature = "neon_intrinsics", since = "1.59.0")
17046)]
17047#[cfg_attr(
17048 target_arch = "arm",
17049 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17050)]
17051pub unsafe fn vld1_s16_x4(a: *const i16) -> int16x4x4_t {
17052 unsafe extern "unadjusted" {
17053 #[cfg_attr(
17054 any(target_arch = "aarch64", target_arch = "arm64ec"),
17055 link_name = "llvm.aarch64.neon.ld1x4.v4i16.p0"
17056 )]
17057 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v4i16.p0")]
17058 fn _vld1_s16_x4(a: *const i16) -> int16x4x4_t;
17059 }
17060 _vld1_s16_x4(a)
17061}
17062#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17063#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s16_x2)"]
17064#[doc = "## Safety"]
17065#[doc = " * Neon instrinsic unsafe"]
17066#[inline]
17067#[target_feature(enable = "neon")]
17068#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17069#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17070#[cfg_attr(
17071 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17072 assert_instr(ld1)
17073)]
17074#[cfg_attr(
17075 not(target_arch = "arm"),
17076 stable(feature = "neon_intrinsics", since = "1.59.0")
17077)]
17078#[cfg_attr(
17079 target_arch = "arm",
17080 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17081)]
17082pub unsafe fn vld1q_s16_x2(a: *const i16) -> int16x8x2_t {
17083 unsafe extern "unadjusted" {
17084 #[cfg_attr(
17085 any(target_arch = "aarch64", target_arch = "arm64ec"),
17086 link_name = "llvm.aarch64.neon.ld1x2.v8i16.p0"
17087 )]
17088 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v8i16.p0")]
17089 fn _vld1q_s16_x2(a: *const i16) -> int16x8x2_t;
17090 }
17091 _vld1q_s16_x2(a)
17092}
17093#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17094#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s16_x3)"]
17095#[doc = "## Safety"]
17096#[doc = " * Neon instrinsic unsafe"]
17097#[inline]
17098#[target_feature(enable = "neon")]
17099#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17100#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17101#[cfg_attr(
17102 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17103 assert_instr(ld1)
17104)]
17105#[cfg_attr(
17106 not(target_arch = "arm"),
17107 stable(feature = "neon_intrinsics", since = "1.59.0")
17108)]
17109#[cfg_attr(
17110 target_arch = "arm",
17111 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17112)]
17113pub unsafe fn vld1q_s16_x3(a: *const i16) -> int16x8x3_t {
17114 unsafe extern "unadjusted" {
17115 #[cfg_attr(
17116 any(target_arch = "aarch64", target_arch = "arm64ec"),
17117 link_name = "llvm.aarch64.neon.ld1x3.v8i16.p0"
17118 )]
17119 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v8i16.p0")]
17120 fn _vld1q_s16_x3(a: *const i16) -> int16x8x3_t;
17121 }
17122 _vld1q_s16_x3(a)
17123}
17124#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17125#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s16_x4)"]
17126#[doc = "## Safety"]
17127#[doc = " * Neon instrinsic unsafe"]
17128#[inline]
17129#[target_feature(enable = "neon")]
17130#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17131#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17132#[cfg_attr(
17133 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17134 assert_instr(ld1)
17135)]
17136#[cfg_attr(
17137 not(target_arch = "arm"),
17138 stable(feature = "neon_intrinsics", since = "1.59.0")
17139)]
17140#[cfg_attr(
17141 target_arch = "arm",
17142 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17143)]
17144pub unsafe fn vld1q_s16_x4(a: *const i16) -> int16x8x4_t {
17145 unsafe extern "unadjusted" {
17146 #[cfg_attr(
17147 any(target_arch = "aarch64", target_arch = "arm64ec"),
17148 link_name = "llvm.aarch64.neon.ld1x4.v8i16.p0"
17149 )]
17150 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v8i16.p0")]
17151 fn _vld1q_s16_x4(a: *const i16) -> int16x8x4_t;
17152 }
17153 _vld1q_s16_x4(a)
17154}
17155#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17156#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s32_x2)"]
17157#[doc = "## Safety"]
17158#[doc = " * Neon instrinsic unsafe"]
17159#[inline]
17160#[target_feature(enable = "neon")]
17161#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17162#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17163#[cfg_attr(
17164 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17165 assert_instr(ld1)
17166)]
17167#[cfg_attr(
17168 not(target_arch = "arm"),
17169 stable(feature = "neon_intrinsics", since = "1.59.0")
17170)]
17171#[cfg_attr(
17172 target_arch = "arm",
17173 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17174)]
17175pub unsafe fn vld1_s32_x2(a: *const i32) -> int32x2x2_t {
17176 unsafe extern "unadjusted" {
17177 #[cfg_attr(
17178 any(target_arch = "aarch64", target_arch = "arm64ec"),
17179 link_name = "llvm.aarch64.neon.ld1x2.v2i32.p0"
17180 )]
17181 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v2i32.p0")]
17182 fn _vld1_s32_x2(a: *const i32) -> int32x2x2_t;
17183 }
17184 _vld1_s32_x2(a)
17185}
17186#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17187#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s32_x3)"]
17188#[doc = "## Safety"]
17189#[doc = " * Neon instrinsic unsafe"]
17190#[inline]
17191#[target_feature(enable = "neon")]
17192#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17193#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17194#[cfg_attr(
17195 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17196 assert_instr(ld1)
17197)]
17198#[cfg_attr(
17199 not(target_arch = "arm"),
17200 stable(feature = "neon_intrinsics", since = "1.59.0")
17201)]
17202#[cfg_attr(
17203 target_arch = "arm",
17204 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17205)]
17206pub unsafe fn vld1_s32_x3(a: *const i32) -> int32x2x3_t {
17207 unsafe extern "unadjusted" {
17208 #[cfg_attr(
17209 any(target_arch = "aarch64", target_arch = "arm64ec"),
17210 link_name = "llvm.aarch64.neon.ld1x3.v2i32.p0"
17211 )]
17212 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v2i32.p0")]
17213 fn _vld1_s32_x3(a: *const i32) -> int32x2x3_t;
17214 }
17215 _vld1_s32_x3(a)
17216}
17217#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17218#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s32_x4)"]
17219#[doc = "## Safety"]
17220#[doc = " * Neon instrinsic unsafe"]
17221#[inline]
17222#[target_feature(enable = "neon")]
17223#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17224#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17225#[cfg_attr(
17226 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17227 assert_instr(ld1)
17228)]
17229#[cfg_attr(
17230 not(target_arch = "arm"),
17231 stable(feature = "neon_intrinsics", since = "1.59.0")
17232)]
17233#[cfg_attr(
17234 target_arch = "arm",
17235 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17236)]
17237pub unsafe fn vld1_s32_x4(a: *const i32) -> int32x2x4_t {
17238 unsafe extern "unadjusted" {
17239 #[cfg_attr(
17240 any(target_arch = "aarch64", target_arch = "arm64ec"),
17241 link_name = "llvm.aarch64.neon.ld1x4.v2i32.p0"
17242 )]
17243 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v2i32.p0")]
17244 fn _vld1_s32_x4(a: *const i32) -> int32x2x4_t;
17245 }
17246 _vld1_s32_x4(a)
17247}
17248#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17249#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s32_x2)"]
17250#[doc = "## Safety"]
17251#[doc = " * Neon instrinsic unsafe"]
17252#[inline]
17253#[target_feature(enable = "neon")]
17254#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17255#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17256#[cfg_attr(
17257 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17258 assert_instr(ld1)
17259)]
17260#[cfg_attr(
17261 not(target_arch = "arm"),
17262 stable(feature = "neon_intrinsics", since = "1.59.0")
17263)]
17264#[cfg_attr(
17265 target_arch = "arm",
17266 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17267)]
17268pub unsafe fn vld1q_s32_x2(a: *const i32) -> int32x4x2_t {
17269 unsafe extern "unadjusted" {
17270 #[cfg_attr(
17271 any(target_arch = "aarch64", target_arch = "arm64ec"),
17272 link_name = "llvm.aarch64.neon.ld1x2.v4i32.p0"
17273 )]
17274 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v4i32.p0")]
17275 fn _vld1q_s32_x2(a: *const i32) -> int32x4x2_t;
17276 }
17277 _vld1q_s32_x2(a)
17278}
17279#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17280#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s32_x3)"]
17281#[doc = "## Safety"]
17282#[doc = " * Neon instrinsic unsafe"]
17283#[inline]
17284#[target_feature(enable = "neon")]
17285#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17286#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17287#[cfg_attr(
17288 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17289 assert_instr(ld1)
17290)]
17291#[cfg_attr(
17292 not(target_arch = "arm"),
17293 stable(feature = "neon_intrinsics", since = "1.59.0")
17294)]
17295#[cfg_attr(
17296 target_arch = "arm",
17297 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17298)]
17299pub unsafe fn vld1q_s32_x3(a: *const i32) -> int32x4x3_t {
17300 unsafe extern "unadjusted" {
17301 #[cfg_attr(
17302 any(target_arch = "aarch64", target_arch = "arm64ec"),
17303 link_name = "llvm.aarch64.neon.ld1x3.v4i32.p0"
17304 )]
17305 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v4i32.p0")]
17306 fn _vld1q_s32_x3(a: *const i32) -> int32x4x3_t;
17307 }
17308 _vld1q_s32_x3(a)
17309}
17310#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17311#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s32_x4)"]
17312#[doc = "## Safety"]
17313#[doc = " * Neon instrinsic unsafe"]
17314#[inline]
17315#[target_feature(enable = "neon")]
17316#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17317#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17318#[cfg_attr(
17319 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17320 assert_instr(ld1)
17321)]
17322#[cfg_attr(
17323 not(target_arch = "arm"),
17324 stable(feature = "neon_intrinsics", since = "1.59.0")
17325)]
17326#[cfg_attr(
17327 target_arch = "arm",
17328 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17329)]
17330pub unsafe fn vld1q_s32_x4(a: *const i32) -> int32x4x4_t {
17331 unsafe extern "unadjusted" {
17332 #[cfg_attr(
17333 any(target_arch = "aarch64", target_arch = "arm64ec"),
17334 link_name = "llvm.aarch64.neon.ld1x4.v4i32.p0"
17335 )]
17336 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v4i32.p0")]
17337 fn _vld1q_s32_x4(a: *const i32) -> int32x4x4_t;
17338 }
17339 _vld1q_s32_x4(a)
17340}
17341#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17342#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s64_x2)"]
17343#[doc = "## Safety"]
17344#[doc = " * Neon instrinsic unsafe"]
17345#[inline]
17346#[target_feature(enable = "neon")]
17347#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17348#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17349#[cfg_attr(
17350 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17351 assert_instr(ld1)
17352)]
17353#[cfg_attr(
17354 not(target_arch = "arm"),
17355 stable(feature = "neon_intrinsics", since = "1.59.0")
17356)]
17357#[cfg_attr(
17358 target_arch = "arm",
17359 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17360)]
17361pub unsafe fn vld1_s64_x2(a: *const i64) -> int64x1x2_t {
17362 unsafe extern "unadjusted" {
17363 #[cfg_attr(
17364 any(target_arch = "aarch64", target_arch = "arm64ec"),
17365 link_name = "llvm.aarch64.neon.ld1x2.v1i64.p0"
17366 )]
17367 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v1i64.p0")]
17368 fn _vld1_s64_x2(a: *const i64) -> int64x1x2_t;
17369 }
17370 _vld1_s64_x2(a)
17371}
17372#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17373#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s64_x3)"]
17374#[doc = "## Safety"]
17375#[doc = " * Neon instrinsic unsafe"]
17376#[inline]
17377#[target_feature(enable = "neon")]
17378#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17379#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17380#[cfg_attr(
17381 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17382 assert_instr(ld1)
17383)]
17384#[cfg_attr(
17385 not(target_arch = "arm"),
17386 stable(feature = "neon_intrinsics", since = "1.59.0")
17387)]
17388#[cfg_attr(
17389 target_arch = "arm",
17390 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17391)]
17392pub unsafe fn vld1_s64_x3(a: *const i64) -> int64x1x3_t {
17393 unsafe extern "unadjusted" {
17394 #[cfg_attr(
17395 any(target_arch = "aarch64", target_arch = "arm64ec"),
17396 link_name = "llvm.aarch64.neon.ld1x3.v1i64.p0"
17397 )]
17398 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v1i64.p0")]
17399 fn _vld1_s64_x3(a: *const i64) -> int64x1x3_t;
17400 }
17401 _vld1_s64_x3(a)
17402}
17403#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17404#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s64_x4)"]
17405#[doc = "## Safety"]
17406#[doc = " * Neon instrinsic unsafe"]
17407#[inline]
17408#[target_feature(enable = "neon")]
17409#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17410#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17411#[cfg_attr(
17412 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17413 assert_instr(ld1)
17414)]
17415#[cfg_attr(
17416 not(target_arch = "arm"),
17417 stable(feature = "neon_intrinsics", since = "1.59.0")
17418)]
17419#[cfg_attr(
17420 target_arch = "arm",
17421 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17422)]
17423pub unsafe fn vld1_s64_x4(a: *const i64) -> int64x1x4_t {
17424 unsafe extern "unadjusted" {
17425 #[cfg_attr(
17426 any(target_arch = "aarch64", target_arch = "arm64ec"),
17427 link_name = "llvm.aarch64.neon.ld1x4.v1i64.p0"
17428 )]
17429 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v1i64.p0")]
17430 fn _vld1_s64_x4(a: *const i64) -> int64x1x4_t;
17431 }
17432 _vld1_s64_x4(a)
17433}
17434#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17435#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s64_x2)"]
17436#[doc = "## Safety"]
17437#[doc = " * Neon instrinsic unsafe"]
17438#[inline]
17439#[target_feature(enable = "neon")]
17440#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17441#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17442#[cfg_attr(
17443 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17444 assert_instr(ld1)
17445)]
17446#[cfg_attr(
17447 not(target_arch = "arm"),
17448 stable(feature = "neon_intrinsics", since = "1.59.0")
17449)]
17450#[cfg_attr(
17451 target_arch = "arm",
17452 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17453)]
17454pub unsafe fn vld1q_s64_x2(a: *const i64) -> int64x2x2_t {
17455 unsafe extern "unadjusted" {
17456 #[cfg_attr(
17457 any(target_arch = "aarch64", target_arch = "arm64ec"),
17458 link_name = "llvm.aarch64.neon.ld1x2.v2i64.p0"
17459 )]
17460 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v2i64.p0")]
17461 fn _vld1q_s64_x2(a: *const i64) -> int64x2x2_t;
17462 }
17463 _vld1q_s64_x2(a)
17464}
17465#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17466#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s64_x3)"]
17467#[doc = "## Safety"]
17468#[doc = " * Neon instrinsic unsafe"]
17469#[inline]
17470#[target_feature(enable = "neon")]
17471#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17472#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17473#[cfg_attr(
17474 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17475 assert_instr(ld1)
17476)]
17477#[cfg_attr(
17478 not(target_arch = "arm"),
17479 stable(feature = "neon_intrinsics", since = "1.59.0")
17480)]
17481#[cfg_attr(
17482 target_arch = "arm",
17483 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17484)]
17485pub unsafe fn vld1q_s64_x3(a: *const i64) -> int64x2x3_t {
17486 unsafe extern "unadjusted" {
17487 #[cfg_attr(
17488 any(target_arch = "aarch64", target_arch = "arm64ec"),
17489 link_name = "llvm.aarch64.neon.ld1x3.v2i64.p0"
17490 )]
17491 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v2i64.p0")]
17492 fn _vld1q_s64_x3(a: *const i64) -> int64x2x3_t;
17493 }
17494 _vld1q_s64_x3(a)
17495}
17496#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17497#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s64_x4)"]
17498#[doc = "## Safety"]
17499#[doc = " * Neon instrinsic unsafe"]
17500#[inline]
17501#[target_feature(enable = "neon")]
17502#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17503#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17504#[cfg_attr(
17505 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17506 assert_instr(ld1)
17507)]
17508#[cfg_attr(
17509 not(target_arch = "arm"),
17510 stable(feature = "neon_intrinsics", since = "1.59.0")
17511)]
17512#[cfg_attr(
17513 target_arch = "arm",
17514 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17515)]
17516pub unsafe fn vld1q_s64_x4(a: *const i64) -> int64x2x4_t {
17517 unsafe extern "unadjusted" {
17518 #[cfg_attr(
17519 any(target_arch = "aarch64", target_arch = "arm64ec"),
17520 link_name = "llvm.aarch64.neon.ld1x4.v2i64.p0"
17521 )]
17522 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v2i64.p0")]
17523 fn _vld1q_s64_x4(a: *const i64) -> int64x2x4_t;
17524 }
17525 _vld1q_s64_x4(a)
17526}
17527#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17528#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8_x2)"]
17529#[doc = "## Safety"]
17530#[doc = " * Neon instrinsic unsafe"]
17531#[inline]
17532#[cfg(target_endian = "little")]
17533#[target_feature(enable = "neon")]
17534#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17535#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17536#[cfg_attr(
17537 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17538 assert_instr(ld1)
17539)]
17540#[cfg_attr(
17541 not(target_arch = "arm"),
17542 stable(feature = "neon_intrinsics", since = "1.59.0")
17543)]
17544#[cfg_attr(
17545 target_arch = "arm",
17546 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17547)]
17548pub unsafe fn vld1_u8_x2(a: *const u8) -> uint8x8x2_t {
17549 transmute(vld1_s8_x2(transmute(a)))
17550}
17551#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17552#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8_x2)"]
17553#[doc = "## Safety"]
17554#[doc = " * Neon instrinsic unsafe"]
17555#[inline]
17556#[cfg(target_endian = "big")]
17557#[target_feature(enable = "neon")]
17558#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17559#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17560#[cfg_attr(
17561 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17562 assert_instr(ld1)
17563)]
17564#[cfg_attr(
17565 not(target_arch = "arm"),
17566 stable(feature = "neon_intrinsics", since = "1.59.0")
17567)]
17568#[cfg_attr(
17569 target_arch = "arm",
17570 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17571)]
17572pub unsafe fn vld1_u8_x2(a: *const u8) -> uint8x8x2_t {
17573 let mut ret_val: uint8x8x2_t = transmute(vld1_s8_x2(transmute(a)));
17574 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
17575 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
17576 ret_val
17577}
17578#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17579#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8_x3)"]
17580#[doc = "## Safety"]
17581#[doc = " * Neon instrinsic unsafe"]
17582#[inline]
17583#[cfg(target_endian = "little")]
17584#[target_feature(enable = "neon")]
17585#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17586#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17587#[cfg_attr(
17588 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17589 assert_instr(ld1)
17590)]
17591#[cfg_attr(
17592 not(target_arch = "arm"),
17593 stable(feature = "neon_intrinsics", since = "1.59.0")
17594)]
17595#[cfg_attr(
17596 target_arch = "arm",
17597 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17598)]
17599pub unsafe fn vld1_u8_x3(a: *const u8) -> uint8x8x3_t {
17600 transmute(vld1_s8_x3(transmute(a)))
17601}
17602#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17603#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8_x3)"]
17604#[doc = "## Safety"]
17605#[doc = " * Neon instrinsic unsafe"]
17606#[inline]
17607#[cfg(target_endian = "big")]
17608#[target_feature(enable = "neon")]
17609#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17610#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17611#[cfg_attr(
17612 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17613 assert_instr(ld1)
17614)]
17615#[cfg_attr(
17616 not(target_arch = "arm"),
17617 stable(feature = "neon_intrinsics", since = "1.59.0")
17618)]
17619#[cfg_attr(
17620 target_arch = "arm",
17621 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17622)]
17623pub unsafe fn vld1_u8_x3(a: *const u8) -> uint8x8x3_t {
17624 let mut ret_val: uint8x8x3_t = transmute(vld1_s8_x3(transmute(a)));
17625 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
17626 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
17627 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
17628 ret_val
17629}
17630#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17631#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8_x4)"]
17632#[doc = "## Safety"]
17633#[doc = " * Neon instrinsic unsafe"]
17634#[inline]
17635#[cfg(target_endian = "little")]
17636#[target_feature(enable = "neon")]
17637#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17638#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17639#[cfg_attr(
17640 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17641 assert_instr(ld1)
17642)]
17643#[cfg_attr(
17644 not(target_arch = "arm"),
17645 stable(feature = "neon_intrinsics", since = "1.59.0")
17646)]
17647#[cfg_attr(
17648 target_arch = "arm",
17649 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17650)]
17651pub unsafe fn vld1_u8_x4(a: *const u8) -> uint8x8x4_t {
17652 transmute(vld1_s8_x4(transmute(a)))
17653}
17654#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17655#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8_x4)"]
17656#[doc = "## Safety"]
17657#[doc = " * Neon instrinsic unsafe"]
17658#[inline]
17659#[cfg(target_endian = "big")]
17660#[target_feature(enable = "neon")]
17661#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17662#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17663#[cfg_attr(
17664 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17665 assert_instr(ld1)
17666)]
17667#[cfg_attr(
17668 not(target_arch = "arm"),
17669 stable(feature = "neon_intrinsics", since = "1.59.0")
17670)]
17671#[cfg_attr(
17672 target_arch = "arm",
17673 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17674)]
17675pub unsafe fn vld1_u8_x4(a: *const u8) -> uint8x8x4_t {
17676 let mut ret_val: uint8x8x4_t = transmute(vld1_s8_x4(transmute(a)));
17677 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
17678 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
17679 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
17680 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
17681 ret_val
17682}
17683#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17684#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8_x2)"]
17685#[doc = "## Safety"]
17686#[doc = " * Neon instrinsic unsafe"]
17687#[inline]
17688#[cfg(target_endian = "little")]
17689#[target_feature(enable = "neon")]
17690#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17691#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17692#[cfg_attr(
17693 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17694 assert_instr(ld1)
17695)]
17696#[cfg_attr(
17697 not(target_arch = "arm"),
17698 stable(feature = "neon_intrinsics", since = "1.59.0")
17699)]
17700#[cfg_attr(
17701 target_arch = "arm",
17702 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17703)]
17704pub unsafe fn vld1q_u8_x2(a: *const u8) -> uint8x16x2_t {
17705 transmute(vld1q_s8_x2(transmute(a)))
17706}
17707#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17708#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8_x2)"]
17709#[doc = "## Safety"]
17710#[doc = " * Neon instrinsic unsafe"]
17711#[inline]
17712#[cfg(target_endian = "big")]
17713#[target_feature(enable = "neon")]
17714#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17715#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17716#[cfg_attr(
17717 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17718 assert_instr(ld1)
17719)]
17720#[cfg_attr(
17721 not(target_arch = "arm"),
17722 stable(feature = "neon_intrinsics", since = "1.59.0")
17723)]
17724#[cfg_attr(
17725 target_arch = "arm",
17726 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17727)]
17728pub unsafe fn vld1q_u8_x2(a: *const u8) -> uint8x16x2_t {
17729 let mut ret_val: uint8x16x2_t = transmute(vld1q_s8_x2(transmute(a)));
17730 ret_val.0 = unsafe {
17731 simd_shuffle!(
17732 ret_val.0,
17733 ret_val.0,
17734 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
17735 )
17736 };
17737 ret_val.1 = unsafe {
17738 simd_shuffle!(
17739 ret_val.1,
17740 ret_val.1,
17741 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
17742 )
17743 };
17744 ret_val
17745}
17746#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17747#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8_x3)"]
17748#[doc = "## Safety"]
17749#[doc = " * Neon instrinsic unsafe"]
17750#[inline]
17751#[cfg(target_endian = "little")]
17752#[target_feature(enable = "neon")]
17753#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17754#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17755#[cfg_attr(
17756 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17757 assert_instr(ld1)
17758)]
17759#[cfg_attr(
17760 not(target_arch = "arm"),
17761 stable(feature = "neon_intrinsics", since = "1.59.0")
17762)]
17763#[cfg_attr(
17764 target_arch = "arm",
17765 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17766)]
17767pub unsafe fn vld1q_u8_x3(a: *const u8) -> uint8x16x3_t {
17768 transmute(vld1q_s8_x3(transmute(a)))
17769}
17770#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17771#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8_x3)"]
17772#[doc = "## Safety"]
17773#[doc = " * Neon instrinsic unsafe"]
17774#[inline]
17775#[cfg(target_endian = "big")]
17776#[target_feature(enable = "neon")]
17777#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17778#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17779#[cfg_attr(
17780 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17781 assert_instr(ld1)
17782)]
17783#[cfg_attr(
17784 not(target_arch = "arm"),
17785 stable(feature = "neon_intrinsics", since = "1.59.0")
17786)]
17787#[cfg_attr(
17788 target_arch = "arm",
17789 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17790)]
17791pub unsafe fn vld1q_u8_x3(a: *const u8) -> uint8x16x3_t {
17792 let mut ret_val: uint8x16x3_t = transmute(vld1q_s8_x3(transmute(a)));
17793 ret_val.0 = unsafe {
17794 simd_shuffle!(
17795 ret_val.0,
17796 ret_val.0,
17797 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
17798 )
17799 };
17800 ret_val.1 = unsafe {
17801 simd_shuffle!(
17802 ret_val.1,
17803 ret_val.1,
17804 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
17805 )
17806 };
17807 ret_val.2 = unsafe {
17808 simd_shuffle!(
17809 ret_val.2,
17810 ret_val.2,
17811 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
17812 )
17813 };
17814 ret_val
17815}
17816#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17817#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8_x4)"]
17818#[doc = "## Safety"]
17819#[doc = " * Neon instrinsic unsafe"]
17820#[inline]
17821#[cfg(target_endian = "little")]
17822#[target_feature(enable = "neon")]
17823#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17824#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17825#[cfg_attr(
17826 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17827 assert_instr(ld1)
17828)]
17829#[cfg_attr(
17830 not(target_arch = "arm"),
17831 stable(feature = "neon_intrinsics", since = "1.59.0")
17832)]
17833#[cfg_attr(
17834 target_arch = "arm",
17835 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17836)]
17837pub unsafe fn vld1q_u8_x4(a: *const u8) -> uint8x16x4_t {
17838 transmute(vld1q_s8_x4(transmute(a)))
17839}
17840#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17841#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8_x4)"]
17842#[doc = "## Safety"]
17843#[doc = " * Neon instrinsic unsafe"]
17844#[inline]
17845#[cfg(target_endian = "big")]
17846#[target_feature(enable = "neon")]
17847#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17848#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17849#[cfg_attr(
17850 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17851 assert_instr(ld1)
17852)]
17853#[cfg_attr(
17854 not(target_arch = "arm"),
17855 stable(feature = "neon_intrinsics", since = "1.59.0")
17856)]
17857#[cfg_attr(
17858 target_arch = "arm",
17859 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17860)]
17861pub unsafe fn vld1q_u8_x4(a: *const u8) -> uint8x16x4_t {
17862 let mut ret_val: uint8x16x4_t = transmute(vld1q_s8_x4(transmute(a)));
17863 ret_val.0 = unsafe {
17864 simd_shuffle!(
17865 ret_val.0,
17866 ret_val.0,
17867 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
17868 )
17869 };
17870 ret_val.1 = unsafe {
17871 simd_shuffle!(
17872 ret_val.1,
17873 ret_val.1,
17874 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
17875 )
17876 };
17877 ret_val.2 = unsafe {
17878 simd_shuffle!(
17879 ret_val.2,
17880 ret_val.2,
17881 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
17882 )
17883 };
17884 ret_val.3 = unsafe {
17885 simd_shuffle!(
17886 ret_val.3,
17887 ret_val.3,
17888 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
17889 )
17890 };
17891 ret_val
17892}
17893#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17894#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16_x2)"]
17895#[doc = "## Safety"]
17896#[doc = " * Neon instrinsic unsafe"]
17897#[inline]
17898#[cfg(target_endian = "little")]
17899#[target_feature(enable = "neon")]
17900#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17901#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17902#[cfg_attr(
17903 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17904 assert_instr(ld1)
17905)]
17906#[cfg_attr(
17907 not(target_arch = "arm"),
17908 stable(feature = "neon_intrinsics", since = "1.59.0")
17909)]
17910#[cfg_attr(
17911 target_arch = "arm",
17912 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17913)]
17914pub unsafe fn vld1_u16_x2(a: *const u16) -> uint16x4x2_t {
17915 transmute(vld1_s16_x2(transmute(a)))
17916}
17917#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17918#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16_x2)"]
17919#[doc = "## Safety"]
17920#[doc = " * Neon instrinsic unsafe"]
17921#[inline]
17922#[cfg(target_endian = "big")]
17923#[target_feature(enable = "neon")]
17924#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17925#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17926#[cfg_attr(
17927 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17928 assert_instr(ld1)
17929)]
17930#[cfg_attr(
17931 not(target_arch = "arm"),
17932 stable(feature = "neon_intrinsics", since = "1.59.0")
17933)]
17934#[cfg_attr(
17935 target_arch = "arm",
17936 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17937)]
17938pub unsafe fn vld1_u16_x2(a: *const u16) -> uint16x4x2_t {
17939 let mut ret_val: uint16x4x2_t = transmute(vld1_s16_x2(transmute(a)));
17940 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
17941 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
17942 ret_val
17943}
17944#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17945#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16_x3)"]
17946#[doc = "## Safety"]
17947#[doc = " * Neon instrinsic unsafe"]
17948#[inline]
17949#[cfg(target_endian = "little")]
17950#[target_feature(enable = "neon")]
17951#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17952#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17953#[cfg_attr(
17954 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17955 assert_instr(ld1)
17956)]
17957#[cfg_attr(
17958 not(target_arch = "arm"),
17959 stable(feature = "neon_intrinsics", since = "1.59.0")
17960)]
17961#[cfg_attr(
17962 target_arch = "arm",
17963 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17964)]
17965pub unsafe fn vld1_u16_x3(a: *const u16) -> uint16x4x3_t {
17966 transmute(vld1_s16_x3(transmute(a)))
17967}
17968#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17969#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16_x3)"]
17970#[doc = "## Safety"]
17971#[doc = " * Neon instrinsic unsafe"]
17972#[inline]
17973#[cfg(target_endian = "big")]
17974#[target_feature(enable = "neon")]
17975#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17976#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17977#[cfg_attr(
17978 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17979 assert_instr(ld1)
17980)]
17981#[cfg_attr(
17982 not(target_arch = "arm"),
17983 stable(feature = "neon_intrinsics", since = "1.59.0")
17984)]
17985#[cfg_attr(
17986 target_arch = "arm",
17987 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17988)]
17989pub unsafe fn vld1_u16_x3(a: *const u16) -> uint16x4x3_t {
17990 let mut ret_val: uint16x4x3_t = transmute(vld1_s16_x3(transmute(a)));
17991 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
17992 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
17993 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
17994 ret_val
17995}
17996#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17997#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16_x4)"]
17998#[doc = "## Safety"]
17999#[doc = " * Neon instrinsic unsafe"]
18000#[inline]
18001#[cfg(target_endian = "little")]
18002#[target_feature(enable = "neon")]
18003#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18004#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18005#[cfg_attr(
18006 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18007 assert_instr(ld1)
18008)]
18009#[cfg_attr(
18010 not(target_arch = "arm"),
18011 stable(feature = "neon_intrinsics", since = "1.59.0")
18012)]
18013#[cfg_attr(
18014 target_arch = "arm",
18015 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18016)]
18017pub unsafe fn vld1_u16_x4(a: *const u16) -> uint16x4x4_t {
18018 transmute(vld1_s16_x4(transmute(a)))
18019}
18020#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18021#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16_x4)"]
18022#[doc = "## Safety"]
18023#[doc = " * Neon instrinsic unsafe"]
18024#[inline]
18025#[cfg(target_endian = "big")]
18026#[target_feature(enable = "neon")]
18027#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18028#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18029#[cfg_attr(
18030 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18031 assert_instr(ld1)
18032)]
18033#[cfg_attr(
18034 not(target_arch = "arm"),
18035 stable(feature = "neon_intrinsics", since = "1.59.0")
18036)]
18037#[cfg_attr(
18038 target_arch = "arm",
18039 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18040)]
18041pub unsafe fn vld1_u16_x4(a: *const u16) -> uint16x4x4_t {
18042 let mut ret_val: uint16x4x4_t = transmute(vld1_s16_x4(transmute(a)));
18043 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
18044 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
18045 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
18046 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
18047 ret_val
18048}
18049#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18050#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16_x2)"]
18051#[doc = "## Safety"]
18052#[doc = " * Neon instrinsic unsafe"]
18053#[inline]
18054#[cfg(target_endian = "little")]
18055#[target_feature(enable = "neon")]
18056#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18057#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18058#[cfg_attr(
18059 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18060 assert_instr(ld1)
18061)]
18062#[cfg_attr(
18063 not(target_arch = "arm"),
18064 stable(feature = "neon_intrinsics", since = "1.59.0")
18065)]
18066#[cfg_attr(
18067 target_arch = "arm",
18068 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18069)]
18070pub unsafe fn vld1q_u16_x2(a: *const u16) -> uint16x8x2_t {
18071 transmute(vld1q_s16_x2(transmute(a)))
18072}
18073#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18074#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16_x2)"]
18075#[doc = "## Safety"]
18076#[doc = " * Neon instrinsic unsafe"]
18077#[inline]
18078#[cfg(target_endian = "big")]
18079#[target_feature(enable = "neon")]
18080#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18081#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18082#[cfg_attr(
18083 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18084 assert_instr(ld1)
18085)]
18086#[cfg_attr(
18087 not(target_arch = "arm"),
18088 stable(feature = "neon_intrinsics", since = "1.59.0")
18089)]
18090#[cfg_attr(
18091 target_arch = "arm",
18092 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18093)]
18094pub unsafe fn vld1q_u16_x2(a: *const u16) -> uint16x8x2_t {
18095 let mut ret_val: uint16x8x2_t = transmute(vld1q_s16_x2(transmute(a)));
18096 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
18097 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
18098 ret_val
18099}
18100#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18101#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16_x3)"]
18102#[doc = "## Safety"]
18103#[doc = " * Neon instrinsic unsafe"]
18104#[inline]
18105#[cfg(target_endian = "little")]
18106#[target_feature(enable = "neon")]
18107#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18108#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18109#[cfg_attr(
18110 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18111 assert_instr(ld1)
18112)]
18113#[cfg_attr(
18114 not(target_arch = "arm"),
18115 stable(feature = "neon_intrinsics", since = "1.59.0")
18116)]
18117#[cfg_attr(
18118 target_arch = "arm",
18119 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18120)]
18121pub unsafe fn vld1q_u16_x3(a: *const u16) -> uint16x8x3_t {
18122 transmute(vld1q_s16_x3(transmute(a)))
18123}
18124#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18125#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16_x3)"]
18126#[doc = "## Safety"]
18127#[doc = " * Neon instrinsic unsafe"]
18128#[inline]
18129#[cfg(target_endian = "big")]
18130#[target_feature(enable = "neon")]
18131#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18132#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18133#[cfg_attr(
18134 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18135 assert_instr(ld1)
18136)]
18137#[cfg_attr(
18138 not(target_arch = "arm"),
18139 stable(feature = "neon_intrinsics", since = "1.59.0")
18140)]
18141#[cfg_attr(
18142 target_arch = "arm",
18143 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18144)]
18145pub unsafe fn vld1q_u16_x3(a: *const u16) -> uint16x8x3_t {
18146 let mut ret_val: uint16x8x3_t = transmute(vld1q_s16_x3(transmute(a)));
18147 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
18148 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
18149 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
18150 ret_val
18151}
18152#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18153#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16_x4)"]
18154#[doc = "## Safety"]
18155#[doc = " * Neon instrinsic unsafe"]
18156#[inline]
18157#[cfg(target_endian = "little")]
18158#[target_feature(enable = "neon")]
18159#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18160#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18161#[cfg_attr(
18162 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18163 assert_instr(ld1)
18164)]
18165#[cfg_attr(
18166 not(target_arch = "arm"),
18167 stable(feature = "neon_intrinsics", since = "1.59.0")
18168)]
18169#[cfg_attr(
18170 target_arch = "arm",
18171 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18172)]
18173pub unsafe fn vld1q_u16_x4(a: *const u16) -> uint16x8x4_t {
18174 transmute(vld1q_s16_x4(transmute(a)))
18175}
18176#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18177#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16_x4)"]
18178#[doc = "## Safety"]
18179#[doc = " * Neon instrinsic unsafe"]
18180#[inline]
18181#[cfg(target_endian = "big")]
18182#[target_feature(enable = "neon")]
18183#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18184#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18185#[cfg_attr(
18186 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18187 assert_instr(ld1)
18188)]
18189#[cfg_attr(
18190 not(target_arch = "arm"),
18191 stable(feature = "neon_intrinsics", since = "1.59.0")
18192)]
18193#[cfg_attr(
18194 target_arch = "arm",
18195 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18196)]
18197pub unsafe fn vld1q_u16_x4(a: *const u16) -> uint16x8x4_t {
18198 let mut ret_val: uint16x8x4_t = transmute(vld1q_s16_x4(transmute(a)));
18199 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
18200 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
18201 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
18202 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
18203 ret_val
18204}
18205#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18206#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32_x2)"]
18207#[doc = "## Safety"]
18208#[doc = " * Neon instrinsic unsafe"]
18209#[inline]
18210#[cfg(target_endian = "little")]
18211#[target_feature(enable = "neon")]
18212#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18213#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18214#[cfg_attr(
18215 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18216 assert_instr(ld1)
18217)]
18218#[cfg_attr(
18219 not(target_arch = "arm"),
18220 stable(feature = "neon_intrinsics", since = "1.59.0")
18221)]
18222#[cfg_attr(
18223 target_arch = "arm",
18224 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18225)]
18226pub unsafe fn vld1_u32_x2(a: *const u32) -> uint32x2x2_t {
18227 transmute(vld1_s32_x2(transmute(a)))
18228}
18229#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18230#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32_x2)"]
18231#[doc = "## Safety"]
18232#[doc = " * Neon instrinsic unsafe"]
18233#[inline]
18234#[cfg(target_endian = "big")]
18235#[target_feature(enable = "neon")]
18236#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18237#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18238#[cfg_attr(
18239 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18240 assert_instr(ld1)
18241)]
18242#[cfg_attr(
18243 not(target_arch = "arm"),
18244 stable(feature = "neon_intrinsics", since = "1.59.0")
18245)]
18246#[cfg_attr(
18247 target_arch = "arm",
18248 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18249)]
18250pub unsafe fn vld1_u32_x2(a: *const u32) -> uint32x2x2_t {
18251 let mut ret_val: uint32x2x2_t = transmute(vld1_s32_x2(transmute(a)));
18252 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
18253 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
18254 ret_val
18255}
18256#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18257#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32_x3)"]
18258#[doc = "## Safety"]
18259#[doc = " * Neon instrinsic unsafe"]
18260#[inline]
18261#[cfg(target_endian = "little")]
18262#[target_feature(enable = "neon")]
18263#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18264#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18265#[cfg_attr(
18266 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18267 assert_instr(ld1)
18268)]
18269#[cfg_attr(
18270 not(target_arch = "arm"),
18271 stable(feature = "neon_intrinsics", since = "1.59.0")
18272)]
18273#[cfg_attr(
18274 target_arch = "arm",
18275 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18276)]
18277pub unsafe fn vld1_u32_x3(a: *const u32) -> uint32x2x3_t {
18278 transmute(vld1_s32_x3(transmute(a)))
18279}
18280#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18281#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32_x3)"]
18282#[doc = "## Safety"]
18283#[doc = " * Neon instrinsic unsafe"]
18284#[inline]
18285#[cfg(target_endian = "big")]
18286#[target_feature(enable = "neon")]
18287#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18288#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18289#[cfg_attr(
18290 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18291 assert_instr(ld1)
18292)]
18293#[cfg_attr(
18294 not(target_arch = "arm"),
18295 stable(feature = "neon_intrinsics", since = "1.59.0")
18296)]
18297#[cfg_attr(
18298 target_arch = "arm",
18299 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18300)]
18301pub unsafe fn vld1_u32_x3(a: *const u32) -> uint32x2x3_t {
18302 let mut ret_val: uint32x2x3_t = transmute(vld1_s32_x3(transmute(a)));
18303 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
18304 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
18305 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
18306 ret_val
18307}
18308#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18309#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32_x4)"]
18310#[doc = "## Safety"]
18311#[doc = " * Neon instrinsic unsafe"]
18312#[inline]
18313#[cfg(target_endian = "little")]
18314#[target_feature(enable = "neon")]
18315#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18316#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18317#[cfg_attr(
18318 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18319 assert_instr(ld1)
18320)]
18321#[cfg_attr(
18322 not(target_arch = "arm"),
18323 stable(feature = "neon_intrinsics", since = "1.59.0")
18324)]
18325#[cfg_attr(
18326 target_arch = "arm",
18327 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18328)]
18329pub unsafe fn vld1_u32_x4(a: *const u32) -> uint32x2x4_t {
18330 transmute(vld1_s32_x4(transmute(a)))
18331}
18332#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18333#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32_x4)"]
18334#[doc = "## Safety"]
18335#[doc = " * Neon instrinsic unsafe"]
18336#[inline]
18337#[cfg(target_endian = "big")]
18338#[target_feature(enable = "neon")]
18339#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18340#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18341#[cfg_attr(
18342 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18343 assert_instr(ld1)
18344)]
18345#[cfg_attr(
18346 not(target_arch = "arm"),
18347 stable(feature = "neon_intrinsics", since = "1.59.0")
18348)]
18349#[cfg_attr(
18350 target_arch = "arm",
18351 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18352)]
18353pub unsafe fn vld1_u32_x4(a: *const u32) -> uint32x2x4_t {
18354 let mut ret_val: uint32x2x4_t = transmute(vld1_s32_x4(transmute(a)));
18355 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
18356 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
18357 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
18358 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [1, 0]) };
18359 ret_val
18360}
18361#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18362#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32_x2)"]
18363#[doc = "## Safety"]
18364#[doc = " * Neon instrinsic unsafe"]
18365#[inline]
18366#[cfg(target_endian = "little")]
18367#[target_feature(enable = "neon")]
18368#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18369#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18370#[cfg_attr(
18371 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18372 assert_instr(ld1)
18373)]
18374#[cfg_attr(
18375 not(target_arch = "arm"),
18376 stable(feature = "neon_intrinsics", since = "1.59.0")
18377)]
18378#[cfg_attr(
18379 target_arch = "arm",
18380 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18381)]
18382pub unsafe fn vld1q_u32_x2(a: *const u32) -> uint32x4x2_t {
18383 transmute(vld1q_s32_x2(transmute(a)))
18384}
18385#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18386#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32_x2)"]
18387#[doc = "## Safety"]
18388#[doc = " * Neon instrinsic unsafe"]
18389#[inline]
18390#[cfg(target_endian = "big")]
18391#[target_feature(enable = "neon")]
18392#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18393#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18394#[cfg_attr(
18395 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18396 assert_instr(ld1)
18397)]
18398#[cfg_attr(
18399 not(target_arch = "arm"),
18400 stable(feature = "neon_intrinsics", since = "1.59.0")
18401)]
18402#[cfg_attr(
18403 target_arch = "arm",
18404 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18405)]
18406pub unsafe fn vld1q_u32_x2(a: *const u32) -> uint32x4x2_t {
18407 let mut ret_val: uint32x4x2_t = transmute(vld1q_s32_x2(transmute(a)));
18408 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
18409 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
18410 ret_val
18411}
18412#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18413#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32_x3)"]
18414#[doc = "## Safety"]
18415#[doc = " * Neon instrinsic unsafe"]
18416#[inline]
18417#[cfg(target_endian = "little")]
18418#[target_feature(enable = "neon")]
18419#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18420#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18421#[cfg_attr(
18422 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18423 assert_instr(ld1)
18424)]
18425#[cfg_attr(
18426 not(target_arch = "arm"),
18427 stable(feature = "neon_intrinsics", since = "1.59.0")
18428)]
18429#[cfg_attr(
18430 target_arch = "arm",
18431 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18432)]
18433pub unsafe fn vld1q_u32_x3(a: *const u32) -> uint32x4x3_t {
18434 transmute(vld1q_s32_x3(transmute(a)))
18435}
18436#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18437#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32_x3)"]
18438#[doc = "## Safety"]
18439#[doc = " * Neon instrinsic unsafe"]
18440#[inline]
18441#[cfg(target_endian = "big")]
18442#[target_feature(enable = "neon")]
18443#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18444#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18445#[cfg_attr(
18446 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18447 assert_instr(ld1)
18448)]
18449#[cfg_attr(
18450 not(target_arch = "arm"),
18451 stable(feature = "neon_intrinsics", since = "1.59.0")
18452)]
18453#[cfg_attr(
18454 target_arch = "arm",
18455 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18456)]
18457pub unsafe fn vld1q_u32_x3(a: *const u32) -> uint32x4x3_t {
18458 let mut ret_val: uint32x4x3_t = transmute(vld1q_s32_x3(transmute(a)));
18459 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
18460 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
18461 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
18462 ret_val
18463}
18464#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18465#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32_x4)"]
18466#[doc = "## Safety"]
18467#[doc = " * Neon instrinsic unsafe"]
18468#[inline]
18469#[cfg(target_endian = "little")]
18470#[target_feature(enable = "neon")]
18471#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18472#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18473#[cfg_attr(
18474 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18475 assert_instr(ld1)
18476)]
18477#[cfg_attr(
18478 not(target_arch = "arm"),
18479 stable(feature = "neon_intrinsics", since = "1.59.0")
18480)]
18481#[cfg_attr(
18482 target_arch = "arm",
18483 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18484)]
18485pub unsafe fn vld1q_u32_x4(a: *const u32) -> uint32x4x4_t {
18486 transmute(vld1q_s32_x4(transmute(a)))
18487}
18488#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18489#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32_x4)"]
18490#[doc = "## Safety"]
18491#[doc = " * Neon instrinsic unsafe"]
18492#[inline]
18493#[cfg(target_endian = "big")]
18494#[target_feature(enable = "neon")]
18495#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18496#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18497#[cfg_attr(
18498 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18499 assert_instr(ld1)
18500)]
18501#[cfg_attr(
18502 not(target_arch = "arm"),
18503 stable(feature = "neon_intrinsics", since = "1.59.0")
18504)]
18505#[cfg_attr(
18506 target_arch = "arm",
18507 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18508)]
18509pub unsafe fn vld1q_u32_x4(a: *const u32) -> uint32x4x4_t {
18510 let mut ret_val: uint32x4x4_t = transmute(vld1q_s32_x4(transmute(a)));
18511 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
18512 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
18513 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
18514 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
18515 ret_val
18516}
18517#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18518#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u64_x2)"]
18519#[doc = "## Safety"]
18520#[doc = " * Neon instrinsic unsafe"]
18521#[inline]
18522#[target_feature(enable = "neon")]
18523#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18524#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18525#[cfg_attr(
18526 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18527 assert_instr(ld1)
18528)]
18529#[cfg_attr(
18530 not(target_arch = "arm"),
18531 stable(feature = "neon_intrinsics", since = "1.59.0")
18532)]
18533#[cfg_attr(
18534 target_arch = "arm",
18535 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18536)]
18537pub unsafe fn vld1_u64_x2(a: *const u64) -> uint64x1x2_t {
18538 transmute(vld1_s64_x2(transmute(a)))
18539}
18540#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18541#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u64_x3)"]
18542#[doc = "## Safety"]
18543#[doc = " * Neon instrinsic unsafe"]
18544#[inline]
18545#[target_feature(enable = "neon")]
18546#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18547#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18548#[cfg_attr(
18549 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18550 assert_instr(ld1)
18551)]
18552#[cfg_attr(
18553 not(target_arch = "arm"),
18554 stable(feature = "neon_intrinsics", since = "1.59.0")
18555)]
18556#[cfg_attr(
18557 target_arch = "arm",
18558 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18559)]
18560pub unsafe fn vld1_u64_x3(a: *const u64) -> uint64x1x3_t {
18561 transmute(vld1_s64_x3(transmute(a)))
18562}
18563#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18564#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u64_x4)"]
18565#[doc = "## Safety"]
18566#[doc = " * Neon instrinsic unsafe"]
18567#[inline]
18568#[target_feature(enable = "neon")]
18569#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18570#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18571#[cfg_attr(
18572 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18573 assert_instr(ld1)
18574)]
18575#[cfg_attr(
18576 not(target_arch = "arm"),
18577 stable(feature = "neon_intrinsics", since = "1.59.0")
18578)]
18579#[cfg_attr(
18580 target_arch = "arm",
18581 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18582)]
18583pub unsafe fn vld1_u64_x4(a: *const u64) -> uint64x1x4_t {
18584 transmute(vld1_s64_x4(transmute(a)))
18585}
18586#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18587#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u64_x2)"]
18588#[doc = "## Safety"]
18589#[doc = " * Neon instrinsic unsafe"]
18590#[inline]
18591#[cfg(target_endian = "little")]
18592#[target_feature(enable = "neon")]
18593#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18594#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18595#[cfg_attr(
18596 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18597 assert_instr(ld1)
18598)]
18599#[cfg_attr(
18600 not(target_arch = "arm"),
18601 stable(feature = "neon_intrinsics", since = "1.59.0")
18602)]
18603#[cfg_attr(
18604 target_arch = "arm",
18605 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18606)]
18607pub unsafe fn vld1q_u64_x2(a: *const u64) -> uint64x2x2_t {
18608 transmute(vld1q_s64_x2(transmute(a)))
18609}
18610#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18611#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u64_x2)"]
18612#[doc = "## Safety"]
18613#[doc = " * Neon instrinsic unsafe"]
18614#[inline]
18615#[cfg(target_endian = "big")]
18616#[target_feature(enable = "neon")]
18617#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18618#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18619#[cfg_attr(
18620 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18621 assert_instr(ld1)
18622)]
18623#[cfg_attr(
18624 not(target_arch = "arm"),
18625 stable(feature = "neon_intrinsics", since = "1.59.0")
18626)]
18627#[cfg_attr(
18628 target_arch = "arm",
18629 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18630)]
18631pub unsafe fn vld1q_u64_x2(a: *const u64) -> uint64x2x2_t {
18632 let mut ret_val: uint64x2x2_t = transmute(vld1q_s64_x2(transmute(a)));
18633 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
18634 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
18635 ret_val
18636}
18637#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18638#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u64_x3)"]
18639#[doc = "## Safety"]
18640#[doc = " * Neon instrinsic unsafe"]
18641#[inline]
18642#[cfg(target_endian = "little")]
18643#[target_feature(enable = "neon")]
18644#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18645#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18646#[cfg_attr(
18647 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18648 assert_instr(ld1)
18649)]
18650#[cfg_attr(
18651 not(target_arch = "arm"),
18652 stable(feature = "neon_intrinsics", since = "1.59.0")
18653)]
18654#[cfg_attr(
18655 target_arch = "arm",
18656 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18657)]
18658pub unsafe fn vld1q_u64_x3(a: *const u64) -> uint64x2x3_t {
18659 transmute(vld1q_s64_x3(transmute(a)))
18660}
18661#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18662#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u64_x3)"]
18663#[doc = "## Safety"]
18664#[doc = " * Neon instrinsic unsafe"]
18665#[inline]
18666#[cfg(target_endian = "big")]
18667#[target_feature(enable = "neon")]
18668#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18669#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18670#[cfg_attr(
18671 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18672 assert_instr(ld1)
18673)]
18674#[cfg_attr(
18675 not(target_arch = "arm"),
18676 stable(feature = "neon_intrinsics", since = "1.59.0")
18677)]
18678#[cfg_attr(
18679 target_arch = "arm",
18680 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18681)]
18682pub unsafe fn vld1q_u64_x3(a: *const u64) -> uint64x2x3_t {
18683 let mut ret_val: uint64x2x3_t = transmute(vld1q_s64_x3(transmute(a)));
18684 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
18685 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
18686 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
18687 ret_val
18688}
18689#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18690#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u64_x4)"]
18691#[doc = "## Safety"]
18692#[doc = " * Neon instrinsic unsafe"]
18693#[inline]
18694#[cfg(target_endian = "little")]
18695#[target_feature(enable = "neon")]
18696#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18697#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18698#[cfg_attr(
18699 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18700 assert_instr(ld1)
18701)]
18702#[cfg_attr(
18703 not(target_arch = "arm"),
18704 stable(feature = "neon_intrinsics", since = "1.59.0")
18705)]
18706#[cfg_attr(
18707 target_arch = "arm",
18708 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18709)]
18710pub unsafe fn vld1q_u64_x4(a: *const u64) -> uint64x2x4_t {
18711 transmute(vld1q_s64_x4(transmute(a)))
18712}
18713#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18714#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u64_x4)"]
18715#[doc = "## Safety"]
18716#[doc = " * Neon instrinsic unsafe"]
18717#[inline]
18718#[cfg(target_endian = "big")]
18719#[target_feature(enable = "neon")]
18720#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18721#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18722#[cfg_attr(
18723 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18724 assert_instr(ld1)
18725)]
18726#[cfg_attr(
18727 not(target_arch = "arm"),
18728 stable(feature = "neon_intrinsics", since = "1.59.0")
18729)]
18730#[cfg_attr(
18731 target_arch = "arm",
18732 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18733)]
18734pub unsafe fn vld1q_u64_x4(a: *const u64) -> uint64x2x4_t {
18735 let mut ret_val: uint64x2x4_t = transmute(vld1q_s64_x4(transmute(a)));
18736 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
18737 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
18738 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
18739 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [1, 0]) };
18740 ret_val
18741}
18742#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18743#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p8_x2)"]
18744#[doc = "## Safety"]
18745#[doc = " * Neon instrinsic unsafe"]
18746#[inline]
18747#[cfg(target_endian = "little")]
18748#[target_feature(enable = "neon")]
18749#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18750#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18751#[cfg_attr(
18752 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18753 assert_instr(ld1)
18754)]
18755#[cfg_attr(
18756 not(target_arch = "arm"),
18757 stable(feature = "neon_intrinsics", since = "1.59.0")
18758)]
18759#[cfg_attr(
18760 target_arch = "arm",
18761 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18762)]
18763pub unsafe fn vld1_p8_x2(a: *const p8) -> poly8x8x2_t {
18764 transmute(vld1_s8_x2(transmute(a)))
18765}
18766#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18767#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p8_x2)"]
18768#[doc = "## Safety"]
18769#[doc = " * Neon instrinsic unsafe"]
18770#[inline]
18771#[cfg(target_endian = "big")]
18772#[target_feature(enable = "neon")]
18773#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18774#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18775#[cfg_attr(
18776 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18777 assert_instr(ld1)
18778)]
18779#[cfg_attr(
18780 not(target_arch = "arm"),
18781 stable(feature = "neon_intrinsics", since = "1.59.0")
18782)]
18783#[cfg_attr(
18784 target_arch = "arm",
18785 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18786)]
18787pub unsafe fn vld1_p8_x2(a: *const p8) -> poly8x8x2_t {
18788 let mut ret_val: poly8x8x2_t = transmute(vld1_s8_x2(transmute(a)));
18789 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
18790 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
18791 ret_val
18792}
18793#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18794#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p8_x3)"]
18795#[doc = "## Safety"]
18796#[doc = " * Neon instrinsic unsafe"]
18797#[inline]
18798#[cfg(target_endian = "little")]
18799#[target_feature(enable = "neon")]
18800#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18801#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18802#[cfg_attr(
18803 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18804 assert_instr(ld1)
18805)]
18806#[cfg_attr(
18807 not(target_arch = "arm"),
18808 stable(feature = "neon_intrinsics", since = "1.59.0")
18809)]
18810#[cfg_attr(
18811 target_arch = "arm",
18812 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18813)]
18814pub unsafe fn vld1_p8_x3(a: *const p8) -> poly8x8x3_t {
18815 transmute(vld1_s8_x3(transmute(a)))
18816}
18817#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18818#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p8_x3)"]
18819#[doc = "## Safety"]
18820#[doc = " * Neon instrinsic unsafe"]
18821#[inline]
18822#[cfg(target_endian = "big")]
18823#[target_feature(enable = "neon")]
18824#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18825#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18826#[cfg_attr(
18827 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18828 assert_instr(ld1)
18829)]
18830#[cfg_attr(
18831 not(target_arch = "arm"),
18832 stable(feature = "neon_intrinsics", since = "1.59.0")
18833)]
18834#[cfg_attr(
18835 target_arch = "arm",
18836 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18837)]
18838pub unsafe fn vld1_p8_x3(a: *const p8) -> poly8x8x3_t {
18839 let mut ret_val: poly8x8x3_t = transmute(vld1_s8_x3(transmute(a)));
18840 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
18841 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
18842 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
18843 ret_val
18844}
18845#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18846#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p8_x4)"]
18847#[doc = "## Safety"]
18848#[doc = " * Neon instrinsic unsafe"]
18849#[inline]
18850#[cfg(target_endian = "little")]
18851#[target_feature(enable = "neon")]
18852#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18853#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18854#[cfg_attr(
18855 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18856 assert_instr(ld1)
18857)]
18858#[cfg_attr(
18859 not(target_arch = "arm"),
18860 stable(feature = "neon_intrinsics", since = "1.59.0")
18861)]
18862#[cfg_attr(
18863 target_arch = "arm",
18864 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18865)]
18866pub unsafe fn vld1_p8_x4(a: *const p8) -> poly8x8x4_t {
18867 transmute(vld1_s8_x4(transmute(a)))
18868}
18869#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18870#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p8_x4)"]
18871#[doc = "## Safety"]
18872#[doc = " * Neon instrinsic unsafe"]
18873#[inline]
18874#[cfg(target_endian = "big")]
18875#[target_feature(enable = "neon")]
18876#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18877#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18878#[cfg_attr(
18879 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18880 assert_instr(ld1)
18881)]
18882#[cfg_attr(
18883 not(target_arch = "arm"),
18884 stable(feature = "neon_intrinsics", since = "1.59.0")
18885)]
18886#[cfg_attr(
18887 target_arch = "arm",
18888 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18889)]
18890pub unsafe fn vld1_p8_x4(a: *const p8) -> poly8x8x4_t {
18891 let mut ret_val: poly8x8x4_t = transmute(vld1_s8_x4(transmute(a)));
18892 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
18893 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
18894 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
18895 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
18896 ret_val
18897}
18898#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18899#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8_x2)"]
18900#[doc = "## Safety"]
18901#[doc = " * Neon instrinsic unsafe"]
18902#[inline]
18903#[cfg(target_endian = "little")]
18904#[target_feature(enable = "neon")]
18905#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18906#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18907#[cfg_attr(
18908 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18909 assert_instr(ld1)
18910)]
18911#[cfg_attr(
18912 not(target_arch = "arm"),
18913 stable(feature = "neon_intrinsics", since = "1.59.0")
18914)]
18915#[cfg_attr(
18916 target_arch = "arm",
18917 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18918)]
18919pub unsafe fn vld1q_p8_x2(a: *const p8) -> poly8x16x2_t {
18920 transmute(vld1q_s8_x2(transmute(a)))
18921}
18922#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18923#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8_x2)"]
18924#[doc = "## Safety"]
18925#[doc = " * Neon instrinsic unsafe"]
18926#[inline]
18927#[cfg(target_endian = "big")]
18928#[target_feature(enable = "neon")]
18929#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18930#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18931#[cfg_attr(
18932 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18933 assert_instr(ld1)
18934)]
18935#[cfg_attr(
18936 not(target_arch = "arm"),
18937 stable(feature = "neon_intrinsics", since = "1.59.0")
18938)]
18939#[cfg_attr(
18940 target_arch = "arm",
18941 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18942)]
18943pub unsafe fn vld1q_p8_x2(a: *const p8) -> poly8x16x2_t {
18944 let mut ret_val: poly8x16x2_t = transmute(vld1q_s8_x2(transmute(a)));
18945 ret_val.0 = unsafe {
18946 simd_shuffle!(
18947 ret_val.0,
18948 ret_val.0,
18949 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
18950 )
18951 };
18952 ret_val.1 = unsafe {
18953 simd_shuffle!(
18954 ret_val.1,
18955 ret_val.1,
18956 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
18957 )
18958 };
18959 ret_val
18960}
18961#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18962#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8_x3)"]
18963#[doc = "## Safety"]
18964#[doc = " * Neon instrinsic unsafe"]
18965#[inline]
18966#[cfg(target_endian = "little")]
18967#[target_feature(enable = "neon")]
18968#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18969#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18970#[cfg_attr(
18971 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18972 assert_instr(ld1)
18973)]
18974#[cfg_attr(
18975 not(target_arch = "arm"),
18976 stable(feature = "neon_intrinsics", since = "1.59.0")
18977)]
18978#[cfg_attr(
18979 target_arch = "arm",
18980 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18981)]
18982pub unsafe fn vld1q_p8_x3(a: *const p8) -> poly8x16x3_t {
18983 transmute(vld1q_s8_x3(transmute(a)))
18984}
18985#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18986#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8_x3)"]
18987#[doc = "## Safety"]
18988#[doc = " * Neon instrinsic unsafe"]
18989#[inline]
18990#[cfg(target_endian = "big")]
18991#[target_feature(enable = "neon")]
18992#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18993#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18994#[cfg_attr(
18995 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18996 assert_instr(ld1)
18997)]
18998#[cfg_attr(
18999 not(target_arch = "arm"),
19000 stable(feature = "neon_intrinsics", since = "1.59.0")
19001)]
19002#[cfg_attr(
19003 target_arch = "arm",
19004 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19005)]
19006pub unsafe fn vld1q_p8_x3(a: *const p8) -> poly8x16x3_t {
19007 let mut ret_val: poly8x16x3_t = transmute(vld1q_s8_x3(transmute(a)));
19008 ret_val.0 = unsafe {
19009 simd_shuffle!(
19010 ret_val.0,
19011 ret_val.0,
19012 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19013 )
19014 };
19015 ret_val.1 = unsafe {
19016 simd_shuffle!(
19017 ret_val.1,
19018 ret_val.1,
19019 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19020 )
19021 };
19022 ret_val.2 = unsafe {
19023 simd_shuffle!(
19024 ret_val.2,
19025 ret_val.2,
19026 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19027 )
19028 };
19029 ret_val
19030}
19031#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8_x4)"]
19033#[doc = "## Safety"]
19034#[doc = " * Neon instrinsic unsafe"]
19035#[inline]
19036#[cfg(target_endian = "little")]
19037#[target_feature(enable = "neon")]
19038#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19039#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19040#[cfg_attr(
19041 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19042 assert_instr(ld1)
19043)]
19044#[cfg_attr(
19045 not(target_arch = "arm"),
19046 stable(feature = "neon_intrinsics", since = "1.59.0")
19047)]
19048#[cfg_attr(
19049 target_arch = "arm",
19050 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19051)]
19052pub unsafe fn vld1q_p8_x4(a: *const p8) -> poly8x16x4_t {
19053 transmute(vld1q_s8_x4(transmute(a)))
19054}
19055#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19056#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8_x4)"]
19057#[doc = "## Safety"]
19058#[doc = " * Neon instrinsic unsafe"]
19059#[inline]
19060#[cfg(target_endian = "big")]
19061#[target_feature(enable = "neon")]
19062#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19063#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19064#[cfg_attr(
19065 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19066 assert_instr(ld1)
19067)]
19068#[cfg_attr(
19069 not(target_arch = "arm"),
19070 stable(feature = "neon_intrinsics", since = "1.59.0")
19071)]
19072#[cfg_attr(
19073 target_arch = "arm",
19074 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19075)]
19076pub unsafe fn vld1q_p8_x4(a: *const p8) -> poly8x16x4_t {
19077 let mut ret_val: poly8x16x4_t = transmute(vld1q_s8_x4(transmute(a)));
19078 ret_val.0 = unsafe {
19079 simd_shuffle!(
19080 ret_val.0,
19081 ret_val.0,
19082 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19083 )
19084 };
19085 ret_val.1 = unsafe {
19086 simd_shuffle!(
19087 ret_val.1,
19088 ret_val.1,
19089 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19090 )
19091 };
19092 ret_val.2 = unsafe {
19093 simd_shuffle!(
19094 ret_val.2,
19095 ret_val.2,
19096 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19097 )
19098 };
19099 ret_val.3 = unsafe {
19100 simd_shuffle!(
19101 ret_val.3,
19102 ret_val.3,
19103 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19104 )
19105 };
19106 ret_val
19107}
19108#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19109#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p16_x2)"]
19110#[doc = "## Safety"]
19111#[doc = " * Neon instrinsic unsafe"]
19112#[inline]
19113#[cfg(target_endian = "little")]
19114#[target_feature(enable = "neon")]
19115#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19116#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19117#[cfg_attr(
19118 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19119 assert_instr(ld1)
19120)]
19121#[cfg_attr(
19122 not(target_arch = "arm"),
19123 stable(feature = "neon_intrinsics", since = "1.59.0")
19124)]
19125#[cfg_attr(
19126 target_arch = "arm",
19127 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19128)]
19129pub unsafe fn vld1_p16_x2(a: *const p16) -> poly16x4x2_t {
19130 transmute(vld1_s16_x2(transmute(a)))
19131}
19132#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19133#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p16_x2)"]
19134#[doc = "## Safety"]
19135#[doc = " * Neon instrinsic unsafe"]
19136#[inline]
19137#[cfg(target_endian = "big")]
19138#[target_feature(enable = "neon")]
19139#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19140#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19141#[cfg_attr(
19142 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19143 assert_instr(ld1)
19144)]
19145#[cfg_attr(
19146 not(target_arch = "arm"),
19147 stable(feature = "neon_intrinsics", since = "1.59.0")
19148)]
19149#[cfg_attr(
19150 target_arch = "arm",
19151 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19152)]
19153pub unsafe fn vld1_p16_x2(a: *const p16) -> poly16x4x2_t {
19154 let mut ret_val: poly16x4x2_t = transmute(vld1_s16_x2(transmute(a)));
19155 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
19156 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
19157 ret_val
19158}
19159#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19160#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p16_x3)"]
19161#[doc = "## Safety"]
19162#[doc = " * Neon instrinsic unsafe"]
19163#[inline]
19164#[cfg(target_endian = "little")]
19165#[target_feature(enable = "neon")]
19166#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19167#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19168#[cfg_attr(
19169 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19170 assert_instr(ld1)
19171)]
19172#[cfg_attr(
19173 not(target_arch = "arm"),
19174 stable(feature = "neon_intrinsics", since = "1.59.0")
19175)]
19176#[cfg_attr(
19177 target_arch = "arm",
19178 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19179)]
19180pub unsafe fn vld1_p16_x3(a: *const p16) -> poly16x4x3_t {
19181 transmute(vld1_s16_x3(transmute(a)))
19182}
19183#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19184#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p16_x3)"]
19185#[doc = "## Safety"]
19186#[doc = " * Neon instrinsic unsafe"]
19187#[inline]
19188#[cfg(target_endian = "big")]
19189#[target_feature(enable = "neon")]
19190#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19191#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19192#[cfg_attr(
19193 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19194 assert_instr(ld1)
19195)]
19196#[cfg_attr(
19197 not(target_arch = "arm"),
19198 stable(feature = "neon_intrinsics", since = "1.59.0")
19199)]
19200#[cfg_attr(
19201 target_arch = "arm",
19202 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19203)]
19204pub unsafe fn vld1_p16_x3(a: *const p16) -> poly16x4x3_t {
19205 let mut ret_val: poly16x4x3_t = transmute(vld1_s16_x3(transmute(a)));
19206 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
19207 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
19208 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
19209 ret_val
19210}
19211#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19212#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p16_x4)"]
19213#[doc = "## Safety"]
19214#[doc = " * Neon instrinsic unsafe"]
19215#[inline]
19216#[cfg(target_endian = "little")]
19217#[target_feature(enable = "neon")]
19218#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19219#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19220#[cfg_attr(
19221 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19222 assert_instr(ld1)
19223)]
19224#[cfg_attr(
19225 not(target_arch = "arm"),
19226 stable(feature = "neon_intrinsics", since = "1.59.0")
19227)]
19228#[cfg_attr(
19229 target_arch = "arm",
19230 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19231)]
19232pub unsafe fn vld1_p16_x4(a: *const p16) -> poly16x4x4_t {
19233 transmute(vld1_s16_x4(transmute(a)))
19234}
19235#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19236#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p16_x4)"]
19237#[doc = "## Safety"]
19238#[doc = " * Neon instrinsic unsafe"]
19239#[inline]
19240#[cfg(target_endian = "big")]
19241#[target_feature(enable = "neon")]
19242#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19243#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19244#[cfg_attr(
19245 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19246 assert_instr(ld1)
19247)]
19248#[cfg_attr(
19249 not(target_arch = "arm"),
19250 stable(feature = "neon_intrinsics", since = "1.59.0")
19251)]
19252#[cfg_attr(
19253 target_arch = "arm",
19254 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19255)]
19256pub unsafe fn vld1_p16_x4(a: *const p16) -> poly16x4x4_t {
19257 let mut ret_val: poly16x4x4_t = transmute(vld1_s16_x4(transmute(a)));
19258 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
19259 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
19260 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
19261 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
19262 ret_val
19263}
19264#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19265#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16_x2)"]
19266#[doc = "## Safety"]
19267#[doc = " * Neon instrinsic unsafe"]
19268#[inline]
19269#[cfg(target_endian = "little")]
19270#[target_feature(enable = "neon")]
19271#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19272#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19273#[cfg_attr(
19274 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19275 assert_instr(ld1)
19276)]
19277#[cfg_attr(
19278 not(target_arch = "arm"),
19279 stable(feature = "neon_intrinsics", since = "1.59.0")
19280)]
19281#[cfg_attr(
19282 target_arch = "arm",
19283 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19284)]
19285pub unsafe fn vld1q_p16_x2(a: *const p16) -> poly16x8x2_t {
19286 transmute(vld1q_s16_x2(transmute(a)))
19287}
19288#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19289#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16_x2)"]
19290#[doc = "## Safety"]
19291#[doc = " * Neon instrinsic unsafe"]
19292#[inline]
19293#[cfg(target_endian = "big")]
19294#[target_feature(enable = "neon")]
19295#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19296#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19297#[cfg_attr(
19298 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19299 assert_instr(ld1)
19300)]
19301#[cfg_attr(
19302 not(target_arch = "arm"),
19303 stable(feature = "neon_intrinsics", since = "1.59.0")
19304)]
19305#[cfg_attr(
19306 target_arch = "arm",
19307 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19308)]
19309pub unsafe fn vld1q_p16_x2(a: *const p16) -> poly16x8x2_t {
19310 let mut ret_val: poly16x8x2_t = transmute(vld1q_s16_x2(transmute(a)));
19311 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
19312 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
19313 ret_val
19314}
19315#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19316#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16_x3)"]
19317#[doc = "## Safety"]
19318#[doc = " * Neon instrinsic unsafe"]
19319#[inline]
19320#[cfg(target_endian = "little")]
19321#[target_feature(enable = "neon")]
19322#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19323#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19324#[cfg_attr(
19325 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19326 assert_instr(ld1)
19327)]
19328#[cfg_attr(
19329 not(target_arch = "arm"),
19330 stable(feature = "neon_intrinsics", since = "1.59.0")
19331)]
19332#[cfg_attr(
19333 target_arch = "arm",
19334 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19335)]
19336pub unsafe fn vld1q_p16_x3(a: *const p16) -> poly16x8x3_t {
19337 transmute(vld1q_s16_x3(transmute(a)))
19338}
19339#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19340#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16_x3)"]
19341#[doc = "## Safety"]
19342#[doc = " * Neon instrinsic unsafe"]
19343#[inline]
19344#[cfg(target_endian = "big")]
19345#[target_feature(enable = "neon")]
19346#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19347#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19348#[cfg_attr(
19349 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19350 assert_instr(ld1)
19351)]
19352#[cfg_attr(
19353 not(target_arch = "arm"),
19354 stable(feature = "neon_intrinsics", since = "1.59.0")
19355)]
19356#[cfg_attr(
19357 target_arch = "arm",
19358 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19359)]
19360pub unsafe fn vld1q_p16_x3(a: *const p16) -> poly16x8x3_t {
19361 let mut ret_val: poly16x8x3_t = transmute(vld1q_s16_x3(transmute(a)));
19362 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
19363 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
19364 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
19365 ret_val
19366}
19367#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19368#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16_x4)"]
19369#[doc = "## Safety"]
19370#[doc = " * Neon instrinsic unsafe"]
19371#[inline]
19372#[cfg(target_endian = "little")]
19373#[target_feature(enable = "neon")]
19374#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19375#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19376#[cfg_attr(
19377 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19378 assert_instr(ld1)
19379)]
19380#[cfg_attr(
19381 not(target_arch = "arm"),
19382 stable(feature = "neon_intrinsics", since = "1.59.0")
19383)]
19384#[cfg_attr(
19385 target_arch = "arm",
19386 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19387)]
19388pub unsafe fn vld1q_p16_x4(a: *const p16) -> poly16x8x4_t {
19389 transmute(vld1q_s16_x4(transmute(a)))
19390}
19391#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19392#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16_x4)"]
19393#[doc = "## Safety"]
19394#[doc = " * Neon instrinsic unsafe"]
19395#[inline]
19396#[cfg(target_endian = "big")]
19397#[target_feature(enable = "neon")]
19398#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19399#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19400#[cfg_attr(
19401 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19402 assert_instr(ld1)
19403)]
19404#[cfg_attr(
19405 not(target_arch = "arm"),
19406 stable(feature = "neon_intrinsics", since = "1.59.0")
19407)]
19408#[cfg_attr(
19409 target_arch = "arm",
19410 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19411)]
19412pub unsafe fn vld1q_p16_x4(a: *const p16) -> poly16x8x4_t {
19413 let mut ret_val: poly16x8x4_t = transmute(vld1q_s16_x4(transmute(a)));
19414 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
19415 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
19416 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
19417 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
19418 ret_val
19419}
19420#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19421#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_v1i64)"]
19422#[doc = "## Safety"]
19423#[doc = " * Neon instrinsic unsafe"]
19424#[inline]
19425#[cfg(target_arch = "arm")]
19426#[target_feature(enable = "neon,v7")]
19427#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19428unsafe fn vld1_v1i64(a: *const i8, b: i32) -> int64x1_t {
19429 unsafe extern "unadjusted" {
19430 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v1i64")]
19431 fn _vld1_v1i64(a: *const i8, b: i32) -> int64x1_t;
19432 }
19433 _vld1_v1i64(a, b)
19434}
19435#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19436#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_v2f32)"]
19437#[doc = "## Safety"]
19438#[doc = " * Neon instrinsic unsafe"]
19439#[inline]
19440#[cfg(target_arch = "arm")]
19441#[target_feature(enable = "neon,v7")]
19442#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19443unsafe fn vld1_v2f32(a: *const i8, b: i32) -> float32x2_t {
19444 unsafe extern "unadjusted" {
19445 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v2f32")]
19446 fn _vld1_v2f32(a: *const i8, b: i32) -> float32x2_t;
19447 }
19448 _vld1_v2f32(a, b)
19449}
19450#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19451#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_v2i32)"]
19452#[doc = "## Safety"]
19453#[doc = " * Neon instrinsic unsafe"]
19454#[inline]
19455#[cfg(target_arch = "arm")]
19456#[target_feature(enable = "neon,v7")]
19457#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19458unsafe fn vld1_v2i32(a: *const i8, b: i32) -> int32x2_t {
19459 unsafe extern "unadjusted" {
19460 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v2i32")]
19461 fn _vld1_v2i32(a: *const i8, b: i32) -> int32x2_t;
19462 }
19463 _vld1_v2i32(a, b)
19464}
19465#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19466#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_v4i16)"]
19467#[doc = "## Safety"]
19468#[doc = " * Neon instrinsic unsafe"]
19469#[inline]
19470#[cfg(target_arch = "arm")]
19471#[target_feature(enable = "neon,v7")]
19472#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19473unsafe fn vld1_v4i16(a: *const i8, b: i32) -> int16x4_t {
19474 unsafe extern "unadjusted" {
19475 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v4i16")]
19476 fn _vld1_v4i16(a: *const i8, b: i32) -> int16x4_t;
19477 }
19478 _vld1_v4i16(a, b)
19479}
19480#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19481#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_v8i8)"]
19482#[doc = "## Safety"]
19483#[doc = " * Neon instrinsic unsafe"]
19484#[inline]
19485#[cfg(target_arch = "arm")]
19486#[target_feature(enable = "neon,v7")]
19487#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19488unsafe fn vld1_v8i8(a: *const i8, b: i32) -> int8x8_t {
19489 unsafe extern "unadjusted" {
19490 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v8i8")]
19491 fn _vld1_v8i8(a: *const i8, b: i32) -> int8x8_t;
19492 }
19493 _vld1_v8i8(a, b)
19494}
19495#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19496#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_v16i8)"]
19497#[doc = "## Safety"]
19498#[doc = " * Neon instrinsic unsafe"]
19499#[inline]
19500#[cfg(target_arch = "arm")]
19501#[target_feature(enable = "neon,v7")]
19502#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19503unsafe fn vld1q_v16i8(a: *const i8, b: i32) -> int8x16_t {
19504 unsafe extern "unadjusted" {
19505 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v16i8")]
19506 fn _vld1q_v16i8(a: *const i8, b: i32) -> int8x16_t;
19507 }
19508 _vld1q_v16i8(a, b)
19509}
19510#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19511#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_v2i64)"]
19512#[doc = "## Safety"]
19513#[doc = " * Neon instrinsic unsafe"]
19514#[inline]
19515#[cfg(target_arch = "arm")]
19516#[target_feature(enable = "neon,v7")]
19517#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19518unsafe fn vld1q_v2i64(a: *const i8, b: i32) -> int64x2_t {
19519 unsafe extern "unadjusted" {
19520 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v2i64")]
19521 fn _vld1q_v2i64(a: *const i8, b: i32) -> int64x2_t;
19522 }
19523 _vld1q_v2i64(a, b)
19524}
19525#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19526#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_v4f32)"]
19527#[doc = "## Safety"]
19528#[doc = " * Neon instrinsic unsafe"]
19529#[inline]
19530#[cfg(target_arch = "arm")]
19531#[target_feature(enable = "neon,v7")]
19532#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19533unsafe fn vld1q_v4f32(a: *const i8, b: i32) -> float32x4_t {
19534 unsafe extern "unadjusted" {
19535 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v4f32")]
19536 fn _vld1q_v4f32(a: *const i8, b: i32) -> float32x4_t;
19537 }
19538 _vld1q_v4f32(a, b)
19539}
19540#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19541#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_v4i32)"]
19542#[doc = "## Safety"]
19543#[doc = " * Neon instrinsic unsafe"]
19544#[inline]
19545#[cfg(target_arch = "arm")]
19546#[target_feature(enable = "neon,v7")]
19547#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19548unsafe fn vld1q_v4i32(a: *const i8, b: i32) -> int32x4_t {
19549 unsafe extern "unadjusted" {
19550 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v4i32")]
19551 fn _vld1q_v4i32(a: *const i8, b: i32) -> int32x4_t;
19552 }
19553 _vld1q_v4i32(a, b)
19554}
19555#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19556#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_v8i16)"]
19557#[doc = "## Safety"]
19558#[doc = " * Neon instrinsic unsafe"]
19559#[inline]
19560#[cfg(target_arch = "arm")]
19561#[target_feature(enable = "neon,v7")]
19562#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19563unsafe fn vld1q_v8i16(a: *const i8, b: i32) -> int16x8_t {
19564 unsafe extern "unadjusted" {
19565 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v8i16")]
19566 fn _vld1q_v8i16(a: *const i8, b: i32) -> int16x8_t;
19567 }
19568 _vld1q_v8i16(a, b)
19569}
19570#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19571#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_v4f16)"]
19572#[doc = "## Safety"]
19573#[doc = " * Neon instrinsic unsafe"]
19574#[inline]
19575#[cfg(target_arch = "arm")]
19576#[target_feature(enable = "neon,v7")]
19577#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
19578#[target_feature(enable = "neon,fp16")]
19579#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
19580#[cfg(not(target_arch = "arm64ec"))]
19581unsafe fn vld1_v4f16(a: *const i8, b: i32) -> float16x4_t {
19582 unsafe extern "unadjusted" {
19583 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v4f16")]
19584 fn _vld1_v4f16(a: *const i8, b: i32) -> float16x4_t;
19585 }
19586 _vld1_v4f16(a, b)
19587}
19588#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19589#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_v8f16)"]
19590#[doc = "## Safety"]
19591#[doc = " * Neon instrinsic unsafe"]
19592#[inline]
19593#[cfg(target_arch = "arm")]
19594#[target_feature(enable = "neon,v7")]
19595#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
19596#[target_feature(enable = "neon,fp16")]
19597#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
19598#[cfg(not(target_arch = "arm64ec"))]
19599unsafe fn vld1q_v8f16(a: *const i8, b: i32) -> float16x8_t {
19600 unsafe extern "unadjusted" {
19601 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v8f16")]
19602 fn _vld1q_v8f16(a: *const i8, b: i32) -> float16x8_t;
19603 }
19604 _vld1q_v8f16(a, b)
19605}
19606#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
19607#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_p64)"]
19608#[doc = "## Safety"]
19609#[doc = " * Neon instrinsic unsafe"]
19610#[inline]
19611#[target_feature(enable = "neon,aes")]
19612#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19613#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
19614#[cfg_attr(
19615 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19616 assert_instr(ld1r)
19617)]
19618#[cfg_attr(
19619 not(target_arch = "arm"),
19620 stable(feature = "neon_intrinsics", since = "1.59.0")
19621)]
19622#[cfg_attr(
19623 target_arch = "arm",
19624 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19625)]
19626pub unsafe fn vld1q_dup_p64(ptr: *const p64) -> poly64x2_t {
19627 let x = vld1q_lane_p64::<0>(ptr, transmute(u64x2::splat(0)));
19628 simd_shuffle!(x, x, [0, 0])
19629}
19630#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19631#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_f16)"]
19632#[doc = "## Safety"]
19633#[doc = " * Neon instrinsic unsafe"]
19634#[inline]
19635#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19636#[cfg(target_arch = "arm")]
19637#[target_feature(enable = "neon,fp16")]
19638#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19639#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
19640#[cfg(not(target_arch = "arm64ec"))]
19641pub unsafe fn vld2_dup_f16(a: *const f16) -> float16x4x2_t {
19642 unsafe extern "unadjusted" {
19643 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v4f16.p0")]
19644 fn _vld2_dup_f16(ptr: *const f16, size: i32) -> float16x4x2_t;
19645 }
19646 _vld2_dup_f16(a as _, 2)
19647}
19648#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19649#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_f16)"]
19650#[doc = "## Safety"]
19651#[doc = " * Neon instrinsic unsafe"]
19652#[inline]
19653#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19654#[cfg(target_arch = "arm")]
19655#[target_feature(enable = "neon,fp16")]
19656#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19657#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
19658#[cfg(not(target_arch = "arm64ec"))]
19659pub unsafe fn vld2q_dup_f16(a: *const f16) -> float16x8x2_t {
19660 unsafe extern "unadjusted" {
19661 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v8f16.p0")]
19662 fn _vld2q_dup_f16(ptr: *const f16, size: i32) -> float16x8x2_t;
19663 }
19664 _vld2q_dup_f16(a as _, 2)
19665}
19666#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19667#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_f16)"]
19668#[doc = "## Safety"]
19669#[doc = " * Neon instrinsic unsafe"]
19670#[inline]
19671#[cfg(not(target_arch = "arm"))]
19672#[cfg_attr(
19673 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19674 assert_instr(ld2r)
19675)]
19676#[target_feature(enable = "neon,fp16")]
19677#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
19678#[cfg(not(target_arch = "arm64ec"))]
19679pub unsafe fn vld2_dup_f16(a: *const f16) -> float16x4x2_t {
19680 unsafe extern "unadjusted" {
19681 #[cfg_attr(
19682 any(target_arch = "aarch64", target_arch = "arm64ec"),
19683 link_name = "llvm.aarch64.neon.ld2r.v4f16.p0"
19684 )]
19685 fn _vld2_dup_f16(ptr: *const f16) -> float16x4x2_t;
19686 }
19687 _vld2_dup_f16(a as _)
19688}
19689#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19690#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_f16)"]
19691#[doc = "## Safety"]
19692#[doc = " * Neon instrinsic unsafe"]
19693#[inline]
19694#[cfg(not(target_arch = "arm"))]
19695#[cfg_attr(
19696 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19697 assert_instr(ld2r)
19698)]
19699#[target_feature(enable = "neon,fp16")]
19700#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
19701#[cfg(not(target_arch = "arm64ec"))]
19702pub unsafe fn vld2q_dup_f16(a: *const f16) -> float16x8x2_t {
19703 unsafe extern "unadjusted" {
19704 #[cfg_attr(
19705 any(target_arch = "aarch64", target_arch = "arm64ec"),
19706 link_name = "llvm.aarch64.neon.ld2r.v8f16.p0"
19707 )]
19708 fn _vld2q_dup_f16(ptr: *const f16) -> float16x8x2_t;
19709 }
19710 _vld2q_dup_f16(a as _)
19711}
19712#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19713#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_f32)"]
19714#[doc = "## Safety"]
19715#[doc = " * Neon instrinsic unsafe"]
19716#[inline]
19717#[target_feature(enable = "neon,v7")]
19718#[cfg(target_arch = "arm")]
19719#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19720#[cfg_attr(test, assert_instr(vld2))]
19721pub unsafe fn vld2_dup_f32(a: *const f32) -> float32x2x2_t {
19722 unsafe extern "unadjusted" {
19723 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v2f32.p0")]
19724 fn _vld2_dup_f32(ptr: *const i8, size: i32) -> float32x2x2_t;
19725 }
19726 _vld2_dup_f32(a as *const i8, 4)
19727}
19728#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19729#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_f32)"]
19730#[doc = "## Safety"]
19731#[doc = " * Neon instrinsic unsafe"]
19732#[inline]
19733#[target_feature(enable = "neon,v7")]
19734#[cfg(target_arch = "arm")]
19735#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19736#[cfg_attr(test, assert_instr(vld2))]
19737pub unsafe fn vld2q_dup_f32(a: *const f32) -> float32x4x2_t {
19738 unsafe extern "unadjusted" {
19739 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v4f32.p0")]
19740 fn _vld2q_dup_f32(ptr: *const i8, size: i32) -> float32x4x2_t;
19741 }
19742 _vld2q_dup_f32(a as *const i8, 4)
19743}
19744#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19745#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s8)"]
19746#[doc = "## Safety"]
19747#[doc = " * Neon instrinsic unsafe"]
19748#[inline]
19749#[target_feature(enable = "neon,v7")]
19750#[cfg(target_arch = "arm")]
19751#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19752#[cfg_attr(test, assert_instr(vld2))]
19753pub unsafe fn vld2_dup_s8(a: *const i8) -> int8x8x2_t {
19754 unsafe extern "unadjusted" {
19755 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v8i8.p0")]
19756 fn _vld2_dup_s8(ptr: *const i8, size: i32) -> int8x8x2_t;
19757 }
19758 _vld2_dup_s8(a as *const i8, 1)
19759}
19760#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19761#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s8)"]
19762#[doc = "## Safety"]
19763#[doc = " * Neon instrinsic unsafe"]
19764#[inline]
19765#[target_feature(enable = "neon,v7")]
19766#[cfg(target_arch = "arm")]
19767#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19768#[cfg_attr(test, assert_instr(vld2))]
19769pub unsafe fn vld2q_dup_s8(a: *const i8) -> int8x16x2_t {
19770 unsafe extern "unadjusted" {
19771 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v16i8.p0")]
19772 fn _vld2q_dup_s8(ptr: *const i8, size: i32) -> int8x16x2_t;
19773 }
19774 _vld2q_dup_s8(a as *const i8, 1)
19775}
19776#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19777#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s16)"]
19778#[doc = "## Safety"]
19779#[doc = " * Neon instrinsic unsafe"]
19780#[inline]
19781#[target_feature(enable = "neon,v7")]
19782#[cfg(target_arch = "arm")]
19783#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19784#[cfg_attr(test, assert_instr(vld2))]
19785pub unsafe fn vld2_dup_s16(a: *const i16) -> int16x4x2_t {
19786 unsafe extern "unadjusted" {
19787 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v4i16.p0")]
19788 fn _vld2_dup_s16(ptr: *const i8, size: i32) -> int16x4x2_t;
19789 }
19790 _vld2_dup_s16(a as *const i8, 2)
19791}
19792#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19793#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s16)"]
19794#[doc = "## Safety"]
19795#[doc = " * Neon instrinsic unsafe"]
19796#[inline]
19797#[target_feature(enable = "neon,v7")]
19798#[cfg(target_arch = "arm")]
19799#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19800#[cfg_attr(test, assert_instr(vld2))]
19801pub unsafe fn vld2q_dup_s16(a: *const i16) -> int16x8x2_t {
19802 unsafe extern "unadjusted" {
19803 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v8i16.p0")]
19804 fn _vld2q_dup_s16(ptr: *const i8, size: i32) -> int16x8x2_t;
19805 }
19806 _vld2q_dup_s16(a as *const i8, 2)
19807}
19808#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19809#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s32)"]
19810#[doc = "## Safety"]
19811#[doc = " * Neon instrinsic unsafe"]
19812#[inline]
19813#[target_feature(enable = "neon,v7")]
19814#[cfg(target_arch = "arm")]
19815#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19816#[cfg_attr(test, assert_instr(vld2))]
19817pub unsafe fn vld2_dup_s32(a: *const i32) -> int32x2x2_t {
19818 unsafe extern "unadjusted" {
19819 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v2i32.p0")]
19820 fn _vld2_dup_s32(ptr: *const i8, size: i32) -> int32x2x2_t;
19821 }
19822 _vld2_dup_s32(a as *const i8, 4)
19823}
19824#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19825#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s32)"]
19826#[doc = "## Safety"]
19827#[doc = " * Neon instrinsic unsafe"]
19828#[inline]
19829#[target_feature(enable = "neon,v7")]
19830#[cfg(target_arch = "arm")]
19831#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19832#[cfg_attr(test, assert_instr(vld2))]
19833pub unsafe fn vld2q_dup_s32(a: *const i32) -> int32x4x2_t {
19834 unsafe extern "unadjusted" {
19835 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v4i32.p0")]
19836 fn _vld2q_dup_s32(ptr: *const i8, size: i32) -> int32x4x2_t;
19837 }
19838 _vld2q_dup_s32(a as *const i8, 4)
19839}
19840#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19841#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_f32)"]
19842#[doc = "## Safety"]
19843#[doc = " * Neon instrinsic unsafe"]
19844#[inline]
19845#[target_feature(enable = "neon")]
19846#[cfg(not(target_arch = "arm"))]
19847#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19848#[cfg_attr(test, assert_instr(ld2r))]
19849pub unsafe fn vld2_dup_f32(a: *const f32) -> float32x2x2_t {
19850 unsafe extern "unadjusted" {
19851 #[cfg_attr(
19852 any(target_arch = "aarch64", target_arch = "arm64ec"),
19853 link_name = "llvm.aarch64.neon.ld2r.v2f32.p0"
19854 )]
19855 fn _vld2_dup_f32(ptr: *const f32) -> float32x2x2_t;
19856 }
19857 _vld2_dup_f32(a as _)
19858}
19859#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19860#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_f32)"]
19861#[doc = "## Safety"]
19862#[doc = " * Neon instrinsic unsafe"]
19863#[inline]
19864#[target_feature(enable = "neon")]
19865#[cfg(not(target_arch = "arm"))]
19866#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19867#[cfg_attr(test, assert_instr(ld2r))]
19868pub unsafe fn vld2q_dup_f32(a: *const f32) -> float32x4x2_t {
19869 unsafe extern "unadjusted" {
19870 #[cfg_attr(
19871 any(target_arch = "aarch64", target_arch = "arm64ec"),
19872 link_name = "llvm.aarch64.neon.ld2r.v4f32.p0"
19873 )]
19874 fn _vld2q_dup_f32(ptr: *const f32) -> float32x4x2_t;
19875 }
19876 _vld2q_dup_f32(a as _)
19877}
19878#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19879#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s8)"]
19880#[doc = "## Safety"]
19881#[doc = " * Neon instrinsic unsafe"]
19882#[inline]
19883#[target_feature(enable = "neon")]
19884#[cfg(not(target_arch = "arm"))]
19885#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19886#[cfg_attr(test, assert_instr(ld2r))]
19887pub unsafe fn vld2_dup_s8(a: *const i8) -> int8x8x2_t {
19888 unsafe extern "unadjusted" {
19889 #[cfg_attr(
19890 any(target_arch = "aarch64", target_arch = "arm64ec"),
19891 link_name = "llvm.aarch64.neon.ld2r.v8i8.p0"
19892 )]
19893 fn _vld2_dup_s8(ptr: *const i8) -> int8x8x2_t;
19894 }
19895 _vld2_dup_s8(a as _)
19896}
19897#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19898#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s8)"]
19899#[doc = "## Safety"]
19900#[doc = " * Neon instrinsic unsafe"]
19901#[inline]
19902#[target_feature(enable = "neon")]
19903#[cfg(not(target_arch = "arm"))]
19904#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19905#[cfg_attr(test, assert_instr(ld2r))]
19906pub unsafe fn vld2q_dup_s8(a: *const i8) -> int8x16x2_t {
19907 unsafe extern "unadjusted" {
19908 #[cfg_attr(
19909 any(target_arch = "aarch64", target_arch = "arm64ec"),
19910 link_name = "llvm.aarch64.neon.ld2r.v16i8.p0"
19911 )]
19912 fn _vld2q_dup_s8(ptr: *const i8) -> int8x16x2_t;
19913 }
19914 _vld2q_dup_s8(a as _)
19915}
19916#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19917#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s16)"]
19918#[doc = "## Safety"]
19919#[doc = " * Neon instrinsic unsafe"]
19920#[inline]
19921#[target_feature(enable = "neon")]
19922#[cfg(not(target_arch = "arm"))]
19923#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19924#[cfg_attr(test, assert_instr(ld2r))]
19925pub unsafe fn vld2_dup_s16(a: *const i16) -> int16x4x2_t {
19926 unsafe extern "unadjusted" {
19927 #[cfg_attr(
19928 any(target_arch = "aarch64", target_arch = "arm64ec"),
19929 link_name = "llvm.aarch64.neon.ld2r.v4i16.p0"
19930 )]
19931 fn _vld2_dup_s16(ptr: *const i16) -> int16x4x2_t;
19932 }
19933 _vld2_dup_s16(a as _)
19934}
19935#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19936#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s16)"]
19937#[doc = "## Safety"]
19938#[doc = " * Neon instrinsic unsafe"]
19939#[inline]
19940#[target_feature(enable = "neon")]
19941#[cfg(not(target_arch = "arm"))]
19942#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19943#[cfg_attr(test, assert_instr(ld2r))]
19944pub unsafe fn vld2q_dup_s16(a: *const i16) -> int16x8x2_t {
19945 unsafe extern "unadjusted" {
19946 #[cfg_attr(
19947 any(target_arch = "aarch64", target_arch = "arm64ec"),
19948 link_name = "llvm.aarch64.neon.ld2r.v8i16.p0"
19949 )]
19950 fn _vld2q_dup_s16(ptr: *const i16) -> int16x8x2_t;
19951 }
19952 _vld2q_dup_s16(a as _)
19953}
19954#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19955#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s32)"]
19956#[doc = "## Safety"]
19957#[doc = " * Neon instrinsic unsafe"]
19958#[inline]
19959#[target_feature(enable = "neon")]
19960#[cfg(not(target_arch = "arm"))]
19961#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19962#[cfg_attr(test, assert_instr(ld2r))]
19963pub unsafe fn vld2_dup_s32(a: *const i32) -> int32x2x2_t {
19964 unsafe extern "unadjusted" {
19965 #[cfg_attr(
19966 any(target_arch = "aarch64", target_arch = "arm64ec"),
19967 link_name = "llvm.aarch64.neon.ld2r.v2i32.p0"
19968 )]
19969 fn _vld2_dup_s32(ptr: *const i32) -> int32x2x2_t;
19970 }
19971 _vld2_dup_s32(a as _)
19972}
19973#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19974#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s32)"]
19975#[doc = "## Safety"]
19976#[doc = " * Neon instrinsic unsafe"]
19977#[inline]
19978#[target_feature(enable = "neon")]
19979#[cfg(not(target_arch = "arm"))]
19980#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19981#[cfg_attr(test, assert_instr(ld2r))]
19982pub unsafe fn vld2q_dup_s32(a: *const i32) -> int32x4x2_t {
19983 unsafe extern "unadjusted" {
19984 #[cfg_attr(
19985 any(target_arch = "aarch64", target_arch = "arm64ec"),
19986 link_name = "llvm.aarch64.neon.ld2r.v4i32.p0"
19987 )]
19988 fn _vld2q_dup_s32(ptr: *const i32) -> int32x4x2_t;
19989 }
19990 _vld2q_dup_s32(a as _)
19991}
19992#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19993#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_p64)"]
19994#[doc = "## Safety"]
19995#[doc = " * Neon instrinsic unsafe"]
19996#[inline]
19997#[target_feature(enable = "neon,aes")]
19998#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
19999#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
20000#[cfg_attr(
20001 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20002 assert_instr(ld2r)
20003)]
20004#[cfg_attr(
20005 not(target_arch = "arm"),
20006 stable(feature = "neon_intrinsics", since = "1.59.0")
20007)]
20008#[cfg_attr(
20009 target_arch = "arm",
20010 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20011)]
20012pub unsafe fn vld2_dup_p64(a: *const p64) -> poly64x1x2_t {
20013 transmute(vld2_dup_s64(transmute(a)))
20014}
20015#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20016#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s64)"]
20017#[doc = "## Safety"]
20018#[doc = " * Neon instrinsic unsafe"]
20019#[inline]
20020#[target_feature(enable = "neon,v7")]
20021#[cfg(target_arch = "arm")]
20022#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20023#[cfg_attr(test, assert_instr(nop))]
20024pub unsafe fn vld2_dup_s64(a: *const i64) -> int64x1x2_t {
20025 unsafe extern "unadjusted" {
20026 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v1i64.p0")]
20027 fn _vld2_dup_s64(ptr: *const i8, size: i32) -> int64x1x2_t;
20028 }
20029 _vld2_dup_s64(a as *const i8, 8)
20030}
20031#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s64)"]
20033#[doc = "## Safety"]
20034#[doc = " * Neon instrinsic unsafe"]
20035#[inline]
20036#[target_feature(enable = "neon")]
20037#[cfg(not(target_arch = "arm"))]
20038#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20039#[cfg_attr(test, assert_instr(ld2r))]
20040pub unsafe fn vld2_dup_s64(a: *const i64) -> int64x1x2_t {
20041 unsafe extern "unadjusted" {
20042 #[cfg_attr(
20043 any(target_arch = "aarch64", target_arch = "arm64ec"),
20044 link_name = "llvm.aarch64.neon.ld2r.v1i64.p0"
20045 )]
20046 fn _vld2_dup_s64(ptr: *const i64) -> int64x1x2_t;
20047 }
20048 _vld2_dup_s64(a as _)
20049}
20050#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20051#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u64)"]
20052#[doc = "## Safety"]
20053#[doc = " * Neon instrinsic unsafe"]
20054#[inline]
20055#[target_feature(enable = "neon")]
20056#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20057#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
20058#[cfg_attr(
20059 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20060 assert_instr(ld2r)
20061)]
20062#[cfg_attr(
20063 not(target_arch = "arm"),
20064 stable(feature = "neon_intrinsics", since = "1.59.0")
20065)]
20066#[cfg_attr(
20067 target_arch = "arm",
20068 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20069)]
20070pub unsafe fn vld2_dup_u64(a: *const u64) -> uint64x1x2_t {
20071 transmute(vld2_dup_s64(transmute(a)))
20072}
20073#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20074#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u8)"]
20075#[doc = "## Safety"]
20076#[doc = " * Neon instrinsic unsafe"]
20077#[inline]
20078#[cfg(target_endian = "little")]
20079#[target_feature(enable = "neon")]
20080#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20081#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20082#[cfg_attr(
20083 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20084 assert_instr(ld2r)
20085)]
20086#[cfg_attr(
20087 not(target_arch = "arm"),
20088 stable(feature = "neon_intrinsics", since = "1.59.0")
20089)]
20090#[cfg_attr(
20091 target_arch = "arm",
20092 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20093)]
20094pub unsafe fn vld2_dup_u8(a: *const u8) -> uint8x8x2_t {
20095 transmute(vld2_dup_s8(transmute(a)))
20096}
20097#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20098#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u8)"]
20099#[doc = "## Safety"]
20100#[doc = " * Neon instrinsic unsafe"]
20101#[inline]
20102#[cfg(target_endian = "big")]
20103#[target_feature(enable = "neon")]
20104#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20105#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20106#[cfg_attr(
20107 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20108 assert_instr(ld2r)
20109)]
20110#[cfg_attr(
20111 not(target_arch = "arm"),
20112 stable(feature = "neon_intrinsics", since = "1.59.0")
20113)]
20114#[cfg_attr(
20115 target_arch = "arm",
20116 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20117)]
20118pub unsafe fn vld2_dup_u8(a: *const u8) -> uint8x8x2_t {
20119 let mut ret_val: uint8x8x2_t = transmute(vld2_dup_s8(transmute(a)));
20120 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
20121 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
20122 ret_val
20123}
20124#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20125#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u8)"]
20126#[doc = "## Safety"]
20127#[doc = " * Neon instrinsic unsafe"]
20128#[inline]
20129#[cfg(target_endian = "little")]
20130#[target_feature(enable = "neon")]
20131#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20132#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20133#[cfg_attr(
20134 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20135 assert_instr(ld2r)
20136)]
20137#[cfg_attr(
20138 not(target_arch = "arm"),
20139 stable(feature = "neon_intrinsics", since = "1.59.0")
20140)]
20141#[cfg_attr(
20142 target_arch = "arm",
20143 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20144)]
20145pub unsafe fn vld2q_dup_u8(a: *const u8) -> uint8x16x2_t {
20146 transmute(vld2q_dup_s8(transmute(a)))
20147}
20148#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20149#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u8)"]
20150#[doc = "## Safety"]
20151#[doc = " * Neon instrinsic unsafe"]
20152#[inline]
20153#[cfg(target_endian = "big")]
20154#[target_feature(enable = "neon")]
20155#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20156#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20157#[cfg_attr(
20158 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20159 assert_instr(ld2r)
20160)]
20161#[cfg_attr(
20162 not(target_arch = "arm"),
20163 stable(feature = "neon_intrinsics", since = "1.59.0")
20164)]
20165#[cfg_attr(
20166 target_arch = "arm",
20167 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20168)]
20169pub unsafe fn vld2q_dup_u8(a: *const u8) -> uint8x16x2_t {
20170 let mut ret_val: uint8x16x2_t = transmute(vld2q_dup_s8(transmute(a)));
20171 ret_val.0 = unsafe {
20172 simd_shuffle!(
20173 ret_val.0,
20174 ret_val.0,
20175 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
20176 )
20177 };
20178 ret_val.1 = unsafe {
20179 simd_shuffle!(
20180 ret_val.1,
20181 ret_val.1,
20182 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
20183 )
20184 };
20185 ret_val
20186}
20187#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20188#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u16)"]
20189#[doc = "## Safety"]
20190#[doc = " * Neon instrinsic unsafe"]
20191#[inline]
20192#[cfg(target_endian = "little")]
20193#[target_feature(enable = "neon")]
20194#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20195#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20196#[cfg_attr(
20197 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20198 assert_instr(ld2r)
20199)]
20200#[cfg_attr(
20201 not(target_arch = "arm"),
20202 stable(feature = "neon_intrinsics", since = "1.59.0")
20203)]
20204#[cfg_attr(
20205 target_arch = "arm",
20206 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20207)]
20208pub unsafe fn vld2_dup_u16(a: *const u16) -> uint16x4x2_t {
20209 transmute(vld2_dup_s16(transmute(a)))
20210}
20211#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20212#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u16)"]
20213#[doc = "## Safety"]
20214#[doc = " * Neon instrinsic unsafe"]
20215#[inline]
20216#[cfg(target_endian = "big")]
20217#[target_feature(enable = "neon")]
20218#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20219#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20220#[cfg_attr(
20221 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20222 assert_instr(ld2r)
20223)]
20224#[cfg_attr(
20225 not(target_arch = "arm"),
20226 stable(feature = "neon_intrinsics", since = "1.59.0")
20227)]
20228#[cfg_attr(
20229 target_arch = "arm",
20230 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20231)]
20232pub unsafe fn vld2_dup_u16(a: *const u16) -> uint16x4x2_t {
20233 let mut ret_val: uint16x4x2_t = transmute(vld2_dup_s16(transmute(a)));
20234 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
20235 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
20236 ret_val
20237}
20238#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20239#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u16)"]
20240#[doc = "## Safety"]
20241#[doc = " * Neon instrinsic unsafe"]
20242#[inline]
20243#[cfg(target_endian = "little")]
20244#[target_feature(enable = "neon")]
20245#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20246#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20247#[cfg_attr(
20248 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20249 assert_instr(ld2r)
20250)]
20251#[cfg_attr(
20252 not(target_arch = "arm"),
20253 stable(feature = "neon_intrinsics", since = "1.59.0")
20254)]
20255#[cfg_attr(
20256 target_arch = "arm",
20257 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20258)]
20259pub unsafe fn vld2q_dup_u16(a: *const u16) -> uint16x8x2_t {
20260 transmute(vld2q_dup_s16(transmute(a)))
20261}
20262#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20263#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u16)"]
20264#[doc = "## Safety"]
20265#[doc = " * Neon instrinsic unsafe"]
20266#[inline]
20267#[cfg(target_endian = "big")]
20268#[target_feature(enable = "neon")]
20269#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20270#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20271#[cfg_attr(
20272 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20273 assert_instr(ld2r)
20274)]
20275#[cfg_attr(
20276 not(target_arch = "arm"),
20277 stable(feature = "neon_intrinsics", since = "1.59.0")
20278)]
20279#[cfg_attr(
20280 target_arch = "arm",
20281 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20282)]
20283pub unsafe fn vld2q_dup_u16(a: *const u16) -> uint16x8x2_t {
20284 let mut ret_val: uint16x8x2_t = transmute(vld2q_dup_s16(transmute(a)));
20285 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
20286 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
20287 ret_val
20288}
20289#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20290#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u32)"]
20291#[doc = "## Safety"]
20292#[doc = " * Neon instrinsic unsafe"]
20293#[inline]
20294#[cfg(target_endian = "little")]
20295#[target_feature(enable = "neon")]
20296#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20297#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20298#[cfg_attr(
20299 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20300 assert_instr(ld2r)
20301)]
20302#[cfg_attr(
20303 not(target_arch = "arm"),
20304 stable(feature = "neon_intrinsics", since = "1.59.0")
20305)]
20306#[cfg_attr(
20307 target_arch = "arm",
20308 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20309)]
20310pub unsafe fn vld2_dup_u32(a: *const u32) -> uint32x2x2_t {
20311 transmute(vld2_dup_s32(transmute(a)))
20312}
20313#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20314#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u32)"]
20315#[doc = "## Safety"]
20316#[doc = " * Neon instrinsic unsafe"]
20317#[inline]
20318#[cfg(target_endian = "big")]
20319#[target_feature(enable = "neon")]
20320#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20321#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20322#[cfg_attr(
20323 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20324 assert_instr(ld2r)
20325)]
20326#[cfg_attr(
20327 not(target_arch = "arm"),
20328 stable(feature = "neon_intrinsics", since = "1.59.0")
20329)]
20330#[cfg_attr(
20331 target_arch = "arm",
20332 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20333)]
20334pub unsafe fn vld2_dup_u32(a: *const u32) -> uint32x2x2_t {
20335 let mut ret_val: uint32x2x2_t = transmute(vld2_dup_s32(transmute(a)));
20336 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
20337 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
20338 ret_val
20339}
20340#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20341#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u32)"]
20342#[doc = "## Safety"]
20343#[doc = " * Neon instrinsic unsafe"]
20344#[inline]
20345#[cfg(target_endian = "little")]
20346#[target_feature(enable = "neon")]
20347#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20348#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20349#[cfg_attr(
20350 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20351 assert_instr(ld2r)
20352)]
20353#[cfg_attr(
20354 not(target_arch = "arm"),
20355 stable(feature = "neon_intrinsics", since = "1.59.0")
20356)]
20357#[cfg_attr(
20358 target_arch = "arm",
20359 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20360)]
20361pub unsafe fn vld2q_dup_u32(a: *const u32) -> uint32x4x2_t {
20362 transmute(vld2q_dup_s32(transmute(a)))
20363}
20364#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20365#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u32)"]
20366#[doc = "## Safety"]
20367#[doc = " * Neon instrinsic unsafe"]
20368#[inline]
20369#[cfg(target_endian = "big")]
20370#[target_feature(enable = "neon")]
20371#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20372#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20373#[cfg_attr(
20374 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20375 assert_instr(ld2r)
20376)]
20377#[cfg_attr(
20378 not(target_arch = "arm"),
20379 stable(feature = "neon_intrinsics", since = "1.59.0")
20380)]
20381#[cfg_attr(
20382 target_arch = "arm",
20383 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20384)]
20385pub unsafe fn vld2q_dup_u32(a: *const u32) -> uint32x4x2_t {
20386 let mut ret_val: uint32x4x2_t = transmute(vld2q_dup_s32(transmute(a)));
20387 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
20388 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
20389 ret_val
20390}
20391#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20392#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_p8)"]
20393#[doc = "## Safety"]
20394#[doc = " * Neon instrinsic unsafe"]
20395#[inline]
20396#[cfg(target_endian = "little")]
20397#[target_feature(enable = "neon")]
20398#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20399#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20400#[cfg_attr(
20401 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20402 assert_instr(ld2r)
20403)]
20404#[cfg_attr(
20405 not(target_arch = "arm"),
20406 stable(feature = "neon_intrinsics", since = "1.59.0")
20407)]
20408#[cfg_attr(
20409 target_arch = "arm",
20410 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20411)]
20412pub unsafe fn vld2_dup_p8(a: *const p8) -> poly8x8x2_t {
20413 transmute(vld2_dup_s8(transmute(a)))
20414}
20415#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20416#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_p8)"]
20417#[doc = "## Safety"]
20418#[doc = " * Neon instrinsic unsafe"]
20419#[inline]
20420#[cfg(target_endian = "big")]
20421#[target_feature(enable = "neon")]
20422#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20423#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20424#[cfg_attr(
20425 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20426 assert_instr(ld2r)
20427)]
20428#[cfg_attr(
20429 not(target_arch = "arm"),
20430 stable(feature = "neon_intrinsics", since = "1.59.0")
20431)]
20432#[cfg_attr(
20433 target_arch = "arm",
20434 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20435)]
20436pub unsafe fn vld2_dup_p8(a: *const p8) -> poly8x8x2_t {
20437 let mut ret_val: poly8x8x2_t = transmute(vld2_dup_s8(transmute(a)));
20438 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
20439 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
20440 ret_val
20441}
20442#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20443#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_p8)"]
20444#[doc = "## Safety"]
20445#[doc = " * Neon instrinsic unsafe"]
20446#[inline]
20447#[cfg(target_endian = "little")]
20448#[target_feature(enable = "neon")]
20449#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20450#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20451#[cfg_attr(
20452 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20453 assert_instr(ld2r)
20454)]
20455#[cfg_attr(
20456 not(target_arch = "arm"),
20457 stable(feature = "neon_intrinsics", since = "1.59.0")
20458)]
20459#[cfg_attr(
20460 target_arch = "arm",
20461 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20462)]
20463pub unsafe fn vld2q_dup_p8(a: *const p8) -> poly8x16x2_t {
20464 transmute(vld2q_dup_s8(transmute(a)))
20465}
20466#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20467#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_p8)"]
20468#[doc = "## Safety"]
20469#[doc = " * Neon instrinsic unsafe"]
20470#[inline]
20471#[cfg(target_endian = "big")]
20472#[target_feature(enable = "neon")]
20473#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20474#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20475#[cfg_attr(
20476 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20477 assert_instr(ld2r)
20478)]
20479#[cfg_attr(
20480 not(target_arch = "arm"),
20481 stable(feature = "neon_intrinsics", since = "1.59.0")
20482)]
20483#[cfg_attr(
20484 target_arch = "arm",
20485 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20486)]
20487pub unsafe fn vld2q_dup_p8(a: *const p8) -> poly8x16x2_t {
20488 let mut ret_val: poly8x16x2_t = transmute(vld2q_dup_s8(transmute(a)));
20489 ret_val.0 = unsafe {
20490 simd_shuffle!(
20491 ret_val.0,
20492 ret_val.0,
20493 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
20494 )
20495 };
20496 ret_val.1 = unsafe {
20497 simd_shuffle!(
20498 ret_val.1,
20499 ret_val.1,
20500 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
20501 )
20502 };
20503 ret_val
20504}
20505#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20506#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_p16)"]
20507#[doc = "## Safety"]
20508#[doc = " * Neon instrinsic unsafe"]
20509#[inline]
20510#[cfg(target_endian = "little")]
20511#[target_feature(enable = "neon")]
20512#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20513#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20514#[cfg_attr(
20515 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20516 assert_instr(ld2r)
20517)]
20518#[cfg_attr(
20519 not(target_arch = "arm"),
20520 stable(feature = "neon_intrinsics", since = "1.59.0")
20521)]
20522#[cfg_attr(
20523 target_arch = "arm",
20524 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20525)]
20526pub unsafe fn vld2_dup_p16(a: *const p16) -> poly16x4x2_t {
20527 transmute(vld2_dup_s16(transmute(a)))
20528}
20529#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20530#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_p16)"]
20531#[doc = "## Safety"]
20532#[doc = " * Neon instrinsic unsafe"]
20533#[inline]
20534#[cfg(target_endian = "big")]
20535#[target_feature(enable = "neon")]
20536#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20537#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20538#[cfg_attr(
20539 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20540 assert_instr(ld2r)
20541)]
20542#[cfg_attr(
20543 not(target_arch = "arm"),
20544 stable(feature = "neon_intrinsics", since = "1.59.0")
20545)]
20546#[cfg_attr(
20547 target_arch = "arm",
20548 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20549)]
20550pub unsafe fn vld2_dup_p16(a: *const p16) -> poly16x4x2_t {
20551 let mut ret_val: poly16x4x2_t = transmute(vld2_dup_s16(transmute(a)));
20552 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
20553 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
20554 ret_val
20555}
20556#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20557#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_p16)"]
20558#[doc = "## Safety"]
20559#[doc = " * Neon instrinsic unsafe"]
20560#[inline]
20561#[cfg(target_endian = "little")]
20562#[target_feature(enable = "neon")]
20563#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20564#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20565#[cfg_attr(
20566 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20567 assert_instr(ld2r)
20568)]
20569#[cfg_attr(
20570 not(target_arch = "arm"),
20571 stable(feature = "neon_intrinsics", since = "1.59.0")
20572)]
20573#[cfg_attr(
20574 target_arch = "arm",
20575 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20576)]
20577pub unsafe fn vld2q_dup_p16(a: *const p16) -> poly16x8x2_t {
20578 transmute(vld2q_dup_s16(transmute(a)))
20579}
20580#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20581#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_p16)"]
20582#[doc = "## Safety"]
20583#[doc = " * Neon instrinsic unsafe"]
20584#[inline]
20585#[cfg(target_endian = "big")]
20586#[target_feature(enable = "neon")]
20587#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20588#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20589#[cfg_attr(
20590 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20591 assert_instr(ld2r)
20592)]
20593#[cfg_attr(
20594 not(target_arch = "arm"),
20595 stable(feature = "neon_intrinsics", since = "1.59.0")
20596)]
20597#[cfg_attr(
20598 target_arch = "arm",
20599 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20600)]
20601pub unsafe fn vld2q_dup_p16(a: *const p16) -> poly16x8x2_t {
20602 let mut ret_val: poly16x8x2_t = transmute(vld2q_dup_s16(transmute(a)));
20603 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
20604 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
20605 ret_val
20606}
20607#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20608#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_f16)"]
20609#[doc = "## Safety"]
20610#[doc = " * Neon instrinsic unsafe"]
20611#[inline]
20612#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20613#[cfg(target_arch = "arm")]
20614#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20615#[target_feature(enable = "neon,fp16")]
20616#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20617#[cfg(not(target_arch = "arm64ec"))]
20618pub unsafe fn vld2_f16(a: *const f16) -> float16x4x2_t {
20619 unsafe extern "unadjusted" {
20620 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v4f16.p0")]
20621 fn _vld2_f16(ptr: *const f16, size: i32) -> float16x4x2_t;
20622 }
20623 _vld2_f16(a as _, 2)
20624}
20625#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20626#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_f16)"]
20627#[doc = "## Safety"]
20628#[doc = " * Neon instrinsic unsafe"]
20629#[inline]
20630#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20631#[cfg(target_arch = "arm")]
20632#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20633#[target_feature(enable = "neon,fp16")]
20634#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20635#[cfg(not(target_arch = "arm64ec"))]
20636pub unsafe fn vld2q_f16(a: *const f16) -> float16x8x2_t {
20637 unsafe extern "unadjusted" {
20638 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v8f16.p0")]
20639 fn _vld2q_f16(ptr: *const f16, size: i32) -> float16x8x2_t;
20640 }
20641 _vld2q_f16(a as _, 2)
20642}
20643#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20644#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_f16)"]
20645#[doc = "## Safety"]
20646#[doc = " * Neon instrinsic unsafe"]
20647#[inline]
20648#[cfg(not(target_arch = "arm"))]
20649#[cfg_attr(
20650 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20651 assert_instr(ld2)
20652)]
20653#[target_feature(enable = "neon,fp16")]
20654#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20655#[cfg(not(target_arch = "arm64ec"))]
20656pub unsafe fn vld2_f16(a: *const f16) -> float16x4x2_t {
20657 unsafe extern "unadjusted" {
20658 #[cfg_attr(
20659 any(target_arch = "aarch64", target_arch = "arm64ec"),
20660 link_name = "llvm.aarch64.neon.ld2.v4f16.p0"
20661 )]
20662 fn _vld2_f16(ptr: *const f16) -> float16x4x2_t;
20663 }
20664 _vld2_f16(a as _)
20665}
20666#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20667#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_f16)"]
20668#[doc = "## Safety"]
20669#[doc = " * Neon instrinsic unsafe"]
20670#[inline]
20671#[cfg(not(target_arch = "arm"))]
20672#[cfg_attr(
20673 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20674 assert_instr(ld2)
20675)]
20676#[target_feature(enable = "neon,fp16")]
20677#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20678#[cfg(not(target_arch = "arm64ec"))]
20679pub unsafe fn vld2q_f16(a: *const f16) -> float16x8x2_t {
20680 unsafe extern "unadjusted" {
20681 #[cfg_attr(
20682 any(target_arch = "aarch64", target_arch = "arm64ec"),
20683 link_name = "llvm.aarch64.neon.ld2.v8f16.p0"
20684 )]
20685 fn _vld2q_f16(ptr: *const f16) -> float16x8x2_t;
20686 }
20687 _vld2q_f16(a as _)
20688}
20689#[doc = "Load multiple 2-element structures to two registers"]
20690#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_f32)"]
20691#[doc = "## Safety"]
20692#[doc = " * Neon instrinsic unsafe"]
20693#[inline]
20694#[target_feature(enable = "neon,v7")]
20695#[cfg(target_arch = "arm")]
20696#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20697#[cfg_attr(test, assert_instr(vld2))]
20698pub unsafe fn vld2_f32(a: *const f32) -> float32x2x2_t {
20699 unsafe extern "unadjusted" {
20700 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v2f32")]
20701 fn _vld2_f32(ptr: *const i8, size: i32) -> float32x2x2_t;
20702 }
20703 _vld2_f32(a as *const i8, 4)
20704}
20705#[doc = "Load multiple 2-element structures to two registers"]
20706#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_f32)"]
20707#[doc = "## Safety"]
20708#[doc = " * Neon instrinsic unsafe"]
20709#[inline]
20710#[target_feature(enable = "neon,v7")]
20711#[cfg(target_arch = "arm")]
20712#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20713#[cfg_attr(test, assert_instr(vld2))]
20714pub unsafe fn vld2q_f32(a: *const f32) -> float32x4x2_t {
20715 unsafe extern "unadjusted" {
20716 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v4f32")]
20717 fn _vld2q_f32(ptr: *const i8, size: i32) -> float32x4x2_t;
20718 }
20719 _vld2q_f32(a as *const i8, 4)
20720}
20721#[doc = "Load multiple 2-element structures to two registers"]
20722#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s8)"]
20723#[doc = "## Safety"]
20724#[doc = " * Neon instrinsic unsafe"]
20725#[inline]
20726#[target_feature(enable = "neon,v7")]
20727#[cfg(target_arch = "arm")]
20728#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20729#[cfg_attr(test, assert_instr(vld2))]
20730pub unsafe fn vld2_s8(a: *const i8) -> int8x8x2_t {
20731 unsafe extern "unadjusted" {
20732 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v8i8")]
20733 fn _vld2_s8(ptr: *const i8, size: i32) -> int8x8x2_t;
20734 }
20735 _vld2_s8(a as *const i8, 1)
20736}
20737#[doc = "Load multiple 2-element structures to two registers"]
20738#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s8)"]
20739#[doc = "## Safety"]
20740#[doc = " * Neon instrinsic unsafe"]
20741#[inline]
20742#[target_feature(enable = "neon,v7")]
20743#[cfg(target_arch = "arm")]
20744#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20745#[cfg_attr(test, assert_instr(vld2))]
20746pub unsafe fn vld2q_s8(a: *const i8) -> int8x16x2_t {
20747 unsafe extern "unadjusted" {
20748 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v16i8")]
20749 fn _vld2q_s8(ptr: *const i8, size: i32) -> int8x16x2_t;
20750 }
20751 _vld2q_s8(a as *const i8, 1)
20752}
20753#[doc = "Load multiple 2-element structures to two registers"]
20754#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s16)"]
20755#[doc = "## Safety"]
20756#[doc = " * Neon instrinsic unsafe"]
20757#[inline]
20758#[target_feature(enable = "neon,v7")]
20759#[cfg(target_arch = "arm")]
20760#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20761#[cfg_attr(test, assert_instr(vld2))]
20762pub unsafe fn vld2_s16(a: *const i16) -> int16x4x2_t {
20763 unsafe extern "unadjusted" {
20764 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v4i16")]
20765 fn _vld2_s16(ptr: *const i8, size: i32) -> int16x4x2_t;
20766 }
20767 _vld2_s16(a as *const i8, 2)
20768}
20769#[doc = "Load multiple 2-element structures to two registers"]
20770#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s16)"]
20771#[doc = "## Safety"]
20772#[doc = " * Neon instrinsic unsafe"]
20773#[inline]
20774#[target_feature(enable = "neon,v7")]
20775#[cfg(target_arch = "arm")]
20776#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20777#[cfg_attr(test, assert_instr(vld2))]
20778pub unsafe fn vld2q_s16(a: *const i16) -> int16x8x2_t {
20779 unsafe extern "unadjusted" {
20780 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v8i16")]
20781 fn _vld2q_s16(ptr: *const i8, size: i32) -> int16x8x2_t;
20782 }
20783 _vld2q_s16(a as *const i8, 2)
20784}
20785#[doc = "Load multiple 2-element structures to two registers"]
20786#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s32)"]
20787#[doc = "## Safety"]
20788#[doc = " * Neon instrinsic unsafe"]
20789#[inline]
20790#[target_feature(enable = "neon,v7")]
20791#[cfg(target_arch = "arm")]
20792#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20793#[cfg_attr(test, assert_instr(vld2))]
20794pub unsafe fn vld2_s32(a: *const i32) -> int32x2x2_t {
20795 unsafe extern "unadjusted" {
20796 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v2i32")]
20797 fn _vld2_s32(ptr: *const i8, size: i32) -> int32x2x2_t;
20798 }
20799 _vld2_s32(a as *const i8, 4)
20800}
20801#[doc = "Load multiple 2-element structures to two registers"]
20802#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s32)"]
20803#[doc = "## Safety"]
20804#[doc = " * Neon instrinsic unsafe"]
20805#[inline]
20806#[target_feature(enable = "neon,v7")]
20807#[cfg(target_arch = "arm")]
20808#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20809#[cfg_attr(test, assert_instr(vld2))]
20810pub unsafe fn vld2q_s32(a: *const i32) -> int32x4x2_t {
20811 unsafe extern "unadjusted" {
20812 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v4i32")]
20813 fn _vld2q_s32(ptr: *const i8, size: i32) -> int32x4x2_t;
20814 }
20815 _vld2q_s32(a as *const i8, 4)
20816}
20817#[doc = "Load multiple 2-element structures to two registers"]
20818#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_f32)"]
20819#[doc = "## Safety"]
20820#[doc = " * Neon instrinsic unsafe"]
20821#[inline]
20822#[target_feature(enable = "neon")]
20823#[cfg(not(target_arch = "arm"))]
20824#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20825#[cfg_attr(test, assert_instr(ld2))]
20826pub unsafe fn vld2_f32(a: *const f32) -> float32x2x2_t {
20827 unsafe extern "unadjusted" {
20828 #[cfg_attr(
20829 any(target_arch = "aarch64", target_arch = "arm64ec"),
20830 link_name = "llvm.aarch64.neon.ld2.v2f32.p0"
20831 )]
20832 fn _vld2_f32(ptr: *const float32x2_t) -> float32x2x2_t;
20833 }
20834 _vld2_f32(a as _)
20835}
20836#[doc = "Load multiple 2-element structures to two registers"]
20837#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_f32)"]
20838#[doc = "## Safety"]
20839#[doc = " * Neon instrinsic unsafe"]
20840#[inline]
20841#[target_feature(enable = "neon")]
20842#[cfg(not(target_arch = "arm"))]
20843#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20844#[cfg_attr(test, assert_instr(ld2))]
20845pub unsafe fn vld2q_f32(a: *const f32) -> float32x4x2_t {
20846 unsafe extern "unadjusted" {
20847 #[cfg_attr(
20848 any(target_arch = "aarch64", target_arch = "arm64ec"),
20849 link_name = "llvm.aarch64.neon.ld2.v4f32.p0"
20850 )]
20851 fn _vld2q_f32(ptr: *const float32x4_t) -> float32x4x2_t;
20852 }
20853 _vld2q_f32(a as _)
20854}
20855#[doc = "Load multiple 2-element structures to two registers"]
20856#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s8)"]
20857#[doc = "## Safety"]
20858#[doc = " * Neon instrinsic unsafe"]
20859#[inline]
20860#[target_feature(enable = "neon")]
20861#[cfg(not(target_arch = "arm"))]
20862#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20863#[cfg_attr(test, assert_instr(ld2))]
20864pub unsafe fn vld2_s8(a: *const i8) -> int8x8x2_t {
20865 unsafe extern "unadjusted" {
20866 #[cfg_attr(
20867 any(target_arch = "aarch64", target_arch = "arm64ec"),
20868 link_name = "llvm.aarch64.neon.ld2.v8i8.p0"
20869 )]
20870 fn _vld2_s8(ptr: *const int8x8_t) -> int8x8x2_t;
20871 }
20872 _vld2_s8(a as _)
20873}
20874#[doc = "Load multiple 2-element structures to two registers"]
20875#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s8)"]
20876#[doc = "## Safety"]
20877#[doc = " * Neon instrinsic unsafe"]
20878#[inline]
20879#[target_feature(enable = "neon")]
20880#[cfg(not(target_arch = "arm"))]
20881#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20882#[cfg_attr(test, assert_instr(ld2))]
20883pub unsafe fn vld2q_s8(a: *const i8) -> int8x16x2_t {
20884 unsafe extern "unadjusted" {
20885 #[cfg_attr(
20886 any(target_arch = "aarch64", target_arch = "arm64ec"),
20887 link_name = "llvm.aarch64.neon.ld2.v16i8.p0"
20888 )]
20889 fn _vld2q_s8(ptr: *const int8x16_t) -> int8x16x2_t;
20890 }
20891 _vld2q_s8(a as _)
20892}
20893#[doc = "Load multiple 2-element structures to two registers"]
20894#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s16)"]
20895#[doc = "## Safety"]
20896#[doc = " * Neon instrinsic unsafe"]
20897#[inline]
20898#[target_feature(enable = "neon")]
20899#[cfg(not(target_arch = "arm"))]
20900#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20901#[cfg_attr(test, assert_instr(ld2))]
20902pub unsafe fn vld2_s16(a: *const i16) -> int16x4x2_t {
20903 unsafe extern "unadjusted" {
20904 #[cfg_attr(
20905 any(target_arch = "aarch64", target_arch = "arm64ec"),
20906 link_name = "llvm.aarch64.neon.ld2.v4i16.p0"
20907 )]
20908 fn _vld2_s16(ptr: *const int16x4_t) -> int16x4x2_t;
20909 }
20910 _vld2_s16(a as _)
20911}
20912#[doc = "Load multiple 2-element structures to two registers"]
20913#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s16)"]
20914#[doc = "## Safety"]
20915#[doc = " * Neon instrinsic unsafe"]
20916#[inline]
20917#[target_feature(enable = "neon")]
20918#[cfg(not(target_arch = "arm"))]
20919#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20920#[cfg_attr(test, assert_instr(ld2))]
20921pub unsafe fn vld2q_s16(a: *const i16) -> int16x8x2_t {
20922 unsafe extern "unadjusted" {
20923 #[cfg_attr(
20924 any(target_arch = "aarch64", target_arch = "arm64ec"),
20925 link_name = "llvm.aarch64.neon.ld2.v8i16.p0"
20926 )]
20927 fn _vld2q_s16(ptr: *const int16x8_t) -> int16x8x2_t;
20928 }
20929 _vld2q_s16(a as _)
20930}
20931#[doc = "Load multiple 2-element structures to two registers"]
20932#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s32)"]
20933#[doc = "## Safety"]
20934#[doc = " * Neon instrinsic unsafe"]
20935#[inline]
20936#[target_feature(enable = "neon")]
20937#[cfg(not(target_arch = "arm"))]
20938#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20939#[cfg_attr(test, assert_instr(ld2))]
20940pub unsafe fn vld2_s32(a: *const i32) -> int32x2x2_t {
20941 unsafe extern "unadjusted" {
20942 #[cfg_attr(
20943 any(target_arch = "aarch64", target_arch = "arm64ec"),
20944 link_name = "llvm.aarch64.neon.ld2.v2i32.p0"
20945 )]
20946 fn _vld2_s32(ptr: *const int32x2_t) -> int32x2x2_t;
20947 }
20948 _vld2_s32(a as _)
20949}
20950#[doc = "Load multiple 2-element structures to two registers"]
20951#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s32)"]
20952#[doc = "## Safety"]
20953#[doc = " * Neon instrinsic unsafe"]
20954#[inline]
20955#[target_feature(enable = "neon")]
20956#[cfg(not(target_arch = "arm"))]
20957#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20958#[cfg_attr(test, assert_instr(ld2))]
20959pub unsafe fn vld2q_s32(a: *const i32) -> int32x4x2_t {
20960 unsafe extern "unadjusted" {
20961 #[cfg_attr(
20962 any(target_arch = "aarch64", target_arch = "arm64ec"),
20963 link_name = "llvm.aarch64.neon.ld2.v4i32.p0"
20964 )]
20965 fn _vld2q_s32(ptr: *const int32x4_t) -> int32x4x2_t;
20966 }
20967 _vld2q_s32(a as _)
20968}
20969#[doc = "Load multiple 2-element structures to two registers"]
20970#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_f16)"]
20971#[doc = "## Safety"]
20972#[doc = " * Neon instrinsic unsafe"]
20973#[inline]
20974#[target_feature(enable = "neon,v7")]
20975#[cfg(target_arch = "arm")]
20976#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
20977#[rustc_legacy_const_generics(2)]
20978#[target_feature(enable = "neon,fp16")]
20979#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20980#[cfg(not(target_arch = "arm64ec"))]
20981pub unsafe fn vld2_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x2_t) -> float16x4x2_t {
20982 static_assert_uimm_bits!(LANE, 2);
20983 unsafe extern "unadjusted" {
20984 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v4f16.p0")]
20985 fn _vld2_lane_f16(
20986 ptr: *const f16,
20987 a: float16x4_t,
20988 b: float16x4_t,
20989 n: i32,
20990 size: i32,
20991 ) -> float16x4x2_t;
20992 }
20993 _vld2_lane_f16(a as _, b.0, b.1, LANE, 2)
20994}
20995#[doc = "Load multiple 2-element structures to two registers"]
20996#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_f16)"]
20997#[doc = "## Safety"]
20998#[doc = " * Neon instrinsic unsafe"]
20999#[inline]
21000#[target_feature(enable = "neon,v7")]
21001#[cfg(target_arch = "arm")]
21002#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
21003#[rustc_legacy_const_generics(2)]
21004#[target_feature(enable = "neon,fp16")]
21005#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
21006#[cfg(not(target_arch = "arm64ec"))]
21007pub unsafe fn vld2q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x2_t) -> float16x8x2_t {
21008 static_assert_uimm_bits!(LANE, 3);
21009 unsafe extern "unadjusted" {
21010 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v8f16.p0")]
21011 fn _vld2q_lane_f16(
21012 ptr: *const f16,
21013 a: float16x8_t,
21014 b: float16x8_t,
21015 n: i32,
21016 size: i32,
21017 ) -> float16x8x2_t;
21018 }
21019 _vld2q_lane_f16(a as _, b.0, b.1, LANE, 2)
21020}
21021#[doc = "Load multiple 2-element structures to two registers"]
21022#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_f16)"]
21023#[doc = "## Safety"]
21024#[doc = " * Neon instrinsic unsafe"]
21025#[inline]
21026#[cfg(not(target_arch = "arm"))]
21027#[cfg_attr(
21028 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21029 assert_instr(ld2, LANE = 0)
21030)]
21031#[rustc_legacy_const_generics(2)]
21032#[target_feature(enable = "neon,fp16")]
21033#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
21034#[cfg(not(target_arch = "arm64ec"))]
21035pub unsafe fn vld2_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x2_t) -> float16x4x2_t {
21036 static_assert_uimm_bits!(LANE, 2);
21037 unsafe extern "unadjusted" {
21038 #[cfg_attr(
21039 any(target_arch = "aarch64", target_arch = "arm64ec"),
21040 link_name = "llvm.aarch64.neon.ld2lane.v4f16.p0"
21041 )]
21042 fn _vld2_lane_f16(a: float16x4_t, b: float16x4_t, n: i64, ptr: *const f16)
21043 -> float16x4x2_t;
21044 }
21045 _vld2_lane_f16(b.0, b.1, LANE as i64, a as _)
21046}
21047#[doc = "Load multiple 2-element structures to two registers"]
21048#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_f16)"]
21049#[doc = "## Safety"]
21050#[doc = " * Neon instrinsic unsafe"]
21051#[inline]
21052#[cfg(not(target_arch = "arm"))]
21053#[cfg_attr(
21054 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21055 assert_instr(ld2, LANE = 0)
21056)]
21057#[rustc_legacy_const_generics(2)]
21058#[target_feature(enable = "neon,fp16")]
21059#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
21060#[cfg(not(target_arch = "arm64ec"))]
21061pub unsafe fn vld2q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x2_t) -> float16x8x2_t {
21062 static_assert_uimm_bits!(LANE, 3);
21063 unsafe extern "unadjusted" {
21064 #[cfg_attr(
21065 any(target_arch = "aarch64", target_arch = "arm64ec"),
21066 link_name = "llvm.aarch64.neon.ld2lane.v8f16.p0"
21067 )]
21068 fn _vld2q_lane_f16(
21069 a: float16x8_t,
21070 b: float16x8_t,
21071 n: i64,
21072 ptr: *const f16,
21073 ) -> float16x8x2_t;
21074 }
21075 _vld2q_lane_f16(b.0, b.1, LANE as i64, a as _)
21076}
21077#[doc = "Load multiple 2-element structures to two registers"]
21078#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_f32)"]
21079#[doc = "## Safety"]
21080#[doc = " * Neon instrinsic unsafe"]
21081#[inline]
21082#[target_feature(enable = "neon")]
21083#[cfg(not(target_arch = "arm"))]
21084#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
21085#[rustc_legacy_const_generics(2)]
21086#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21087pub unsafe fn vld2_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x2_t) -> float32x2x2_t {
21088 static_assert_uimm_bits!(LANE, 2);
21089 unsafe extern "unadjusted" {
21090 #[cfg_attr(
21091 any(target_arch = "aarch64", target_arch = "arm64ec"),
21092 link_name = "llvm.aarch64.neon.ld2lane.v2f32.p0"
21093 )]
21094 fn _vld2_lane_f32(a: float32x2_t, b: float32x2_t, n: i64, ptr: *const i8) -> float32x2x2_t;
21095 }
21096 _vld2_lane_f32(b.0, b.1, LANE as i64, a as _)
21097}
21098#[doc = "Load multiple 2-element structures to two registers"]
21099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_f32)"]
21100#[doc = "## Safety"]
21101#[doc = " * Neon instrinsic unsafe"]
21102#[inline]
21103#[target_feature(enable = "neon")]
21104#[cfg(not(target_arch = "arm"))]
21105#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
21106#[rustc_legacy_const_generics(2)]
21107#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21108pub unsafe fn vld2q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x2_t) -> float32x4x2_t {
21109 static_assert_uimm_bits!(LANE, 2);
21110 unsafe extern "unadjusted" {
21111 #[cfg_attr(
21112 any(target_arch = "aarch64", target_arch = "arm64ec"),
21113 link_name = "llvm.aarch64.neon.ld2lane.v4f32.p0"
21114 )]
21115 fn _vld2q_lane_f32(a: float32x4_t, b: float32x4_t, n: i64, ptr: *const i8)
21116 -> float32x4x2_t;
21117 }
21118 _vld2q_lane_f32(b.0, b.1, LANE as i64, a as _)
21119}
21120#[doc = "Load multiple 2-element structures to two registers"]
21121#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s8)"]
21122#[doc = "## Safety"]
21123#[doc = " * Neon instrinsic unsafe"]
21124#[inline]
21125#[target_feature(enable = "neon")]
21126#[cfg(not(target_arch = "arm"))]
21127#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
21128#[rustc_legacy_const_generics(2)]
21129#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21130pub unsafe fn vld2_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x2_t) -> int8x8x2_t {
21131 static_assert_uimm_bits!(LANE, 3);
21132 unsafe extern "unadjusted" {
21133 #[cfg_attr(
21134 any(target_arch = "aarch64", target_arch = "arm64ec"),
21135 link_name = "llvm.aarch64.neon.ld2lane.v8i8.p0"
21136 )]
21137 fn _vld2_lane_s8(a: int8x8_t, b: int8x8_t, n: i64, ptr: *const i8) -> int8x8x2_t;
21138 }
21139 _vld2_lane_s8(b.0, b.1, LANE as i64, a as _)
21140}
21141#[doc = "Load multiple 2-element structures to two registers"]
21142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s16)"]
21143#[doc = "## Safety"]
21144#[doc = " * Neon instrinsic unsafe"]
21145#[inline]
21146#[target_feature(enable = "neon")]
21147#[cfg(not(target_arch = "arm"))]
21148#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
21149#[rustc_legacy_const_generics(2)]
21150#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21151pub unsafe fn vld2_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x2_t) -> int16x4x2_t {
21152 static_assert_uimm_bits!(LANE, 2);
21153 unsafe extern "unadjusted" {
21154 #[cfg_attr(
21155 any(target_arch = "aarch64", target_arch = "arm64ec"),
21156 link_name = "llvm.aarch64.neon.ld2lane.v4i16.p0"
21157 )]
21158 fn _vld2_lane_s16(a: int16x4_t, b: int16x4_t, n: i64, ptr: *const i8) -> int16x4x2_t;
21159 }
21160 _vld2_lane_s16(b.0, b.1, LANE as i64, a as _)
21161}
21162#[doc = "Load multiple 2-element structures to two registers"]
21163#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_s16)"]
21164#[doc = "## Safety"]
21165#[doc = " * Neon instrinsic unsafe"]
21166#[inline]
21167#[target_feature(enable = "neon")]
21168#[cfg(not(target_arch = "arm"))]
21169#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
21170#[rustc_legacy_const_generics(2)]
21171#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21172pub unsafe fn vld2q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x2_t) -> int16x8x2_t {
21173 static_assert_uimm_bits!(LANE, 3);
21174 unsafe extern "unadjusted" {
21175 #[cfg_attr(
21176 any(target_arch = "aarch64", target_arch = "arm64ec"),
21177 link_name = "llvm.aarch64.neon.ld2lane.v8i16.p0"
21178 )]
21179 fn _vld2q_lane_s16(a: int16x8_t, b: int16x8_t, n: i64, ptr: *const i8) -> int16x8x2_t;
21180 }
21181 _vld2q_lane_s16(b.0, b.1, LANE as i64, a as _)
21182}
21183#[doc = "Load multiple 2-element structures to two registers"]
21184#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s32)"]
21185#[doc = "## Safety"]
21186#[doc = " * Neon instrinsic unsafe"]
21187#[inline]
21188#[target_feature(enable = "neon")]
21189#[cfg(not(target_arch = "arm"))]
21190#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
21191#[rustc_legacy_const_generics(2)]
21192#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21193pub unsafe fn vld2_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x2_t) -> int32x2x2_t {
21194 static_assert_uimm_bits!(LANE, 1);
21195 unsafe extern "unadjusted" {
21196 #[cfg_attr(
21197 any(target_arch = "aarch64", target_arch = "arm64ec"),
21198 link_name = "llvm.aarch64.neon.ld2lane.v2i32.p0"
21199 )]
21200 fn _vld2_lane_s32(a: int32x2_t, b: int32x2_t, n: i64, ptr: *const i8) -> int32x2x2_t;
21201 }
21202 _vld2_lane_s32(b.0, b.1, LANE as i64, a as _)
21203}
21204#[doc = "Load multiple 2-element structures to two registers"]
21205#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_s32)"]
21206#[doc = "## Safety"]
21207#[doc = " * Neon instrinsic unsafe"]
21208#[inline]
21209#[target_feature(enable = "neon")]
21210#[cfg(not(target_arch = "arm"))]
21211#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
21212#[rustc_legacy_const_generics(2)]
21213#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21214pub unsafe fn vld2q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x2_t) -> int32x4x2_t {
21215 static_assert_uimm_bits!(LANE, 2);
21216 unsafe extern "unadjusted" {
21217 #[cfg_attr(
21218 any(target_arch = "aarch64", target_arch = "arm64ec"),
21219 link_name = "llvm.aarch64.neon.ld2lane.v4i32.p0"
21220 )]
21221 fn _vld2q_lane_s32(a: int32x4_t, b: int32x4_t, n: i64, ptr: *const i8) -> int32x4x2_t;
21222 }
21223 _vld2q_lane_s32(b.0, b.1, LANE as i64, a as _)
21224}
21225#[doc = "Load multiple 2-element structures to two registers"]
21226#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_f32)"]
21227#[doc = "## Safety"]
21228#[doc = " * Neon instrinsic unsafe"]
21229#[inline]
21230#[target_feature(enable = "neon,v7")]
21231#[cfg(target_arch = "arm")]
21232#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
21233#[rustc_legacy_const_generics(2)]
21234#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21235pub unsafe fn vld2_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x2_t) -> float32x2x2_t {
21236 static_assert_uimm_bits!(LANE, 1);
21237 unsafe extern "unadjusted" {
21238 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v2f32.p0")]
21239 fn _vld2_lane_f32(
21240 ptr: *const i8,
21241 a: float32x2_t,
21242 b: float32x2_t,
21243 n: i32,
21244 size: i32,
21245 ) -> float32x2x2_t;
21246 }
21247 _vld2_lane_f32(a as _, b.0, b.1, LANE, 4)
21248}
21249#[doc = "Load multiple 2-element structures to two registers"]
21250#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_f32)"]
21251#[doc = "## Safety"]
21252#[doc = " * Neon instrinsic unsafe"]
21253#[inline]
21254#[target_feature(enable = "neon,v7")]
21255#[cfg(target_arch = "arm")]
21256#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
21257#[rustc_legacy_const_generics(2)]
21258#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21259pub unsafe fn vld2q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x2_t) -> float32x4x2_t {
21260 static_assert_uimm_bits!(LANE, 2);
21261 unsafe extern "unadjusted" {
21262 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v4f32.p0")]
21263 fn _vld2q_lane_f32(
21264 ptr: *const i8,
21265 a: float32x4_t,
21266 b: float32x4_t,
21267 n: i32,
21268 size: i32,
21269 ) -> float32x4x2_t;
21270 }
21271 _vld2q_lane_f32(a as _, b.0, b.1, LANE, 4)
21272}
21273#[doc = "Load multiple 2-element structures to two registers"]
21274#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_s16)"]
21275#[doc = "## Safety"]
21276#[doc = " * Neon instrinsic unsafe"]
21277#[inline]
21278#[target_feature(enable = "neon,v7")]
21279#[cfg(target_arch = "arm")]
21280#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
21281#[rustc_legacy_const_generics(2)]
21282#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21283pub unsafe fn vld2q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x2_t) -> int16x8x2_t {
21284 static_assert_uimm_bits!(LANE, 3);
21285 unsafe extern "unadjusted" {
21286 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v8i16.p0")]
21287 fn _vld2q_lane_s16(
21288 ptr: *const i8,
21289 a: int16x8_t,
21290 b: int16x8_t,
21291 n: i32,
21292 size: i32,
21293 ) -> int16x8x2_t;
21294 }
21295 _vld2q_lane_s16(a as _, b.0, b.1, LANE, 2)
21296}
21297#[doc = "Load multiple 2-element structures to two registers"]
21298#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_s32)"]
21299#[doc = "## Safety"]
21300#[doc = " * Neon instrinsic unsafe"]
21301#[inline]
21302#[target_feature(enable = "neon,v7")]
21303#[cfg(target_arch = "arm")]
21304#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
21305#[rustc_legacy_const_generics(2)]
21306#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21307pub unsafe fn vld2q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x2_t) -> int32x4x2_t {
21308 static_assert_uimm_bits!(LANE, 2);
21309 unsafe extern "unadjusted" {
21310 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v4i32.p0")]
21311 fn _vld2q_lane_s32(
21312 ptr: *const i8,
21313 a: int32x4_t,
21314 b: int32x4_t,
21315 n: i32,
21316 size: i32,
21317 ) -> int32x4x2_t;
21318 }
21319 _vld2q_lane_s32(a as _, b.0, b.1, LANE, 4)
21320}
21321#[doc = "Load multiple 2-element structures to two registers"]
21322#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s8)"]
21323#[doc = "## Safety"]
21324#[doc = " * Neon instrinsic unsafe"]
21325#[inline]
21326#[target_feature(enable = "neon,v7")]
21327#[cfg(target_arch = "arm")]
21328#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
21329#[rustc_legacy_const_generics(2)]
21330#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21331pub unsafe fn vld2_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x2_t) -> int8x8x2_t {
21332 static_assert_uimm_bits!(LANE, 3);
21333 unsafe extern "unadjusted" {
21334 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v8i8.p0")]
21335 fn _vld2_lane_s8(ptr: *const i8, a: int8x8_t, b: int8x8_t, n: i32, size: i32)
21336 -> int8x8x2_t;
21337 }
21338 _vld2_lane_s8(a as _, b.0, b.1, LANE, 1)
21339}
21340#[doc = "Load multiple 2-element structures to two registers"]
21341#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s16)"]
21342#[doc = "## Safety"]
21343#[doc = " * Neon instrinsic unsafe"]
21344#[inline]
21345#[target_feature(enable = "neon,v7")]
21346#[cfg(target_arch = "arm")]
21347#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
21348#[rustc_legacy_const_generics(2)]
21349#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21350pub unsafe fn vld2_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x2_t) -> int16x4x2_t {
21351 static_assert_uimm_bits!(LANE, 2);
21352 unsafe extern "unadjusted" {
21353 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v4i16.p0")]
21354 fn _vld2_lane_s16(
21355 ptr: *const i8,
21356 a: int16x4_t,
21357 b: int16x4_t,
21358 n: i32,
21359 size: i32,
21360 ) -> int16x4x2_t;
21361 }
21362 _vld2_lane_s16(a as _, b.0, b.1, LANE, 2)
21363}
21364#[doc = "Load multiple 2-element structures to two registers"]
21365#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s32)"]
21366#[doc = "## Safety"]
21367#[doc = " * Neon instrinsic unsafe"]
21368#[inline]
21369#[target_feature(enable = "neon,v7")]
21370#[cfg(target_arch = "arm")]
21371#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
21372#[rustc_legacy_const_generics(2)]
21373#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21374pub unsafe fn vld2_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x2_t) -> int32x2x2_t {
21375 static_assert_uimm_bits!(LANE, 1);
21376 unsafe extern "unadjusted" {
21377 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v2i32.p0")]
21378 fn _vld2_lane_s32(
21379 ptr: *const i8,
21380 a: int32x2_t,
21381 b: int32x2_t,
21382 n: i32,
21383 size: i32,
21384 ) -> int32x2x2_t;
21385 }
21386 _vld2_lane_s32(a as _, b.0, b.1, LANE, 4)
21387}
21388#[doc = "Load multiple 2-element structures to two registers"]
21389#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_u8)"]
21390#[doc = "## Safety"]
21391#[doc = " * Neon instrinsic unsafe"]
21392#[inline]
21393#[target_feature(enable = "neon")]
21394#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21395#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
21396#[cfg_attr(
21397 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21398 assert_instr(ld2, LANE = 0)
21399)]
21400#[rustc_legacy_const_generics(2)]
21401#[cfg_attr(
21402 not(target_arch = "arm"),
21403 stable(feature = "neon_intrinsics", since = "1.59.0")
21404)]
21405#[cfg_attr(
21406 target_arch = "arm",
21407 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21408)]
21409pub unsafe fn vld2_lane_u8<const LANE: i32>(a: *const u8, b: uint8x8x2_t) -> uint8x8x2_t {
21410 static_assert_uimm_bits!(LANE, 3);
21411 transmute(vld2_lane_s8::<LANE>(transmute(a), transmute(b)))
21412}
21413#[doc = "Load multiple 2-element structures to two registers"]
21414#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_u16)"]
21415#[doc = "## Safety"]
21416#[doc = " * Neon instrinsic unsafe"]
21417#[inline]
21418#[target_feature(enable = "neon")]
21419#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21420#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
21421#[cfg_attr(
21422 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21423 assert_instr(ld2, LANE = 0)
21424)]
21425#[rustc_legacy_const_generics(2)]
21426#[cfg_attr(
21427 not(target_arch = "arm"),
21428 stable(feature = "neon_intrinsics", since = "1.59.0")
21429)]
21430#[cfg_attr(
21431 target_arch = "arm",
21432 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21433)]
21434pub unsafe fn vld2_lane_u16<const LANE: i32>(a: *const u16, b: uint16x4x2_t) -> uint16x4x2_t {
21435 static_assert_uimm_bits!(LANE, 2);
21436 transmute(vld2_lane_s16::<LANE>(transmute(a), transmute(b)))
21437}
21438#[doc = "Load multiple 2-element structures to two registers"]
21439#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_u16)"]
21440#[doc = "## Safety"]
21441#[doc = " * Neon instrinsic unsafe"]
21442#[inline]
21443#[target_feature(enable = "neon")]
21444#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21445#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
21446#[cfg_attr(
21447 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21448 assert_instr(ld2, LANE = 0)
21449)]
21450#[rustc_legacy_const_generics(2)]
21451#[cfg_attr(
21452 not(target_arch = "arm"),
21453 stable(feature = "neon_intrinsics", since = "1.59.0")
21454)]
21455#[cfg_attr(
21456 target_arch = "arm",
21457 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21458)]
21459pub unsafe fn vld2q_lane_u16<const LANE: i32>(a: *const u16, b: uint16x8x2_t) -> uint16x8x2_t {
21460 static_assert_uimm_bits!(LANE, 3);
21461 transmute(vld2q_lane_s16::<LANE>(transmute(a), transmute(b)))
21462}
21463#[doc = "Load multiple 2-element structures to two registers"]
21464#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_u32)"]
21465#[doc = "## Safety"]
21466#[doc = " * Neon instrinsic unsafe"]
21467#[inline]
21468#[target_feature(enable = "neon")]
21469#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21470#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
21471#[cfg_attr(
21472 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21473 assert_instr(ld2, LANE = 0)
21474)]
21475#[rustc_legacy_const_generics(2)]
21476#[cfg_attr(
21477 not(target_arch = "arm"),
21478 stable(feature = "neon_intrinsics", since = "1.59.0")
21479)]
21480#[cfg_attr(
21481 target_arch = "arm",
21482 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21483)]
21484pub unsafe fn vld2_lane_u32<const LANE: i32>(a: *const u32, b: uint32x2x2_t) -> uint32x2x2_t {
21485 static_assert_uimm_bits!(LANE, 1);
21486 transmute(vld2_lane_s32::<LANE>(transmute(a), transmute(b)))
21487}
21488#[doc = "Load multiple 2-element structures to two registers"]
21489#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_u32)"]
21490#[doc = "## Safety"]
21491#[doc = " * Neon instrinsic unsafe"]
21492#[inline]
21493#[target_feature(enable = "neon")]
21494#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21495#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
21496#[cfg_attr(
21497 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21498 assert_instr(ld2, LANE = 0)
21499)]
21500#[rustc_legacy_const_generics(2)]
21501#[cfg_attr(
21502 not(target_arch = "arm"),
21503 stable(feature = "neon_intrinsics", since = "1.59.0")
21504)]
21505#[cfg_attr(
21506 target_arch = "arm",
21507 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21508)]
21509pub unsafe fn vld2q_lane_u32<const LANE: i32>(a: *const u32, b: uint32x4x2_t) -> uint32x4x2_t {
21510 static_assert_uimm_bits!(LANE, 2);
21511 transmute(vld2q_lane_s32::<LANE>(transmute(a), transmute(b)))
21512}
21513#[doc = "Load multiple 2-element structures to two registers"]
21514#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_p8)"]
21515#[doc = "## Safety"]
21516#[doc = " * Neon instrinsic unsafe"]
21517#[inline]
21518#[target_feature(enable = "neon")]
21519#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21520#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
21521#[cfg_attr(
21522 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21523 assert_instr(ld2, LANE = 0)
21524)]
21525#[rustc_legacy_const_generics(2)]
21526#[cfg_attr(
21527 not(target_arch = "arm"),
21528 stable(feature = "neon_intrinsics", since = "1.59.0")
21529)]
21530#[cfg_attr(
21531 target_arch = "arm",
21532 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21533)]
21534pub unsafe fn vld2_lane_p8<const LANE: i32>(a: *const p8, b: poly8x8x2_t) -> poly8x8x2_t {
21535 static_assert_uimm_bits!(LANE, 3);
21536 transmute(vld2_lane_s8::<LANE>(transmute(a), transmute(b)))
21537}
21538#[doc = "Load multiple 2-element structures to two registers"]
21539#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_p16)"]
21540#[doc = "## Safety"]
21541#[doc = " * Neon instrinsic unsafe"]
21542#[inline]
21543#[target_feature(enable = "neon")]
21544#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21545#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
21546#[cfg_attr(
21547 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21548 assert_instr(ld2, LANE = 0)
21549)]
21550#[rustc_legacy_const_generics(2)]
21551#[cfg_attr(
21552 not(target_arch = "arm"),
21553 stable(feature = "neon_intrinsics", since = "1.59.0")
21554)]
21555#[cfg_attr(
21556 target_arch = "arm",
21557 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21558)]
21559pub unsafe fn vld2_lane_p16<const LANE: i32>(a: *const p16, b: poly16x4x2_t) -> poly16x4x2_t {
21560 static_assert_uimm_bits!(LANE, 2);
21561 transmute(vld2_lane_s16::<LANE>(transmute(a), transmute(b)))
21562}
21563#[doc = "Load multiple 2-element structures to two registers"]
21564#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_p16)"]
21565#[doc = "## Safety"]
21566#[doc = " * Neon instrinsic unsafe"]
21567#[inline]
21568#[target_feature(enable = "neon")]
21569#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21570#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
21571#[cfg_attr(
21572 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21573 assert_instr(ld2, LANE = 0)
21574)]
21575#[rustc_legacy_const_generics(2)]
21576#[cfg_attr(
21577 not(target_arch = "arm"),
21578 stable(feature = "neon_intrinsics", since = "1.59.0")
21579)]
21580#[cfg_attr(
21581 target_arch = "arm",
21582 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21583)]
21584pub unsafe fn vld2q_lane_p16<const LANE: i32>(a: *const p16, b: poly16x8x2_t) -> poly16x8x2_t {
21585 static_assert_uimm_bits!(LANE, 3);
21586 transmute(vld2q_lane_s16::<LANE>(transmute(a), transmute(b)))
21587}
21588#[doc = "Load multiple 2-element structures to two registers"]
21589#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_p64)"]
21590#[doc = "## Safety"]
21591#[doc = " * Neon instrinsic unsafe"]
21592#[inline]
21593#[target_feature(enable = "neon,aes")]
21594#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
21595#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
21596#[cfg_attr(
21597 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21598 assert_instr(nop)
21599)]
21600#[cfg_attr(
21601 not(target_arch = "arm"),
21602 stable(feature = "neon_intrinsics", since = "1.59.0")
21603)]
21604#[cfg_attr(
21605 target_arch = "arm",
21606 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21607)]
21608pub unsafe fn vld2_p64(a: *const p64) -> poly64x1x2_t {
21609 transmute(vld2_s64(transmute(a)))
21610}
21611#[doc = "Load multiple 2-element structures to two registers"]
21612#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s64)"]
21613#[doc = "## Safety"]
21614#[doc = " * Neon instrinsic unsafe"]
21615#[inline]
21616#[target_feature(enable = "neon,v7")]
21617#[cfg(target_arch = "arm")]
21618#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21619#[cfg_attr(test, assert_instr(nop))]
21620pub unsafe fn vld2_s64(a: *const i64) -> int64x1x2_t {
21621 unsafe extern "unadjusted" {
21622 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v1i64")]
21623 fn _vld2_s64(ptr: *const i8, size: i32) -> int64x1x2_t;
21624 }
21625 _vld2_s64(a as *const i8, 8)
21626}
21627#[doc = "Load multiple 2-element structures to two registers"]
21628#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s64)"]
21629#[doc = "## Safety"]
21630#[doc = " * Neon instrinsic unsafe"]
21631#[inline]
21632#[target_feature(enable = "neon")]
21633#[cfg(not(target_arch = "arm"))]
21634#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21635#[cfg_attr(test, assert_instr(nop))]
21636pub unsafe fn vld2_s64(a: *const i64) -> int64x1x2_t {
21637 unsafe extern "unadjusted" {
21638 #[cfg_attr(
21639 any(target_arch = "aarch64", target_arch = "arm64ec"),
21640 link_name = "llvm.aarch64.neon.ld2.v1i64.p0"
21641 )]
21642 fn _vld2_s64(ptr: *const int64x1_t) -> int64x1x2_t;
21643 }
21644 _vld2_s64(a as _)
21645}
21646#[doc = "Load multiple 2-element structures to two registers"]
21647#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u64)"]
21648#[doc = "## Safety"]
21649#[doc = " * Neon instrinsic unsafe"]
21650#[inline]
21651#[target_feature(enable = "neon")]
21652#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21653#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
21654#[cfg_attr(
21655 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21656 assert_instr(nop)
21657)]
21658#[cfg_attr(
21659 not(target_arch = "arm"),
21660 stable(feature = "neon_intrinsics", since = "1.59.0")
21661)]
21662#[cfg_attr(
21663 target_arch = "arm",
21664 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21665)]
21666pub unsafe fn vld2_u64(a: *const u64) -> uint64x1x2_t {
21667 transmute(vld2_s64(transmute(a)))
21668}
21669#[doc = "Load multiple 2-element structures to two registers"]
21670#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u8)"]
21671#[doc = "## Safety"]
21672#[doc = " * Neon instrinsic unsafe"]
21673#[inline]
21674#[cfg(target_endian = "little")]
21675#[target_feature(enable = "neon")]
21676#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21677#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
21678#[cfg_attr(
21679 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21680 assert_instr(ld2)
21681)]
21682#[cfg_attr(
21683 not(target_arch = "arm"),
21684 stable(feature = "neon_intrinsics", since = "1.59.0")
21685)]
21686#[cfg_attr(
21687 target_arch = "arm",
21688 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21689)]
21690pub unsafe fn vld2_u8(a: *const u8) -> uint8x8x2_t {
21691 transmute(vld2_s8(transmute(a)))
21692}
21693#[doc = "Load multiple 2-element structures to two registers"]
21694#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u8)"]
21695#[doc = "## Safety"]
21696#[doc = " * Neon instrinsic unsafe"]
21697#[inline]
21698#[cfg(target_endian = "big")]
21699#[target_feature(enable = "neon")]
21700#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21701#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
21702#[cfg_attr(
21703 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21704 assert_instr(ld2)
21705)]
21706#[cfg_attr(
21707 not(target_arch = "arm"),
21708 stable(feature = "neon_intrinsics", since = "1.59.0")
21709)]
21710#[cfg_attr(
21711 target_arch = "arm",
21712 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21713)]
21714pub unsafe fn vld2_u8(a: *const u8) -> uint8x8x2_t {
21715 let mut ret_val: uint8x8x2_t = transmute(vld2_s8(transmute(a)));
21716 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
21717 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
21718 ret_val
21719}
21720#[doc = "Load multiple 2-element structures to two registers"]
21721#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_u8)"]
21722#[doc = "## Safety"]
21723#[doc = " * Neon instrinsic unsafe"]
21724#[inline]
21725#[cfg(target_endian = "little")]
21726#[target_feature(enable = "neon")]
21727#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21728#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
21729#[cfg_attr(
21730 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21731 assert_instr(ld2)
21732)]
21733#[cfg_attr(
21734 not(target_arch = "arm"),
21735 stable(feature = "neon_intrinsics", since = "1.59.0")
21736)]
21737#[cfg_attr(
21738 target_arch = "arm",
21739 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21740)]
21741pub unsafe fn vld2q_u8(a: *const u8) -> uint8x16x2_t {
21742 transmute(vld2q_s8(transmute(a)))
21743}
21744#[doc = "Load multiple 2-element structures to two registers"]
21745#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_u8)"]
21746#[doc = "## Safety"]
21747#[doc = " * Neon instrinsic unsafe"]
21748#[inline]
21749#[cfg(target_endian = "big")]
21750#[target_feature(enable = "neon")]
21751#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21752#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
21753#[cfg_attr(
21754 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21755 assert_instr(ld2)
21756)]
21757#[cfg_attr(
21758 not(target_arch = "arm"),
21759 stable(feature = "neon_intrinsics", since = "1.59.0")
21760)]
21761#[cfg_attr(
21762 target_arch = "arm",
21763 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21764)]
21765pub unsafe fn vld2q_u8(a: *const u8) -> uint8x16x2_t {
21766 let mut ret_val: uint8x16x2_t = transmute(vld2q_s8(transmute(a)));
21767 ret_val.0 = unsafe {
21768 simd_shuffle!(
21769 ret_val.0,
21770 ret_val.0,
21771 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
21772 )
21773 };
21774 ret_val.1 = unsafe {
21775 simd_shuffle!(
21776 ret_val.1,
21777 ret_val.1,
21778 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
21779 )
21780 };
21781 ret_val
21782}
21783#[doc = "Load multiple 2-element structures to two registers"]
21784#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u16)"]
21785#[doc = "## Safety"]
21786#[doc = " * Neon instrinsic unsafe"]
21787#[inline]
21788#[cfg(target_endian = "little")]
21789#[target_feature(enable = "neon")]
21790#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21791#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
21792#[cfg_attr(
21793 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21794 assert_instr(ld2)
21795)]
21796#[cfg_attr(
21797 not(target_arch = "arm"),
21798 stable(feature = "neon_intrinsics", since = "1.59.0")
21799)]
21800#[cfg_attr(
21801 target_arch = "arm",
21802 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21803)]
21804pub unsafe fn vld2_u16(a: *const u16) -> uint16x4x2_t {
21805 transmute(vld2_s16(transmute(a)))
21806}
21807#[doc = "Load multiple 2-element structures to two registers"]
21808#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u16)"]
21809#[doc = "## Safety"]
21810#[doc = " * Neon instrinsic unsafe"]
21811#[inline]
21812#[cfg(target_endian = "big")]
21813#[target_feature(enable = "neon")]
21814#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21815#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
21816#[cfg_attr(
21817 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21818 assert_instr(ld2)
21819)]
21820#[cfg_attr(
21821 not(target_arch = "arm"),
21822 stable(feature = "neon_intrinsics", since = "1.59.0")
21823)]
21824#[cfg_attr(
21825 target_arch = "arm",
21826 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21827)]
21828pub unsafe fn vld2_u16(a: *const u16) -> uint16x4x2_t {
21829 let mut ret_val: uint16x4x2_t = transmute(vld2_s16(transmute(a)));
21830 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
21831 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
21832 ret_val
21833}
21834#[doc = "Load multiple 2-element structures to two registers"]
21835#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_u16)"]
21836#[doc = "## Safety"]
21837#[doc = " * Neon instrinsic unsafe"]
21838#[inline]
21839#[cfg(target_endian = "little")]
21840#[target_feature(enable = "neon")]
21841#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21842#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
21843#[cfg_attr(
21844 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21845 assert_instr(ld2)
21846)]
21847#[cfg_attr(
21848 not(target_arch = "arm"),
21849 stable(feature = "neon_intrinsics", since = "1.59.0")
21850)]
21851#[cfg_attr(
21852 target_arch = "arm",
21853 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21854)]
21855pub unsafe fn vld2q_u16(a: *const u16) -> uint16x8x2_t {
21856 transmute(vld2q_s16(transmute(a)))
21857}
21858#[doc = "Load multiple 2-element structures to two registers"]
21859#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_u16)"]
21860#[doc = "## Safety"]
21861#[doc = " * Neon instrinsic unsafe"]
21862#[inline]
21863#[cfg(target_endian = "big")]
21864#[target_feature(enable = "neon")]
21865#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21866#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
21867#[cfg_attr(
21868 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21869 assert_instr(ld2)
21870)]
21871#[cfg_attr(
21872 not(target_arch = "arm"),
21873 stable(feature = "neon_intrinsics", since = "1.59.0")
21874)]
21875#[cfg_attr(
21876 target_arch = "arm",
21877 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21878)]
21879pub unsafe fn vld2q_u16(a: *const u16) -> uint16x8x2_t {
21880 let mut ret_val: uint16x8x2_t = transmute(vld2q_s16(transmute(a)));
21881 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
21882 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
21883 ret_val
21884}
21885#[doc = "Load multiple 2-element structures to two registers"]
21886#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u32)"]
21887#[doc = "## Safety"]
21888#[doc = " * Neon instrinsic unsafe"]
21889#[inline]
21890#[cfg(target_endian = "little")]
21891#[target_feature(enable = "neon")]
21892#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21893#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
21894#[cfg_attr(
21895 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21896 assert_instr(ld2)
21897)]
21898#[cfg_attr(
21899 not(target_arch = "arm"),
21900 stable(feature = "neon_intrinsics", since = "1.59.0")
21901)]
21902#[cfg_attr(
21903 target_arch = "arm",
21904 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21905)]
21906pub unsafe fn vld2_u32(a: *const u32) -> uint32x2x2_t {
21907 transmute(vld2_s32(transmute(a)))
21908}
21909#[doc = "Load multiple 2-element structures to two registers"]
21910#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u32)"]
21911#[doc = "## Safety"]
21912#[doc = " * Neon instrinsic unsafe"]
21913#[inline]
21914#[cfg(target_endian = "big")]
21915#[target_feature(enable = "neon")]
21916#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21917#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
21918#[cfg_attr(
21919 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21920 assert_instr(ld2)
21921)]
21922#[cfg_attr(
21923 not(target_arch = "arm"),
21924 stable(feature = "neon_intrinsics", since = "1.59.0")
21925)]
21926#[cfg_attr(
21927 target_arch = "arm",
21928 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21929)]
21930pub unsafe fn vld2_u32(a: *const u32) -> uint32x2x2_t {
21931 let mut ret_val: uint32x2x2_t = transmute(vld2_s32(transmute(a)));
21932 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
21933 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
21934 ret_val
21935}
21936#[doc = "Load multiple 2-element structures to two registers"]
21937#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_u32)"]
21938#[doc = "## Safety"]
21939#[doc = " * Neon instrinsic unsafe"]
21940#[inline]
21941#[cfg(target_endian = "little")]
21942#[target_feature(enable = "neon")]
21943#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21944#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
21945#[cfg_attr(
21946 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21947 assert_instr(ld2)
21948)]
21949#[cfg_attr(
21950 not(target_arch = "arm"),
21951 stable(feature = "neon_intrinsics", since = "1.59.0")
21952)]
21953#[cfg_attr(
21954 target_arch = "arm",
21955 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21956)]
21957pub unsafe fn vld2q_u32(a: *const u32) -> uint32x4x2_t {
21958 transmute(vld2q_s32(transmute(a)))
21959}
21960#[doc = "Load multiple 2-element structures to two registers"]
21961#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_u32)"]
21962#[doc = "## Safety"]
21963#[doc = " * Neon instrinsic unsafe"]
21964#[inline]
21965#[cfg(target_endian = "big")]
21966#[target_feature(enable = "neon")]
21967#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21968#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
21969#[cfg_attr(
21970 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21971 assert_instr(ld2)
21972)]
21973#[cfg_attr(
21974 not(target_arch = "arm"),
21975 stable(feature = "neon_intrinsics", since = "1.59.0")
21976)]
21977#[cfg_attr(
21978 target_arch = "arm",
21979 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21980)]
21981pub unsafe fn vld2q_u32(a: *const u32) -> uint32x4x2_t {
21982 let mut ret_val: uint32x4x2_t = transmute(vld2q_s32(transmute(a)));
21983 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
21984 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
21985 ret_val
21986}
21987#[doc = "Load multiple 2-element structures to two registers"]
21988#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_p8)"]
21989#[doc = "## Safety"]
21990#[doc = " * Neon instrinsic unsafe"]
21991#[inline]
21992#[cfg(target_endian = "little")]
21993#[target_feature(enable = "neon")]
21994#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21995#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
21996#[cfg_attr(
21997 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21998 assert_instr(ld2)
21999)]
22000#[cfg_attr(
22001 not(target_arch = "arm"),
22002 stable(feature = "neon_intrinsics", since = "1.59.0")
22003)]
22004#[cfg_attr(
22005 target_arch = "arm",
22006 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22007)]
22008pub unsafe fn vld2_p8(a: *const p8) -> poly8x8x2_t {
22009 transmute(vld2_s8(transmute(a)))
22010}
22011#[doc = "Load multiple 2-element structures to two registers"]
22012#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_p8)"]
22013#[doc = "## Safety"]
22014#[doc = " * Neon instrinsic unsafe"]
22015#[inline]
22016#[cfg(target_endian = "big")]
22017#[target_feature(enable = "neon")]
22018#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22019#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22020#[cfg_attr(
22021 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22022 assert_instr(ld2)
22023)]
22024#[cfg_attr(
22025 not(target_arch = "arm"),
22026 stable(feature = "neon_intrinsics", since = "1.59.0")
22027)]
22028#[cfg_attr(
22029 target_arch = "arm",
22030 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22031)]
22032pub unsafe fn vld2_p8(a: *const p8) -> poly8x8x2_t {
22033 let mut ret_val: poly8x8x2_t = transmute(vld2_s8(transmute(a)));
22034 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
22035 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
22036 ret_val
22037}
22038#[doc = "Load multiple 2-element structures to two registers"]
22039#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_p8)"]
22040#[doc = "## Safety"]
22041#[doc = " * Neon instrinsic unsafe"]
22042#[inline]
22043#[cfg(target_endian = "little")]
22044#[target_feature(enable = "neon")]
22045#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22046#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22047#[cfg_attr(
22048 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22049 assert_instr(ld2)
22050)]
22051#[cfg_attr(
22052 not(target_arch = "arm"),
22053 stable(feature = "neon_intrinsics", since = "1.59.0")
22054)]
22055#[cfg_attr(
22056 target_arch = "arm",
22057 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22058)]
22059pub unsafe fn vld2q_p8(a: *const p8) -> poly8x16x2_t {
22060 transmute(vld2q_s8(transmute(a)))
22061}
22062#[doc = "Load multiple 2-element structures to two registers"]
22063#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_p8)"]
22064#[doc = "## Safety"]
22065#[doc = " * Neon instrinsic unsafe"]
22066#[inline]
22067#[cfg(target_endian = "big")]
22068#[target_feature(enable = "neon")]
22069#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22070#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22071#[cfg_attr(
22072 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22073 assert_instr(ld2)
22074)]
22075#[cfg_attr(
22076 not(target_arch = "arm"),
22077 stable(feature = "neon_intrinsics", since = "1.59.0")
22078)]
22079#[cfg_attr(
22080 target_arch = "arm",
22081 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22082)]
22083pub unsafe fn vld2q_p8(a: *const p8) -> poly8x16x2_t {
22084 let mut ret_val: poly8x16x2_t = transmute(vld2q_s8(transmute(a)));
22085 ret_val.0 = unsafe {
22086 simd_shuffle!(
22087 ret_val.0,
22088 ret_val.0,
22089 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
22090 )
22091 };
22092 ret_val.1 = unsafe {
22093 simd_shuffle!(
22094 ret_val.1,
22095 ret_val.1,
22096 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
22097 )
22098 };
22099 ret_val
22100}
22101#[doc = "Load multiple 2-element structures to two registers"]
22102#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_p16)"]
22103#[doc = "## Safety"]
22104#[doc = " * Neon instrinsic unsafe"]
22105#[inline]
22106#[cfg(target_endian = "little")]
22107#[target_feature(enable = "neon")]
22108#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22109#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22110#[cfg_attr(
22111 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22112 assert_instr(ld2)
22113)]
22114#[cfg_attr(
22115 not(target_arch = "arm"),
22116 stable(feature = "neon_intrinsics", since = "1.59.0")
22117)]
22118#[cfg_attr(
22119 target_arch = "arm",
22120 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22121)]
22122pub unsafe fn vld2_p16(a: *const p16) -> poly16x4x2_t {
22123 transmute(vld2_s16(transmute(a)))
22124}
22125#[doc = "Load multiple 2-element structures to two registers"]
22126#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_p16)"]
22127#[doc = "## Safety"]
22128#[doc = " * Neon instrinsic unsafe"]
22129#[inline]
22130#[cfg(target_endian = "big")]
22131#[target_feature(enable = "neon")]
22132#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22133#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22134#[cfg_attr(
22135 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22136 assert_instr(ld2)
22137)]
22138#[cfg_attr(
22139 not(target_arch = "arm"),
22140 stable(feature = "neon_intrinsics", since = "1.59.0")
22141)]
22142#[cfg_attr(
22143 target_arch = "arm",
22144 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22145)]
22146pub unsafe fn vld2_p16(a: *const p16) -> poly16x4x2_t {
22147 let mut ret_val: poly16x4x2_t = transmute(vld2_s16(transmute(a)));
22148 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
22149 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
22150 ret_val
22151}
22152#[doc = "Load multiple 2-element structures to two registers"]
22153#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_p16)"]
22154#[doc = "## Safety"]
22155#[doc = " * Neon instrinsic unsafe"]
22156#[inline]
22157#[cfg(target_endian = "little")]
22158#[target_feature(enable = "neon")]
22159#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22160#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22161#[cfg_attr(
22162 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22163 assert_instr(ld2)
22164)]
22165#[cfg_attr(
22166 not(target_arch = "arm"),
22167 stable(feature = "neon_intrinsics", since = "1.59.0")
22168)]
22169#[cfg_attr(
22170 target_arch = "arm",
22171 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22172)]
22173pub unsafe fn vld2q_p16(a: *const p16) -> poly16x8x2_t {
22174 transmute(vld2q_s16(transmute(a)))
22175}
22176#[doc = "Load multiple 2-element structures to two registers"]
22177#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_p16)"]
22178#[doc = "## Safety"]
22179#[doc = " * Neon instrinsic unsafe"]
22180#[inline]
22181#[cfg(target_endian = "big")]
22182#[target_feature(enable = "neon")]
22183#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22184#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22185#[cfg_attr(
22186 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22187 assert_instr(ld2)
22188)]
22189#[cfg_attr(
22190 not(target_arch = "arm"),
22191 stable(feature = "neon_intrinsics", since = "1.59.0")
22192)]
22193#[cfg_attr(
22194 target_arch = "arm",
22195 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22196)]
22197pub unsafe fn vld2q_p16(a: *const p16) -> poly16x8x2_t {
22198 let mut ret_val: poly16x8x2_t = transmute(vld2q_s16(transmute(a)));
22199 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
22200 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
22201 ret_val
22202}
22203#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
22204#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_f16)"]
22205#[doc = "## Safety"]
22206#[doc = " * Neon instrinsic unsafe"]
22207#[inline]
22208#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22209#[cfg(target_arch = "arm")]
22210#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22211#[target_feature(enable = "neon,fp16")]
22212#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
22213#[cfg(not(target_arch = "arm64ec"))]
22214pub unsafe fn vld3_dup_f16(a: *const f16) -> float16x4x3_t {
22215 unsafe extern "unadjusted" {
22216 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v4f16.p0")]
22217 fn _vld3_dup_f16(ptr: *const f16, size: i32) -> float16x4x3_t;
22218 }
22219 _vld3_dup_f16(a as _, 2)
22220}
22221#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
22222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_f16)"]
22223#[doc = "## Safety"]
22224#[doc = " * Neon instrinsic unsafe"]
22225#[inline]
22226#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22227#[cfg(target_arch = "arm")]
22228#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22229#[target_feature(enable = "neon,fp16")]
22230#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
22231#[cfg(not(target_arch = "arm64ec"))]
22232pub unsafe fn vld3q_dup_f16(a: *const f16) -> float16x8x3_t {
22233 unsafe extern "unadjusted" {
22234 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v8f16.p0")]
22235 fn _vld3q_dup_f16(ptr: *const f16, size: i32) -> float16x8x3_t;
22236 }
22237 _vld3q_dup_f16(a as _, 2)
22238}
22239#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
22240#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_f16)"]
22241#[doc = "## Safety"]
22242#[doc = " * Neon instrinsic unsafe"]
22243#[inline]
22244#[cfg(not(target_arch = "arm"))]
22245#[cfg_attr(
22246 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22247 assert_instr(ld3r)
22248)]
22249#[target_feature(enable = "neon,fp16")]
22250#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
22251#[cfg(not(target_arch = "arm64ec"))]
22252pub unsafe fn vld3_dup_f16(a: *const f16) -> float16x4x3_t {
22253 unsafe extern "unadjusted" {
22254 #[cfg_attr(
22255 any(target_arch = "aarch64", target_arch = "arm64ec"),
22256 link_name = "llvm.aarch64.neon.ld3r.v4f16.p0"
22257 )]
22258 fn _vld3_dup_f16(ptr: *const f16) -> float16x4x3_t;
22259 }
22260 _vld3_dup_f16(a as _)
22261}
22262#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
22263#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_f16)"]
22264#[doc = "## Safety"]
22265#[doc = " * Neon instrinsic unsafe"]
22266#[inline]
22267#[cfg(not(target_arch = "arm"))]
22268#[cfg_attr(
22269 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22270 assert_instr(ld3r)
22271)]
22272#[target_feature(enable = "neon,fp16")]
22273#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
22274#[cfg(not(target_arch = "arm64ec"))]
22275pub unsafe fn vld3q_dup_f16(a: *const f16) -> float16x8x3_t {
22276 unsafe extern "unadjusted" {
22277 #[cfg_attr(
22278 any(target_arch = "aarch64", target_arch = "arm64ec"),
22279 link_name = "llvm.aarch64.neon.ld3r.v8f16.p0"
22280 )]
22281 fn _vld3q_dup_f16(ptr: *const f16) -> float16x8x3_t;
22282 }
22283 _vld3q_dup_f16(a as _)
22284}
22285#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22286#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_f32)"]
22287#[doc = "## Safety"]
22288#[doc = " * Neon instrinsic unsafe"]
22289#[inline]
22290#[target_feature(enable = "neon")]
22291#[cfg(not(target_arch = "arm"))]
22292#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22293#[cfg_attr(test, assert_instr(ld3r))]
22294pub unsafe fn vld3_dup_f32(a: *const f32) -> float32x2x3_t {
22295 unsafe extern "unadjusted" {
22296 #[cfg_attr(
22297 any(target_arch = "aarch64", target_arch = "arm64ec"),
22298 link_name = "llvm.aarch64.neon.ld3r.v2f32.p0"
22299 )]
22300 fn _vld3_dup_f32(ptr: *const f32) -> float32x2x3_t;
22301 }
22302 _vld3_dup_f32(a as _)
22303}
22304#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_f32)"]
22306#[doc = "## Safety"]
22307#[doc = " * Neon instrinsic unsafe"]
22308#[inline]
22309#[target_feature(enable = "neon")]
22310#[cfg(not(target_arch = "arm"))]
22311#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22312#[cfg_attr(test, assert_instr(ld3r))]
22313pub unsafe fn vld3q_dup_f32(a: *const f32) -> float32x4x3_t {
22314 unsafe extern "unadjusted" {
22315 #[cfg_attr(
22316 any(target_arch = "aarch64", target_arch = "arm64ec"),
22317 link_name = "llvm.aarch64.neon.ld3r.v4f32.p0"
22318 )]
22319 fn _vld3q_dup_f32(ptr: *const f32) -> float32x4x3_t;
22320 }
22321 _vld3q_dup_f32(a as _)
22322}
22323#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22324#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s8)"]
22325#[doc = "## Safety"]
22326#[doc = " * Neon instrinsic unsafe"]
22327#[inline]
22328#[target_feature(enable = "neon")]
22329#[cfg(not(target_arch = "arm"))]
22330#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22331#[cfg_attr(test, assert_instr(ld3r))]
22332pub unsafe fn vld3_dup_s8(a: *const i8) -> int8x8x3_t {
22333 unsafe extern "unadjusted" {
22334 #[cfg_attr(
22335 any(target_arch = "aarch64", target_arch = "arm64ec"),
22336 link_name = "llvm.aarch64.neon.ld3r.v8i8.p0"
22337 )]
22338 fn _vld3_dup_s8(ptr: *const i8) -> int8x8x3_t;
22339 }
22340 _vld3_dup_s8(a as _)
22341}
22342#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22343#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s8)"]
22344#[doc = "## Safety"]
22345#[doc = " * Neon instrinsic unsafe"]
22346#[inline]
22347#[target_feature(enable = "neon")]
22348#[cfg(not(target_arch = "arm"))]
22349#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22350#[cfg_attr(test, assert_instr(ld3r))]
22351pub unsafe fn vld3q_dup_s8(a: *const i8) -> int8x16x3_t {
22352 unsafe extern "unadjusted" {
22353 #[cfg_attr(
22354 any(target_arch = "aarch64", target_arch = "arm64ec"),
22355 link_name = "llvm.aarch64.neon.ld3r.v16i8.p0"
22356 )]
22357 fn _vld3q_dup_s8(ptr: *const i8) -> int8x16x3_t;
22358 }
22359 _vld3q_dup_s8(a as _)
22360}
22361#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22362#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s16)"]
22363#[doc = "## Safety"]
22364#[doc = " * Neon instrinsic unsafe"]
22365#[inline]
22366#[target_feature(enable = "neon")]
22367#[cfg(not(target_arch = "arm"))]
22368#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22369#[cfg_attr(test, assert_instr(ld3r))]
22370pub unsafe fn vld3_dup_s16(a: *const i16) -> int16x4x3_t {
22371 unsafe extern "unadjusted" {
22372 #[cfg_attr(
22373 any(target_arch = "aarch64", target_arch = "arm64ec"),
22374 link_name = "llvm.aarch64.neon.ld3r.v4i16.p0"
22375 )]
22376 fn _vld3_dup_s16(ptr: *const i16) -> int16x4x3_t;
22377 }
22378 _vld3_dup_s16(a as _)
22379}
22380#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22381#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s16)"]
22382#[doc = "## Safety"]
22383#[doc = " * Neon instrinsic unsafe"]
22384#[inline]
22385#[target_feature(enable = "neon")]
22386#[cfg(not(target_arch = "arm"))]
22387#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22388#[cfg_attr(test, assert_instr(ld3r))]
22389pub unsafe fn vld3q_dup_s16(a: *const i16) -> int16x8x3_t {
22390 unsafe extern "unadjusted" {
22391 #[cfg_attr(
22392 any(target_arch = "aarch64", target_arch = "arm64ec"),
22393 link_name = "llvm.aarch64.neon.ld3r.v8i16.p0"
22394 )]
22395 fn _vld3q_dup_s16(ptr: *const i16) -> int16x8x3_t;
22396 }
22397 _vld3q_dup_s16(a as _)
22398}
22399#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22400#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s32)"]
22401#[doc = "## Safety"]
22402#[doc = " * Neon instrinsic unsafe"]
22403#[inline]
22404#[target_feature(enable = "neon")]
22405#[cfg(not(target_arch = "arm"))]
22406#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22407#[cfg_attr(test, assert_instr(ld3r))]
22408pub unsafe fn vld3_dup_s32(a: *const i32) -> int32x2x3_t {
22409 unsafe extern "unadjusted" {
22410 #[cfg_attr(
22411 any(target_arch = "aarch64", target_arch = "arm64ec"),
22412 link_name = "llvm.aarch64.neon.ld3r.v2i32.p0"
22413 )]
22414 fn _vld3_dup_s32(ptr: *const i32) -> int32x2x3_t;
22415 }
22416 _vld3_dup_s32(a as _)
22417}
22418#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22419#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s32)"]
22420#[doc = "## Safety"]
22421#[doc = " * Neon instrinsic unsafe"]
22422#[inline]
22423#[target_feature(enable = "neon")]
22424#[cfg(not(target_arch = "arm"))]
22425#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22426#[cfg_attr(test, assert_instr(ld3r))]
22427pub unsafe fn vld3q_dup_s32(a: *const i32) -> int32x4x3_t {
22428 unsafe extern "unadjusted" {
22429 #[cfg_attr(
22430 any(target_arch = "aarch64", target_arch = "arm64ec"),
22431 link_name = "llvm.aarch64.neon.ld3r.v4i32.p0"
22432 )]
22433 fn _vld3q_dup_s32(ptr: *const i32) -> int32x4x3_t;
22434 }
22435 _vld3q_dup_s32(a as _)
22436}
22437#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22438#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s64)"]
22439#[doc = "## Safety"]
22440#[doc = " * Neon instrinsic unsafe"]
22441#[inline]
22442#[target_feature(enable = "neon")]
22443#[cfg(not(target_arch = "arm"))]
22444#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22445#[cfg_attr(test, assert_instr(ld3r))]
22446pub unsafe fn vld3_dup_s64(a: *const i64) -> int64x1x3_t {
22447 unsafe extern "unadjusted" {
22448 #[cfg_attr(
22449 any(target_arch = "aarch64", target_arch = "arm64ec"),
22450 link_name = "llvm.aarch64.neon.ld3r.v1i64.p0"
22451 )]
22452 fn _vld3_dup_s64(ptr: *const i64) -> int64x1x3_t;
22453 }
22454 _vld3_dup_s64(a as _)
22455}
22456#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22457#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_f32)"]
22458#[doc = "## Safety"]
22459#[doc = " * Neon instrinsic unsafe"]
22460#[inline]
22461#[target_feature(enable = "neon,v7")]
22462#[cfg(target_arch = "arm")]
22463#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22464#[cfg_attr(test, assert_instr(vld3))]
22465pub unsafe fn vld3_dup_f32(a: *const f32) -> float32x2x3_t {
22466 unsafe extern "unadjusted" {
22467 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v2f32.p0")]
22468 fn _vld3_dup_f32(ptr: *const i8, size: i32) -> float32x2x3_t;
22469 }
22470 _vld3_dup_f32(a as *const i8, 4)
22471}
22472#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22473#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_f32)"]
22474#[doc = "## Safety"]
22475#[doc = " * Neon instrinsic unsafe"]
22476#[inline]
22477#[target_feature(enable = "neon,v7")]
22478#[cfg(target_arch = "arm")]
22479#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22480#[cfg_attr(test, assert_instr(vld3))]
22481pub unsafe fn vld3q_dup_f32(a: *const f32) -> float32x4x3_t {
22482 unsafe extern "unadjusted" {
22483 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v4f32.p0")]
22484 fn _vld3q_dup_f32(ptr: *const i8, size: i32) -> float32x4x3_t;
22485 }
22486 _vld3q_dup_f32(a as *const i8, 4)
22487}
22488#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22489#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s8)"]
22490#[doc = "## Safety"]
22491#[doc = " * Neon instrinsic unsafe"]
22492#[inline]
22493#[target_feature(enable = "neon,v7")]
22494#[cfg(target_arch = "arm")]
22495#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22496#[cfg_attr(test, assert_instr(vld3))]
22497pub unsafe fn vld3_dup_s8(a: *const i8) -> int8x8x3_t {
22498 unsafe extern "unadjusted" {
22499 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v8i8.p0")]
22500 fn _vld3_dup_s8(ptr: *const i8, size: i32) -> int8x8x3_t;
22501 }
22502 _vld3_dup_s8(a as *const i8, 1)
22503}
22504#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22505#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s8)"]
22506#[doc = "## Safety"]
22507#[doc = " * Neon instrinsic unsafe"]
22508#[inline]
22509#[target_feature(enable = "neon,v7")]
22510#[cfg(target_arch = "arm")]
22511#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22512#[cfg_attr(test, assert_instr(vld3))]
22513pub unsafe fn vld3q_dup_s8(a: *const i8) -> int8x16x3_t {
22514 unsafe extern "unadjusted" {
22515 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v16i8.p0")]
22516 fn _vld3q_dup_s8(ptr: *const i8, size: i32) -> int8x16x3_t;
22517 }
22518 _vld3q_dup_s8(a as *const i8, 1)
22519}
22520#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22521#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s16)"]
22522#[doc = "## Safety"]
22523#[doc = " * Neon instrinsic unsafe"]
22524#[inline]
22525#[target_feature(enable = "neon,v7")]
22526#[cfg(target_arch = "arm")]
22527#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22528#[cfg_attr(test, assert_instr(vld3))]
22529pub unsafe fn vld3_dup_s16(a: *const i16) -> int16x4x3_t {
22530 unsafe extern "unadjusted" {
22531 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v4i16.p0")]
22532 fn _vld3_dup_s16(ptr: *const i8, size: i32) -> int16x4x3_t;
22533 }
22534 _vld3_dup_s16(a as *const i8, 2)
22535}
22536#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22537#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s16)"]
22538#[doc = "## Safety"]
22539#[doc = " * Neon instrinsic unsafe"]
22540#[inline]
22541#[target_feature(enable = "neon,v7")]
22542#[cfg(target_arch = "arm")]
22543#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22544#[cfg_attr(test, assert_instr(vld3))]
22545pub unsafe fn vld3q_dup_s16(a: *const i16) -> int16x8x3_t {
22546 unsafe extern "unadjusted" {
22547 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v8i16.p0")]
22548 fn _vld3q_dup_s16(ptr: *const i8, size: i32) -> int16x8x3_t;
22549 }
22550 _vld3q_dup_s16(a as *const i8, 2)
22551}
22552#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22553#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s32)"]
22554#[doc = "## Safety"]
22555#[doc = " * Neon instrinsic unsafe"]
22556#[inline]
22557#[target_feature(enable = "neon,v7")]
22558#[cfg(target_arch = "arm")]
22559#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22560#[cfg_attr(test, assert_instr(vld3))]
22561pub unsafe fn vld3_dup_s32(a: *const i32) -> int32x2x3_t {
22562 unsafe extern "unadjusted" {
22563 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v2i32.p0")]
22564 fn _vld3_dup_s32(ptr: *const i8, size: i32) -> int32x2x3_t;
22565 }
22566 _vld3_dup_s32(a as *const i8, 4)
22567}
22568#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22569#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s32)"]
22570#[doc = "## Safety"]
22571#[doc = " * Neon instrinsic unsafe"]
22572#[inline]
22573#[target_feature(enable = "neon,v7")]
22574#[cfg(target_arch = "arm")]
22575#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22576#[cfg_attr(test, assert_instr(vld3))]
22577pub unsafe fn vld3q_dup_s32(a: *const i32) -> int32x4x3_t {
22578 unsafe extern "unadjusted" {
22579 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v4i32.p0")]
22580 fn _vld3q_dup_s32(ptr: *const i8, size: i32) -> int32x4x3_t;
22581 }
22582 _vld3q_dup_s32(a as *const i8, 4)
22583}
22584#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22585#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p64)"]
22586#[doc = "## Safety"]
22587#[doc = " * Neon instrinsic unsafe"]
22588#[inline]
22589#[target_feature(enable = "neon,aes")]
22590#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
22591#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
22592#[cfg_attr(
22593 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22594 assert_instr(ld3r)
22595)]
22596#[cfg_attr(
22597 not(target_arch = "arm"),
22598 stable(feature = "neon_intrinsics", since = "1.59.0")
22599)]
22600#[cfg_attr(
22601 target_arch = "arm",
22602 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22603)]
22604pub unsafe fn vld3_dup_p64(a: *const p64) -> poly64x1x3_t {
22605 transmute(vld3_dup_s64(transmute(a)))
22606}
22607#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22608#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s64)"]
22609#[doc = "## Safety"]
22610#[doc = " * Neon instrinsic unsafe"]
22611#[inline]
22612#[cfg(target_arch = "arm")]
22613#[target_feature(enable = "neon,v7")]
22614#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22615#[cfg_attr(test, assert_instr(nop))]
22616pub unsafe fn vld3_dup_s64(a: *const i64) -> int64x1x3_t {
22617 unsafe extern "unadjusted" {
22618 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v1i64.p0")]
22619 fn _vld3_dup_s64(ptr: *const i8, size: i32) -> int64x1x3_t;
22620 }
22621 _vld3_dup_s64(a as *const i8, 8)
22622}
22623#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22624#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u64)"]
22625#[doc = "## Safety"]
22626#[doc = " * Neon instrinsic unsafe"]
22627#[inline]
22628#[target_feature(enable = "neon")]
22629#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22630#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
22631#[cfg_attr(
22632 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22633 assert_instr(ld3r)
22634)]
22635#[cfg_attr(
22636 not(target_arch = "arm"),
22637 stable(feature = "neon_intrinsics", since = "1.59.0")
22638)]
22639#[cfg_attr(
22640 target_arch = "arm",
22641 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22642)]
22643pub unsafe fn vld3_dup_u64(a: *const u64) -> uint64x1x3_t {
22644 transmute(vld3_dup_s64(transmute(a)))
22645}
22646#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22647#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u8)"]
22648#[doc = "## Safety"]
22649#[doc = " * Neon instrinsic unsafe"]
22650#[inline]
22651#[cfg(target_endian = "little")]
22652#[target_feature(enable = "neon")]
22653#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22654#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22655#[cfg_attr(
22656 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22657 assert_instr(ld3r)
22658)]
22659#[cfg_attr(
22660 not(target_arch = "arm"),
22661 stable(feature = "neon_intrinsics", since = "1.59.0")
22662)]
22663#[cfg_attr(
22664 target_arch = "arm",
22665 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22666)]
22667pub unsafe fn vld3_dup_u8(a: *const u8) -> uint8x8x3_t {
22668 transmute(vld3_dup_s8(transmute(a)))
22669}
22670#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22671#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u8)"]
22672#[doc = "## Safety"]
22673#[doc = " * Neon instrinsic unsafe"]
22674#[inline]
22675#[cfg(target_endian = "big")]
22676#[target_feature(enable = "neon")]
22677#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22678#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22679#[cfg_attr(
22680 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22681 assert_instr(ld3r)
22682)]
22683#[cfg_attr(
22684 not(target_arch = "arm"),
22685 stable(feature = "neon_intrinsics", since = "1.59.0")
22686)]
22687#[cfg_attr(
22688 target_arch = "arm",
22689 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22690)]
22691pub unsafe fn vld3_dup_u8(a: *const u8) -> uint8x8x3_t {
22692 let mut ret_val: uint8x8x3_t = transmute(vld3_dup_s8(transmute(a)));
22693 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
22694 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
22695 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
22696 ret_val
22697}
22698#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22699#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u8)"]
22700#[doc = "## Safety"]
22701#[doc = " * Neon instrinsic unsafe"]
22702#[inline]
22703#[cfg(target_endian = "little")]
22704#[target_feature(enable = "neon")]
22705#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22706#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22707#[cfg_attr(
22708 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22709 assert_instr(ld3r)
22710)]
22711#[cfg_attr(
22712 not(target_arch = "arm"),
22713 stable(feature = "neon_intrinsics", since = "1.59.0")
22714)]
22715#[cfg_attr(
22716 target_arch = "arm",
22717 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22718)]
22719pub unsafe fn vld3q_dup_u8(a: *const u8) -> uint8x16x3_t {
22720 transmute(vld3q_dup_s8(transmute(a)))
22721}
22722#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22723#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u8)"]
22724#[doc = "## Safety"]
22725#[doc = " * Neon instrinsic unsafe"]
22726#[inline]
22727#[cfg(target_endian = "big")]
22728#[target_feature(enable = "neon")]
22729#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22730#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22731#[cfg_attr(
22732 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22733 assert_instr(ld3r)
22734)]
22735#[cfg_attr(
22736 not(target_arch = "arm"),
22737 stable(feature = "neon_intrinsics", since = "1.59.0")
22738)]
22739#[cfg_attr(
22740 target_arch = "arm",
22741 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22742)]
22743pub unsafe fn vld3q_dup_u8(a: *const u8) -> uint8x16x3_t {
22744 let mut ret_val: uint8x16x3_t = transmute(vld3q_dup_s8(transmute(a)));
22745 ret_val.0 = unsafe {
22746 simd_shuffle!(
22747 ret_val.0,
22748 ret_val.0,
22749 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
22750 )
22751 };
22752 ret_val.1 = unsafe {
22753 simd_shuffle!(
22754 ret_val.1,
22755 ret_val.1,
22756 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
22757 )
22758 };
22759 ret_val.2 = unsafe {
22760 simd_shuffle!(
22761 ret_val.2,
22762 ret_val.2,
22763 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
22764 )
22765 };
22766 ret_val
22767}
22768#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22769#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u16)"]
22770#[doc = "## Safety"]
22771#[doc = " * Neon instrinsic unsafe"]
22772#[inline]
22773#[cfg(target_endian = "little")]
22774#[target_feature(enable = "neon")]
22775#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22776#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22777#[cfg_attr(
22778 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22779 assert_instr(ld3r)
22780)]
22781#[cfg_attr(
22782 not(target_arch = "arm"),
22783 stable(feature = "neon_intrinsics", since = "1.59.0")
22784)]
22785#[cfg_attr(
22786 target_arch = "arm",
22787 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22788)]
22789pub unsafe fn vld3_dup_u16(a: *const u16) -> uint16x4x3_t {
22790 transmute(vld3_dup_s16(transmute(a)))
22791}
22792#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22793#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u16)"]
22794#[doc = "## Safety"]
22795#[doc = " * Neon instrinsic unsafe"]
22796#[inline]
22797#[cfg(target_endian = "big")]
22798#[target_feature(enable = "neon")]
22799#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22800#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22801#[cfg_attr(
22802 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22803 assert_instr(ld3r)
22804)]
22805#[cfg_attr(
22806 not(target_arch = "arm"),
22807 stable(feature = "neon_intrinsics", since = "1.59.0")
22808)]
22809#[cfg_attr(
22810 target_arch = "arm",
22811 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22812)]
22813pub unsafe fn vld3_dup_u16(a: *const u16) -> uint16x4x3_t {
22814 let mut ret_val: uint16x4x3_t = transmute(vld3_dup_s16(transmute(a)));
22815 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
22816 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
22817 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
22818 ret_val
22819}
22820#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22821#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u16)"]
22822#[doc = "## Safety"]
22823#[doc = " * Neon instrinsic unsafe"]
22824#[inline]
22825#[cfg(target_endian = "little")]
22826#[target_feature(enable = "neon")]
22827#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22828#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22829#[cfg_attr(
22830 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22831 assert_instr(ld3r)
22832)]
22833#[cfg_attr(
22834 not(target_arch = "arm"),
22835 stable(feature = "neon_intrinsics", since = "1.59.0")
22836)]
22837#[cfg_attr(
22838 target_arch = "arm",
22839 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22840)]
22841pub unsafe fn vld3q_dup_u16(a: *const u16) -> uint16x8x3_t {
22842 transmute(vld3q_dup_s16(transmute(a)))
22843}
22844#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22845#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u16)"]
22846#[doc = "## Safety"]
22847#[doc = " * Neon instrinsic unsafe"]
22848#[inline]
22849#[cfg(target_endian = "big")]
22850#[target_feature(enable = "neon")]
22851#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22852#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22853#[cfg_attr(
22854 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22855 assert_instr(ld3r)
22856)]
22857#[cfg_attr(
22858 not(target_arch = "arm"),
22859 stable(feature = "neon_intrinsics", since = "1.59.0")
22860)]
22861#[cfg_attr(
22862 target_arch = "arm",
22863 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22864)]
22865pub unsafe fn vld3q_dup_u16(a: *const u16) -> uint16x8x3_t {
22866 let mut ret_val: uint16x8x3_t = transmute(vld3q_dup_s16(transmute(a)));
22867 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
22868 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
22869 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
22870 ret_val
22871}
22872#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22873#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u32)"]
22874#[doc = "## Safety"]
22875#[doc = " * Neon instrinsic unsafe"]
22876#[inline]
22877#[cfg(target_endian = "little")]
22878#[target_feature(enable = "neon")]
22879#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22880#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22881#[cfg_attr(
22882 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22883 assert_instr(ld3r)
22884)]
22885#[cfg_attr(
22886 not(target_arch = "arm"),
22887 stable(feature = "neon_intrinsics", since = "1.59.0")
22888)]
22889#[cfg_attr(
22890 target_arch = "arm",
22891 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22892)]
22893pub unsafe fn vld3_dup_u32(a: *const u32) -> uint32x2x3_t {
22894 transmute(vld3_dup_s32(transmute(a)))
22895}
22896#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22897#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u32)"]
22898#[doc = "## Safety"]
22899#[doc = " * Neon instrinsic unsafe"]
22900#[inline]
22901#[cfg(target_endian = "big")]
22902#[target_feature(enable = "neon")]
22903#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22904#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22905#[cfg_attr(
22906 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22907 assert_instr(ld3r)
22908)]
22909#[cfg_attr(
22910 not(target_arch = "arm"),
22911 stable(feature = "neon_intrinsics", since = "1.59.0")
22912)]
22913#[cfg_attr(
22914 target_arch = "arm",
22915 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22916)]
22917pub unsafe fn vld3_dup_u32(a: *const u32) -> uint32x2x3_t {
22918 let mut ret_val: uint32x2x3_t = transmute(vld3_dup_s32(transmute(a)));
22919 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
22920 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
22921 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
22922 ret_val
22923}
22924#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22925#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u32)"]
22926#[doc = "## Safety"]
22927#[doc = " * Neon instrinsic unsafe"]
22928#[inline]
22929#[cfg(target_endian = "little")]
22930#[target_feature(enable = "neon")]
22931#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22932#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22933#[cfg_attr(
22934 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22935 assert_instr(ld3r)
22936)]
22937#[cfg_attr(
22938 not(target_arch = "arm"),
22939 stable(feature = "neon_intrinsics", since = "1.59.0")
22940)]
22941#[cfg_attr(
22942 target_arch = "arm",
22943 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22944)]
22945pub unsafe fn vld3q_dup_u32(a: *const u32) -> uint32x4x3_t {
22946 transmute(vld3q_dup_s32(transmute(a)))
22947}
22948#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22949#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u32)"]
22950#[doc = "## Safety"]
22951#[doc = " * Neon instrinsic unsafe"]
22952#[inline]
22953#[cfg(target_endian = "big")]
22954#[target_feature(enable = "neon")]
22955#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22956#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22957#[cfg_attr(
22958 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22959 assert_instr(ld3r)
22960)]
22961#[cfg_attr(
22962 not(target_arch = "arm"),
22963 stable(feature = "neon_intrinsics", since = "1.59.0")
22964)]
22965#[cfg_attr(
22966 target_arch = "arm",
22967 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22968)]
22969pub unsafe fn vld3q_dup_u32(a: *const u32) -> uint32x4x3_t {
22970 let mut ret_val: uint32x4x3_t = transmute(vld3q_dup_s32(transmute(a)));
22971 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
22972 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
22973 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
22974 ret_val
22975}
22976#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22977#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p8)"]
22978#[doc = "## Safety"]
22979#[doc = " * Neon instrinsic unsafe"]
22980#[inline]
22981#[cfg(target_endian = "little")]
22982#[target_feature(enable = "neon")]
22983#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22984#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22985#[cfg_attr(
22986 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22987 assert_instr(ld3r)
22988)]
22989#[cfg_attr(
22990 not(target_arch = "arm"),
22991 stable(feature = "neon_intrinsics", since = "1.59.0")
22992)]
22993#[cfg_attr(
22994 target_arch = "arm",
22995 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22996)]
22997pub unsafe fn vld3_dup_p8(a: *const p8) -> poly8x8x3_t {
22998 transmute(vld3_dup_s8(transmute(a)))
22999}
23000#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23001#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p8)"]
23002#[doc = "## Safety"]
23003#[doc = " * Neon instrinsic unsafe"]
23004#[inline]
23005#[cfg(target_endian = "big")]
23006#[target_feature(enable = "neon")]
23007#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23008#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23009#[cfg_attr(
23010 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23011 assert_instr(ld3r)
23012)]
23013#[cfg_attr(
23014 not(target_arch = "arm"),
23015 stable(feature = "neon_intrinsics", since = "1.59.0")
23016)]
23017#[cfg_attr(
23018 target_arch = "arm",
23019 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23020)]
23021pub unsafe fn vld3_dup_p8(a: *const p8) -> poly8x8x3_t {
23022 let mut ret_val: poly8x8x3_t = transmute(vld3_dup_s8(transmute(a)));
23023 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
23024 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
23025 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
23026 ret_val
23027}
23028#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23029#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_p8)"]
23030#[doc = "## Safety"]
23031#[doc = " * Neon instrinsic unsafe"]
23032#[inline]
23033#[cfg(target_endian = "little")]
23034#[target_feature(enable = "neon")]
23035#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23036#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23037#[cfg_attr(
23038 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23039 assert_instr(ld3r)
23040)]
23041#[cfg_attr(
23042 not(target_arch = "arm"),
23043 stable(feature = "neon_intrinsics", since = "1.59.0")
23044)]
23045#[cfg_attr(
23046 target_arch = "arm",
23047 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23048)]
23049pub unsafe fn vld3q_dup_p8(a: *const p8) -> poly8x16x3_t {
23050 transmute(vld3q_dup_s8(transmute(a)))
23051}
23052#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23053#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_p8)"]
23054#[doc = "## Safety"]
23055#[doc = " * Neon instrinsic unsafe"]
23056#[inline]
23057#[cfg(target_endian = "big")]
23058#[target_feature(enable = "neon")]
23059#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23060#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23061#[cfg_attr(
23062 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23063 assert_instr(ld3r)
23064)]
23065#[cfg_attr(
23066 not(target_arch = "arm"),
23067 stable(feature = "neon_intrinsics", since = "1.59.0")
23068)]
23069#[cfg_attr(
23070 target_arch = "arm",
23071 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23072)]
23073pub unsafe fn vld3q_dup_p8(a: *const p8) -> poly8x16x3_t {
23074 let mut ret_val: poly8x16x3_t = transmute(vld3q_dup_s8(transmute(a)));
23075 ret_val.0 = unsafe {
23076 simd_shuffle!(
23077 ret_val.0,
23078 ret_val.0,
23079 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23080 )
23081 };
23082 ret_val.1 = unsafe {
23083 simd_shuffle!(
23084 ret_val.1,
23085 ret_val.1,
23086 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23087 )
23088 };
23089 ret_val.2 = unsafe {
23090 simd_shuffle!(
23091 ret_val.2,
23092 ret_val.2,
23093 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23094 )
23095 };
23096 ret_val
23097}
23098#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p16)"]
23100#[doc = "## Safety"]
23101#[doc = " * Neon instrinsic unsafe"]
23102#[inline]
23103#[cfg(target_endian = "little")]
23104#[target_feature(enable = "neon")]
23105#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23106#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23107#[cfg_attr(
23108 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23109 assert_instr(ld3r)
23110)]
23111#[cfg_attr(
23112 not(target_arch = "arm"),
23113 stable(feature = "neon_intrinsics", since = "1.59.0")
23114)]
23115#[cfg_attr(
23116 target_arch = "arm",
23117 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23118)]
23119pub unsafe fn vld3_dup_p16(a: *const p16) -> poly16x4x3_t {
23120 transmute(vld3_dup_s16(transmute(a)))
23121}
23122#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23123#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p16)"]
23124#[doc = "## Safety"]
23125#[doc = " * Neon instrinsic unsafe"]
23126#[inline]
23127#[cfg(target_endian = "big")]
23128#[target_feature(enable = "neon")]
23129#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23130#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23131#[cfg_attr(
23132 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23133 assert_instr(ld3r)
23134)]
23135#[cfg_attr(
23136 not(target_arch = "arm"),
23137 stable(feature = "neon_intrinsics", since = "1.59.0")
23138)]
23139#[cfg_attr(
23140 target_arch = "arm",
23141 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23142)]
23143pub unsafe fn vld3_dup_p16(a: *const p16) -> poly16x4x3_t {
23144 let mut ret_val: poly16x4x3_t = transmute(vld3_dup_s16(transmute(a)));
23145 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
23146 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
23147 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
23148 ret_val
23149}
23150#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23151#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_p16)"]
23152#[doc = "## Safety"]
23153#[doc = " * Neon instrinsic unsafe"]
23154#[inline]
23155#[cfg(target_endian = "little")]
23156#[target_feature(enable = "neon")]
23157#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23158#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23159#[cfg_attr(
23160 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23161 assert_instr(ld3r)
23162)]
23163#[cfg_attr(
23164 not(target_arch = "arm"),
23165 stable(feature = "neon_intrinsics", since = "1.59.0")
23166)]
23167#[cfg_attr(
23168 target_arch = "arm",
23169 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23170)]
23171pub unsafe fn vld3q_dup_p16(a: *const p16) -> poly16x8x3_t {
23172 transmute(vld3q_dup_s16(transmute(a)))
23173}
23174#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23175#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_p16)"]
23176#[doc = "## Safety"]
23177#[doc = " * Neon instrinsic unsafe"]
23178#[inline]
23179#[cfg(target_endian = "big")]
23180#[target_feature(enable = "neon")]
23181#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23182#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23183#[cfg_attr(
23184 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23185 assert_instr(ld3r)
23186)]
23187#[cfg_attr(
23188 not(target_arch = "arm"),
23189 stable(feature = "neon_intrinsics", since = "1.59.0")
23190)]
23191#[cfg_attr(
23192 target_arch = "arm",
23193 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23194)]
23195pub unsafe fn vld3q_dup_p16(a: *const p16) -> poly16x8x3_t {
23196 let mut ret_val: poly16x8x3_t = transmute(vld3q_dup_s16(transmute(a)));
23197 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
23198 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
23199 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
23200 ret_val
23201}
23202#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
23203#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_f16)"]
23204#[doc = "## Safety"]
23205#[doc = " * Neon instrinsic unsafe"]
23206#[inline]
23207#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23208#[cfg(target_arch = "arm")]
23209#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23210#[target_feature(enable = "neon,fp16")]
23211#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23212#[cfg(not(target_arch = "arm64ec"))]
23213pub unsafe fn vld3_f16(a: *const f16) -> float16x4x3_t {
23214 unsafe extern "unadjusted" {
23215 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v4f16.p0")]
23216 fn _vld3_f16(ptr: *const f16, size: i32) -> float16x4x3_t;
23217 }
23218 _vld3_f16(a as _, 2)
23219}
23220#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
23221#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_f16)"]
23222#[doc = "## Safety"]
23223#[doc = " * Neon instrinsic unsafe"]
23224#[inline]
23225#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23226#[cfg(target_arch = "arm")]
23227#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23228#[target_feature(enable = "neon,fp16")]
23229#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23230#[cfg(not(target_arch = "arm64ec"))]
23231pub unsafe fn vld3q_f16(a: *const f16) -> float16x8x3_t {
23232 unsafe extern "unadjusted" {
23233 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v8f16.p0")]
23234 fn _vld3q_f16(ptr: *const f16, size: i32) -> float16x8x3_t;
23235 }
23236 _vld3q_f16(a as _, 2)
23237}
23238#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
23239#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_f16)"]
23240#[doc = "## Safety"]
23241#[doc = " * Neon instrinsic unsafe"]
23242#[inline]
23243#[cfg(not(target_arch = "arm"))]
23244#[cfg_attr(
23245 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23246 assert_instr(ld3)
23247)]
23248#[target_feature(enable = "neon,fp16")]
23249#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23250#[cfg(not(target_arch = "arm64ec"))]
23251pub unsafe fn vld3_f16(a: *const f16) -> float16x4x3_t {
23252 unsafe extern "unadjusted" {
23253 #[cfg_attr(
23254 any(target_arch = "aarch64", target_arch = "arm64ec"),
23255 link_name = "llvm.aarch64.neon.ld3.v4f16.p0"
23256 )]
23257 fn _vld3_f16(ptr: *const f16) -> float16x4x3_t;
23258 }
23259 _vld3_f16(a as _)
23260}
23261#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
23262#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_f16)"]
23263#[doc = "## Safety"]
23264#[doc = " * Neon instrinsic unsafe"]
23265#[inline]
23266#[cfg(not(target_arch = "arm"))]
23267#[cfg_attr(
23268 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23269 assert_instr(ld3)
23270)]
23271#[target_feature(enable = "neon,fp16")]
23272#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23273#[cfg(not(target_arch = "arm64ec"))]
23274pub unsafe fn vld3q_f16(a: *const f16) -> float16x8x3_t {
23275 unsafe extern "unadjusted" {
23276 #[cfg_attr(
23277 any(target_arch = "aarch64", target_arch = "arm64ec"),
23278 link_name = "llvm.aarch64.neon.ld3.v8f16.p0"
23279 )]
23280 fn _vld3q_f16(ptr: *const f16) -> float16x8x3_t;
23281 }
23282 _vld3q_f16(a as _)
23283}
23284#[doc = "Load multiple 3-element structures to three registers"]
23285#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_f32)"]
23286#[doc = "## Safety"]
23287#[doc = " * Neon instrinsic unsafe"]
23288#[inline]
23289#[target_feature(enable = "neon")]
23290#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23291#[cfg(not(target_arch = "arm"))]
23292#[cfg_attr(test, assert_instr(ld3))]
23293pub unsafe fn vld3_f32(a: *const f32) -> float32x2x3_t {
23294 unsafe extern "unadjusted" {
23295 #[cfg_attr(
23296 any(target_arch = "aarch64", target_arch = "arm64ec"),
23297 link_name = "llvm.aarch64.neon.ld3.v2f32.p0"
23298 )]
23299 fn _vld3_f32(ptr: *const float32x2_t) -> float32x2x3_t;
23300 }
23301 _vld3_f32(a as _)
23302}
23303#[doc = "Load multiple 3-element structures to three registers"]
23304#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_f32)"]
23305#[doc = "## Safety"]
23306#[doc = " * Neon instrinsic unsafe"]
23307#[inline]
23308#[target_feature(enable = "neon")]
23309#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23310#[cfg(not(target_arch = "arm"))]
23311#[cfg_attr(test, assert_instr(ld3))]
23312pub unsafe fn vld3q_f32(a: *const f32) -> float32x4x3_t {
23313 unsafe extern "unadjusted" {
23314 #[cfg_attr(
23315 any(target_arch = "aarch64", target_arch = "arm64ec"),
23316 link_name = "llvm.aarch64.neon.ld3.v4f32.p0"
23317 )]
23318 fn _vld3q_f32(ptr: *const float32x4_t) -> float32x4x3_t;
23319 }
23320 _vld3q_f32(a as _)
23321}
23322#[doc = "Load multiple 3-element structures to three registers"]
23323#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s8)"]
23324#[doc = "## Safety"]
23325#[doc = " * Neon instrinsic unsafe"]
23326#[inline]
23327#[target_feature(enable = "neon")]
23328#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23329#[cfg(not(target_arch = "arm"))]
23330#[cfg_attr(test, assert_instr(ld3))]
23331pub unsafe fn vld3_s8(a: *const i8) -> int8x8x3_t {
23332 unsafe extern "unadjusted" {
23333 #[cfg_attr(
23334 any(target_arch = "aarch64", target_arch = "arm64ec"),
23335 link_name = "llvm.aarch64.neon.ld3.v8i8.p0"
23336 )]
23337 fn _vld3_s8(ptr: *const int8x8_t) -> int8x8x3_t;
23338 }
23339 _vld3_s8(a as _)
23340}
23341#[doc = "Load multiple 3-element structures to three registers"]
23342#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s8)"]
23343#[doc = "## Safety"]
23344#[doc = " * Neon instrinsic unsafe"]
23345#[inline]
23346#[target_feature(enable = "neon")]
23347#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23348#[cfg(not(target_arch = "arm"))]
23349#[cfg_attr(test, assert_instr(ld3))]
23350pub unsafe fn vld3q_s8(a: *const i8) -> int8x16x3_t {
23351 unsafe extern "unadjusted" {
23352 #[cfg_attr(
23353 any(target_arch = "aarch64", target_arch = "arm64ec"),
23354 link_name = "llvm.aarch64.neon.ld3.v16i8.p0"
23355 )]
23356 fn _vld3q_s8(ptr: *const int8x16_t) -> int8x16x3_t;
23357 }
23358 _vld3q_s8(a as _)
23359}
23360#[doc = "Load multiple 3-element structures to three registers"]
23361#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s16)"]
23362#[doc = "## Safety"]
23363#[doc = " * Neon instrinsic unsafe"]
23364#[inline]
23365#[target_feature(enable = "neon")]
23366#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23367#[cfg(not(target_arch = "arm"))]
23368#[cfg_attr(test, assert_instr(ld3))]
23369pub unsafe fn vld3_s16(a: *const i16) -> int16x4x3_t {
23370 unsafe extern "unadjusted" {
23371 #[cfg_attr(
23372 any(target_arch = "aarch64", target_arch = "arm64ec"),
23373 link_name = "llvm.aarch64.neon.ld3.v4i16.p0"
23374 )]
23375 fn _vld3_s16(ptr: *const int16x4_t) -> int16x4x3_t;
23376 }
23377 _vld3_s16(a as _)
23378}
23379#[doc = "Load multiple 3-element structures to three registers"]
23380#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s16)"]
23381#[doc = "## Safety"]
23382#[doc = " * Neon instrinsic unsafe"]
23383#[inline]
23384#[target_feature(enable = "neon")]
23385#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23386#[cfg(not(target_arch = "arm"))]
23387#[cfg_attr(test, assert_instr(ld3))]
23388pub unsafe fn vld3q_s16(a: *const i16) -> int16x8x3_t {
23389 unsafe extern "unadjusted" {
23390 #[cfg_attr(
23391 any(target_arch = "aarch64", target_arch = "arm64ec"),
23392 link_name = "llvm.aarch64.neon.ld3.v8i16.p0"
23393 )]
23394 fn _vld3q_s16(ptr: *const int16x8_t) -> int16x8x3_t;
23395 }
23396 _vld3q_s16(a as _)
23397}
23398#[doc = "Load multiple 3-element structures to three registers"]
23399#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s32)"]
23400#[doc = "## Safety"]
23401#[doc = " * Neon instrinsic unsafe"]
23402#[inline]
23403#[target_feature(enable = "neon")]
23404#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23405#[cfg(not(target_arch = "arm"))]
23406#[cfg_attr(test, assert_instr(ld3))]
23407pub unsafe fn vld3_s32(a: *const i32) -> int32x2x3_t {
23408 unsafe extern "unadjusted" {
23409 #[cfg_attr(
23410 any(target_arch = "aarch64", target_arch = "arm64ec"),
23411 link_name = "llvm.aarch64.neon.ld3.v2i32.p0"
23412 )]
23413 fn _vld3_s32(ptr: *const int32x2_t) -> int32x2x3_t;
23414 }
23415 _vld3_s32(a as _)
23416}
23417#[doc = "Load multiple 3-element structures to three registers"]
23418#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s32)"]
23419#[doc = "## Safety"]
23420#[doc = " * Neon instrinsic unsafe"]
23421#[inline]
23422#[target_feature(enable = "neon")]
23423#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23424#[cfg(not(target_arch = "arm"))]
23425#[cfg_attr(test, assert_instr(ld3))]
23426pub unsafe fn vld3q_s32(a: *const i32) -> int32x4x3_t {
23427 unsafe extern "unadjusted" {
23428 #[cfg_attr(
23429 any(target_arch = "aarch64", target_arch = "arm64ec"),
23430 link_name = "llvm.aarch64.neon.ld3.v4i32.p0"
23431 )]
23432 fn _vld3q_s32(ptr: *const int32x4_t) -> int32x4x3_t;
23433 }
23434 _vld3q_s32(a as _)
23435}
23436#[doc = "Load multiple 3-element structures to three registers"]
23437#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_f32)"]
23438#[doc = "## Safety"]
23439#[doc = " * Neon instrinsic unsafe"]
23440#[inline]
23441#[cfg(target_arch = "arm")]
23442#[target_feature(enable = "neon,v7")]
23443#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23444#[cfg_attr(test, assert_instr(vld3))]
23445pub unsafe fn vld3_f32(a: *const f32) -> float32x2x3_t {
23446 unsafe extern "unadjusted" {
23447 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v2f32.p0")]
23448 fn _vld3_f32(ptr: *const i8, size: i32) -> float32x2x3_t;
23449 }
23450 _vld3_f32(a as *const i8, 4)
23451}
23452#[doc = "Load multiple 3-element structures to three registers"]
23453#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_f32)"]
23454#[doc = "## Safety"]
23455#[doc = " * Neon instrinsic unsafe"]
23456#[inline]
23457#[cfg(target_arch = "arm")]
23458#[target_feature(enable = "neon,v7")]
23459#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23460#[cfg_attr(test, assert_instr(vld3))]
23461pub unsafe fn vld3q_f32(a: *const f32) -> float32x4x3_t {
23462 unsafe extern "unadjusted" {
23463 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v4f32.p0")]
23464 fn _vld3q_f32(ptr: *const i8, size: i32) -> float32x4x3_t;
23465 }
23466 _vld3q_f32(a as *const i8, 4)
23467}
23468#[doc = "Load multiple 3-element structures to three registers"]
23469#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s8)"]
23470#[doc = "## Safety"]
23471#[doc = " * Neon instrinsic unsafe"]
23472#[inline]
23473#[cfg(target_arch = "arm")]
23474#[target_feature(enable = "neon,v7")]
23475#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23476#[cfg_attr(test, assert_instr(vld3))]
23477pub unsafe fn vld3_s8(a: *const i8) -> int8x8x3_t {
23478 unsafe extern "unadjusted" {
23479 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v8i8.p0")]
23480 fn _vld3_s8(ptr: *const i8, size: i32) -> int8x8x3_t;
23481 }
23482 _vld3_s8(a as *const i8, 1)
23483}
23484#[doc = "Load multiple 3-element structures to three registers"]
23485#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s8)"]
23486#[doc = "## Safety"]
23487#[doc = " * Neon instrinsic unsafe"]
23488#[inline]
23489#[cfg(target_arch = "arm")]
23490#[target_feature(enable = "neon,v7")]
23491#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23492#[cfg_attr(test, assert_instr(vld3))]
23493pub unsafe fn vld3q_s8(a: *const i8) -> int8x16x3_t {
23494 unsafe extern "unadjusted" {
23495 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v16i8.p0")]
23496 fn _vld3q_s8(ptr: *const i8, size: i32) -> int8x16x3_t;
23497 }
23498 _vld3q_s8(a as *const i8, 1)
23499}
23500#[doc = "Load multiple 3-element structures to three registers"]
23501#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s16)"]
23502#[doc = "## Safety"]
23503#[doc = " * Neon instrinsic unsafe"]
23504#[inline]
23505#[cfg(target_arch = "arm")]
23506#[target_feature(enable = "neon,v7")]
23507#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23508#[cfg_attr(test, assert_instr(vld3))]
23509pub unsafe fn vld3_s16(a: *const i16) -> int16x4x3_t {
23510 unsafe extern "unadjusted" {
23511 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v4i16.p0")]
23512 fn _vld3_s16(ptr: *const i8, size: i32) -> int16x4x3_t;
23513 }
23514 _vld3_s16(a as *const i8, 2)
23515}
23516#[doc = "Load multiple 3-element structures to three registers"]
23517#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s16)"]
23518#[doc = "## Safety"]
23519#[doc = " * Neon instrinsic unsafe"]
23520#[inline]
23521#[cfg(target_arch = "arm")]
23522#[target_feature(enable = "neon,v7")]
23523#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23524#[cfg_attr(test, assert_instr(vld3))]
23525pub unsafe fn vld3q_s16(a: *const i16) -> int16x8x3_t {
23526 unsafe extern "unadjusted" {
23527 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v8i16.p0")]
23528 fn _vld3q_s16(ptr: *const i8, size: i32) -> int16x8x3_t;
23529 }
23530 _vld3q_s16(a as *const i8, 2)
23531}
23532#[doc = "Load multiple 3-element structures to three registers"]
23533#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s32)"]
23534#[doc = "## Safety"]
23535#[doc = " * Neon instrinsic unsafe"]
23536#[inline]
23537#[cfg(target_arch = "arm")]
23538#[target_feature(enable = "neon,v7")]
23539#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23540#[cfg_attr(test, assert_instr(vld3))]
23541pub unsafe fn vld3_s32(a: *const i32) -> int32x2x3_t {
23542 unsafe extern "unadjusted" {
23543 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v2i32.p0")]
23544 fn _vld3_s32(ptr: *const i8, size: i32) -> int32x2x3_t;
23545 }
23546 _vld3_s32(a as *const i8, 4)
23547}
23548#[doc = "Load multiple 3-element structures to three registers"]
23549#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s32)"]
23550#[doc = "## Safety"]
23551#[doc = " * Neon instrinsic unsafe"]
23552#[inline]
23553#[cfg(target_arch = "arm")]
23554#[target_feature(enable = "neon,v7")]
23555#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23556#[cfg_attr(test, assert_instr(vld3))]
23557pub unsafe fn vld3q_s32(a: *const i32) -> int32x4x3_t {
23558 unsafe extern "unadjusted" {
23559 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v4i32.p0")]
23560 fn _vld3q_s32(ptr: *const i8, size: i32) -> int32x4x3_t;
23561 }
23562 _vld3q_s32(a as *const i8, 4)
23563}
23564#[doc = "Load multiple 3-element structures to two registers"]
23565#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_f16)"]
23566#[doc = "## Safety"]
23567#[doc = " * Neon instrinsic unsafe"]
23568#[inline]
23569#[target_feature(enable = "neon,v7")]
23570#[cfg(target_arch = "arm")]
23571#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
23572#[rustc_legacy_const_generics(2)]
23573#[target_feature(enable = "neon,fp16")]
23574#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23575#[cfg(not(target_arch = "arm64ec"))]
23576pub unsafe fn vld3_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x3_t) -> float16x4x3_t {
23577 static_assert_uimm_bits!(LANE, 2);
23578 unsafe extern "unadjusted" {
23579 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v4f16.p0")]
23580 fn _vld3_lane_f16(
23581 ptr: *const f16,
23582 a: float16x4_t,
23583 b: float16x4_t,
23584 c: float16x4_t,
23585 n: i32,
23586 size: i32,
23587 ) -> float16x4x3_t;
23588 }
23589 _vld3_lane_f16(a as _, b.0, b.1, b.2, LANE, 2)
23590}
23591#[doc = "Load multiple 3-element structures to two registers"]
23592#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_f16)"]
23593#[doc = "## Safety"]
23594#[doc = " * Neon instrinsic unsafe"]
23595#[inline]
23596#[target_feature(enable = "neon,v7")]
23597#[cfg(target_arch = "arm")]
23598#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
23599#[rustc_legacy_const_generics(2)]
23600#[target_feature(enable = "neon,fp16")]
23601#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23602#[cfg(not(target_arch = "arm64ec"))]
23603pub unsafe fn vld3q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x3_t) -> float16x8x3_t {
23604 static_assert_uimm_bits!(LANE, 3);
23605 unsafe extern "unadjusted" {
23606 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v8f16.p0")]
23607 fn _vld3q_lane_f16(
23608 ptr: *const f16,
23609 a: float16x8_t,
23610 b: float16x8_t,
23611 c: float16x8_t,
23612 n: i32,
23613 size: i32,
23614 ) -> float16x8x3_t;
23615 }
23616 _vld3q_lane_f16(a as _, b.0, b.1, b.2, LANE, 2)
23617}
23618#[doc = "Load multiple 3-element structures to two registers"]
23619#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_f16)"]
23620#[doc = "## Safety"]
23621#[doc = " * Neon instrinsic unsafe"]
23622#[inline]
23623#[cfg(not(target_arch = "arm"))]
23624#[cfg_attr(
23625 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23626 assert_instr(ld3, LANE = 0)
23627)]
23628#[rustc_legacy_const_generics(2)]
23629#[target_feature(enable = "neon,fp16")]
23630#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23631#[cfg(not(target_arch = "arm64ec"))]
23632pub unsafe fn vld3_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x3_t) -> float16x4x3_t {
23633 static_assert_uimm_bits!(LANE, 2);
23634 unsafe extern "unadjusted" {
23635 #[cfg_attr(
23636 any(target_arch = "aarch64", target_arch = "arm64ec"),
23637 link_name = "llvm.aarch64.neon.ld3lane.v4f16.p0"
23638 )]
23639 fn _vld3_lane_f16(
23640 a: float16x4_t,
23641 b: float16x4_t,
23642 c: float16x4_t,
23643 n: i64,
23644 ptr: *const f16,
23645 ) -> float16x4x3_t;
23646 }
23647 _vld3_lane_f16(b.0, b.1, b.2, LANE as i64, a as _)
23648}
23649#[doc = "Load multiple 3-element structures to two registers"]
23650#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_f16)"]
23651#[doc = "## Safety"]
23652#[doc = " * Neon instrinsic unsafe"]
23653#[inline]
23654#[cfg(not(target_arch = "arm"))]
23655#[cfg_attr(
23656 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23657 assert_instr(ld3, LANE = 0)
23658)]
23659#[rustc_legacy_const_generics(2)]
23660#[target_feature(enable = "neon,fp16")]
23661#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23662#[cfg(not(target_arch = "arm64ec"))]
23663pub unsafe fn vld3q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x3_t) -> float16x8x3_t {
23664 static_assert_uimm_bits!(LANE, 3);
23665 unsafe extern "unadjusted" {
23666 #[cfg_attr(
23667 any(target_arch = "aarch64", target_arch = "arm64ec"),
23668 link_name = "llvm.aarch64.neon.ld3lane.v8f16.p0"
23669 )]
23670 fn _vld3q_lane_f16(
23671 a: float16x8_t,
23672 b: float16x8_t,
23673 c: float16x8_t,
23674 n: i64,
23675 ptr: *const f16,
23676 ) -> float16x8x3_t;
23677 }
23678 _vld3q_lane_f16(b.0, b.1, b.2, LANE as i64, a as _)
23679}
23680#[doc = "Load multiple 3-element structures to three registers"]
23681#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_f32)"]
23682#[doc = "## Safety"]
23683#[doc = " * Neon instrinsic unsafe"]
23684#[inline]
23685#[target_feature(enable = "neon")]
23686#[cfg(not(target_arch = "arm"))]
23687#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
23688#[rustc_legacy_const_generics(2)]
23689#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23690pub unsafe fn vld3_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x3_t) -> float32x2x3_t {
23691 static_assert_uimm_bits!(LANE, 1);
23692 unsafe extern "unadjusted" {
23693 #[cfg_attr(
23694 any(target_arch = "aarch64", target_arch = "arm64ec"),
23695 link_name = "llvm.aarch64.neon.ld3lane.v2f32.p0"
23696 )]
23697 fn _vld3_lane_f32(
23698 a: float32x2_t,
23699 b: float32x2_t,
23700 c: float32x2_t,
23701 n: i64,
23702 ptr: *const i8,
23703 ) -> float32x2x3_t;
23704 }
23705 _vld3_lane_f32(b.0, b.1, b.2, LANE as i64, a as _)
23706}
23707#[doc = "Load multiple 3-element structures to three registers"]
23708#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_f32)"]
23709#[doc = "## Safety"]
23710#[doc = " * Neon instrinsic unsafe"]
23711#[inline]
23712#[target_feature(enable = "neon")]
23713#[cfg(not(target_arch = "arm"))]
23714#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
23715#[rustc_legacy_const_generics(2)]
23716#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23717pub unsafe fn vld3q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x3_t) -> float32x4x3_t {
23718 static_assert_uimm_bits!(LANE, 2);
23719 unsafe extern "unadjusted" {
23720 #[cfg_attr(
23721 any(target_arch = "aarch64", target_arch = "arm64ec"),
23722 link_name = "llvm.aarch64.neon.ld3lane.v4f32.p0"
23723 )]
23724 fn _vld3q_lane_f32(
23725 a: float32x4_t,
23726 b: float32x4_t,
23727 c: float32x4_t,
23728 n: i64,
23729 ptr: *const i8,
23730 ) -> float32x4x3_t;
23731 }
23732 _vld3q_lane_f32(b.0, b.1, b.2, LANE as i64, a as _)
23733}
23734#[doc = "Load multiple 3-element structures to three registers"]
23735#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_f32)"]
23736#[doc = "## Safety"]
23737#[doc = " * Neon instrinsic unsafe"]
23738#[inline]
23739#[cfg(target_arch = "arm")]
23740#[target_feature(enable = "neon,v7")]
23741#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
23742#[rustc_legacy_const_generics(2)]
23743#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23744pub unsafe fn vld3_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x3_t) -> float32x2x3_t {
23745 static_assert_uimm_bits!(LANE, 1);
23746 unsafe extern "unadjusted" {
23747 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v2f32.p0")]
23748 fn _vld3_lane_f32(
23749 ptr: *const i8,
23750 a: float32x2_t,
23751 b: float32x2_t,
23752 c: float32x2_t,
23753 n: i32,
23754 size: i32,
23755 ) -> float32x2x3_t;
23756 }
23757 _vld3_lane_f32(a as _, b.0, b.1, b.2, LANE, 4)
23758}
23759#[doc = "Load multiple 3-element structures to two registers"]
23760#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s8)"]
23761#[doc = "## Safety"]
23762#[doc = " * Neon instrinsic unsafe"]
23763#[inline]
23764#[target_feature(enable = "neon")]
23765#[cfg(not(target_arch = "arm"))]
23766#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
23767#[rustc_legacy_const_generics(2)]
23768#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23769pub unsafe fn vld3_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x3_t) -> int8x8x3_t {
23770 static_assert_uimm_bits!(LANE, 3);
23771 unsafe extern "unadjusted" {
23772 #[cfg_attr(
23773 any(target_arch = "aarch64", target_arch = "arm64ec"),
23774 link_name = "llvm.aarch64.neon.ld3lane.v8i8.p0"
23775 )]
23776 fn _vld3_lane_s8(
23777 a: int8x8_t,
23778 b: int8x8_t,
23779 c: int8x8_t,
23780 n: i64,
23781 ptr: *const i8,
23782 ) -> int8x8x3_t;
23783 }
23784 _vld3_lane_s8(b.0, b.1, b.2, LANE as i64, a as _)
23785}
23786#[doc = "Load multiple 3-element structures to two registers"]
23787#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s16)"]
23788#[doc = "## Safety"]
23789#[doc = " * Neon instrinsic unsafe"]
23790#[inline]
23791#[target_feature(enable = "neon")]
23792#[cfg(not(target_arch = "arm"))]
23793#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
23794#[rustc_legacy_const_generics(2)]
23795#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23796pub unsafe fn vld3_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x3_t) -> int16x4x3_t {
23797 static_assert_uimm_bits!(LANE, 2);
23798 unsafe extern "unadjusted" {
23799 #[cfg_attr(
23800 any(target_arch = "aarch64", target_arch = "arm64ec"),
23801 link_name = "llvm.aarch64.neon.ld3lane.v4i16.p0"
23802 )]
23803 fn _vld3_lane_s16(
23804 a: int16x4_t,
23805 b: int16x4_t,
23806 c: int16x4_t,
23807 n: i64,
23808 ptr: *const i8,
23809 ) -> int16x4x3_t;
23810 }
23811 _vld3_lane_s16(b.0, b.1, b.2, LANE as i64, a as _)
23812}
23813#[doc = "Load multiple 3-element structures to two registers"]
23814#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_s16)"]
23815#[doc = "## Safety"]
23816#[doc = " * Neon instrinsic unsafe"]
23817#[inline]
23818#[target_feature(enable = "neon")]
23819#[cfg(not(target_arch = "arm"))]
23820#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
23821#[rustc_legacy_const_generics(2)]
23822#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23823pub unsafe fn vld3q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x3_t) -> int16x8x3_t {
23824 static_assert_uimm_bits!(LANE, 4);
23825 unsafe extern "unadjusted" {
23826 #[cfg_attr(
23827 any(target_arch = "aarch64", target_arch = "arm64ec"),
23828 link_name = "llvm.aarch64.neon.ld3lane.v8i16.p0"
23829 )]
23830 fn _vld3q_lane_s16(
23831 a: int16x8_t,
23832 b: int16x8_t,
23833 c: int16x8_t,
23834 n: i64,
23835 ptr: *const i8,
23836 ) -> int16x8x3_t;
23837 }
23838 _vld3q_lane_s16(b.0, b.1, b.2, LANE as i64, a as _)
23839}
23840#[doc = "Load multiple 3-element structures to two registers"]
23841#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s32)"]
23842#[doc = "## Safety"]
23843#[doc = " * Neon instrinsic unsafe"]
23844#[inline]
23845#[target_feature(enable = "neon")]
23846#[cfg(not(target_arch = "arm"))]
23847#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
23848#[rustc_legacy_const_generics(2)]
23849#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23850pub unsafe fn vld3_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x3_t) -> int32x2x3_t {
23851 static_assert_uimm_bits!(LANE, 1);
23852 unsafe extern "unadjusted" {
23853 #[cfg_attr(
23854 any(target_arch = "aarch64", target_arch = "arm64ec"),
23855 link_name = "llvm.aarch64.neon.ld3lane.v2i32.p0"
23856 )]
23857 fn _vld3_lane_s32(
23858 a: int32x2_t,
23859 b: int32x2_t,
23860 c: int32x2_t,
23861 n: i64,
23862 ptr: *const i8,
23863 ) -> int32x2x3_t;
23864 }
23865 _vld3_lane_s32(b.0, b.1, b.2, LANE as i64, a as _)
23866}
23867#[doc = "Load multiple 3-element structures to two registers"]
23868#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_s32)"]
23869#[doc = "## Safety"]
23870#[doc = " * Neon instrinsic unsafe"]
23871#[inline]
23872#[target_feature(enable = "neon")]
23873#[cfg(not(target_arch = "arm"))]
23874#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
23875#[rustc_legacy_const_generics(2)]
23876#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23877pub unsafe fn vld3q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x3_t) -> int32x4x3_t {
23878 static_assert_uimm_bits!(LANE, 2);
23879 unsafe extern "unadjusted" {
23880 #[cfg_attr(
23881 any(target_arch = "aarch64", target_arch = "arm64ec"),
23882 link_name = "llvm.aarch64.neon.ld3lane.v4i32.p0"
23883 )]
23884 fn _vld3q_lane_s32(
23885 a: int32x4_t,
23886 b: int32x4_t,
23887 c: int32x4_t,
23888 n: i64,
23889 ptr: *const i8,
23890 ) -> int32x4x3_t;
23891 }
23892 _vld3q_lane_s32(b.0, b.1, b.2, LANE as i64, a as _)
23893}
23894#[doc = "Load multiple 3-element structures to two registers"]
23895#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s8)"]
23896#[doc = "## Safety"]
23897#[doc = " * Neon instrinsic unsafe"]
23898#[inline]
23899#[cfg(target_arch = "arm")]
23900#[target_feature(enable = "neon,v7")]
23901#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
23902#[rustc_legacy_const_generics(2)]
23903#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23904pub unsafe fn vld3_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x3_t) -> int8x8x3_t {
23905 static_assert_uimm_bits!(LANE, 3);
23906 unsafe extern "unadjusted" {
23907 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v8i8.p0")]
23908 fn _vld3_lane_s8(
23909 ptr: *const i8,
23910 a: int8x8_t,
23911 b: int8x8_t,
23912 c: int8x8_t,
23913 n: i32,
23914 size: i32,
23915 ) -> int8x8x3_t;
23916 }
23917 _vld3_lane_s8(a as _, b.0, b.1, b.2, LANE, 1)
23918}
23919#[doc = "Load multiple 3-element structures to two registers"]
23920#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s16)"]
23921#[doc = "## Safety"]
23922#[doc = " * Neon instrinsic unsafe"]
23923#[inline]
23924#[cfg(target_arch = "arm")]
23925#[target_feature(enable = "neon,v7")]
23926#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
23927#[rustc_legacy_const_generics(2)]
23928#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23929pub unsafe fn vld3_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x3_t) -> int16x4x3_t {
23930 static_assert_uimm_bits!(LANE, 2);
23931 unsafe extern "unadjusted" {
23932 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v4i16.p0")]
23933 fn _vld3_lane_s16(
23934 ptr: *const i8,
23935 a: int16x4_t,
23936 b: int16x4_t,
23937 c: int16x4_t,
23938 n: i32,
23939 size: i32,
23940 ) -> int16x4x3_t;
23941 }
23942 _vld3_lane_s16(a as _, b.0, b.1, b.2, LANE, 2)
23943}
23944#[doc = "Load multiple 3-element structures to two registers"]
23945#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_s16)"]
23946#[doc = "## Safety"]
23947#[doc = " * Neon instrinsic unsafe"]
23948#[inline]
23949#[cfg(target_arch = "arm")]
23950#[target_feature(enable = "neon,v7")]
23951#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
23952#[rustc_legacy_const_generics(2)]
23953#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23954pub unsafe fn vld3q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x3_t) -> int16x8x3_t {
23955 static_assert_uimm_bits!(LANE, 3);
23956 unsafe extern "unadjusted" {
23957 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v8i16.p0")]
23958 fn _vld3q_lane_s16(
23959 ptr: *const i8,
23960 a: int16x8_t,
23961 b: int16x8_t,
23962 c: int16x8_t,
23963 n: i32,
23964 size: i32,
23965 ) -> int16x8x3_t;
23966 }
23967 _vld3q_lane_s16(a as _, b.0, b.1, b.2, LANE, 2)
23968}
23969#[doc = "Load multiple 3-element structures to two registers"]
23970#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s32)"]
23971#[doc = "## Safety"]
23972#[doc = " * Neon instrinsic unsafe"]
23973#[inline]
23974#[cfg(target_arch = "arm")]
23975#[target_feature(enable = "neon,v7")]
23976#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
23977#[rustc_legacy_const_generics(2)]
23978#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23979pub unsafe fn vld3_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x3_t) -> int32x2x3_t {
23980 static_assert_uimm_bits!(LANE, 1);
23981 unsafe extern "unadjusted" {
23982 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v2i32.p0")]
23983 fn _vld3_lane_s32(
23984 ptr: *const i8,
23985 a: int32x2_t,
23986 b: int32x2_t,
23987 c: int32x2_t,
23988 n: i32,
23989 size: i32,
23990 ) -> int32x2x3_t;
23991 }
23992 _vld3_lane_s32(a as _, b.0, b.1, b.2, LANE, 4)
23993}
23994#[doc = "Load multiple 3-element structures to two registers"]
23995#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_s32)"]
23996#[doc = "## Safety"]
23997#[doc = " * Neon instrinsic unsafe"]
23998#[inline]
23999#[cfg(target_arch = "arm")]
24000#[target_feature(enable = "neon,v7")]
24001#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
24002#[rustc_legacy_const_generics(2)]
24003#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24004pub unsafe fn vld3q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x3_t) -> int32x4x3_t {
24005 static_assert_uimm_bits!(LANE, 2);
24006 unsafe extern "unadjusted" {
24007 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v4i32.p0")]
24008 fn _vld3q_lane_s32(
24009 ptr: *const i8,
24010 a: int32x4_t,
24011 b: int32x4_t,
24012 c: int32x4_t,
24013 n: i32,
24014 size: i32,
24015 ) -> int32x4x3_t;
24016 }
24017 _vld3q_lane_s32(a as _, b.0, b.1, b.2, LANE, 4)
24018}
24019#[doc = "Load multiple 3-element structures to three registers"]
24020#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_u8)"]
24021#[doc = "## Safety"]
24022#[doc = " * Neon instrinsic unsafe"]
24023#[inline]
24024#[target_feature(enable = "neon")]
24025#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24026#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
24027#[cfg_attr(
24028 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24029 assert_instr(ld3, LANE = 0)
24030)]
24031#[rustc_legacy_const_generics(2)]
24032#[cfg_attr(
24033 not(target_arch = "arm"),
24034 stable(feature = "neon_intrinsics", since = "1.59.0")
24035)]
24036#[cfg_attr(
24037 target_arch = "arm",
24038 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24039)]
24040pub unsafe fn vld3_lane_u8<const LANE: i32>(a: *const u8, b: uint8x8x3_t) -> uint8x8x3_t {
24041 static_assert_uimm_bits!(LANE, 3);
24042 transmute(vld3_lane_s8::<LANE>(transmute(a), transmute(b)))
24043}
24044#[doc = "Load multiple 3-element structures to three registers"]
24045#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_u16)"]
24046#[doc = "## Safety"]
24047#[doc = " * Neon instrinsic unsafe"]
24048#[inline]
24049#[target_feature(enable = "neon")]
24050#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24051#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
24052#[cfg_attr(
24053 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24054 assert_instr(ld3, LANE = 0)
24055)]
24056#[rustc_legacy_const_generics(2)]
24057#[cfg_attr(
24058 not(target_arch = "arm"),
24059 stable(feature = "neon_intrinsics", since = "1.59.0")
24060)]
24061#[cfg_attr(
24062 target_arch = "arm",
24063 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24064)]
24065pub unsafe fn vld3_lane_u16<const LANE: i32>(a: *const u16, b: uint16x4x3_t) -> uint16x4x3_t {
24066 static_assert_uimm_bits!(LANE, 2);
24067 transmute(vld3_lane_s16::<LANE>(transmute(a), transmute(b)))
24068}
24069#[doc = "Load multiple 3-element structures to three registers"]
24070#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_u16)"]
24071#[doc = "## Safety"]
24072#[doc = " * Neon instrinsic unsafe"]
24073#[inline]
24074#[target_feature(enable = "neon")]
24075#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24076#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
24077#[cfg_attr(
24078 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24079 assert_instr(ld3, LANE = 0)
24080)]
24081#[rustc_legacy_const_generics(2)]
24082#[cfg_attr(
24083 not(target_arch = "arm"),
24084 stable(feature = "neon_intrinsics", since = "1.59.0")
24085)]
24086#[cfg_attr(
24087 target_arch = "arm",
24088 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24089)]
24090pub unsafe fn vld3q_lane_u16<const LANE: i32>(a: *const u16, b: uint16x8x3_t) -> uint16x8x3_t {
24091 static_assert_uimm_bits!(LANE, 3);
24092 transmute(vld3q_lane_s16::<LANE>(transmute(a), transmute(b)))
24093}
24094#[doc = "Load multiple 3-element structures to three registers"]
24095#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_u32)"]
24096#[doc = "## Safety"]
24097#[doc = " * Neon instrinsic unsafe"]
24098#[inline]
24099#[target_feature(enable = "neon")]
24100#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24101#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
24102#[cfg_attr(
24103 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24104 assert_instr(ld3, LANE = 0)
24105)]
24106#[rustc_legacy_const_generics(2)]
24107#[cfg_attr(
24108 not(target_arch = "arm"),
24109 stable(feature = "neon_intrinsics", since = "1.59.0")
24110)]
24111#[cfg_attr(
24112 target_arch = "arm",
24113 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24114)]
24115pub unsafe fn vld3_lane_u32<const LANE: i32>(a: *const u32, b: uint32x2x3_t) -> uint32x2x3_t {
24116 static_assert_uimm_bits!(LANE, 1);
24117 transmute(vld3_lane_s32::<LANE>(transmute(a), transmute(b)))
24118}
24119#[doc = "Load multiple 3-element structures to three registers"]
24120#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_u32)"]
24121#[doc = "## Safety"]
24122#[doc = " * Neon instrinsic unsafe"]
24123#[inline]
24124#[target_feature(enable = "neon")]
24125#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24126#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
24127#[cfg_attr(
24128 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24129 assert_instr(ld3, LANE = 0)
24130)]
24131#[rustc_legacy_const_generics(2)]
24132#[cfg_attr(
24133 not(target_arch = "arm"),
24134 stable(feature = "neon_intrinsics", since = "1.59.0")
24135)]
24136#[cfg_attr(
24137 target_arch = "arm",
24138 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24139)]
24140pub unsafe fn vld3q_lane_u32<const LANE: i32>(a: *const u32, b: uint32x4x3_t) -> uint32x4x3_t {
24141 static_assert_uimm_bits!(LANE, 2);
24142 transmute(vld3q_lane_s32::<LANE>(transmute(a), transmute(b)))
24143}
24144#[doc = "Load multiple 3-element structures to three registers"]
24145#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_p8)"]
24146#[doc = "## Safety"]
24147#[doc = " * Neon instrinsic unsafe"]
24148#[inline]
24149#[target_feature(enable = "neon")]
24150#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24151#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
24152#[cfg_attr(
24153 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24154 assert_instr(ld3, LANE = 0)
24155)]
24156#[rustc_legacy_const_generics(2)]
24157#[cfg_attr(
24158 not(target_arch = "arm"),
24159 stable(feature = "neon_intrinsics", since = "1.59.0")
24160)]
24161#[cfg_attr(
24162 target_arch = "arm",
24163 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24164)]
24165pub unsafe fn vld3_lane_p8<const LANE: i32>(a: *const p8, b: poly8x8x3_t) -> poly8x8x3_t {
24166 static_assert_uimm_bits!(LANE, 3);
24167 transmute(vld3_lane_s8::<LANE>(transmute(a), transmute(b)))
24168}
24169#[doc = "Load multiple 3-element structures to three registers"]
24170#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_p16)"]
24171#[doc = "## Safety"]
24172#[doc = " * Neon instrinsic unsafe"]
24173#[inline]
24174#[target_feature(enable = "neon")]
24175#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24176#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
24177#[cfg_attr(
24178 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24179 assert_instr(ld3, LANE = 0)
24180)]
24181#[rustc_legacy_const_generics(2)]
24182#[cfg_attr(
24183 not(target_arch = "arm"),
24184 stable(feature = "neon_intrinsics", since = "1.59.0")
24185)]
24186#[cfg_attr(
24187 target_arch = "arm",
24188 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24189)]
24190pub unsafe fn vld3_lane_p16<const LANE: i32>(a: *const p16, b: poly16x4x3_t) -> poly16x4x3_t {
24191 static_assert_uimm_bits!(LANE, 2);
24192 transmute(vld3_lane_s16::<LANE>(transmute(a), transmute(b)))
24193}
24194#[doc = "Load multiple 3-element structures to three registers"]
24195#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_p16)"]
24196#[doc = "## Safety"]
24197#[doc = " * Neon instrinsic unsafe"]
24198#[inline]
24199#[target_feature(enable = "neon")]
24200#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24201#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
24202#[cfg_attr(
24203 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24204 assert_instr(ld3, LANE = 0)
24205)]
24206#[rustc_legacy_const_generics(2)]
24207#[cfg_attr(
24208 not(target_arch = "arm"),
24209 stable(feature = "neon_intrinsics", since = "1.59.0")
24210)]
24211#[cfg_attr(
24212 target_arch = "arm",
24213 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24214)]
24215pub unsafe fn vld3q_lane_p16<const LANE: i32>(a: *const p16, b: poly16x8x3_t) -> poly16x8x3_t {
24216 static_assert_uimm_bits!(LANE, 3);
24217 transmute(vld3q_lane_s16::<LANE>(transmute(a), transmute(b)))
24218}
24219#[doc = "Load multiple 3-element structures to three registers"]
24220#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_p64)"]
24221#[doc = "## Safety"]
24222#[doc = " * Neon instrinsic unsafe"]
24223#[inline]
24224#[target_feature(enable = "neon,aes")]
24225#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
24226#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
24227#[cfg_attr(
24228 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24229 assert_instr(nop)
24230)]
24231#[cfg_attr(
24232 not(target_arch = "arm"),
24233 stable(feature = "neon_intrinsics", since = "1.59.0")
24234)]
24235#[cfg_attr(
24236 target_arch = "arm",
24237 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24238)]
24239pub unsafe fn vld3_p64(a: *const p64) -> poly64x1x3_t {
24240 transmute(vld3_s64(transmute(a)))
24241}
24242#[doc = "Load multiple 3-element structures to three registers"]
24243#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s64)"]
24244#[doc = "## Safety"]
24245#[doc = " * Neon instrinsic unsafe"]
24246#[inline]
24247#[target_feature(enable = "neon")]
24248#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24249#[cfg(not(target_arch = "arm"))]
24250#[cfg_attr(test, assert_instr(nop))]
24251pub unsafe fn vld3_s64(a: *const i64) -> int64x1x3_t {
24252 unsafe extern "unadjusted" {
24253 #[cfg_attr(
24254 any(target_arch = "aarch64", target_arch = "arm64ec"),
24255 link_name = "llvm.aarch64.neon.ld3.v1i64.p0"
24256 )]
24257 fn _vld3_s64(ptr: *const int64x1_t) -> int64x1x3_t;
24258 }
24259 _vld3_s64(a as _)
24260}
24261#[doc = "Load multiple 3-element structures to three registers"]
24262#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s64)"]
24263#[doc = "## Safety"]
24264#[doc = " * Neon instrinsic unsafe"]
24265#[inline]
24266#[cfg(target_arch = "arm")]
24267#[target_feature(enable = "neon,v7")]
24268#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24269#[cfg_attr(test, assert_instr(nop))]
24270pub unsafe fn vld3_s64(a: *const i64) -> int64x1x3_t {
24271 unsafe extern "unadjusted" {
24272 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v1i64.p0")]
24273 fn _vld3_s64(ptr: *const i8, size: i32) -> int64x1x3_t;
24274 }
24275 _vld3_s64(a as *const i8, 8)
24276}
24277#[doc = "Load multiple 3-element structures to three registers"]
24278#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u64)"]
24279#[doc = "## Safety"]
24280#[doc = " * Neon instrinsic unsafe"]
24281#[inline]
24282#[target_feature(enable = "neon")]
24283#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24284#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
24285#[cfg_attr(
24286 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24287 assert_instr(nop)
24288)]
24289#[cfg_attr(
24290 not(target_arch = "arm"),
24291 stable(feature = "neon_intrinsics", since = "1.59.0")
24292)]
24293#[cfg_attr(
24294 target_arch = "arm",
24295 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24296)]
24297pub unsafe fn vld3_u64(a: *const u64) -> uint64x1x3_t {
24298 transmute(vld3_s64(transmute(a)))
24299}
24300#[doc = "Load multiple 3-element structures to three registers"]
24301#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u8)"]
24302#[doc = "## Safety"]
24303#[doc = " * Neon instrinsic unsafe"]
24304#[inline]
24305#[cfg(target_endian = "little")]
24306#[target_feature(enable = "neon")]
24307#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24308#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24309#[cfg_attr(
24310 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24311 assert_instr(ld3)
24312)]
24313#[cfg_attr(
24314 not(target_arch = "arm"),
24315 stable(feature = "neon_intrinsics", since = "1.59.0")
24316)]
24317#[cfg_attr(
24318 target_arch = "arm",
24319 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24320)]
24321pub unsafe fn vld3_u8(a: *const u8) -> uint8x8x3_t {
24322 transmute(vld3_s8(transmute(a)))
24323}
24324#[doc = "Load multiple 3-element structures to three registers"]
24325#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u8)"]
24326#[doc = "## Safety"]
24327#[doc = " * Neon instrinsic unsafe"]
24328#[inline]
24329#[cfg(target_endian = "big")]
24330#[target_feature(enable = "neon")]
24331#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24332#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24333#[cfg_attr(
24334 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24335 assert_instr(ld3)
24336)]
24337#[cfg_attr(
24338 not(target_arch = "arm"),
24339 stable(feature = "neon_intrinsics", since = "1.59.0")
24340)]
24341#[cfg_attr(
24342 target_arch = "arm",
24343 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24344)]
24345pub unsafe fn vld3_u8(a: *const u8) -> uint8x8x3_t {
24346 let mut ret_val: uint8x8x3_t = transmute(vld3_s8(transmute(a)));
24347 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
24348 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
24349 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
24350 ret_val
24351}
24352#[doc = "Load multiple 3-element structures to three registers"]
24353#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_u8)"]
24354#[doc = "## Safety"]
24355#[doc = " * Neon instrinsic unsafe"]
24356#[inline]
24357#[cfg(target_endian = "little")]
24358#[target_feature(enable = "neon")]
24359#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24360#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24361#[cfg_attr(
24362 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24363 assert_instr(ld3)
24364)]
24365#[cfg_attr(
24366 not(target_arch = "arm"),
24367 stable(feature = "neon_intrinsics", since = "1.59.0")
24368)]
24369#[cfg_attr(
24370 target_arch = "arm",
24371 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24372)]
24373pub unsafe fn vld3q_u8(a: *const u8) -> uint8x16x3_t {
24374 transmute(vld3q_s8(transmute(a)))
24375}
24376#[doc = "Load multiple 3-element structures to three registers"]
24377#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_u8)"]
24378#[doc = "## Safety"]
24379#[doc = " * Neon instrinsic unsafe"]
24380#[inline]
24381#[cfg(target_endian = "big")]
24382#[target_feature(enable = "neon")]
24383#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24384#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24385#[cfg_attr(
24386 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24387 assert_instr(ld3)
24388)]
24389#[cfg_attr(
24390 not(target_arch = "arm"),
24391 stable(feature = "neon_intrinsics", since = "1.59.0")
24392)]
24393#[cfg_attr(
24394 target_arch = "arm",
24395 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24396)]
24397pub unsafe fn vld3q_u8(a: *const u8) -> uint8x16x3_t {
24398 let mut ret_val: uint8x16x3_t = transmute(vld3q_s8(transmute(a)));
24399 ret_val.0 = unsafe {
24400 simd_shuffle!(
24401 ret_val.0,
24402 ret_val.0,
24403 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
24404 )
24405 };
24406 ret_val.1 = unsafe {
24407 simd_shuffle!(
24408 ret_val.1,
24409 ret_val.1,
24410 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
24411 )
24412 };
24413 ret_val.2 = unsafe {
24414 simd_shuffle!(
24415 ret_val.2,
24416 ret_val.2,
24417 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
24418 )
24419 };
24420 ret_val
24421}
24422#[doc = "Load multiple 3-element structures to three registers"]
24423#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u16)"]
24424#[doc = "## Safety"]
24425#[doc = " * Neon instrinsic unsafe"]
24426#[inline]
24427#[cfg(target_endian = "little")]
24428#[target_feature(enable = "neon")]
24429#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24430#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24431#[cfg_attr(
24432 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24433 assert_instr(ld3)
24434)]
24435#[cfg_attr(
24436 not(target_arch = "arm"),
24437 stable(feature = "neon_intrinsics", since = "1.59.0")
24438)]
24439#[cfg_attr(
24440 target_arch = "arm",
24441 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24442)]
24443pub unsafe fn vld3_u16(a: *const u16) -> uint16x4x3_t {
24444 transmute(vld3_s16(transmute(a)))
24445}
24446#[doc = "Load multiple 3-element structures to three registers"]
24447#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u16)"]
24448#[doc = "## Safety"]
24449#[doc = " * Neon instrinsic unsafe"]
24450#[inline]
24451#[cfg(target_endian = "big")]
24452#[target_feature(enable = "neon")]
24453#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24454#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24455#[cfg_attr(
24456 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24457 assert_instr(ld3)
24458)]
24459#[cfg_attr(
24460 not(target_arch = "arm"),
24461 stable(feature = "neon_intrinsics", since = "1.59.0")
24462)]
24463#[cfg_attr(
24464 target_arch = "arm",
24465 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24466)]
24467pub unsafe fn vld3_u16(a: *const u16) -> uint16x4x3_t {
24468 let mut ret_val: uint16x4x3_t = transmute(vld3_s16(transmute(a)));
24469 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
24470 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
24471 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
24472 ret_val
24473}
24474#[doc = "Load multiple 3-element structures to three registers"]
24475#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_u16)"]
24476#[doc = "## Safety"]
24477#[doc = " * Neon instrinsic unsafe"]
24478#[inline]
24479#[cfg(target_endian = "little")]
24480#[target_feature(enable = "neon")]
24481#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24482#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24483#[cfg_attr(
24484 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24485 assert_instr(ld3)
24486)]
24487#[cfg_attr(
24488 not(target_arch = "arm"),
24489 stable(feature = "neon_intrinsics", since = "1.59.0")
24490)]
24491#[cfg_attr(
24492 target_arch = "arm",
24493 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24494)]
24495pub unsafe fn vld3q_u16(a: *const u16) -> uint16x8x3_t {
24496 transmute(vld3q_s16(transmute(a)))
24497}
24498#[doc = "Load multiple 3-element structures to three registers"]
24499#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_u16)"]
24500#[doc = "## Safety"]
24501#[doc = " * Neon instrinsic unsafe"]
24502#[inline]
24503#[cfg(target_endian = "big")]
24504#[target_feature(enable = "neon")]
24505#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24506#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24507#[cfg_attr(
24508 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24509 assert_instr(ld3)
24510)]
24511#[cfg_attr(
24512 not(target_arch = "arm"),
24513 stable(feature = "neon_intrinsics", since = "1.59.0")
24514)]
24515#[cfg_attr(
24516 target_arch = "arm",
24517 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24518)]
24519pub unsafe fn vld3q_u16(a: *const u16) -> uint16x8x3_t {
24520 let mut ret_val: uint16x8x3_t = transmute(vld3q_s16(transmute(a)));
24521 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
24522 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
24523 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
24524 ret_val
24525}
24526#[doc = "Load multiple 3-element structures to three registers"]
24527#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u32)"]
24528#[doc = "## Safety"]
24529#[doc = " * Neon instrinsic unsafe"]
24530#[inline]
24531#[cfg(target_endian = "little")]
24532#[target_feature(enable = "neon")]
24533#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24534#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24535#[cfg_attr(
24536 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24537 assert_instr(ld3)
24538)]
24539#[cfg_attr(
24540 not(target_arch = "arm"),
24541 stable(feature = "neon_intrinsics", since = "1.59.0")
24542)]
24543#[cfg_attr(
24544 target_arch = "arm",
24545 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24546)]
24547pub unsafe fn vld3_u32(a: *const u32) -> uint32x2x3_t {
24548 transmute(vld3_s32(transmute(a)))
24549}
24550#[doc = "Load multiple 3-element structures to three registers"]
24551#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u32)"]
24552#[doc = "## Safety"]
24553#[doc = " * Neon instrinsic unsafe"]
24554#[inline]
24555#[cfg(target_endian = "big")]
24556#[target_feature(enable = "neon")]
24557#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24558#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24559#[cfg_attr(
24560 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24561 assert_instr(ld3)
24562)]
24563#[cfg_attr(
24564 not(target_arch = "arm"),
24565 stable(feature = "neon_intrinsics", since = "1.59.0")
24566)]
24567#[cfg_attr(
24568 target_arch = "arm",
24569 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24570)]
24571pub unsafe fn vld3_u32(a: *const u32) -> uint32x2x3_t {
24572 let mut ret_val: uint32x2x3_t = transmute(vld3_s32(transmute(a)));
24573 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
24574 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
24575 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
24576 ret_val
24577}
24578#[doc = "Load multiple 3-element structures to three registers"]
24579#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_u32)"]
24580#[doc = "## Safety"]
24581#[doc = " * Neon instrinsic unsafe"]
24582#[inline]
24583#[cfg(target_endian = "little")]
24584#[target_feature(enable = "neon")]
24585#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24586#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24587#[cfg_attr(
24588 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24589 assert_instr(ld3)
24590)]
24591#[cfg_attr(
24592 not(target_arch = "arm"),
24593 stable(feature = "neon_intrinsics", since = "1.59.0")
24594)]
24595#[cfg_attr(
24596 target_arch = "arm",
24597 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24598)]
24599pub unsafe fn vld3q_u32(a: *const u32) -> uint32x4x3_t {
24600 transmute(vld3q_s32(transmute(a)))
24601}
24602#[doc = "Load multiple 3-element structures to three registers"]
24603#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_u32)"]
24604#[doc = "## Safety"]
24605#[doc = " * Neon instrinsic unsafe"]
24606#[inline]
24607#[cfg(target_endian = "big")]
24608#[target_feature(enable = "neon")]
24609#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24610#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24611#[cfg_attr(
24612 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24613 assert_instr(ld3)
24614)]
24615#[cfg_attr(
24616 not(target_arch = "arm"),
24617 stable(feature = "neon_intrinsics", since = "1.59.0")
24618)]
24619#[cfg_attr(
24620 target_arch = "arm",
24621 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24622)]
24623pub unsafe fn vld3q_u32(a: *const u32) -> uint32x4x3_t {
24624 let mut ret_val: uint32x4x3_t = transmute(vld3q_s32(transmute(a)));
24625 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
24626 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
24627 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
24628 ret_val
24629}
24630#[doc = "Load multiple 3-element structures to three registers"]
24631#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_p8)"]
24632#[doc = "## Safety"]
24633#[doc = " * Neon instrinsic unsafe"]
24634#[inline]
24635#[cfg(target_endian = "little")]
24636#[target_feature(enable = "neon")]
24637#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24638#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24639#[cfg_attr(
24640 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24641 assert_instr(ld3)
24642)]
24643#[cfg_attr(
24644 not(target_arch = "arm"),
24645 stable(feature = "neon_intrinsics", since = "1.59.0")
24646)]
24647#[cfg_attr(
24648 target_arch = "arm",
24649 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24650)]
24651pub unsafe fn vld3_p8(a: *const p8) -> poly8x8x3_t {
24652 transmute(vld3_s8(transmute(a)))
24653}
24654#[doc = "Load multiple 3-element structures to three registers"]
24655#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_p8)"]
24656#[doc = "## Safety"]
24657#[doc = " * Neon instrinsic unsafe"]
24658#[inline]
24659#[cfg(target_endian = "big")]
24660#[target_feature(enable = "neon")]
24661#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24662#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24663#[cfg_attr(
24664 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24665 assert_instr(ld3)
24666)]
24667#[cfg_attr(
24668 not(target_arch = "arm"),
24669 stable(feature = "neon_intrinsics", since = "1.59.0")
24670)]
24671#[cfg_attr(
24672 target_arch = "arm",
24673 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24674)]
24675pub unsafe fn vld3_p8(a: *const p8) -> poly8x8x3_t {
24676 let mut ret_val: poly8x8x3_t = transmute(vld3_s8(transmute(a)));
24677 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
24678 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
24679 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
24680 ret_val
24681}
24682#[doc = "Load multiple 3-element structures to three registers"]
24683#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_p8)"]
24684#[doc = "## Safety"]
24685#[doc = " * Neon instrinsic unsafe"]
24686#[inline]
24687#[cfg(target_endian = "little")]
24688#[target_feature(enable = "neon")]
24689#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24690#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24691#[cfg_attr(
24692 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24693 assert_instr(ld3)
24694)]
24695#[cfg_attr(
24696 not(target_arch = "arm"),
24697 stable(feature = "neon_intrinsics", since = "1.59.0")
24698)]
24699#[cfg_attr(
24700 target_arch = "arm",
24701 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24702)]
24703pub unsafe fn vld3q_p8(a: *const p8) -> poly8x16x3_t {
24704 transmute(vld3q_s8(transmute(a)))
24705}
24706#[doc = "Load multiple 3-element structures to three registers"]
24707#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_p8)"]
24708#[doc = "## Safety"]
24709#[doc = " * Neon instrinsic unsafe"]
24710#[inline]
24711#[cfg(target_endian = "big")]
24712#[target_feature(enable = "neon")]
24713#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24714#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24715#[cfg_attr(
24716 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24717 assert_instr(ld3)
24718)]
24719#[cfg_attr(
24720 not(target_arch = "arm"),
24721 stable(feature = "neon_intrinsics", since = "1.59.0")
24722)]
24723#[cfg_attr(
24724 target_arch = "arm",
24725 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24726)]
24727pub unsafe fn vld3q_p8(a: *const p8) -> poly8x16x3_t {
24728 let mut ret_val: poly8x16x3_t = transmute(vld3q_s8(transmute(a)));
24729 ret_val.0 = unsafe {
24730 simd_shuffle!(
24731 ret_val.0,
24732 ret_val.0,
24733 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
24734 )
24735 };
24736 ret_val.1 = unsafe {
24737 simd_shuffle!(
24738 ret_val.1,
24739 ret_val.1,
24740 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
24741 )
24742 };
24743 ret_val.2 = unsafe {
24744 simd_shuffle!(
24745 ret_val.2,
24746 ret_val.2,
24747 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
24748 )
24749 };
24750 ret_val
24751}
24752#[doc = "Load multiple 3-element structures to three registers"]
24753#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_p16)"]
24754#[doc = "## Safety"]
24755#[doc = " * Neon instrinsic unsafe"]
24756#[inline]
24757#[cfg(target_endian = "little")]
24758#[target_feature(enable = "neon")]
24759#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24760#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24761#[cfg_attr(
24762 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24763 assert_instr(ld3)
24764)]
24765#[cfg_attr(
24766 not(target_arch = "arm"),
24767 stable(feature = "neon_intrinsics", since = "1.59.0")
24768)]
24769#[cfg_attr(
24770 target_arch = "arm",
24771 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24772)]
24773pub unsafe fn vld3_p16(a: *const p16) -> poly16x4x3_t {
24774 transmute(vld3_s16(transmute(a)))
24775}
24776#[doc = "Load multiple 3-element structures to three registers"]
24777#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_p16)"]
24778#[doc = "## Safety"]
24779#[doc = " * Neon instrinsic unsafe"]
24780#[inline]
24781#[cfg(target_endian = "big")]
24782#[target_feature(enable = "neon")]
24783#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24784#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24785#[cfg_attr(
24786 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24787 assert_instr(ld3)
24788)]
24789#[cfg_attr(
24790 not(target_arch = "arm"),
24791 stable(feature = "neon_intrinsics", since = "1.59.0")
24792)]
24793#[cfg_attr(
24794 target_arch = "arm",
24795 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24796)]
24797pub unsafe fn vld3_p16(a: *const p16) -> poly16x4x3_t {
24798 let mut ret_val: poly16x4x3_t = transmute(vld3_s16(transmute(a)));
24799 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
24800 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
24801 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
24802 ret_val
24803}
24804#[doc = "Load multiple 3-element structures to three registers"]
24805#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_p16)"]
24806#[doc = "## Safety"]
24807#[doc = " * Neon instrinsic unsafe"]
24808#[inline]
24809#[cfg(target_endian = "little")]
24810#[target_feature(enable = "neon")]
24811#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24812#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24813#[cfg_attr(
24814 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24815 assert_instr(ld3)
24816)]
24817#[cfg_attr(
24818 not(target_arch = "arm"),
24819 stable(feature = "neon_intrinsics", since = "1.59.0")
24820)]
24821#[cfg_attr(
24822 target_arch = "arm",
24823 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24824)]
24825pub unsafe fn vld3q_p16(a: *const p16) -> poly16x8x3_t {
24826 transmute(vld3q_s16(transmute(a)))
24827}
24828#[doc = "Load multiple 3-element structures to three registers"]
24829#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_p16)"]
24830#[doc = "## Safety"]
24831#[doc = " * Neon instrinsic unsafe"]
24832#[inline]
24833#[cfg(target_endian = "big")]
24834#[target_feature(enable = "neon")]
24835#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24836#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24837#[cfg_attr(
24838 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24839 assert_instr(ld3)
24840)]
24841#[cfg_attr(
24842 not(target_arch = "arm"),
24843 stable(feature = "neon_intrinsics", since = "1.59.0")
24844)]
24845#[cfg_attr(
24846 target_arch = "arm",
24847 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24848)]
24849pub unsafe fn vld3q_p16(a: *const p16) -> poly16x8x3_t {
24850 let mut ret_val: poly16x8x3_t = transmute(vld3q_s16(transmute(a)));
24851 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
24852 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
24853 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
24854 ret_val
24855}
24856#[doc = "Load multiple 3-element structures to three registers"]
24857#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_f32)"]
24858#[doc = "## Safety"]
24859#[doc = " * Neon instrinsic unsafe"]
24860#[inline]
24861#[cfg(target_arch = "arm")]
24862#[target_feature(enable = "neon,v7")]
24863#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
24864#[rustc_legacy_const_generics(2)]
24865#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24866pub unsafe fn vld3q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x3_t) -> float32x4x3_t {
24867 static_assert_uimm_bits!(LANE, 2);
24868 unsafe extern "unadjusted" {
24869 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v4f32.p0")]
24870 fn _vld3q_lane_f32(
24871 ptr: *const i8,
24872 a: float32x4_t,
24873 b: float32x4_t,
24874 c: float32x4_t,
24875 n: i32,
24876 size: i32,
24877 ) -> float32x4x3_t;
24878 }
24879 _vld3q_lane_f32(a as _, b.0, b.1, b.2, LANE, 4)
24880}
24881#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
24882#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_f16)"]
24883#[doc = "## Safety"]
24884#[doc = " * Neon instrinsic unsafe"]
24885#[inline]
24886#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24887#[cfg(target_arch = "arm")]
24888#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24889#[target_feature(enable = "neon,fp16")]
24890#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24891#[cfg(not(target_arch = "arm64ec"))]
24892pub unsafe fn vld4_dup_f16(a: *const f16) -> float16x4x4_t {
24893 unsafe extern "unadjusted" {
24894 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v4f16.p0")]
24895 fn _vld4_dup_f16(ptr: *const f16, size: i32) -> float16x4x4_t;
24896 }
24897 _vld4_dup_f16(a as _, 2)
24898}
24899#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
24900#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_f16)"]
24901#[doc = "## Safety"]
24902#[doc = " * Neon instrinsic unsafe"]
24903#[inline]
24904#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24905#[cfg(target_arch = "arm")]
24906#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24907#[target_feature(enable = "neon,fp16")]
24908#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24909#[cfg(not(target_arch = "arm64ec"))]
24910pub unsafe fn vld4q_dup_f16(a: *const f16) -> float16x8x4_t {
24911 unsafe extern "unadjusted" {
24912 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v8f16.p0")]
24913 fn _vld4q_dup_f16(ptr: *const f16, size: i32) -> float16x8x4_t;
24914 }
24915 _vld4q_dup_f16(a as _, 2)
24916}
24917#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
24918#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_f16)"]
24919#[doc = "## Safety"]
24920#[doc = " * Neon instrinsic unsafe"]
24921#[inline]
24922#[cfg(not(target_arch = "arm"))]
24923#[cfg_attr(
24924 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24925 assert_instr(ld4r)
24926)]
24927#[target_feature(enable = "neon,fp16")]
24928#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24929#[cfg(not(target_arch = "arm64ec"))]
24930pub unsafe fn vld4_dup_f16(a: *const f16) -> float16x4x4_t {
24931 unsafe extern "unadjusted" {
24932 #[cfg_attr(
24933 any(target_arch = "aarch64", target_arch = "arm64ec"),
24934 link_name = "llvm.aarch64.neon.ld4r.v4f16.p0"
24935 )]
24936 fn _vld4_dup_f16(ptr: *const f16) -> float16x4x4_t;
24937 }
24938 _vld4_dup_f16(a as _)
24939}
24940#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
24941#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_f16)"]
24942#[doc = "## Safety"]
24943#[doc = " * Neon instrinsic unsafe"]
24944#[inline]
24945#[cfg(not(target_arch = "arm"))]
24946#[cfg_attr(
24947 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24948 assert_instr(ld4r)
24949)]
24950#[target_feature(enable = "neon,fp16")]
24951#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24952#[cfg(not(target_arch = "arm64ec"))]
24953pub unsafe fn vld4q_dup_f16(a: *const f16) -> float16x8x4_t {
24954 unsafe extern "unadjusted" {
24955 #[cfg_attr(
24956 any(target_arch = "aarch64", target_arch = "arm64ec"),
24957 link_name = "llvm.aarch64.neon.ld4r.v8f16.p0"
24958 )]
24959 fn _vld4q_dup_f16(ptr: *const f16) -> float16x8x4_t;
24960 }
24961 _vld4q_dup_f16(a as _)
24962}
24963#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
24964#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_f32)"]
24965#[doc = "## Safety"]
24966#[doc = " * Neon instrinsic unsafe"]
24967#[inline]
24968#[cfg(target_arch = "arm")]
24969#[target_feature(enable = "neon,v7")]
24970#[cfg_attr(test, assert_instr(vld4))]
24971#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24972pub unsafe fn vld4_dup_f32(a: *const f32) -> float32x2x4_t {
24973 unsafe extern "unadjusted" {
24974 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v2f32.p0")]
24975 fn _vld4_dup_f32(ptr: *const i8, size: i32) -> float32x2x4_t;
24976 }
24977 _vld4_dup_f32(a as *const i8, 4)
24978}
24979#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
24980#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_f32)"]
24981#[doc = "## Safety"]
24982#[doc = " * Neon instrinsic unsafe"]
24983#[inline]
24984#[cfg(target_arch = "arm")]
24985#[target_feature(enable = "neon,v7")]
24986#[cfg_attr(test, assert_instr(vld4))]
24987#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24988pub unsafe fn vld4q_dup_f32(a: *const f32) -> float32x4x4_t {
24989 unsafe extern "unadjusted" {
24990 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v4f32.p0")]
24991 fn _vld4q_dup_f32(ptr: *const i8, size: i32) -> float32x4x4_t;
24992 }
24993 _vld4q_dup_f32(a as *const i8, 4)
24994}
24995#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
24996#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s8)"]
24997#[doc = "## Safety"]
24998#[doc = " * Neon instrinsic unsafe"]
24999#[inline]
25000#[cfg(target_arch = "arm")]
25001#[target_feature(enable = "neon,v7")]
25002#[cfg_attr(test, assert_instr(vld4))]
25003#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25004pub unsafe fn vld4_dup_s8(a: *const i8) -> int8x8x4_t {
25005 unsafe extern "unadjusted" {
25006 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v8i8.p0")]
25007 fn _vld4_dup_s8(ptr: *const i8, size: i32) -> int8x8x4_t;
25008 }
25009 _vld4_dup_s8(a as *const i8, 1)
25010}
25011#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25012#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s8)"]
25013#[doc = "## Safety"]
25014#[doc = " * Neon instrinsic unsafe"]
25015#[inline]
25016#[cfg(target_arch = "arm")]
25017#[target_feature(enable = "neon,v7")]
25018#[cfg_attr(test, assert_instr(vld4))]
25019#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25020pub unsafe fn vld4q_dup_s8(a: *const i8) -> int8x16x4_t {
25021 unsafe extern "unadjusted" {
25022 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v16i8.p0")]
25023 fn _vld4q_dup_s8(ptr: *const i8, size: i32) -> int8x16x4_t;
25024 }
25025 _vld4q_dup_s8(a as *const i8, 1)
25026}
25027#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25028#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s16)"]
25029#[doc = "## Safety"]
25030#[doc = " * Neon instrinsic unsafe"]
25031#[inline]
25032#[cfg(target_arch = "arm")]
25033#[target_feature(enable = "neon,v7")]
25034#[cfg_attr(test, assert_instr(vld4))]
25035#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25036pub unsafe fn vld4_dup_s16(a: *const i16) -> int16x4x4_t {
25037 unsafe extern "unadjusted" {
25038 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v4i16.p0")]
25039 fn _vld4_dup_s16(ptr: *const i8, size: i32) -> int16x4x4_t;
25040 }
25041 _vld4_dup_s16(a as *const i8, 2)
25042}
25043#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25044#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s16)"]
25045#[doc = "## Safety"]
25046#[doc = " * Neon instrinsic unsafe"]
25047#[inline]
25048#[cfg(target_arch = "arm")]
25049#[target_feature(enable = "neon,v7")]
25050#[cfg_attr(test, assert_instr(vld4))]
25051#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25052pub unsafe fn vld4q_dup_s16(a: *const i16) -> int16x8x4_t {
25053 unsafe extern "unadjusted" {
25054 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v8i16.p0")]
25055 fn _vld4q_dup_s16(ptr: *const i8, size: i32) -> int16x8x4_t;
25056 }
25057 _vld4q_dup_s16(a as *const i8, 2)
25058}
25059#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25060#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s32)"]
25061#[doc = "## Safety"]
25062#[doc = " * Neon instrinsic unsafe"]
25063#[inline]
25064#[cfg(target_arch = "arm")]
25065#[target_feature(enable = "neon,v7")]
25066#[cfg_attr(test, assert_instr(vld4))]
25067#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25068pub unsafe fn vld4_dup_s32(a: *const i32) -> int32x2x4_t {
25069 unsafe extern "unadjusted" {
25070 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v2i32.p0")]
25071 fn _vld4_dup_s32(ptr: *const i8, size: i32) -> int32x2x4_t;
25072 }
25073 _vld4_dup_s32(a as *const i8, 4)
25074}
25075#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25076#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s32)"]
25077#[doc = "## Safety"]
25078#[doc = " * Neon instrinsic unsafe"]
25079#[inline]
25080#[cfg(target_arch = "arm")]
25081#[target_feature(enable = "neon,v7")]
25082#[cfg_attr(test, assert_instr(vld4))]
25083#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25084pub unsafe fn vld4q_dup_s32(a: *const i32) -> int32x4x4_t {
25085 unsafe extern "unadjusted" {
25086 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v4i32.p0")]
25087 fn _vld4q_dup_s32(ptr: *const i8, size: i32) -> int32x4x4_t;
25088 }
25089 _vld4q_dup_s32(a as *const i8, 4)
25090}
25091#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25092#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_f32)"]
25093#[doc = "## Safety"]
25094#[doc = " * Neon instrinsic unsafe"]
25095#[inline]
25096#[target_feature(enable = "neon")]
25097#[cfg(not(target_arch = "arm"))]
25098#[cfg_attr(test, assert_instr(ld4r))]
25099#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25100pub unsafe fn vld4_dup_f32(a: *const f32) -> float32x2x4_t {
25101 unsafe extern "unadjusted" {
25102 #[cfg_attr(
25103 any(target_arch = "aarch64", target_arch = "arm64ec"),
25104 link_name = "llvm.aarch64.neon.ld4r.v2f32.p0.p0"
25105 )]
25106 fn _vld4_dup_f32(ptr: *const f32) -> float32x2x4_t;
25107 }
25108 _vld4_dup_f32(a as _)
25109}
25110#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25111#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_f32)"]
25112#[doc = "## Safety"]
25113#[doc = " * Neon instrinsic unsafe"]
25114#[inline]
25115#[target_feature(enable = "neon")]
25116#[cfg(not(target_arch = "arm"))]
25117#[cfg_attr(test, assert_instr(ld4r))]
25118#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25119pub unsafe fn vld4q_dup_f32(a: *const f32) -> float32x4x4_t {
25120 unsafe extern "unadjusted" {
25121 #[cfg_attr(
25122 any(target_arch = "aarch64", target_arch = "arm64ec"),
25123 link_name = "llvm.aarch64.neon.ld4r.v4f32.p0.p0"
25124 )]
25125 fn _vld4q_dup_f32(ptr: *const f32) -> float32x4x4_t;
25126 }
25127 _vld4q_dup_f32(a as _)
25128}
25129#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25130#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s8)"]
25131#[doc = "## Safety"]
25132#[doc = " * Neon instrinsic unsafe"]
25133#[inline]
25134#[target_feature(enable = "neon")]
25135#[cfg(not(target_arch = "arm"))]
25136#[cfg_attr(test, assert_instr(ld4r))]
25137#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25138pub unsafe fn vld4_dup_s8(a: *const i8) -> int8x8x4_t {
25139 unsafe extern "unadjusted" {
25140 #[cfg_attr(
25141 any(target_arch = "aarch64", target_arch = "arm64ec"),
25142 link_name = "llvm.aarch64.neon.ld4r.v8i8.p0.p0"
25143 )]
25144 fn _vld4_dup_s8(ptr: *const i8) -> int8x8x4_t;
25145 }
25146 _vld4_dup_s8(a as _)
25147}
25148#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25149#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s8)"]
25150#[doc = "## Safety"]
25151#[doc = " * Neon instrinsic unsafe"]
25152#[inline]
25153#[target_feature(enable = "neon")]
25154#[cfg(not(target_arch = "arm"))]
25155#[cfg_attr(test, assert_instr(ld4r))]
25156#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25157pub unsafe fn vld4q_dup_s8(a: *const i8) -> int8x16x4_t {
25158 unsafe extern "unadjusted" {
25159 #[cfg_attr(
25160 any(target_arch = "aarch64", target_arch = "arm64ec"),
25161 link_name = "llvm.aarch64.neon.ld4r.v16i8.p0.p0"
25162 )]
25163 fn _vld4q_dup_s8(ptr: *const i8) -> int8x16x4_t;
25164 }
25165 _vld4q_dup_s8(a as _)
25166}
25167#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25168#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s16)"]
25169#[doc = "## Safety"]
25170#[doc = " * Neon instrinsic unsafe"]
25171#[inline]
25172#[target_feature(enable = "neon")]
25173#[cfg(not(target_arch = "arm"))]
25174#[cfg_attr(test, assert_instr(ld4r))]
25175#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25176pub unsafe fn vld4_dup_s16(a: *const i16) -> int16x4x4_t {
25177 unsafe extern "unadjusted" {
25178 #[cfg_attr(
25179 any(target_arch = "aarch64", target_arch = "arm64ec"),
25180 link_name = "llvm.aarch64.neon.ld4r.v4i16.p0.p0"
25181 )]
25182 fn _vld4_dup_s16(ptr: *const i16) -> int16x4x4_t;
25183 }
25184 _vld4_dup_s16(a as _)
25185}
25186#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25187#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s16)"]
25188#[doc = "## Safety"]
25189#[doc = " * Neon instrinsic unsafe"]
25190#[inline]
25191#[target_feature(enable = "neon")]
25192#[cfg(not(target_arch = "arm"))]
25193#[cfg_attr(test, assert_instr(ld4r))]
25194#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25195pub unsafe fn vld4q_dup_s16(a: *const i16) -> int16x8x4_t {
25196 unsafe extern "unadjusted" {
25197 #[cfg_attr(
25198 any(target_arch = "aarch64", target_arch = "arm64ec"),
25199 link_name = "llvm.aarch64.neon.ld4r.v8i16.p0.p0"
25200 )]
25201 fn _vld4q_dup_s16(ptr: *const i16) -> int16x8x4_t;
25202 }
25203 _vld4q_dup_s16(a as _)
25204}
25205#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25206#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s32)"]
25207#[doc = "## Safety"]
25208#[doc = " * Neon instrinsic unsafe"]
25209#[inline]
25210#[target_feature(enable = "neon")]
25211#[cfg(not(target_arch = "arm"))]
25212#[cfg_attr(test, assert_instr(ld4r))]
25213#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25214pub unsafe fn vld4_dup_s32(a: *const i32) -> int32x2x4_t {
25215 unsafe extern "unadjusted" {
25216 #[cfg_attr(
25217 any(target_arch = "aarch64", target_arch = "arm64ec"),
25218 link_name = "llvm.aarch64.neon.ld4r.v2i32.p0.p0"
25219 )]
25220 fn _vld4_dup_s32(ptr: *const i32) -> int32x2x4_t;
25221 }
25222 _vld4_dup_s32(a as _)
25223}
25224#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25225#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s32)"]
25226#[doc = "## Safety"]
25227#[doc = " * Neon instrinsic unsafe"]
25228#[inline]
25229#[target_feature(enable = "neon")]
25230#[cfg(not(target_arch = "arm"))]
25231#[cfg_attr(test, assert_instr(ld4r))]
25232#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25233pub unsafe fn vld4q_dup_s32(a: *const i32) -> int32x4x4_t {
25234 unsafe extern "unadjusted" {
25235 #[cfg_attr(
25236 any(target_arch = "aarch64", target_arch = "arm64ec"),
25237 link_name = "llvm.aarch64.neon.ld4r.v4i32.p0.p0"
25238 )]
25239 fn _vld4q_dup_s32(ptr: *const i32) -> int32x4x4_t;
25240 }
25241 _vld4q_dup_s32(a as _)
25242}
25243#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25244#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s64)"]
25245#[doc = "## Safety"]
25246#[doc = " * Neon instrinsic unsafe"]
25247#[inline]
25248#[target_feature(enable = "neon")]
25249#[cfg(not(target_arch = "arm"))]
25250#[cfg_attr(test, assert_instr(ld4r))]
25251#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25252pub unsafe fn vld4_dup_s64(a: *const i64) -> int64x1x4_t {
25253 unsafe extern "unadjusted" {
25254 #[cfg_attr(
25255 any(target_arch = "aarch64", target_arch = "arm64ec"),
25256 link_name = "llvm.aarch64.neon.ld4r.v1i64.p0.p0"
25257 )]
25258 fn _vld4_dup_s64(ptr: *const i64) -> int64x1x4_t;
25259 }
25260 _vld4_dup_s64(a as _)
25261}
25262#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25263#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p64)"]
25264#[doc = "## Safety"]
25265#[doc = " * Neon instrinsic unsafe"]
25266#[inline]
25267#[target_feature(enable = "neon,aes")]
25268#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
25269#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
25270#[cfg_attr(
25271 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25272 assert_instr(ld4r)
25273)]
25274#[cfg_attr(
25275 not(target_arch = "arm"),
25276 stable(feature = "neon_intrinsics", since = "1.59.0")
25277)]
25278#[cfg_attr(
25279 target_arch = "arm",
25280 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25281)]
25282pub unsafe fn vld4_dup_p64(a: *const p64) -> poly64x1x4_t {
25283 transmute(vld4_dup_s64(transmute(a)))
25284}
25285#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25286#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s64)"]
25287#[doc = "## Safety"]
25288#[doc = " * Neon instrinsic unsafe"]
25289#[inline]
25290#[cfg(target_arch = "arm")]
25291#[target_feature(enable = "neon,v7")]
25292#[cfg_attr(test, assert_instr(nop))]
25293#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25294pub unsafe fn vld4_dup_s64(a: *const i64) -> int64x1x4_t {
25295 unsafe extern "unadjusted" {
25296 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v1i64.p0")]
25297 fn _vld4_dup_s64(ptr: *const i8, size: i32) -> int64x1x4_t;
25298 }
25299 _vld4_dup_s64(a as *const i8, 8)
25300}
25301#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25302#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u64)"]
25303#[doc = "## Safety"]
25304#[doc = " * Neon instrinsic unsafe"]
25305#[inline]
25306#[target_feature(enable = "neon")]
25307#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25308#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
25309#[cfg_attr(
25310 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25311 assert_instr(ld4r)
25312)]
25313#[cfg_attr(
25314 not(target_arch = "arm"),
25315 stable(feature = "neon_intrinsics", since = "1.59.0")
25316)]
25317#[cfg_attr(
25318 target_arch = "arm",
25319 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25320)]
25321pub unsafe fn vld4_dup_u64(a: *const u64) -> uint64x1x4_t {
25322 transmute(vld4_dup_s64(transmute(a)))
25323}
25324#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25325#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u8)"]
25326#[doc = "## Safety"]
25327#[doc = " * Neon instrinsic unsafe"]
25328#[inline]
25329#[cfg(target_endian = "little")]
25330#[target_feature(enable = "neon")]
25331#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25332#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25333#[cfg_attr(
25334 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25335 assert_instr(ld4r)
25336)]
25337#[cfg_attr(
25338 not(target_arch = "arm"),
25339 stable(feature = "neon_intrinsics", since = "1.59.0")
25340)]
25341#[cfg_attr(
25342 target_arch = "arm",
25343 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25344)]
25345pub unsafe fn vld4_dup_u8(a: *const u8) -> uint8x8x4_t {
25346 transmute(vld4_dup_s8(transmute(a)))
25347}
25348#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25349#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u8)"]
25350#[doc = "## Safety"]
25351#[doc = " * Neon instrinsic unsafe"]
25352#[inline]
25353#[cfg(target_endian = "big")]
25354#[target_feature(enable = "neon")]
25355#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25356#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25357#[cfg_attr(
25358 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25359 assert_instr(ld4r)
25360)]
25361#[cfg_attr(
25362 not(target_arch = "arm"),
25363 stable(feature = "neon_intrinsics", since = "1.59.0")
25364)]
25365#[cfg_attr(
25366 target_arch = "arm",
25367 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25368)]
25369pub unsafe fn vld4_dup_u8(a: *const u8) -> uint8x8x4_t {
25370 let mut ret_val: uint8x8x4_t = transmute(vld4_dup_s8(transmute(a)));
25371 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
25372 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
25373 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
25374 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
25375 ret_val
25376}
25377#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25378#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u8)"]
25379#[doc = "## Safety"]
25380#[doc = " * Neon instrinsic unsafe"]
25381#[inline]
25382#[cfg(target_endian = "little")]
25383#[target_feature(enable = "neon")]
25384#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25385#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25386#[cfg_attr(
25387 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25388 assert_instr(ld4r)
25389)]
25390#[cfg_attr(
25391 not(target_arch = "arm"),
25392 stable(feature = "neon_intrinsics", since = "1.59.0")
25393)]
25394#[cfg_attr(
25395 target_arch = "arm",
25396 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25397)]
25398pub unsafe fn vld4q_dup_u8(a: *const u8) -> uint8x16x4_t {
25399 transmute(vld4q_dup_s8(transmute(a)))
25400}
25401#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25402#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u8)"]
25403#[doc = "## Safety"]
25404#[doc = " * Neon instrinsic unsafe"]
25405#[inline]
25406#[cfg(target_endian = "big")]
25407#[target_feature(enable = "neon")]
25408#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25409#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25410#[cfg_attr(
25411 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25412 assert_instr(ld4r)
25413)]
25414#[cfg_attr(
25415 not(target_arch = "arm"),
25416 stable(feature = "neon_intrinsics", since = "1.59.0")
25417)]
25418#[cfg_attr(
25419 target_arch = "arm",
25420 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25421)]
25422pub unsafe fn vld4q_dup_u8(a: *const u8) -> uint8x16x4_t {
25423 let mut ret_val: uint8x16x4_t = transmute(vld4q_dup_s8(transmute(a)));
25424 ret_val.0 = unsafe {
25425 simd_shuffle!(
25426 ret_val.0,
25427 ret_val.0,
25428 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
25429 )
25430 };
25431 ret_val.1 = unsafe {
25432 simd_shuffle!(
25433 ret_val.1,
25434 ret_val.1,
25435 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
25436 )
25437 };
25438 ret_val.2 = unsafe {
25439 simd_shuffle!(
25440 ret_val.2,
25441 ret_val.2,
25442 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
25443 )
25444 };
25445 ret_val.3 = unsafe {
25446 simd_shuffle!(
25447 ret_val.3,
25448 ret_val.3,
25449 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
25450 )
25451 };
25452 ret_val
25453}
25454#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25455#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u16)"]
25456#[doc = "## Safety"]
25457#[doc = " * Neon instrinsic unsafe"]
25458#[inline]
25459#[cfg(target_endian = "little")]
25460#[target_feature(enable = "neon")]
25461#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25462#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25463#[cfg_attr(
25464 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25465 assert_instr(ld4r)
25466)]
25467#[cfg_attr(
25468 not(target_arch = "arm"),
25469 stable(feature = "neon_intrinsics", since = "1.59.0")
25470)]
25471#[cfg_attr(
25472 target_arch = "arm",
25473 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25474)]
25475pub unsafe fn vld4_dup_u16(a: *const u16) -> uint16x4x4_t {
25476 transmute(vld4_dup_s16(transmute(a)))
25477}
25478#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25479#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u16)"]
25480#[doc = "## Safety"]
25481#[doc = " * Neon instrinsic unsafe"]
25482#[inline]
25483#[cfg(target_endian = "big")]
25484#[target_feature(enable = "neon")]
25485#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25486#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25487#[cfg_attr(
25488 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25489 assert_instr(ld4r)
25490)]
25491#[cfg_attr(
25492 not(target_arch = "arm"),
25493 stable(feature = "neon_intrinsics", since = "1.59.0")
25494)]
25495#[cfg_attr(
25496 target_arch = "arm",
25497 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25498)]
25499pub unsafe fn vld4_dup_u16(a: *const u16) -> uint16x4x4_t {
25500 let mut ret_val: uint16x4x4_t = transmute(vld4_dup_s16(transmute(a)));
25501 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
25502 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
25503 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
25504 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
25505 ret_val
25506}
25507#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25508#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u16)"]
25509#[doc = "## Safety"]
25510#[doc = " * Neon instrinsic unsafe"]
25511#[inline]
25512#[cfg(target_endian = "little")]
25513#[target_feature(enable = "neon")]
25514#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25515#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25516#[cfg_attr(
25517 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25518 assert_instr(ld4r)
25519)]
25520#[cfg_attr(
25521 not(target_arch = "arm"),
25522 stable(feature = "neon_intrinsics", since = "1.59.0")
25523)]
25524#[cfg_attr(
25525 target_arch = "arm",
25526 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25527)]
25528pub unsafe fn vld4q_dup_u16(a: *const u16) -> uint16x8x4_t {
25529 transmute(vld4q_dup_s16(transmute(a)))
25530}
25531#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25532#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u16)"]
25533#[doc = "## Safety"]
25534#[doc = " * Neon instrinsic unsafe"]
25535#[inline]
25536#[cfg(target_endian = "big")]
25537#[target_feature(enable = "neon")]
25538#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25539#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25540#[cfg_attr(
25541 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25542 assert_instr(ld4r)
25543)]
25544#[cfg_attr(
25545 not(target_arch = "arm"),
25546 stable(feature = "neon_intrinsics", since = "1.59.0")
25547)]
25548#[cfg_attr(
25549 target_arch = "arm",
25550 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25551)]
25552pub unsafe fn vld4q_dup_u16(a: *const u16) -> uint16x8x4_t {
25553 let mut ret_val: uint16x8x4_t = transmute(vld4q_dup_s16(transmute(a)));
25554 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
25555 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
25556 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
25557 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
25558 ret_val
25559}
25560#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25561#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u32)"]
25562#[doc = "## Safety"]
25563#[doc = " * Neon instrinsic unsafe"]
25564#[inline]
25565#[cfg(target_endian = "little")]
25566#[target_feature(enable = "neon")]
25567#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25568#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25569#[cfg_attr(
25570 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25571 assert_instr(ld4r)
25572)]
25573#[cfg_attr(
25574 not(target_arch = "arm"),
25575 stable(feature = "neon_intrinsics", since = "1.59.0")
25576)]
25577#[cfg_attr(
25578 target_arch = "arm",
25579 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25580)]
25581pub unsafe fn vld4_dup_u32(a: *const u32) -> uint32x2x4_t {
25582 transmute(vld4_dup_s32(transmute(a)))
25583}
25584#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25585#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u32)"]
25586#[doc = "## Safety"]
25587#[doc = " * Neon instrinsic unsafe"]
25588#[inline]
25589#[cfg(target_endian = "big")]
25590#[target_feature(enable = "neon")]
25591#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25592#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25593#[cfg_attr(
25594 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25595 assert_instr(ld4r)
25596)]
25597#[cfg_attr(
25598 not(target_arch = "arm"),
25599 stable(feature = "neon_intrinsics", since = "1.59.0")
25600)]
25601#[cfg_attr(
25602 target_arch = "arm",
25603 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25604)]
25605pub unsafe fn vld4_dup_u32(a: *const u32) -> uint32x2x4_t {
25606 let mut ret_val: uint32x2x4_t = transmute(vld4_dup_s32(transmute(a)));
25607 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
25608 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
25609 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
25610 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [1, 0]) };
25611 ret_val
25612}
25613#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25614#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u32)"]
25615#[doc = "## Safety"]
25616#[doc = " * Neon instrinsic unsafe"]
25617#[inline]
25618#[cfg(target_endian = "little")]
25619#[target_feature(enable = "neon")]
25620#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25621#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25622#[cfg_attr(
25623 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25624 assert_instr(ld4r)
25625)]
25626#[cfg_attr(
25627 not(target_arch = "arm"),
25628 stable(feature = "neon_intrinsics", since = "1.59.0")
25629)]
25630#[cfg_attr(
25631 target_arch = "arm",
25632 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25633)]
25634pub unsafe fn vld4q_dup_u32(a: *const u32) -> uint32x4x4_t {
25635 transmute(vld4q_dup_s32(transmute(a)))
25636}
25637#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25638#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u32)"]
25639#[doc = "## Safety"]
25640#[doc = " * Neon instrinsic unsafe"]
25641#[inline]
25642#[cfg(target_endian = "big")]
25643#[target_feature(enable = "neon")]
25644#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25645#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25646#[cfg_attr(
25647 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25648 assert_instr(ld4r)
25649)]
25650#[cfg_attr(
25651 not(target_arch = "arm"),
25652 stable(feature = "neon_intrinsics", since = "1.59.0")
25653)]
25654#[cfg_attr(
25655 target_arch = "arm",
25656 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25657)]
25658pub unsafe fn vld4q_dup_u32(a: *const u32) -> uint32x4x4_t {
25659 let mut ret_val: uint32x4x4_t = transmute(vld4q_dup_s32(transmute(a)));
25660 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
25661 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
25662 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
25663 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
25664 ret_val
25665}
25666#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25667#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p8)"]
25668#[doc = "## Safety"]
25669#[doc = " * Neon instrinsic unsafe"]
25670#[inline]
25671#[cfg(target_endian = "little")]
25672#[target_feature(enable = "neon")]
25673#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25674#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25675#[cfg_attr(
25676 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25677 assert_instr(ld4r)
25678)]
25679#[cfg_attr(
25680 not(target_arch = "arm"),
25681 stable(feature = "neon_intrinsics", since = "1.59.0")
25682)]
25683#[cfg_attr(
25684 target_arch = "arm",
25685 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25686)]
25687pub unsafe fn vld4_dup_p8(a: *const p8) -> poly8x8x4_t {
25688 transmute(vld4_dup_s8(transmute(a)))
25689}
25690#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25691#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p8)"]
25692#[doc = "## Safety"]
25693#[doc = " * Neon instrinsic unsafe"]
25694#[inline]
25695#[cfg(target_endian = "big")]
25696#[target_feature(enable = "neon")]
25697#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25698#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25699#[cfg_attr(
25700 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25701 assert_instr(ld4r)
25702)]
25703#[cfg_attr(
25704 not(target_arch = "arm"),
25705 stable(feature = "neon_intrinsics", since = "1.59.0")
25706)]
25707#[cfg_attr(
25708 target_arch = "arm",
25709 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25710)]
25711pub unsafe fn vld4_dup_p8(a: *const p8) -> poly8x8x4_t {
25712 let mut ret_val: poly8x8x4_t = transmute(vld4_dup_s8(transmute(a)));
25713 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
25714 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
25715 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
25716 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
25717 ret_val
25718}
25719#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25720#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_p8)"]
25721#[doc = "## Safety"]
25722#[doc = " * Neon instrinsic unsafe"]
25723#[inline]
25724#[cfg(target_endian = "little")]
25725#[target_feature(enable = "neon")]
25726#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25727#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25728#[cfg_attr(
25729 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25730 assert_instr(ld4r)
25731)]
25732#[cfg_attr(
25733 not(target_arch = "arm"),
25734 stable(feature = "neon_intrinsics", since = "1.59.0")
25735)]
25736#[cfg_attr(
25737 target_arch = "arm",
25738 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25739)]
25740pub unsafe fn vld4q_dup_p8(a: *const p8) -> poly8x16x4_t {
25741 transmute(vld4q_dup_s8(transmute(a)))
25742}
25743#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25744#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_p8)"]
25745#[doc = "## Safety"]
25746#[doc = " * Neon instrinsic unsafe"]
25747#[inline]
25748#[cfg(target_endian = "big")]
25749#[target_feature(enable = "neon")]
25750#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25751#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25752#[cfg_attr(
25753 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25754 assert_instr(ld4r)
25755)]
25756#[cfg_attr(
25757 not(target_arch = "arm"),
25758 stable(feature = "neon_intrinsics", since = "1.59.0")
25759)]
25760#[cfg_attr(
25761 target_arch = "arm",
25762 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25763)]
25764pub unsafe fn vld4q_dup_p8(a: *const p8) -> poly8x16x4_t {
25765 let mut ret_val: poly8x16x4_t = transmute(vld4q_dup_s8(transmute(a)));
25766 ret_val.0 = unsafe {
25767 simd_shuffle!(
25768 ret_val.0,
25769 ret_val.0,
25770 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
25771 )
25772 };
25773 ret_val.1 = unsafe {
25774 simd_shuffle!(
25775 ret_val.1,
25776 ret_val.1,
25777 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
25778 )
25779 };
25780 ret_val.2 = unsafe {
25781 simd_shuffle!(
25782 ret_val.2,
25783 ret_val.2,
25784 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
25785 )
25786 };
25787 ret_val.3 = unsafe {
25788 simd_shuffle!(
25789 ret_val.3,
25790 ret_val.3,
25791 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
25792 )
25793 };
25794 ret_val
25795}
25796#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25797#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p16)"]
25798#[doc = "## Safety"]
25799#[doc = " * Neon instrinsic unsafe"]
25800#[inline]
25801#[cfg(target_endian = "little")]
25802#[target_feature(enable = "neon")]
25803#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25804#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25805#[cfg_attr(
25806 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25807 assert_instr(ld4r)
25808)]
25809#[cfg_attr(
25810 not(target_arch = "arm"),
25811 stable(feature = "neon_intrinsics", since = "1.59.0")
25812)]
25813#[cfg_attr(
25814 target_arch = "arm",
25815 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25816)]
25817pub unsafe fn vld4_dup_p16(a: *const p16) -> poly16x4x4_t {
25818 transmute(vld4_dup_s16(transmute(a)))
25819}
25820#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25821#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p16)"]
25822#[doc = "## Safety"]
25823#[doc = " * Neon instrinsic unsafe"]
25824#[inline]
25825#[cfg(target_endian = "big")]
25826#[target_feature(enable = "neon")]
25827#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25828#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25829#[cfg_attr(
25830 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25831 assert_instr(ld4r)
25832)]
25833#[cfg_attr(
25834 not(target_arch = "arm"),
25835 stable(feature = "neon_intrinsics", since = "1.59.0")
25836)]
25837#[cfg_attr(
25838 target_arch = "arm",
25839 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25840)]
25841pub unsafe fn vld4_dup_p16(a: *const p16) -> poly16x4x4_t {
25842 let mut ret_val: poly16x4x4_t = transmute(vld4_dup_s16(transmute(a)));
25843 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
25844 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
25845 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
25846 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
25847 ret_val
25848}
25849#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25850#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_p16)"]
25851#[doc = "## Safety"]
25852#[doc = " * Neon instrinsic unsafe"]
25853#[inline]
25854#[cfg(target_endian = "little")]
25855#[target_feature(enable = "neon")]
25856#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25857#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25858#[cfg_attr(
25859 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25860 assert_instr(ld4r)
25861)]
25862#[cfg_attr(
25863 not(target_arch = "arm"),
25864 stable(feature = "neon_intrinsics", since = "1.59.0")
25865)]
25866#[cfg_attr(
25867 target_arch = "arm",
25868 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25869)]
25870pub unsafe fn vld4q_dup_p16(a: *const p16) -> poly16x8x4_t {
25871 transmute(vld4q_dup_s16(transmute(a)))
25872}
25873#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25874#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_p16)"]
25875#[doc = "## Safety"]
25876#[doc = " * Neon instrinsic unsafe"]
25877#[inline]
25878#[cfg(target_endian = "big")]
25879#[target_feature(enable = "neon")]
25880#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25881#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25882#[cfg_attr(
25883 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25884 assert_instr(ld4r)
25885)]
25886#[cfg_attr(
25887 not(target_arch = "arm"),
25888 stable(feature = "neon_intrinsics", since = "1.59.0")
25889)]
25890#[cfg_attr(
25891 target_arch = "arm",
25892 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25893)]
25894pub unsafe fn vld4q_dup_p16(a: *const p16) -> poly16x8x4_t {
25895 let mut ret_val: poly16x8x4_t = transmute(vld4q_dup_s16(transmute(a)));
25896 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
25897 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
25898 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
25899 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
25900 ret_val
25901}
25902#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
25903#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_f16)"]
25904#[doc = "## Safety"]
25905#[doc = " * Neon instrinsic unsafe"]
25906#[inline]
25907#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25908#[cfg(target_arch = "arm")]
25909#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25910#[target_feature(enable = "neon,fp16")]
25911#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
25912#[cfg(not(target_arch = "arm64ec"))]
25913pub unsafe fn vld4_f16(a: *const f16) -> float16x4x4_t {
25914 unsafe extern "unadjusted" {
25915 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v4f16.p0")]
25916 fn _vld4_f16(ptr: *const f16, size: i32) -> float16x4x4_t;
25917 }
25918 _vld4_f16(a as _, 2)
25919}
25920#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
25921#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_f16)"]
25922#[doc = "## Safety"]
25923#[doc = " * Neon instrinsic unsafe"]
25924#[inline]
25925#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25926#[cfg(target_arch = "arm")]
25927#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25928#[target_feature(enable = "neon,fp16")]
25929#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
25930#[cfg(not(target_arch = "arm64ec"))]
25931pub unsafe fn vld4q_f16(a: *const f16) -> float16x8x4_t {
25932 unsafe extern "unadjusted" {
25933 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v8f16.p0")]
25934 fn _vld4q_f16(ptr: *const f16, size: i32) -> float16x8x4_t;
25935 }
25936 _vld4q_f16(a as _, 2)
25937}
25938#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
25939#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_f16)"]
25940#[doc = "## Safety"]
25941#[doc = " * Neon instrinsic unsafe"]
25942#[inline]
25943#[cfg(not(target_arch = "arm"))]
25944#[cfg_attr(
25945 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25946 assert_instr(ld4)
25947)]
25948#[target_feature(enable = "neon,fp16")]
25949#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
25950#[cfg(not(target_arch = "arm64ec"))]
25951pub unsafe fn vld4_f16(a: *const f16) -> float16x4x4_t {
25952 unsafe extern "unadjusted" {
25953 #[cfg_attr(
25954 any(target_arch = "aarch64", target_arch = "arm64ec"),
25955 link_name = "llvm.aarch64.neon.ld4.v4f16.p0"
25956 )]
25957 fn _vld4_f16(ptr: *const f16) -> float16x4x4_t;
25958 }
25959 _vld4_f16(a as _)
25960}
25961#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
25962#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_f16)"]
25963#[doc = "## Safety"]
25964#[doc = " * Neon instrinsic unsafe"]
25965#[inline]
25966#[cfg(not(target_arch = "arm"))]
25967#[cfg_attr(
25968 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25969 assert_instr(ld4)
25970)]
25971#[target_feature(enable = "neon,fp16")]
25972#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
25973#[cfg(not(target_arch = "arm64ec"))]
25974pub unsafe fn vld4q_f16(a: *const f16) -> float16x8x4_t {
25975 unsafe extern "unadjusted" {
25976 #[cfg_attr(
25977 any(target_arch = "aarch64", target_arch = "arm64ec"),
25978 link_name = "llvm.aarch64.neon.ld4.v8f16.p0"
25979 )]
25980 fn _vld4q_f16(ptr: *const f16) -> float16x8x4_t;
25981 }
25982 _vld4q_f16(a as _)
25983}
25984#[doc = "Load multiple 4-element structures to four registers"]
25985#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_f32)"]
25986#[doc = "## Safety"]
25987#[doc = " * Neon instrinsic unsafe"]
25988#[inline]
25989#[target_feature(enable = "neon")]
25990#[cfg(not(target_arch = "arm"))]
25991#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25992#[cfg_attr(test, assert_instr(ld4))]
25993pub unsafe fn vld4_f32(a: *const f32) -> float32x2x4_t {
25994 unsafe extern "unadjusted" {
25995 #[cfg_attr(
25996 any(target_arch = "aarch64", target_arch = "arm64ec"),
25997 link_name = "llvm.aarch64.neon.ld4.v2f32.p0"
25998 )]
25999 fn _vld4_f32(ptr: *const float32x2_t) -> float32x2x4_t;
26000 }
26001 _vld4_f32(a as _)
26002}
26003#[doc = "Load multiple 4-element structures to four registers"]
26004#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_f32)"]
26005#[doc = "## Safety"]
26006#[doc = " * Neon instrinsic unsafe"]
26007#[inline]
26008#[target_feature(enable = "neon")]
26009#[cfg(not(target_arch = "arm"))]
26010#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26011#[cfg_attr(test, assert_instr(ld4))]
26012pub unsafe fn vld4q_f32(a: *const f32) -> float32x4x4_t {
26013 unsafe extern "unadjusted" {
26014 #[cfg_attr(
26015 any(target_arch = "aarch64", target_arch = "arm64ec"),
26016 link_name = "llvm.aarch64.neon.ld4.v4f32.p0"
26017 )]
26018 fn _vld4q_f32(ptr: *const float32x4_t) -> float32x4x4_t;
26019 }
26020 _vld4q_f32(a as _)
26021}
26022#[doc = "Load multiple 4-element structures to four registers"]
26023#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s8)"]
26024#[doc = "## Safety"]
26025#[doc = " * Neon instrinsic unsafe"]
26026#[inline]
26027#[target_feature(enable = "neon")]
26028#[cfg(not(target_arch = "arm"))]
26029#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26030#[cfg_attr(test, assert_instr(ld4))]
26031pub unsafe fn vld4_s8(a: *const i8) -> int8x8x4_t {
26032 unsafe extern "unadjusted" {
26033 #[cfg_attr(
26034 any(target_arch = "aarch64", target_arch = "arm64ec"),
26035 link_name = "llvm.aarch64.neon.ld4.v8i8.p0"
26036 )]
26037 fn _vld4_s8(ptr: *const int8x8_t) -> int8x8x4_t;
26038 }
26039 _vld4_s8(a as _)
26040}
26041#[doc = "Load multiple 4-element structures to four registers"]
26042#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s8)"]
26043#[doc = "## Safety"]
26044#[doc = " * Neon instrinsic unsafe"]
26045#[inline]
26046#[target_feature(enable = "neon")]
26047#[cfg(not(target_arch = "arm"))]
26048#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26049#[cfg_attr(test, assert_instr(ld4))]
26050pub unsafe fn vld4q_s8(a: *const i8) -> int8x16x4_t {
26051 unsafe extern "unadjusted" {
26052 #[cfg_attr(
26053 any(target_arch = "aarch64", target_arch = "arm64ec"),
26054 link_name = "llvm.aarch64.neon.ld4.v16i8.p0"
26055 )]
26056 fn _vld4q_s8(ptr: *const int8x16_t) -> int8x16x4_t;
26057 }
26058 _vld4q_s8(a as _)
26059}
26060#[doc = "Load multiple 4-element structures to four registers"]
26061#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s16)"]
26062#[doc = "## Safety"]
26063#[doc = " * Neon instrinsic unsafe"]
26064#[inline]
26065#[target_feature(enable = "neon")]
26066#[cfg(not(target_arch = "arm"))]
26067#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26068#[cfg_attr(test, assert_instr(ld4))]
26069pub unsafe fn vld4_s16(a: *const i16) -> int16x4x4_t {
26070 unsafe extern "unadjusted" {
26071 #[cfg_attr(
26072 any(target_arch = "aarch64", target_arch = "arm64ec"),
26073 link_name = "llvm.aarch64.neon.ld4.v4i16.p0"
26074 )]
26075 fn _vld4_s16(ptr: *const int16x4_t) -> int16x4x4_t;
26076 }
26077 _vld4_s16(a as _)
26078}
26079#[doc = "Load multiple 4-element structures to four registers"]
26080#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s16)"]
26081#[doc = "## Safety"]
26082#[doc = " * Neon instrinsic unsafe"]
26083#[inline]
26084#[target_feature(enable = "neon")]
26085#[cfg(not(target_arch = "arm"))]
26086#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26087#[cfg_attr(test, assert_instr(ld4))]
26088pub unsafe fn vld4q_s16(a: *const i16) -> int16x8x4_t {
26089 unsafe extern "unadjusted" {
26090 #[cfg_attr(
26091 any(target_arch = "aarch64", target_arch = "arm64ec"),
26092 link_name = "llvm.aarch64.neon.ld4.v8i16.p0"
26093 )]
26094 fn _vld4q_s16(ptr: *const int16x8_t) -> int16x8x4_t;
26095 }
26096 _vld4q_s16(a as _)
26097}
26098#[doc = "Load multiple 4-element structures to four registers"]
26099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s32)"]
26100#[doc = "## Safety"]
26101#[doc = " * Neon instrinsic unsafe"]
26102#[inline]
26103#[target_feature(enable = "neon")]
26104#[cfg(not(target_arch = "arm"))]
26105#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26106#[cfg_attr(test, assert_instr(ld4))]
26107pub unsafe fn vld4_s32(a: *const i32) -> int32x2x4_t {
26108 unsafe extern "unadjusted" {
26109 #[cfg_attr(
26110 any(target_arch = "aarch64", target_arch = "arm64ec"),
26111 link_name = "llvm.aarch64.neon.ld4.v2i32.p0"
26112 )]
26113 fn _vld4_s32(ptr: *const int32x2_t) -> int32x2x4_t;
26114 }
26115 _vld4_s32(a as _)
26116}
26117#[doc = "Load multiple 4-element structures to four registers"]
26118#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s32)"]
26119#[doc = "## Safety"]
26120#[doc = " * Neon instrinsic unsafe"]
26121#[inline]
26122#[target_feature(enable = "neon")]
26123#[cfg(not(target_arch = "arm"))]
26124#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26125#[cfg_attr(test, assert_instr(ld4))]
26126pub unsafe fn vld4q_s32(a: *const i32) -> int32x4x4_t {
26127 unsafe extern "unadjusted" {
26128 #[cfg_attr(
26129 any(target_arch = "aarch64", target_arch = "arm64ec"),
26130 link_name = "llvm.aarch64.neon.ld4.v4i32.p0"
26131 )]
26132 fn _vld4q_s32(ptr: *const int32x4_t) -> int32x4x4_t;
26133 }
26134 _vld4q_s32(a as _)
26135}
26136#[doc = "Load multiple 4-element structures to four registers"]
26137#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_f32)"]
26138#[doc = "## Safety"]
26139#[doc = " * Neon instrinsic unsafe"]
26140#[inline]
26141#[target_feature(enable = "neon,v7")]
26142#[cfg(target_arch = "arm")]
26143#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26144#[cfg_attr(test, assert_instr(vld4))]
26145pub unsafe fn vld4_f32(a: *const f32) -> float32x2x4_t {
26146 unsafe extern "unadjusted" {
26147 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v2f32.p0")]
26148 fn _vld4_f32(ptr: *const i8, size: i32) -> float32x2x4_t;
26149 }
26150 _vld4_f32(a as *const i8, 4)
26151}
26152#[doc = "Load multiple 4-element structures to four registers"]
26153#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_f32)"]
26154#[doc = "## Safety"]
26155#[doc = " * Neon instrinsic unsafe"]
26156#[inline]
26157#[target_feature(enable = "neon,v7")]
26158#[cfg(target_arch = "arm")]
26159#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26160#[cfg_attr(test, assert_instr(vld4))]
26161pub unsafe fn vld4q_f32(a: *const f32) -> float32x4x4_t {
26162 unsafe extern "unadjusted" {
26163 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v4f32.p0")]
26164 fn _vld4q_f32(ptr: *const i8, size: i32) -> float32x4x4_t;
26165 }
26166 _vld4q_f32(a as *const i8, 4)
26167}
26168#[doc = "Load multiple 4-element structures to four registers"]
26169#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s8)"]
26170#[doc = "## Safety"]
26171#[doc = " * Neon instrinsic unsafe"]
26172#[inline]
26173#[target_feature(enable = "neon,v7")]
26174#[cfg(target_arch = "arm")]
26175#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26176#[cfg_attr(test, assert_instr(vld4))]
26177pub unsafe fn vld4_s8(a: *const i8) -> int8x8x4_t {
26178 unsafe extern "unadjusted" {
26179 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v8i8.p0")]
26180 fn _vld4_s8(ptr: *const i8, size: i32) -> int8x8x4_t;
26181 }
26182 _vld4_s8(a as *const i8, 1)
26183}
26184#[doc = "Load multiple 4-element structures to four registers"]
26185#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s8)"]
26186#[doc = "## Safety"]
26187#[doc = " * Neon instrinsic unsafe"]
26188#[inline]
26189#[target_feature(enable = "neon,v7")]
26190#[cfg(target_arch = "arm")]
26191#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26192#[cfg_attr(test, assert_instr(vld4))]
26193pub unsafe fn vld4q_s8(a: *const i8) -> int8x16x4_t {
26194 unsafe extern "unadjusted" {
26195 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v16i8.p0")]
26196 fn _vld4q_s8(ptr: *const i8, size: i32) -> int8x16x4_t;
26197 }
26198 _vld4q_s8(a as *const i8, 1)
26199}
26200#[doc = "Load multiple 4-element structures to four registers"]
26201#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s16)"]
26202#[doc = "## Safety"]
26203#[doc = " * Neon instrinsic unsafe"]
26204#[inline]
26205#[target_feature(enable = "neon,v7")]
26206#[cfg(target_arch = "arm")]
26207#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26208#[cfg_attr(test, assert_instr(vld4))]
26209pub unsafe fn vld4_s16(a: *const i16) -> int16x4x4_t {
26210 unsafe extern "unadjusted" {
26211 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v4i16.p0")]
26212 fn _vld4_s16(ptr: *const i8, size: i32) -> int16x4x4_t;
26213 }
26214 _vld4_s16(a as *const i8, 2)
26215}
26216#[doc = "Load multiple 4-element structures to four registers"]
26217#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s16)"]
26218#[doc = "## Safety"]
26219#[doc = " * Neon instrinsic unsafe"]
26220#[inline]
26221#[target_feature(enable = "neon,v7")]
26222#[cfg(target_arch = "arm")]
26223#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26224#[cfg_attr(test, assert_instr(vld4))]
26225pub unsafe fn vld4q_s16(a: *const i16) -> int16x8x4_t {
26226 unsafe extern "unadjusted" {
26227 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v8i16.p0")]
26228 fn _vld4q_s16(ptr: *const i8, size: i32) -> int16x8x4_t;
26229 }
26230 _vld4q_s16(a as *const i8, 2)
26231}
26232#[doc = "Load multiple 4-element structures to four registers"]
26233#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s32)"]
26234#[doc = "## Safety"]
26235#[doc = " * Neon instrinsic unsafe"]
26236#[inline]
26237#[target_feature(enable = "neon,v7")]
26238#[cfg(target_arch = "arm")]
26239#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26240#[cfg_attr(test, assert_instr(vld4))]
26241pub unsafe fn vld4_s32(a: *const i32) -> int32x2x4_t {
26242 unsafe extern "unadjusted" {
26243 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v2i32.p0")]
26244 fn _vld4_s32(ptr: *const i8, size: i32) -> int32x2x4_t;
26245 }
26246 _vld4_s32(a as *const i8, 4)
26247}
26248#[doc = "Load multiple 4-element structures to four registers"]
26249#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s32)"]
26250#[doc = "## Safety"]
26251#[doc = " * Neon instrinsic unsafe"]
26252#[inline]
26253#[target_feature(enable = "neon,v7")]
26254#[cfg(target_arch = "arm")]
26255#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26256#[cfg_attr(test, assert_instr(vld4))]
26257pub unsafe fn vld4q_s32(a: *const i32) -> int32x4x4_t {
26258 unsafe extern "unadjusted" {
26259 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v4i32.p0")]
26260 fn _vld4q_s32(ptr: *const i8, size: i32) -> int32x4x4_t;
26261 }
26262 _vld4q_s32(a as *const i8, 4)
26263}
26264#[doc = "Load multiple 4-element structures to two registers"]
26265#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_f16)"]
26266#[doc = "## Safety"]
26267#[doc = " * Neon instrinsic unsafe"]
26268#[inline]
26269#[target_feature(enable = "neon,v7")]
26270#[cfg(target_arch = "arm")]
26271#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
26272#[rustc_legacy_const_generics(2)]
26273#[target_feature(enable = "neon,fp16")]
26274#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
26275#[cfg(not(target_arch = "arm64ec"))]
26276pub unsafe fn vld4_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x4_t) -> float16x4x4_t {
26277 static_assert_uimm_bits!(LANE, 2);
26278 unsafe extern "unadjusted" {
26279 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v4f16.p0")]
26280 fn _vld4_lane_f16(
26281 ptr: *const f16,
26282 a: float16x4_t,
26283 b: float16x4_t,
26284 c: float16x4_t,
26285 d: float16x4_t,
26286 n: i32,
26287 size: i32,
26288 ) -> float16x4x4_t;
26289 }
26290 _vld4_lane_f16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
26291}
26292#[doc = "Load multiple 4-element structures to two registers"]
26293#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_f16)"]
26294#[doc = "## Safety"]
26295#[doc = " * Neon instrinsic unsafe"]
26296#[inline]
26297#[target_feature(enable = "neon,v7")]
26298#[cfg(target_arch = "arm")]
26299#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
26300#[rustc_legacy_const_generics(2)]
26301#[target_feature(enable = "neon,fp16")]
26302#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
26303#[cfg(not(target_arch = "arm64ec"))]
26304pub unsafe fn vld4q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x4_t) -> float16x8x4_t {
26305 static_assert_uimm_bits!(LANE, 3);
26306 unsafe extern "unadjusted" {
26307 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v8f16.p0")]
26308 fn _vld4q_lane_f16(
26309 ptr: *const f16,
26310 a: float16x8_t,
26311 b: float16x8_t,
26312 c: float16x8_t,
26313 d: float16x8_t,
26314 n: i32,
26315 size: i32,
26316 ) -> float16x8x4_t;
26317 }
26318 _vld4q_lane_f16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
26319}
26320#[doc = "Load multiple 4-element structures to two registers"]
26321#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_f16)"]
26322#[doc = "## Safety"]
26323#[doc = " * Neon instrinsic unsafe"]
26324#[inline]
26325#[cfg(not(target_arch = "arm"))]
26326#[cfg_attr(
26327 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26328 assert_instr(ld4, LANE = 0)
26329)]
26330#[rustc_legacy_const_generics(2)]
26331#[target_feature(enable = "neon,fp16")]
26332#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
26333#[cfg(not(target_arch = "arm64ec"))]
26334pub unsafe fn vld4_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x4_t) -> float16x4x4_t {
26335 static_assert_uimm_bits!(LANE, 2);
26336 unsafe extern "unadjusted" {
26337 #[cfg_attr(
26338 any(target_arch = "aarch64", target_arch = "arm64ec"),
26339 link_name = "llvm.aarch64.neon.ld4lane.v4f16.p0"
26340 )]
26341 fn _vld4_lane_f16(
26342 a: float16x4_t,
26343 b: float16x4_t,
26344 c: float16x4_t,
26345 d: float16x4_t,
26346 n: i64,
26347 ptr: *const f16,
26348 ) -> float16x4x4_t;
26349 }
26350 _vld4_lane_f16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
26351}
26352#[doc = "Load multiple 4-element structures to two registers"]
26353#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_f16)"]
26354#[doc = "## Safety"]
26355#[doc = " * Neon instrinsic unsafe"]
26356#[inline]
26357#[cfg(not(target_arch = "arm"))]
26358#[cfg_attr(
26359 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26360 assert_instr(ld4, LANE = 0)
26361)]
26362#[rustc_legacy_const_generics(2)]
26363#[target_feature(enable = "neon,fp16")]
26364#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
26365#[cfg(not(target_arch = "arm64ec"))]
26366pub unsafe fn vld4q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x4_t) -> float16x8x4_t {
26367 static_assert_uimm_bits!(LANE, 3);
26368 unsafe extern "unadjusted" {
26369 #[cfg_attr(
26370 any(target_arch = "aarch64", target_arch = "arm64ec"),
26371 link_name = "llvm.aarch64.neon.ld4lane.v8f16.p0"
26372 )]
26373 fn _vld4q_lane_f16(
26374 a: float16x8_t,
26375 b: float16x8_t,
26376 c: float16x8_t,
26377 d: float16x8_t,
26378 n: i64,
26379 ptr: *const f16,
26380 ) -> float16x8x4_t;
26381 }
26382 _vld4q_lane_f16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
26383}
26384#[doc = "Load multiple 4-element structures to four registers"]
26385#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_f32)"]
26386#[doc = "## Safety"]
26387#[doc = " * Neon instrinsic unsafe"]
26388#[inline]
26389#[target_feature(enable = "neon")]
26390#[cfg(not(target_arch = "arm"))]
26391#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
26392#[rustc_legacy_const_generics(2)]
26393#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26394pub unsafe fn vld4_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x4_t) -> float32x2x4_t {
26395 static_assert_uimm_bits!(LANE, 1);
26396 unsafe extern "unadjusted" {
26397 #[cfg_attr(
26398 any(target_arch = "aarch64", target_arch = "arm64ec"),
26399 link_name = "llvm.aarch64.neon.ld4lane.v2f32.p0"
26400 )]
26401 fn _vld4_lane_f32(
26402 a: float32x2_t,
26403 b: float32x2_t,
26404 c: float32x2_t,
26405 d: float32x2_t,
26406 n: i64,
26407 ptr: *const i8,
26408 ) -> float32x2x4_t;
26409 }
26410 _vld4_lane_f32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
26411}
26412#[doc = "Load multiple 4-element structures to four registers"]
26413#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_f32)"]
26414#[doc = "## Safety"]
26415#[doc = " * Neon instrinsic unsafe"]
26416#[inline]
26417#[target_feature(enable = "neon")]
26418#[cfg(not(target_arch = "arm"))]
26419#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
26420#[rustc_legacy_const_generics(2)]
26421#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26422pub unsafe fn vld4q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x4_t) -> float32x4x4_t {
26423 static_assert_uimm_bits!(LANE, 2);
26424 unsafe extern "unadjusted" {
26425 #[cfg_attr(
26426 any(target_arch = "aarch64", target_arch = "arm64ec"),
26427 link_name = "llvm.aarch64.neon.ld4lane.v4f32.p0"
26428 )]
26429 fn _vld4q_lane_f32(
26430 a: float32x4_t,
26431 b: float32x4_t,
26432 c: float32x4_t,
26433 d: float32x4_t,
26434 n: i64,
26435 ptr: *const i8,
26436 ) -> float32x4x4_t;
26437 }
26438 _vld4q_lane_f32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
26439}
26440#[doc = "Load multiple 4-element structures to four registers"]
26441#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s8)"]
26442#[doc = "## Safety"]
26443#[doc = " * Neon instrinsic unsafe"]
26444#[inline]
26445#[target_feature(enable = "neon")]
26446#[cfg(not(target_arch = "arm"))]
26447#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
26448#[rustc_legacy_const_generics(2)]
26449#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26450pub unsafe fn vld4_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x4_t) -> int8x8x4_t {
26451 static_assert_uimm_bits!(LANE, 3);
26452 unsafe extern "unadjusted" {
26453 #[cfg_attr(
26454 any(target_arch = "aarch64", target_arch = "arm64ec"),
26455 link_name = "llvm.aarch64.neon.ld4lane.v8i8.p0"
26456 )]
26457 fn _vld4_lane_s8(
26458 a: int8x8_t,
26459 b: int8x8_t,
26460 c: int8x8_t,
26461 d: int8x8_t,
26462 n: i64,
26463 ptr: *const i8,
26464 ) -> int8x8x4_t;
26465 }
26466 _vld4_lane_s8(b.0, b.1, b.2, b.3, LANE as i64, a as _)
26467}
26468#[doc = "Load multiple 4-element structures to four registers"]
26469#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s16)"]
26470#[doc = "## Safety"]
26471#[doc = " * Neon instrinsic unsafe"]
26472#[inline]
26473#[target_feature(enable = "neon")]
26474#[cfg(not(target_arch = "arm"))]
26475#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
26476#[rustc_legacy_const_generics(2)]
26477#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26478pub unsafe fn vld4_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x4_t) -> int16x4x4_t {
26479 static_assert_uimm_bits!(LANE, 2);
26480 unsafe extern "unadjusted" {
26481 #[cfg_attr(
26482 any(target_arch = "aarch64", target_arch = "arm64ec"),
26483 link_name = "llvm.aarch64.neon.ld4lane.v4i16.p0"
26484 )]
26485 fn _vld4_lane_s16(
26486 a: int16x4_t,
26487 b: int16x4_t,
26488 c: int16x4_t,
26489 d: int16x4_t,
26490 n: i64,
26491 ptr: *const i8,
26492 ) -> int16x4x4_t;
26493 }
26494 _vld4_lane_s16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
26495}
26496#[doc = "Load multiple 4-element structures to four registers"]
26497#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_s16)"]
26498#[doc = "## Safety"]
26499#[doc = " * Neon instrinsic unsafe"]
26500#[inline]
26501#[target_feature(enable = "neon")]
26502#[cfg(not(target_arch = "arm"))]
26503#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
26504#[rustc_legacy_const_generics(2)]
26505#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26506pub unsafe fn vld4q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x4_t) -> int16x8x4_t {
26507 static_assert_uimm_bits!(LANE, 3);
26508 unsafe extern "unadjusted" {
26509 #[cfg_attr(
26510 any(target_arch = "aarch64", target_arch = "arm64ec"),
26511 link_name = "llvm.aarch64.neon.ld4lane.v8i16.p0"
26512 )]
26513 fn _vld4q_lane_s16(
26514 a: int16x8_t,
26515 b: int16x8_t,
26516 c: int16x8_t,
26517 d: int16x8_t,
26518 n: i64,
26519 ptr: *const i8,
26520 ) -> int16x8x4_t;
26521 }
26522 _vld4q_lane_s16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
26523}
26524#[doc = "Load multiple 4-element structures to four registers"]
26525#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s32)"]
26526#[doc = "## Safety"]
26527#[doc = " * Neon instrinsic unsafe"]
26528#[inline]
26529#[target_feature(enable = "neon")]
26530#[cfg(not(target_arch = "arm"))]
26531#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
26532#[rustc_legacy_const_generics(2)]
26533#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26534pub unsafe fn vld4_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x4_t) -> int32x2x4_t {
26535 static_assert_uimm_bits!(LANE, 1);
26536 unsafe extern "unadjusted" {
26537 #[cfg_attr(
26538 any(target_arch = "aarch64", target_arch = "arm64ec"),
26539 link_name = "llvm.aarch64.neon.ld4lane.v2i32.p0"
26540 )]
26541 fn _vld4_lane_s32(
26542 a: int32x2_t,
26543 b: int32x2_t,
26544 c: int32x2_t,
26545 d: int32x2_t,
26546 n: i64,
26547 ptr: *const i8,
26548 ) -> int32x2x4_t;
26549 }
26550 _vld4_lane_s32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
26551}
26552#[doc = "Load multiple 4-element structures to four registers"]
26553#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_s32)"]
26554#[doc = "## Safety"]
26555#[doc = " * Neon instrinsic unsafe"]
26556#[inline]
26557#[target_feature(enable = "neon")]
26558#[cfg(not(target_arch = "arm"))]
26559#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
26560#[rustc_legacy_const_generics(2)]
26561#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26562pub unsafe fn vld4q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x4_t) -> int32x4x4_t {
26563 static_assert_uimm_bits!(LANE, 2);
26564 unsafe extern "unadjusted" {
26565 #[cfg_attr(
26566 any(target_arch = "aarch64", target_arch = "arm64ec"),
26567 link_name = "llvm.aarch64.neon.ld4lane.v4i32.p0"
26568 )]
26569 fn _vld4q_lane_s32(
26570 a: int32x4_t,
26571 b: int32x4_t,
26572 c: int32x4_t,
26573 d: int32x4_t,
26574 n: i64,
26575 ptr: *const i8,
26576 ) -> int32x4x4_t;
26577 }
26578 _vld4q_lane_s32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
26579}
26580#[doc = "Load multiple 4-element structures to four registers"]
26581#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_f32)"]
26582#[doc = "## Safety"]
26583#[doc = " * Neon instrinsic unsafe"]
26584#[inline]
26585#[target_feature(enable = "neon,v7")]
26586#[cfg(target_arch = "arm")]
26587#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
26588#[rustc_legacy_const_generics(2)]
26589#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26590pub unsafe fn vld4_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x4_t) -> float32x2x4_t {
26591 static_assert_uimm_bits!(LANE, 1);
26592 unsafe extern "unadjusted" {
26593 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v2f32.p0")]
26594 fn _vld4_lane_f32(
26595 ptr: *const i8,
26596 a: float32x2_t,
26597 b: float32x2_t,
26598 c: float32x2_t,
26599 d: float32x2_t,
26600 n: i32,
26601 size: i32,
26602 ) -> float32x2x4_t;
26603 }
26604 _vld4_lane_f32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
26605}
26606#[doc = "Load multiple 4-element structures to four registers"]
26607#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_f32)"]
26608#[doc = "## Safety"]
26609#[doc = " * Neon instrinsic unsafe"]
26610#[inline]
26611#[target_feature(enable = "neon,v7")]
26612#[cfg(target_arch = "arm")]
26613#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
26614#[rustc_legacy_const_generics(2)]
26615#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26616pub unsafe fn vld4q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x4_t) -> float32x4x4_t {
26617 static_assert_uimm_bits!(LANE, 2);
26618 unsafe extern "unadjusted" {
26619 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v4f32.p0")]
26620 fn _vld4q_lane_f32(
26621 ptr: *const i8,
26622 a: float32x4_t,
26623 b: float32x4_t,
26624 c: float32x4_t,
26625 d: float32x4_t,
26626 n: i32,
26627 size: i32,
26628 ) -> float32x4x4_t;
26629 }
26630 _vld4q_lane_f32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
26631}
26632#[doc = "Load multiple 4-element structures to four registers"]
26633#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s8)"]
26634#[doc = "## Safety"]
26635#[doc = " * Neon instrinsic unsafe"]
26636#[inline]
26637#[target_feature(enable = "neon,v7")]
26638#[cfg(target_arch = "arm")]
26639#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
26640#[rustc_legacy_const_generics(2)]
26641#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26642pub unsafe fn vld4_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x4_t) -> int8x8x4_t {
26643 static_assert_uimm_bits!(LANE, 3);
26644 unsafe extern "unadjusted" {
26645 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v8i8.p0")]
26646 fn _vld4_lane_s8(
26647 ptr: *const i8,
26648 a: int8x8_t,
26649 b: int8x8_t,
26650 c: int8x8_t,
26651 d: int8x8_t,
26652 n: i32,
26653 size: i32,
26654 ) -> int8x8x4_t;
26655 }
26656 _vld4_lane_s8(a as _, b.0, b.1, b.2, b.3, LANE, 1)
26657}
26658#[doc = "Load multiple 4-element structures to four registers"]
26659#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s16)"]
26660#[doc = "## Safety"]
26661#[doc = " * Neon instrinsic unsafe"]
26662#[inline]
26663#[target_feature(enable = "neon,v7")]
26664#[cfg(target_arch = "arm")]
26665#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
26666#[rustc_legacy_const_generics(2)]
26667#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26668pub unsafe fn vld4_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x4_t) -> int16x4x4_t {
26669 static_assert_uimm_bits!(LANE, 2);
26670 unsafe extern "unadjusted" {
26671 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v4i16.p0")]
26672 fn _vld4_lane_s16(
26673 ptr: *const i8,
26674 a: int16x4_t,
26675 b: int16x4_t,
26676 c: int16x4_t,
26677 d: int16x4_t,
26678 n: i32,
26679 size: i32,
26680 ) -> int16x4x4_t;
26681 }
26682 _vld4_lane_s16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
26683}
26684#[doc = "Load multiple 4-element structures to four registers"]
26685#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_s16)"]
26686#[doc = "## Safety"]
26687#[doc = " * Neon instrinsic unsafe"]
26688#[inline]
26689#[target_feature(enable = "neon,v7")]
26690#[cfg(target_arch = "arm")]
26691#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
26692#[rustc_legacy_const_generics(2)]
26693#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26694pub unsafe fn vld4q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x4_t) -> int16x8x4_t {
26695 static_assert_uimm_bits!(LANE, 3);
26696 unsafe extern "unadjusted" {
26697 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v8i16.p0")]
26698 fn _vld4q_lane_s16(
26699 ptr: *const i8,
26700 a: int16x8_t,
26701 b: int16x8_t,
26702 c: int16x8_t,
26703 d: int16x8_t,
26704 n: i32,
26705 size: i32,
26706 ) -> int16x8x4_t;
26707 }
26708 _vld4q_lane_s16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
26709}
26710#[doc = "Load multiple 4-element structures to four registers"]
26711#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s32)"]
26712#[doc = "## Safety"]
26713#[doc = " * Neon instrinsic unsafe"]
26714#[inline]
26715#[target_feature(enable = "neon,v7")]
26716#[cfg(target_arch = "arm")]
26717#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
26718#[rustc_legacy_const_generics(2)]
26719#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26720pub unsafe fn vld4_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x4_t) -> int32x2x4_t {
26721 static_assert_uimm_bits!(LANE, 1);
26722 unsafe extern "unadjusted" {
26723 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v2i32.p0")]
26724 fn _vld4_lane_s32(
26725 ptr: *const i8,
26726 a: int32x2_t,
26727 b: int32x2_t,
26728 c: int32x2_t,
26729 d: int32x2_t,
26730 n: i32,
26731 size: i32,
26732 ) -> int32x2x4_t;
26733 }
26734 _vld4_lane_s32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
26735}
26736#[doc = "Load multiple 4-element structures to four registers"]
26737#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_s32)"]
26738#[doc = "## Safety"]
26739#[doc = " * Neon instrinsic unsafe"]
26740#[inline]
26741#[target_feature(enable = "neon,v7")]
26742#[cfg(target_arch = "arm")]
26743#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
26744#[rustc_legacy_const_generics(2)]
26745#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26746pub unsafe fn vld4q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x4_t) -> int32x4x4_t {
26747 static_assert_uimm_bits!(LANE, 2);
26748 unsafe extern "unadjusted" {
26749 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v4i32.p0")]
26750 fn _vld4q_lane_s32(
26751 ptr: *const i8,
26752 a: int32x4_t,
26753 b: int32x4_t,
26754 c: int32x4_t,
26755 d: int32x4_t,
26756 n: i32,
26757 size: i32,
26758 ) -> int32x4x4_t;
26759 }
26760 _vld4q_lane_s32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
26761}
26762#[doc = "Load multiple 4-element structures to four registers"]
26763#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_u8)"]
26764#[doc = "## Safety"]
26765#[doc = " * Neon instrinsic unsafe"]
26766#[inline]
26767#[target_feature(enable = "neon")]
26768#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26769#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
26770#[cfg_attr(
26771 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26772 assert_instr(ld4, LANE = 0)
26773)]
26774#[rustc_legacy_const_generics(2)]
26775#[cfg_attr(
26776 not(target_arch = "arm"),
26777 stable(feature = "neon_intrinsics", since = "1.59.0")
26778)]
26779#[cfg_attr(
26780 target_arch = "arm",
26781 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26782)]
26783pub unsafe fn vld4_lane_u8<const LANE: i32>(a: *const u8, b: uint8x8x4_t) -> uint8x8x4_t {
26784 static_assert_uimm_bits!(LANE, 3);
26785 transmute(vld4_lane_s8::<LANE>(transmute(a), transmute(b)))
26786}
26787#[doc = "Load multiple 4-element structures to four registers"]
26788#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_u16)"]
26789#[doc = "## Safety"]
26790#[doc = " * Neon instrinsic unsafe"]
26791#[inline]
26792#[target_feature(enable = "neon")]
26793#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26794#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
26795#[cfg_attr(
26796 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26797 assert_instr(ld4, LANE = 0)
26798)]
26799#[rustc_legacy_const_generics(2)]
26800#[cfg_attr(
26801 not(target_arch = "arm"),
26802 stable(feature = "neon_intrinsics", since = "1.59.0")
26803)]
26804#[cfg_attr(
26805 target_arch = "arm",
26806 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26807)]
26808pub unsafe fn vld4_lane_u16<const LANE: i32>(a: *const u16, b: uint16x4x4_t) -> uint16x4x4_t {
26809 static_assert_uimm_bits!(LANE, 2);
26810 transmute(vld4_lane_s16::<LANE>(transmute(a), transmute(b)))
26811}
26812#[doc = "Load multiple 4-element structures to four registers"]
26813#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_u16)"]
26814#[doc = "## Safety"]
26815#[doc = " * Neon instrinsic unsafe"]
26816#[inline]
26817#[target_feature(enable = "neon")]
26818#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26819#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
26820#[cfg_attr(
26821 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26822 assert_instr(ld4, LANE = 0)
26823)]
26824#[rustc_legacy_const_generics(2)]
26825#[cfg_attr(
26826 not(target_arch = "arm"),
26827 stable(feature = "neon_intrinsics", since = "1.59.0")
26828)]
26829#[cfg_attr(
26830 target_arch = "arm",
26831 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26832)]
26833pub unsafe fn vld4q_lane_u16<const LANE: i32>(a: *const u16, b: uint16x8x4_t) -> uint16x8x4_t {
26834 static_assert_uimm_bits!(LANE, 3);
26835 transmute(vld4q_lane_s16::<LANE>(transmute(a), transmute(b)))
26836}
26837#[doc = "Load multiple 4-element structures to four registers"]
26838#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_u32)"]
26839#[doc = "## Safety"]
26840#[doc = " * Neon instrinsic unsafe"]
26841#[inline]
26842#[target_feature(enable = "neon")]
26843#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26844#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
26845#[cfg_attr(
26846 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26847 assert_instr(ld4, LANE = 0)
26848)]
26849#[rustc_legacy_const_generics(2)]
26850#[cfg_attr(
26851 not(target_arch = "arm"),
26852 stable(feature = "neon_intrinsics", since = "1.59.0")
26853)]
26854#[cfg_attr(
26855 target_arch = "arm",
26856 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26857)]
26858pub unsafe fn vld4_lane_u32<const LANE: i32>(a: *const u32, b: uint32x2x4_t) -> uint32x2x4_t {
26859 static_assert_uimm_bits!(LANE, 1);
26860 transmute(vld4_lane_s32::<LANE>(transmute(a), transmute(b)))
26861}
26862#[doc = "Load multiple 4-element structures to four registers"]
26863#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_u32)"]
26864#[doc = "## Safety"]
26865#[doc = " * Neon instrinsic unsafe"]
26866#[inline]
26867#[target_feature(enable = "neon")]
26868#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26869#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
26870#[cfg_attr(
26871 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26872 assert_instr(ld4, LANE = 0)
26873)]
26874#[rustc_legacy_const_generics(2)]
26875#[cfg_attr(
26876 not(target_arch = "arm"),
26877 stable(feature = "neon_intrinsics", since = "1.59.0")
26878)]
26879#[cfg_attr(
26880 target_arch = "arm",
26881 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26882)]
26883pub unsafe fn vld4q_lane_u32<const LANE: i32>(a: *const u32, b: uint32x4x4_t) -> uint32x4x4_t {
26884 static_assert_uimm_bits!(LANE, 2);
26885 transmute(vld4q_lane_s32::<LANE>(transmute(a), transmute(b)))
26886}
26887#[doc = "Load multiple 4-element structures to four registers"]
26888#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_p8)"]
26889#[doc = "## Safety"]
26890#[doc = " * Neon instrinsic unsafe"]
26891#[inline]
26892#[target_feature(enable = "neon")]
26893#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26894#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
26895#[cfg_attr(
26896 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26897 assert_instr(ld4, LANE = 0)
26898)]
26899#[rustc_legacy_const_generics(2)]
26900#[cfg_attr(
26901 not(target_arch = "arm"),
26902 stable(feature = "neon_intrinsics", since = "1.59.0")
26903)]
26904#[cfg_attr(
26905 target_arch = "arm",
26906 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26907)]
26908pub unsafe fn vld4_lane_p8<const LANE: i32>(a: *const p8, b: poly8x8x4_t) -> poly8x8x4_t {
26909 static_assert_uimm_bits!(LANE, 3);
26910 transmute(vld4_lane_s8::<LANE>(transmute(a), transmute(b)))
26911}
26912#[doc = "Load multiple 4-element structures to four registers"]
26913#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_p16)"]
26914#[doc = "## Safety"]
26915#[doc = " * Neon instrinsic unsafe"]
26916#[inline]
26917#[target_feature(enable = "neon")]
26918#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26919#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
26920#[cfg_attr(
26921 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26922 assert_instr(ld4, LANE = 0)
26923)]
26924#[rustc_legacy_const_generics(2)]
26925#[cfg_attr(
26926 not(target_arch = "arm"),
26927 stable(feature = "neon_intrinsics", since = "1.59.0")
26928)]
26929#[cfg_attr(
26930 target_arch = "arm",
26931 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26932)]
26933pub unsafe fn vld4_lane_p16<const LANE: i32>(a: *const p16, b: poly16x4x4_t) -> poly16x4x4_t {
26934 static_assert_uimm_bits!(LANE, 2);
26935 transmute(vld4_lane_s16::<LANE>(transmute(a), transmute(b)))
26936}
26937#[doc = "Load multiple 4-element structures to four registers"]
26938#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_p16)"]
26939#[doc = "## Safety"]
26940#[doc = " * Neon instrinsic unsafe"]
26941#[inline]
26942#[target_feature(enable = "neon")]
26943#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26944#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
26945#[cfg_attr(
26946 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26947 assert_instr(ld4, LANE = 0)
26948)]
26949#[rustc_legacy_const_generics(2)]
26950#[cfg_attr(
26951 not(target_arch = "arm"),
26952 stable(feature = "neon_intrinsics", since = "1.59.0")
26953)]
26954#[cfg_attr(
26955 target_arch = "arm",
26956 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26957)]
26958pub unsafe fn vld4q_lane_p16<const LANE: i32>(a: *const p16, b: poly16x8x4_t) -> poly16x8x4_t {
26959 static_assert_uimm_bits!(LANE, 3);
26960 transmute(vld4q_lane_s16::<LANE>(transmute(a), transmute(b)))
26961}
26962#[doc = "Load multiple 4-element structures to four registers"]
26963#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_p64)"]
26964#[doc = "## Safety"]
26965#[doc = " * Neon instrinsic unsafe"]
26966#[inline]
26967#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
26968#[target_feature(enable = "neon,aes")]
26969#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
26970#[cfg_attr(
26971 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26972 assert_instr(nop)
26973)]
26974#[cfg_attr(
26975 not(target_arch = "arm"),
26976 stable(feature = "neon_intrinsics", since = "1.59.0")
26977)]
26978#[cfg_attr(
26979 target_arch = "arm",
26980 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26981)]
26982pub unsafe fn vld4_p64(a: *const p64) -> poly64x1x4_t {
26983 transmute(vld4_s64(transmute(a)))
26984}
26985#[doc = "Load multiple 4-element structures to four registers"]
26986#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s64)"]
26987#[doc = "## Safety"]
26988#[doc = " * Neon instrinsic unsafe"]
26989#[inline]
26990#[target_feature(enable = "neon")]
26991#[cfg(not(target_arch = "arm"))]
26992#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26993#[cfg_attr(test, assert_instr(nop))]
26994pub unsafe fn vld4_s64(a: *const i64) -> int64x1x4_t {
26995 unsafe extern "unadjusted" {
26996 #[cfg_attr(
26997 any(target_arch = "aarch64", target_arch = "arm64ec"),
26998 link_name = "llvm.aarch64.neon.ld4.v1i64.p0"
26999 )]
27000 fn _vld4_s64(ptr: *const int64x1_t) -> int64x1x4_t;
27001 }
27002 _vld4_s64(a as _)
27003}
27004#[doc = "Load multiple 4-element structures to four registers"]
27005#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s64)"]
27006#[doc = "## Safety"]
27007#[doc = " * Neon instrinsic unsafe"]
27008#[inline]
27009#[target_feature(enable = "neon,v7")]
27010#[cfg(target_arch = "arm")]
27011#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
27012#[cfg_attr(test, assert_instr(nop))]
27013pub unsafe fn vld4_s64(a: *const i64) -> int64x1x4_t {
27014 unsafe extern "unadjusted" {
27015 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v1i64.p0")]
27016 fn _vld4_s64(ptr: *const i8, size: i32) -> int64x1x4_t;
27017 }
27018 _vld4_s64(a as *const i8, 8)
27019}
27020#[doc = "Load multiple 4-element structures to four registers"]
27021#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u64)"]
27022#[doc = "## Safety"]
27023#[doc = " * Neon instrinsic unsafe"]
27024#[inline]
27025#[target_feature(enable = "neon")]
27026#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27027#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
27028#[cfg_attr(
27029 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27030 assert_instr(nop)
27031)]
27032#[cfg_attr(
27033 not(target_arch = "arm"),
27034 stable(feature = "neon_intrinsics", since = "1.59.0")
27035)]
27036#[cfg_attr(
27037 target_arch = "arm",
27038 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27039)]
27040pub unsafe fn vld4_u64(a: *const u64) -> uint64x1x4_t {
27041 transmute(vld4_s64(transmute(a)))
27042}
27043#[doc = "Load multiple 4-element structures to four registers"]
27044#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u8)"]
27045#[doc = "## Safety"]
27046#[doc = " * Neon instrinsic unsafe"]
27047#[inline]
27048#[cfg(target_endian = "little")]
27049#[target_feature(enable = "neon")]
27050#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27051#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27052#[cfg_attr(
27053 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27054 assert_instr(ld4)
27055)]
27056#[cfg_attr(
27057 not(target_arch = "arm"),
27058 stable(feature = "neon_intrinsics", since = "1.59.0")
27059)]
27060#[cfg_attr(
27061 target_arch = "arm",
27062 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27063)]
27064pub unsafe fn vld4_u8(a: *const u8) -> uint8x8x4_t {
27065 transmute(vld4_s8(transmute(a)))
27066}
27067#[doc = "Load multiple 4-element structures to four registers"]
27068#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u8)"]
27069#[doc = "## Safety"]
27070#[doc = " * Neon instrinsic unsafe"]
27071#[inline]
27072#[cfg(target_endian = "big")]
27073#[target_feature(enable = "neon")]
27074#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27075#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27076#[cfg_attr(
27077 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27078 assert_instr(ld4)
27079)]
27080#[cfg_attr(
27081 not(target_arch = "arm"),
27082 stable(feature = "neon_intrinsics", since = "1.59.0")
27083)]
27084#[cfg_attr(
27085 target_arch = "arm",
27086 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27087)]
27088pub unsafe fn vld4_u8(a: *const u8) -> uint8x8x4_t {
27089 let mut ret_val: uint8x8x4_t = transmute(vld4_s8(transmute(a)));
27090 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
27091 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
27092 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
27093 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
27094 ret_val
27095}
27096#[doc = "Load multiple 4-element structures to four registers"]
27097#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_u8)"]
27098#[doc = "## Safety"]
27099#[doc = " * Neon instrinsic unsafe"]
27100#[inline]
27101#[cfg(target_endian = "little")]
27102#[target_feature(enable = "neon")]
27103#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27104#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27105#[cfg_attr(
27106 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27107 assert_instr(ld4)
27108)]
27109#[cfg_attr(
27110 not(target_arch = "arm"),
27111 stable(feature = "neon_intrinsics", since = "1.59.0")
27112)]
27113#[cfg_attr(
27114 target_arch = "arm",
27115 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27116)]
27117pub unsafe fn vld4q_u8(a: *const u8) -> uint8x16x4_t {
27118 transmute(vld4q_s8(transmute(a)))
27119}
27120#[doc = "Load multiple 4-element structures to four registers"]
27121#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_u8)"]
27122#[doc = "## Safety"]
27123#[doc = " * Neon instrinsic unsafe"]
27124#[inline]
27125#[cfg(target_endian = "big")]
27126#[target_feature(enable = "neon")]
27127#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27128#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27129#[cfg_attr(
27130 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27131 assert_instr(ld4)
27132)]
27133#[cfg_attr(
27134 not(target_arch = "arm"),
27135 stable(feature = "neon_intrinsics", since = "1.59.0")
27136)]
27137#[cfg_attr(
27138 target_arch = "arm",
27139 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27140)]
27141pub unsafe fn vld4q_u8(a: *const u8) -> uint8x16x4_t {
27142 let mut ret_val: uint8x16x4_t = transmute(vld4q_s8(transmute(a)));
27143 ret_val.0 = unsafe {
27144 simd_shuffle!(
27145 ret_val.0,
27146 ret_val.0,
27147 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
27148 )
27149 };
27150 ret_val.1 = unsafe {
27151 simd_shuffle!(
27152 ret_val.1,
27153 ret_val.1,
27154 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
27155 )
27156 };
27157 ret_val.2 = unsafe {
27158 simd_shuffle!(
27159 ret_val.2,
27160 ret_val.2,
27161 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
27162 )
27163 };
27164 ret_val.3 = unsafe {
27165 simd_shuffle!(
27166 ret_val.3,
27167 ret_val.3,
27168 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
27169 )
27170 };
27171 ret_val
27172}
27173#[doc = "Load multiple 4-element structures to four registers"]
27174#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u16)"]
27175#[doc = "## Safety"]
27176#[doc = " * Neon instrinsic unsafe"]
27177#[inline]
27178#[cfg(target_endian = "little")]
27179#[target_feature(enable = "neon")]
27180#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27181#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27182#[cfg_attr(
27183 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27184 assert_instr(ld4)
27185)]
27186#[cfg_attr(
27187 not(target_arch = "arm"),
27188 stable(feature = "neon_intrinsics", since = "1.59.0")
27189)]
27190#[cfg_attr(
27191 target_arch = "arm",
27192 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27193)]
27194pub unsafe fn vld4_u16(a: *const u16) -> uint16x4x4_t {
27195 transmute(vld4_s16(transmute(a)))
27196}
27197#[doc = "Load multiple 4-element structures to four registers"]
27198#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u16)"]
27199#[doc = "## Safety"]
27200#[doc = " * Neon instrinsic unsafe"]
27201#[inline]
27202#[cfg(target_endian = "big")]
27203#[target_feature(enable = "neon")]
27204#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27205#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27206#[cfg_attr(
27207 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27208 assert_instr(ld4)
27209)]
27210#[cfg_attr(
27211 not(target_arch = "arm"),
27212 stable(feature = "neon_intrinsics", since = "1.59.0")
27213)]
27214#[cfg_attr(
27215 target_arch = "arm",
27216 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27217)]
27218pub unsafe fn vld4_u16(a: *const u16) -> uint16x4x4_t {
27219 let mut ret_val: uint16x4x4_t = transmute(vld4_s16(transmute(a)));
27220 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
27221 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
27222 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
27223 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
27224 ret_val
27225}
27226#[doc = "Load multiple 4-element structures to four registers"]
27227#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_u16)"]
27228#[doc = "## Safety"]
27229#[doc = " * Neon instrinsic unsafe"]
27230#[inline]
27231#[cfg(target_endian = "little")]
27232#[target_feature(enable = "neon")]
27233#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27234#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27235#[cfg_attr(
27236 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27237 assert_instr(ld4)
27238)]
27239#[cfg_attr(
27240 not(target_arch = "arm"),
27241 stable(feature = "neon_intrinsics", since = "1.59.0")
27242)]
27243#[cfg_attr(
27244 target_arch = "arm",
27245 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27246)]
27247pub unsafe fn vld4q_u16(a: *const u16) -> uint16x8x4_t {
27248 transmute(vld4q_s16(transmute(a)))
27249}
27250#[doc = "Load multiple 4-element structures to four registers"]
27251#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_u16)"]
27252#[doc = "## Safety"]
27253#[doc = " * Neon instrinsic unsafe"]
27254#[inline]
27255#[cfg(target_endian = "big")]
27256#[target_feature(enable = "neon")]
27257#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27258#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27259#[cfg_attr(
27260 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27261 assert_instr(ld4)
27262)]
27263#[cfg_attr(
27264 not(target_arch = "arm"),
27265 stable(feature = "neon_intrinsics", since = "1.59.0")
27266)]
27267#[cfg_attr(
27268 target_arch = "arm",
27269 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27270)]
27271pub unsafe fn vld4q_u16(a: *const u16) -> uint16x8x4_t {
27272 let mut ret_val: uint16x8x4_t = transmute(vld4q_s16(transmute(a)));
27273 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
27274 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
27275 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
27276 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
27277 ret_val
27278}
27279#[doc = "Load multiple 4-element structures to four registers"]
27280#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u32)"]
27281#[doc = "## Safety"]
27282#[doc = " * Neon instrinsic unsafe"]
27283#[inline]
27284#[cfg(target_endian = "little")]
27285#[target_feature(enable = "neon")]
27286#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27287#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27288#[cfg_attr(
27289 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27290 assert_instr(ld4)
27291)]
27292#[cfg_attr(
27293 not(target_arch = "arm"),
27294 stable(feature = "neon_intrinsics", since = "1.59.0")
27295)]
27296#[cfg_attr(
27297 target_arch = "arm",
27298 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27299)]
27300pub unsafe fn vld4_u32(a: *const u32) -> uint32x2x4_t {
27301 transmute(vld4_s32(transmute(a)))
27302}
27303#[doc = "Load multiple 4-element structures to four registers"]
27304#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u32)"]
27305#[doc = "## Safety"]
27306#[doc = " * Neon instrinsic unsafe"]
27307#[inline]
27308#[cfg(target_endian = "big")]
27309#[target_feature(enable = "neon")]
27310#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27311#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27312#[cfg_attr(
27313 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27314 assert_instr(ld4)
27315)]
27316#[cfg_attr(
27317 not(target_arch = "arm"),
27318 stable(feature = "neon_intrinsics", since = "1.59.0")
27319)]
27320#[cfg_attr(
27321 target_arch = "arm",
27322 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27323)]
27324pub unsafe fn vld4_u32(a: *const u32) -> uint32x2x4_t {
27325 let mut ret_val: uint32x2x4_t = transmute(vld4_s32(transmute(a)));
27326 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
27327 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
27328 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
27329 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [1, 0]) };
27330 ret_val
27331}
27332#[doc = "Load multiple 4-element structures to four registers"]
27333#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_u32)"]
27334#[doc = "## Safety"]
27335#[doc = " * Neon instrinsic unsafe"]
27336#[inline]
27337#[cfg(target_endian = "little")]
27338#[target_feature(enable = "neon")]
27339#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27340#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27341#[cfg_attr(
27342 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27343 assert_instr(ld4)
27344)]
27345#[cfg_attr(
27346 not(target_arch = "arm"),
27347 stable(feature = "neon_intrinsics", since = "1.59.0")
27348)]
27349#[cfg_attr(
27350 target_arch = "arm",
27351 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27352)]
27353pub unsafe fn vld4q_u32(a: *const u32) -> uint32x4x4_t {
27354 transmute(vld4q_s32(transmute(a)))
27355}
27356#[doc = "Load multiple 4-element structures to four registers"]
27357#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_u32)"]
27358#[doc = "## Safety"]
27359#[doc = " * Neon instrinsic unsafe"]
27360#[inline]
27361#[cfg(target_endian = "big")]
27362#[target_feature(enable = "neon")]
27363#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27364#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27365#[cfg_attr(
27366 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27367 assert_instr(ld4)
27368)]
27369#[cfg_attr(
27370 not(target_arch = "arm"),
27371 stable(feature = "neon_intrinsics", since = "1.59.0")
27372)]
27373#[cfg_attr(
27374 target_arch = "arm",
27375 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27376)]
27377pub unsafe fn vld4q_u32(a: *const u32) -> uint32x4x4_t {
27378 let mut ret_val: uint32x4x4_t = transmute(vld4q_s32(transmute(a)));
27379 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
27380 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
27381 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
27382 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
27383 ret_val
27384}
27385#[doc = "Load multiple 4-element structures to four registers"]
27386#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_p8)"]
27387#[doc = "## Safety"]
27388#[doc = " * Neon instrinsic unsafe"]
27389#[inline]
27390#[cfg(target_endian = "little")]
27391#[target_feature(enable = "neon")]
27392#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27393#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27394#[cfg_attr(
27395 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27396 assert_instr(ld4)
27397)]
27398#[cfg_attr(
27399 not(target_arch = "arm"),
27400 stable(feature = "neon_intrinsics", since = "1.59.0")
27401)]
27402#[cfg_attr(
27403 target_arch = "arm",
27404 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27405)]
27406pub unsafe fn vld4_p8(a: *const p8) -> poly8x8x4_t {
27407 transmute(vld4_s8(transmute(a)))
27408}
27409#[doc = "Load multiple 4-element structures to four registers"]
27410#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_p8)"]
27411#[doc = "## Safety"]
27412#[doc = " * Neon instrinsic unsafe"]
27413#[inline]
27414#[cfg(target_endian = "big")]
27415#[target_feature(enable = "neon")]
27416#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27417#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27418#[cfg_attr(
27419 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27420 assert_instr(ld4)
27421)]
27422#[cfg_attr(
27423 not(target_arch = "arm"),
27424 stable(feature = "neon_intrinsics", since = "1.59.0")
27425)]
27426#[cfg_attr(
27427 target_arch = "arm",
27428 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27429)]
27430pub unsafe fn vld4_p8(a: *const p8) -> poly8x8x4_t {
27431 let mut ret_val: poly8x8x4_t = transmute(vld4_s8(transmute(a)));
27432 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
27433 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
27434 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
27435 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
27436 ret_val
27437}
27438#[doc = "Load multiple 4-element structures to four registers"]
27439#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_p8)"]
27440#[doc = "## Safety"]
27441#[doc = " * Neon instrinsic unsafe"]
27442#[inline]
27443#[cfg(target_endian = "little")]
27444#[target_feature(enable = "neon")]
27445#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27446#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27447#[cfg_attr(
27448 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27449 assert_instr(ld4)
27450)]
27451#[cfg_attr(
27452 not(target_arch = "arm"),
27453 stable(feature = "neon_intrinsics", since = "1.59.0")
27454)]
27455#[cfg_attr(
27456 target_arch = "arm",
27457 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27458)]
27459pub unsafe fn vld4q_p8(a: *const p8) -> poly8x16x4_t {
27460 transmute(vld4q_s8(transmute(a)))
27461}
27462#[doc = "Load multiple 4-element structures to four registers"]
27463#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_p8)"]
27464#[doc = "## Safety"]
27465#[doc = " * Neon instrinsic unsafe"]
27466#[inline]
27467#[cfg(target_endian = "big")]
27468#[target_feature(enable = "neon")]
27469#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27470#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27471#[cfg_attr(
27472 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27473 assert_instr(ld4)
27474)]
27475#[cfg_attr(
27476 not(target_arch = "arm"),
27477 stable(feature = "neon_intrinsics", since = "1.59.0")
27478)]
27479#[cfg_attr(
27480 target_arch = "arm",
27481 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27482)]
27483pub unsafe fn vld4q_p8(a: *const p8) -> poly8x16x4_t {
27484 let mut ret_val: poly8x16x4_t = transmute(vld4q_s8(transmute(a)));
27485 ret_val.0 = unsafe {
27486 simd_shuffle!(
27487 ret_val.0,
27488 ret_val.0,
27489 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
27490 )
27491 };
27492 ret_val.1 = unsafe {
27493 simd_shuffle!(
27494 ret_val.1,
27495 ret_val.1,
27496 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
27497 )
27498 };
27499 ret_val.2 = unsafe {
27500 simd_shuffle!(
27501 ret_val.2,
27502 ret_val.2,
27503 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
27504 )
27505 };
27506 ret_val.3 = unsafe {
27507 simd_shuffle!(
27508 ret_val.3,
27509 ret_val.3,
27510 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
27511 )
27512 };
27513 ret_val
27514}
27515#[doc = "Load multiple 4-element structures to four registers"]
27516#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_p16)"]
27517#[doc = "## Safety"]
27518#[doc = " * Neon instrinsic unsafe"]
27519#[inline]
27520#[cfg(target_endian = "little")]
27521#[target_feature(enable = "neon")]
27522#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27523#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27524#[cfg_attr(
27525 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27526 assert_instr(ld4)
27527)]
27528#[cfg_attr(
27529 not(target_arch = "arm"),
27530 stable(feature = "neon_intrinsics", since = "1.59.0")
27531)]
27532#[cfg_attr(
27533 target_arch = "arm",
27534 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27535)]
27536pub unsafe fn vld4_p16(a: *const p16) -> poly16x4x4_t {
27537 transmute(vld4_s16(transmute(a)))
27538}
27539#[doc = "Load multiple 4-element structures to four registers"]
27540#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_p16)"]
27541#[doc = "## Safety"]
27542#[doc = " * Neon instrinsic unsafe"]
27543#[inline]
27544#[cfg(target_endian = "big")]
27545#[target_feature(enable = "neon")]
27546#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27547#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27548#[cfg_attr(
27549 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27550 assert_instr(ld4)
27551)]
27552#[cfg_attr(
27553 not(target_arch = "arm"),
27554 stable(feature = "neon_intrinsics", since = "1.59.0")
27555)]
27556#[cfg_attr(
27557 target_arch = "arm",
27558 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27559)]
27560pub unsafe fn vld4_p16(a: *const p16) -> poly16x4x4_t {
27561 let mut ret_val: poly16x4x4_t = transmute(vld4_s16(transmute(a)));
27562 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
27563 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
27564 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
27565 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
27566 ret_val
27567}
27568#[doc = "Load multiple 4-element structures to four registers"]
27569#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_p16)"]
27570#[doc = "## Safety"]
27571#[doc = " * Neon instrinsic unsafe"]
27572#[inline]
27573#[cfg(target_endian = "little")]
27574#[target_feature(enable = "neon")]
27575#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27576#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27577#[cfg_attr(
27578 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27579 assert_instr(ld4)
27580)]
27581#[cfg_attr(
27582 not(target_arch = "arm"),
27583 stable(feature = "neon_intrinsics", since = "1.59.0")
27584)]
27585#[cfg_attr(
27586 target_arch = "arm",
27587 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27588)]
27589pub unsafe fn vld4q_p16(a: *const p16) -> poly16x8x4_t {
27590 transmute(vld4q_s16(transmute(a)))
27591}
27592#[doc = "Load multiple 4-element structures to four registers"]
27593#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_p16)"]
27594#[doc = "## Safety"]
27595#[doc = " * Neon instrinsic unsafe"]
27596#[inline]
27597#[cfg(target_endian = "big")]
27598#[target_feature(enable = "neon")]
27599#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27600#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27601#[cfg_attr(
27602 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27603 assert_instr(ld4)
27604)]
27605#[cfg_attr(
27606 not(target_arch = "arm"),
27607 stable(feature = "neon_intrinsics", since = "1.59.0")
27608)]
27609#[cfg_attr(
27610 target_arch = "arm",
27611 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27612)]
27613pub unsafe fn vld4q_p16(a: *const p16) -> poly16x8x4_t {
27614 let mut ret_val: poly16x8x4_t = transmute(vld4q_s16(transmute(a)));
27615 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
27616 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
27617 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
27618 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
27619 ret_val
27620}
27621#[doc = "Store SIMD&FP register (immediate offset)"]
27622#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vldrq_p128)"]
27623#[doc = "## Safety"]
27624#[doc = " * Neon instrinsic unsafe"]
27625#[inline]
27626#[target_feature(enable = "neon")]
27627#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27628#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
27629#[cfg_attr(
27630 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27631 assert_instr(nop)
27632)]
27633#[cfg_attr(
27634 not(target_arch = "arm"),
27635 stable(feature = "neon_intrinsics", since = "1.59.0")
27636)]
27637#[cfg_attr(
27638 target_arch = "arm",
27639 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27640)]
27641pub unsafe fn vldrq_p128(a: *const p128) -> p128 {
27642 *a
27643}
27644#[doc = "Maximum (vector)"]
27645#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_f16)"]
27646#[inline]
27647#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
27648#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
27649#[cfg_attr(
27650 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27651 assert_instr(fmax)
27652)]
27653#[target_feature(enable = "neon,fp16")]
27654#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
27655#[cfg(not(target_arch = "arm64ec"))]
27656pub fn vmax_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
27657 unsafe extern "unadjusted" {
27658 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v4f16")]
27659 #[cfg_attr(
27660 any(target_arch = "aarch64", target_arch = "arm64ec"),
27661 link_name = "llvm.aarch64.neon.fmax.v4f16"
27662 )]
27663 fn _vmax_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
27664 }
27665 unsafe { _vmax_f16(a, b) }
27666}
27667#[doc = "Maximum (vector)"]
27668#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_f16)"]
27669#[inline]
27670#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
27671#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
27672#[cfg_attr(
27673 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27674 assert_instr(fmax)
27675)]
27676#[target_feature(enable = "neon,fp16")]
27677#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
27678#[cfg(not(target_arch = "arm64ec"))]
27679pub fn vmaxq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
27680 unsafe extern "unadjusted" {
27681 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v8f16")]
27682 #[cfg_attr(
27683 any(target_arch = "aarch64", target_arch = "arm64ec"),
27684 link_name = "llvm.aarch64.neon.fmax.v8f16"
27685 )]
27686 fn _vmaxq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
27687 }
27688 unsafe { _vmaxq_f16(a, b) }
27689}
27690#[doc = "Maximum (vector)"]
27691#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_f32)"]
27692#[inline]
27693#[target_feature(enable = "neon")]
27694#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27695#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
27696#[cfg_attr(
27697 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27698 assert_instr(fmax)
27699)]
27700#[cfg_attr(
27701 not(target_arch = "arm"),
27702 stable(feature = "neon_intrinsics", since = "1.59.0")
27703)]
27704#[cfg_attr(
27705 target_arch = "arm",
27706 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27707)]
27708pub fn vmax_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
27709 unsafe extern "unadjusted" {
27710 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v2f32")]
27711 #[cfg_attr(
27712 any(target_arch = "aarch64", target_arch = "arm64ec"),
27713 link_name = "llvm.aarch64.neon.fmax.v2f32"
27714 )]
27715 fn _vmax_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
27716 }
27717 unsafe { _vmax_f32(a, b) }
27718}
27719#[doc = "Maximum (vector)"]
27720#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_f32)"]
27721#[inline]
27722#[target_feature(enable = "neon")]
27723#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27724#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
27725#[cfg_attr(
27726 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27727 assert_instr(fmax)
27728)]
27729#[cfg_attr(
27730 not(target_arch = "arm"),
27731 stable(feature = "neon_intrinsics", since = "1.59.0")
27732)]
27733#[cfg_attr(
27734 target_arch = "arm",
27735 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27736)]
27737pub fn vmaxq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
27738 unsafe extern "unadjusted" {
27739 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v4f32")]
27740 #[cfg_attr(
27741 any(target_arch = "aarch64", target_arch = "arm64ec"),
27742 link_name = "llvm.aarch64.neon.fmax.v4f32"
27743 )]
27744 fn _vmaxq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
27745 }
27746 unsafe { _vmaxq_f32(a, b) }
27747}
27748#[doc = "Maximum (vector)"]
27749#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_s8)"]
27750#[inline]
27751#[target_feature(enable = "neon")]
27752#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27753#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
27754#[cfg_attr(
27755 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27756 assert_instr(smax)
27757)]
27758#[cfg_attr(
27759 not(target_arch = "arm"),
27760 stable(feature = "neon_intrinsics", since = "1.59.0")
27761)]
27762#[cfg_attr(
27763 target_arch = "arm",
27764 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27765)]
27766pub fn vmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
27767 unsafe {
27768 let mask: int8x8_t = simd_ge(a, b);
27769 simd_select(mask, a, b)
27770 }
27771}
27772#[doc = "Maximum (vector)"]
27773#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s8)"]
27774#[inline]
27775#[target_feature(enable = "neon")]
27776#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27777#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
27778#[cfg_attr(
27779 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27780 assert_instr(smax)
27781)]
27782#[cfg_attr(
27783 not(target_arch = "arm"),
27784 stable(feature = "neon_intrinsics", since = "1.59.0")
27785)]
27786#[cfg_attr(
27787 target_arch = "arm",
27788 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27789)]
27790pub fn vmaxq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
27791 unsafe {
27792 let mask: int8x16_t = simd_ge(a, b);
27793 simd_select(mask, a, b)
27794 }
27795}
27796#[doc = "Maximum (vector)"]
27797#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_s16)"]
27798#[inline]
27799#[target_feature(enable = "neon")]
27800#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27801#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
27802#[cfg_attr(
27803 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27804 assert_instr(smax)
27805)]
27806#[cfg_attr(
27807 not(target_arch = "arm"),
27808 stable(feature = "neon_intrinsics", since = "1.59.0")
27809)]
27810#[cfg_attr(
27811 target_arch = "arm",
27812 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27813)]
27814pub fn vmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
27815 unsafe {
27816 let mask: int16x4_t = simd_ge(a, b);
27817 simd_select(mask, a, b)
27818 }
27819}
27820#[doc = "Maximum (vector)"]
27821#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s16)"]
27822#[inline]
27823#[target_feature(enable = "neon")]
27824#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27825#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
27826#[cfg_attr(
27827 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27828 assert_instr(smax)
27829)]
27830#[cfg_attr(
27831 not(target_arch = "arm"),
27832 stable(feature = "neon_intrinsics", since = "1.59.0")
27833)]
27834#[cfg_attr(
27835 target_arch = "arm",
27836 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27837)]
27838pub fn vmaxq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
27839 unsafe {
27840 let mask: int16x8_t = simd_ge(a, b);
27841 simd_select(mask, a, b)
27842 }
27843}
27844#[doc = "Maximum (vector)"]
27845#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_s32)"]
27846#[inline]
27847#[target_feature(enable = "neon")]
27848#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27849#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
27850#[cfg_attr(
27851 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27852 assert_instr(smax)
27853)]
27854#[cfg_attr(
27855 not(target_arch = "arm"),
27856 stable(feature = "neon_intrinsics", since = "1.59.0")
27857)]
27858#[cfg_attr(
27859 target_arch = "arm",
27860 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27861)]
27862pub fn vmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
27863 unsafe {
27864 let mask: int32x2_t = simd_ge(a, b);
27865 simd_select(mask, a, b)
27866 }
27867}
27868#[doc = "Maximum (vector)"]
27869#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s32)"]
27870#[inline]
27871#[target_feature(enable = "neon")]
27872#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27873#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
27874#[cfg_attr(
27875 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27876 assert_instr(smax)
27877)]
27878#[cfg_attr(
27879 not(target_arch = "arm"),
27880 stable(feature = "neon_intrinsics", since = "1.59.0")
27881)]
27882#[cfg_attr(
27883 target_arch = "arm",
27884 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27885)]
27886pub fn vmaxq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
27887 unsafe {
27888 let mask: int32x4_t = simd_ge(a, b);
27889 simd_select(mask, a, b)
27890 }
27891}
27892#[doc = "Maximum (vector)"]
27893#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u8)"]
27894#[inline]
27895#[target_feature(enable = "neon")]
27896#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27897#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
27898#[cfg_attr(
27899 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27900 assert_instr(umax)
27901)]
27902#[cfg_attr(
27903 not(target_arch = "arm"),
27904 stable(feature = "neon_intrinsics", since = "1.59.0")
27905)]
27906#[cfg_attr(
27907 target_arch = "arm",
27908 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27909)]
27910pub fn vmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
27911 unsafe {
27912 let mask: uint8x8_t = simd_ge(a, b);
27913 simd_select(mask, a, b)
27914 }
27915}
27916#[doc = "Maximum (vector)"]
27917#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u8)"]
27918#[inline]
27919#[target_feature(enable = "neon")]
27920#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27921#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
27922#[cfg_attr(
27923 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27924 assert_instr(umax)
27925)]
27926#[cfg_attr(
27927 not(target_arch = "arm"),
27928 stable(feature = "neon_intrinsics", since = "1.59.0")
27929)]
27930#[cfg_attr(
27931 target_arch = "arm",
27932 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27933)]
27934pub fn vmaxq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
27935 unsafe {
27936 let mask: uint8x16_t = simd_ge(a, b);
27937 simd_select(mask, a, b)
27938 }
27939}
27940#[doc = "Maximum (vector)"]
27941#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u16)"]
27942#[inline]
27943#[target_feature(enable = "neon")]
27944#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27945#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
27946#[cfg_attr(
27947 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27948 assert_instr(umax)
27949)]
27950#[cfg_attr(
27951 not(target_arch = "arm"),
27952 stable(feature = "neon_intrinsics", since = "1.59.0")
27953)]
27954#[cfg_attr(
27955 target_arch = "arm",
27956 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27957)]
27958pub fn vmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
27959 unsafe {
27960 let mask: uint16x4_t = simd_ge(a, b);
27961 simd_select(mask, a, b)
27962 }
27963}
27964#[doc = "Maximum (vector)"]
27965#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u16)"]
27966#[inline]
27967#[target_feature(enable = "neon")]
27968#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27969#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
27970#[cfg_attr(
27971 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27972 assert_instr(umax)
27973)]
27974#[cfg_attr(
27975 not(target_arch = "arm"),
27976 stable(feature = "neon_intrinsics", since = "1.59.0")
27977)]
27978#[cfg_attr(
27979 target_arch = "arm",
27980 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27981)]
27982pub fn vmaxq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
27983 unsafe {
27984 let mask: uint16x8_t = simd_ge(a, b);
27985 simd_select(mask, a, b)
27986 }
27987}
27988#[doc = "Maximum (vector)"]
27989#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u32)"]
27990#[inline]
27991#[target_feature(enable = "neon")]
27992#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27993#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
27994#[cfg_attr(
27995 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27996 assert_instr(umax)
27997)]
27998#[cfg_attr(
27999 not(target_arch = "arm"),
28000 stable(feature = "neon_intrinsics", since = "1.59.0")
28001)]
28002#[cfg_attr(
28003 target_arch = "arm",
28004 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28005)]
28006pub fn vmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
28007 unsafe {
28008 let mask: uint32x2_t = simd_ge(a, b);
28009 simd_select(mask, a, b)
28010 }
28011}
28012#[doc = "Maximum (vector)"]
28013#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u32)"]
28014#[inline]
28015#[target_feature(enable = "neon")]
28016#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28017#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
28018#[cfg_attr(
28019 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28020 assert_instr(umax)
28021)]
28022#[cfg_attr(
28023 not(target_arch = "arm"),
28024 stable(feature = "neon_intrinsics", since = "1.59.0")
28025)]
28026#[cfg_attr(
28027 target_arch = "arm",
28028 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28029)]
28030pub fn vmaxq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
28031 unsafe {
28032 let mask: uint32x4_t = simd_ge(a, b);
28033 simd_select(mask, a, b)
28034 }
28035}
28036#[doc = "Floating-point Maximum Number (vector)"]
28037#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnm_f16)"]
28038#[inline]
28039#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
28040#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmaxnm))]
28041#[cfg_attr(
28042 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28043 assert_instr(fmaxnm)
28044)]
28045#[target_feature(enable = "neon,fp16")]
28046#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
28047#[cfg(not(target_arch = "arm64ec"))]
28048pub fn vmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
28049 unsafe { simd_fmax(a, b) }
28050}
28051#[doc = "Floating-point Maximum Number (vector)"]
28052#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f16)"]
28053#[inline]
28054#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
28055#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmaxnm))]
28056#[cfg_attr(
28057 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28058 assert_instr(fmaxnm)
28059)]
28060#[target_feature(enable = "neon,fp16")]
28061#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
28062#[cfg(not(target_arch = "arm64ec"))]
28063pub fn vmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
28064 unsafe { simd_fmax(a, b) }
28065}
28066#[doc = "Floating-point Maximum Number (vector)"]
28067#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnm_f32)"]
28068#[inline]
28069#[target_feature(enable = "neon")]
28070#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
28071#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmaxnm))]
28072#[cfg_attr(
28073 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28074 assert_instr(fmaxnm)
28075)]
28076#[cfg_attr(
28077 not(target_arch = "arm"),
28078 stable(feature = "neon_intrinsics", since = "1.59.0")
28079)]
28080#[cfg_attr(
28081 target_arch = "arm",
28082 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28083)]
28084pub fn vmaxnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
28085 unsafe { simd_fmax(a, b) }
28086}
28087#[doc = "Floating-point Maximum Number (vector)"]
28088#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f32)"]
28089#[inline]
28090#[target_feature(enable = "neon")]
28091#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
28092#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmaxnm))]
28093#[cfg_attr(
28094 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28095 assert_instr(fmaxnm)
28096)]
28097#[cfg_attr(
28098 not(target_arch = "arm"),
28099 stable(feature = "neon_intrinsics", since = "1.59.0")
28100)]
28101#[cfg_attr(
28102 target_arch = "arm",
28103 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28104)]
28105pub fn vmaxnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
28106 unsafe { simd_fmax(a, b) }
28107}
28108#[doc = "Minimum (vector)"]
28109#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_f16)"]
28110#[inline]
28111#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
28112#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28113#[cfg_attr(
28114 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28115 assert_instr(fmin)
28116)]
28117#[target_feature(enable = "neon,fp16")]
28118#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
28119#[cfg(not(target_arch = "arm64ec"))]
28120pub fn vmin_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
28121 unsafe extern "unadjusted" {
28122 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v4f16")]
28123 #[cfg_attr(
28124 any(target_arch = "aarch64", target_arch = "arm64ec"),
28125 link_name = "llvm.aarch64.neon.fmin.v4f16"
28126 )]
28127 fn _vmin_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
28128 }
28129 unsafe { _vmin_f16(a, b) }
28130}
28131#[doc = "Minimum (vector)"]
28132#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_f16)"]
28133#[inline]
28134#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
28135#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28136#[cfg_attr(
28137 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28138 assert_instr(fmin)
28139)]
28140#[target_feature(enable = "neon,fp16")]
28141#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
28142#[cfg(not(target_arch = "arm64ec"))]
28143pub fn vminq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
28144 unsafe extern "unadjusted" {
28145 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v8f16")]
28146 #[cfg_attr(
28147 any(target_arch = "aarch64", target_arch = "arm64ec"),
28148 link_name = "llvm.aarch64.neon.fmin.v8f16"
28149 )]
28150 fn _vminq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
28151 }
28152 unsafe { _vminq_f16(a, b) }
28153}
28154#[doc = "Minimum (vector)"]
28155#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_f32)"]
28156#[inline]
28157#[target_feature(enable = "neon")]
28158#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28159#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28160#[cfg_attr(
28161 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28162 assert_instr(fmin)
28163)]
28164#[cfg_attr(
28165 not(target_arch = "arm"),
28166 stable(feature = "neon_intrinsics", since = "1.59.0")
28167)]
28168#[cfg_attr(
28169 target_arch = "arm",
28170 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28171)]
28172pub fn vmin_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
28173 unsafe extern "unadjusted" {
28174 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v2f32")]
28175 #[cfg_attr(
28176 any(target_arch = "aarch64", target_arch = "arm64ec"),
28177 link_name = "llvm.aarch64.neon.fmin.v2f32"
28178 )]
28179 fn _vmin_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
28180 }
28181 unsafe { _vmin_f32(a, b) }
28182}
28183#[doc = "Minimum (vector)"]
28184#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_f32)"]
28185#[inline]
28186#[target_feature(enable = "neon")]
28187#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28188#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28189#[cfg_attr(
28190 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28191 assert_instr(fmin)
28192)]
28193#[cfg_attr(
28194 not(target_arch = "arm"),
28195 stable(feature = "neon_intrinsics", since = "1.59.0")
28196)]
28197#[cfg_attr(
28198 target_arch = "arm",
28199 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28200)]
28201pub fn vminq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
28202 unsafe extern "unadjusted" {
28203 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v4f32")]
28204 #[cfg_attr(
28205 any(target_arch = "aarch64", target_arch = "arm64ec"),
28206 link_name = "llvm.aarch64.neon.fmin.v4f32"
28207 )]
28208 fn _vminq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
28209 }
28210 unsafe { _vminq_f32(a, b) }
28211}
28212#[doc = "Minimum (vector)"]
28213#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_s8)"]
28214#[inline]
28215#[target_feature(enable = "neon")]
28216#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28217#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28218#[cfg_attr(
28219 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28220 assert_instr(smin)
28221)]
28222#[cfg_attr(
28223 not(target_arch = "arm"),
28224 stable(feature = "neon_intrinsics", since = "1.59.0")
28225)]
28226#[cfg_attr(
28227 target_arch = "arm",
28228 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28229)]
28230pub fn vmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
28231 unsafe {
28232 let mask: int8x8_t = simd_le(a, b);
28233 simd_select(mask, a, b)
28234 }
28235}
28236#[doc = "Minimum (vector)"]
28237#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s8)"]
28238#[inline]
28239#[target_feature(enable = "neon")]
28240#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28241#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28242#[cfg_attr(
28243 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28244 assert_instr(smin)
28245)]
28246#[cfg_attr(
28247 not(target_arch = "arm"),
28248 stable(feature = "neon_intrinsics", since = "1.59.0")
28249)]
28250#[cfg_attr(
28251 target_arch = "arm",
28252 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28253)]
28254pub fn vminq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
28255 unsafe {
28256 let mask: int8x16_t = simd_le(a, b);
28257 simd_select(mask, a, b)
28258 }
28259}
28260#[doc = "Minimum (vector)"]
28261#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_s16)"]
28262#[inline]
28263#[target_feature(enable = "neon")]
28264#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28265#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28266#[cfg_attr(
28267 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28268 assert_instr(smin)
28269)]
28270#[cfg_attr(
28271 not(target_arch = "arm"),
28272 stable(feature = "neon_intrinsics", since = "1.59.0")
28273)]
28274#[cfg_attr(
28275 target_arch = "arm",
28276 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28277)]
28278pub fn vmin_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
28279 unsafe {
28280 let mask: int16x4_t = simd_le(a, b);
28281 simd_select(mask, a, b)
28282 }
28283}
28284#[doc = "Minimum (vector)"]
28285#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s16)"]
28286#[inline]
28287#[target_feature(enable = "neon")]
28288#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28289#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28290#[cfg_attr(
28291 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28292 assert_instr(smin)
28293)]
28294#[cfg_attr(
28295 not(target_arch = "arm"),
28296 stable(feature = "neon_intrinsics", since = "1.59.0")
28297)]
28298#[cfg_attr(
28299 target_arch = "arm",
28300 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28301)]
28302pub fn vminq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
28303 unsafe {
28304 let mask: int16x8_t = simd_le(a, b);
28305 simd_select(mask, a, b)
28306 }
28307}
28308#[doc = "Minimum (vector)"]
28309#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_s32)"]
28310#[inline]
28311#[target_feature(enable = "neon")]
28312#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28313#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28314#[cfg_attr(
28315 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28316 assert_instr(smin)
28317)]
28318#[cfg_attr(
28319 not(target_arch = "arm"),
28320 stable(feature = "neon_intrinsics", since = "1.59.0")
28321)]
28322#[cfg_attr(
28323 target_arch = "arm",
28324 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28325)]
28326pub fn vmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
28327 unsafe {
28328 let mask: int32x2_t = simd_le(a, b);
28329 simd_select(mask, a, b)
28330 }
28331}
28332#[doc = "Minimum (vector)"]
28333#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s32)"]
28334#[inline]
28335#[target_feature(enable = "neon")]
28336#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28337#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28338#[cfg_attr(
28339 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28340 assert_instr(smin)
28341)]
28342#[cfg_attr(
28343 not(target_arch = "arm"),
28344 stable(feature = "neon_intrinsics", since = "1.59.0")
28345)]
28346#[cfg_attr(
28347 target_arch = "arm",
28348 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28349)]
28350pub fn vminq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
28351 unsafe {
28352 let mask: int32x4_t = simd_le(a, b);
28353 simd_select(mask, a, b)
28354 }
28355}
28356#[doc = "Minimum (vector)"]
28357#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u8)"]
28358#[inline]
28359#[target_feature(enable = "neon")]
28360#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28361#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28362#[cfg_attr(
28363 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28364 assert_instr(umin)
28365)]
28366#[cfg_attr(
28367 not(target_arch = "arm"),
28368 stable(feature = "neon_intrinsics", since = "1.59.0")
28369)]
28370#[cfg_attr(
28371 target_arch = "arm",
28372 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28373)]
28374pub fn vmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
28375 unsafe {
28376 let mask: uint8x8_t = simd_le(a, b);
28377 simd_select(mask, a, b)
28378 }
28379}
28380#[doc = "Minimum (vector)"]
28381#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u8)"]
28382#[inline]
28383#[target_feature(enable = "neon")]
28384#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28385#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28386#[cfg_attr(
28387 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28388 assert_instr(umin)
28389)]
28390#[cfg_attr(
28391 not(target_arch = "arm"),
28392 stable(feature = "neon_intrinsics", since = "1.59.0")
28393)]
28394#[cfg_attr(
28395 target_arch = "arm",
28396 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28397)]
28398pub fn vminq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
28399 unsafe {
28400 let mask: uint8x16_t = simd_le(a, b);
28401 simd_select(mask, a, b)
28402 }
28403}
28404#[doc = "Minimum (vector)"]
28405#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u16)"]
28406#[inline]
28407#[target_feature(enable = "neon")]
28408#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28409#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28410#[cfg_attr(
28411 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28412 assert_instr(umin)
28413)]
28414#[cfg_attr(
28415 not(target_arch = "arm"),
28416 stable(feature = "neon_intrinsics", since = "1.59.0")
28417)]
28418#[cfg_attr(
28419 target_arch = "arm",
28420 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28421)]
28422pub fn vmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
28423 unsafe {
28424 let mask: uint16x4_t = simd_le(a, b);
28425 simd_select(mask, a, b)
28426 }
28427}
28428#[doc = "Minimum (vector)"]
28429#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u16)"]
28430#[inline]
28431#[target_feature(enable = "neon")]
28432#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28433#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28434#[cfg_attr(
28435 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28436 assert_instr(umin)
28437)]
28438#[cfg_attr(
28439 not(target_arch = "arm"),
28440 stable(feature = "neon_intrinsics", since = "1.59.0")
28441)]
28442#[cfg_attr(
28443 target_arch = "arm",
28444 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28445)]
28446pub fn vminq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
28447 unsafe {
28448 let mask: uint16x8_t = simd_le(a, b);
28449 simd_select(mask, a, b)
28450 }
28451}
28452#[doc = "Minimum (vector)"]
28453#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u32)"]
28454#[inline]
28455#[target_feature(enable = "neon")]
28456#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28457#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28458#[cfg_attr(
28459 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28460 assert_instr(umin)
28461)]
28462#[cfg_attr(
28463 not(target_arch = "arm"),
28464 stable(feature = "neon_intrinsics", since = "1.59.0")
28465)]
28466#[cfg_attr(
28467 target_arch = "arm",
28468 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28469)]
28470pub fn vmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
28471 unsafe {
28472 let mask: uint32x2_t = simd_le(a, b);
28473 simd_select(mask, a, b)
28474 }
28475}
28476#[doc = "Minimum (vector)"]
28477#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u32)"]
28478#[inline]
28479#[target_feature(enable = "neon")]
28480#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28481#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28482#[cfg_attr(
28483 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28484 assert_instr(umin)
28485)]
28486#[cfg_attr(
28487 not(target_arch = "arm"),
28488 stable(feature = "neon_intrinsics", since = "1.59.0")
28489)]
28490#[cfg_attr(
28491 target_arch = "arm",
28492 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28493)]
28494pub fn vminq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
28495 unsafe {
28496 let mask: uint32x4_t = simd_le(a, b);
28497 simd_select(mask, a, b)
28498 }
28499}
28500#[doc = "Floating-point Minimum Number (vector)"]
28501#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnm_f16)"]
28502#[inline]
28503#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
28504#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vminnm))]
28505#[cfg_attr(
28506 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28507 assert_instr(fminnm)
28508)]
28509#[target_feature(enable = "neon,fp16")]
28510#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
28511#[cfg(not(target_arch = "arm64ec"))]
28512pub fn vminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
28513 unsafe { simd_fmin(a, b) }
28514}
28515#[doc = "Floating-point Minimum Number (vector)"]
28516#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f16)"]
28517#[inline]
28518#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
28519#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vminnm))]
28520#[cfg_attr(
28521 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28522 assert_instr(fminnm)
28523)]
28524#[target_feature(enable = "neon,fp16")]
28525#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
28526#[cfg(not(target_arch = "arm64ec"))]
28527pub fn vminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
28528 unsafe { simd_fmin(a, b) }
28529}
28530#[doc = "Floating-point Minimum Number (vector)"]
28531#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnm_f32)"]
28532#[inline]
28533#[target_feature(enable = "neon")]
28534#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
28535#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vminnm))]
28536#[cfg_attr(
28537 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28538 assert_instr(fminnm)
28539)]
28540#[cfg_attr(
28541 not(target_arch = "arm"),
28542 stable(feature = "neon_intrinsics", since = "1.59.0")
28543)]
28544#[cfg_attr(
28545 target_arch = "arm",
28546 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28547)]
28548pub fn vminnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
28549 unsafe { simd_fmin(a, b) }
28550}
28551#[doc = "Floating-point Minimum Number (vector)"]
28552#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f32)"]
28553#[inline]
28554#[target_feature(enable = "neon")]
28555#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
28556#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vminnm))]
28557#[cfg_attr(
28558 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28559 assert_instr(fminnm)
28560)]
28561#[cfg_attr(
28562 not(target_arch = "arm"),
28563 stable(feature = "neon_intrinsics", since = "1.59.0")
28564)]
28565#[cfg_attr(
28566 target_arch = "arm",
28567 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28568)]
28569pub fn vminnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
28570 unsafe { simd_fmin(a, b) }
28571}
28572#[doc = "Floating-point multiply-add to accumulator"]
28573#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_f32)"]
28574#[inline]
28575#[target_feature(enable = "neon")]
28576#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28577#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32"))]
28578#[cfg_attr(
28579 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28580 assert_instr(fmul)
28581)]
28582#[cfg_attr(
28583 not(target_arch = "arm"),
28584 stable(feature = "neon_intrinsics", since = "1.59.0")
28585)]
28586#[cfg_attr(
28587 target_arch = "arm",
28588 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28589)]
28590pub fn vmla_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t) -> float32x2_t {
28591 unsafe { simd_add(a, simd_mul(b, c)) }
28592}
28593#[doc = "Floating-point multiply-add to accumulator"]
28594#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_f32)"]
28595#[inline]
28596#[target_feature(enable = "neon")]
28597#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28598#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32"))]
28599#[cfg_attr(
28600 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28601 assert_instr(fmul)
28602)]
28603#[cfg_attr(
28604 not(target_arch = "arm"),
28605 stable(feature = "neon_intrinsics", since = "1.59.0")
28606)]
28607#[cfg_attr(
28608 target_arch = "arm",
28609 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28610)]
28611pub fn vmlaq_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t) -> float32x4_t {
28612 unsafe { simd_add(a, simd_mul(b, c)) }
28613}
28614#[doc = "Vector multiply accumulate with scalar"]
28615#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_f32)"]
28616#[inline]
28617#[target_feature(enable = "neon")]
28618#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28619#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32", LANE = 1))]
28620#[cfg_attr(
28621 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28622 assert_instr(fmul, LANE = 1)
28623)]
28624#[rustc_legacy_const_generics(3)]
28625#[cfg_attr(
28626 not(target_arch = "arm"),
28627 stable(feature = "neon_intrinsics", since = "1.59.0")
28628)]
28629#[cfg_attr(
28630 target_arch = "arm",
28631 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28632)]
28633pub fn vmla_lane_f32<const LANE: i32>(
28634 a: float32x2_t,
28635 b: float32x2_t,
28636 c: float32x2_t,
28637) -> float32x2_t {
28638 static_assert_uimm_bits!(LANE, 1);
28639 unsafe { vmla_f32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
28640}
28641#[doc = "Vector multiply accumulate with scalar"]
28642#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_f32)"]
28643#[inline]
28644#[target_feature(enable = "neon")]
28645#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28646#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32", LANE = 1))]
28647#[cfg_attr(
28648 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28649 assert_instr(fmul, LANE = 1)
28650)]
28651#[rustc_legacy_const_generics(3)]
28652#[cfg_attr(
28653 not(target_arch = "arm"),
28654 stable(feature = "neon_intrinsics", since = "1.59.0")
28655)]
28656#[cfg_attr(
28657 target_arch = "arm",
28658 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28659)]
28660pub fn vmla_laneq_f32<const LANE: i32>(
28661 a: float32x2_t,
28662 b: float32x2_t,
28663 c: float32x4_t,
28664) -> float32x2_t {
28665 static_assert_uimm_bits!(LANE, 2);
28666 unsafe { vmla_f32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
28667}
28668#[doc = "Vector multiply accumulate with scalar"]
28669#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_lane_f32)"]
28670#[inline]
28671#[target_feature(enable = "neon")]
28672#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28673#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32", LANE = 1))]
28674#[cfg_attr(
28675 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28676 assert_instr(fmul, LANE = 1)
28677)]
28678#[rustc_legacy_const_generics(3)]
28679#[cfg_attr(
28680 not(target_arch = "arm"),
28681 stable(feature = "neon_intrinsics", since = "1.59.0")
28682)]
28683#[cfg_attr(
28684 target_arch = "arm",
28685 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28686)]
28687pub fn vmlaq_lane_f32<const LANE: i32>(
28688 a: float32x4_t,
28689 b: float32x4_t,
28690 c: float32x2_t,
28691) -> float32x4_t {
28692 static_assert_uimm_bits!(LANE, 1);
28693 unsafe {
28694 vmlaq_f32(
28695 a,
28696 b,
28697 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28698 )
28699 }
28700}
28701#[doc = "Vector multiply accumulate with scalar"]
28702#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_f32)"]
28703#[inline]
28704#[target_feature(enable = "neon")]
28705#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28706#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32", LANE = 1))]
28707#[cfg_attr(
28708 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28709 assert_instr(fmul, LANE = 1)
28710)]
28711#[rustc_legacy_const_generics(3)]
28712#[cfg_attr(
28713 not(target_arch = "arm"),
28714 stable(feature = "neon_intrinsics", since = "1.59.0")
28715)]
28716#[cfg_attr(
28717 target_arch = "arm",
28718 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28719)]
28720pub fn vmlaq_laneq_f32<const LANE: i32>(
28721 a: float32x4_t,
28722 b: float32x4_t,
28723 c: float32x4_t,
28724) -> float32x4_t {
28725 static_assert_uimm_bits!(LANE, 2);
28726 unsafe {
28727 vmlaq_f32(
28728 a,
28729 b,
28730 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28731 )
28732 }
28733}
28734#[doc = "Vector multiply accumulate with scalar"]
28735#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_s16)"]
28736#[inline]
28737#[target_feature(enable = "neon")]
28738#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28739#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
28740#[cfg_attr(
28741 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28742 assert_instr(mla, LANE = 1)
28743)]
28744#[rustc_legacy_const_generics(3)]
28745#[cfg_attr(
28746 not(target_arch = "arm"),
28747 stable(feature = "neon_intrinsics", since = "1.59.0")
28748)]
28749#[cfg_attr(
28750 target_arch = "arm",
28751 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28752)]
28753pub fn vmla_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
28754 static_assert_uimm_bits!(LANE, 2);
28755 unsafe {
28756 vmla_s16(
28757 a,
28758 b,
28759 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28760 )
28761 }
28762}
28763#[doc = "Vector multiply accumulate with scalar"]
28764#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_u16)"]
28765#[inline]
28766#[target_feature(enable = "neon")]
28767#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28768#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
28769#[cfg_attr(
28770 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28771 assert_instr(mla, LANE = 1)
28772)]
28773#[rustc_legacy_const_generics(3)]
28774#[cfg_attr(
28775 not(target_arch = "arm"),
28776 stable(feature = "neon_intrinsics", since = "1.59.0")
28777)]
28778#[cfg_attr(
28779 target_arch = "arm",
28780 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28781)]
28782pub fn vmla_lane_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t, c: uint16x4_t) -> uint16x4_t {
28783 static_assert_uimm_bits!(LANE, 2);
28784 unsafe {
28785 vmla_u16(
28786 a,
28787 b,
28788 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28789 )
28790 }
28791}
28792#[doc = "Vector multiply accumulate with scalar"]
28793#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_s16)"]
28794#[inline]
28795#[target_feature(enable = "neon")]
28796#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28797#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
28798#[cfg_attr(
28799 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28800 assert_instr(mla, LANE = 1)
28801)]
28802#[rustc_legacy_const_generics(3)]
28803#[cfg_attr(
28804 not(target_arch = "arm"),
28805 stable(feature = "neon_intrinsics", since = "1.59.0")
28806)]
28807#[cfg_attr(
28808 target_arch = "arm",
28809 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28810)]
28811pub fn vmla_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t, c: int16x8_t) -> int16x4_t {
28812 static_assert_uimm_bits!(LANE, 3);
28813 unsafe {
28814 vmla_s16(
28815 a,
28816 b,
28817 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28818 )
28819 }
28820}
28821#[doc = "Vector multiply accumulate with scalar"]
28822#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_u16)"]
28823#[inline]
28824#[target_feature(enable = "neon")]
28825#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28826#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
28827#[cfg_attr(
28828 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28829 assert_instr(mla, LANE = 1)
28830)]
28831#[rustc_legacy_const_generics(3)]
28832#[cfg_attr(
28833 not(target_arch = "arm"),
28834 stable(feature = "neon_intrinsics", since = "1.59.0")
28835)]
28836#[cfg_attr(
28837 target_arch = "arm",
28838 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28839)]
28840pub fn vmla_laneq_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t, c: uint16x8_t) -> uint16x4_t {
28841 static_assert_uimm_bits!(LANE, 3);
28842 unsafe {
28843 vmla_u16(
28844 a,
28845 b,
28846 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28847 )
28848 }
28849}
28850#[doc = "Vector multiply accumulate with scalar"]
28851#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_lane_s16)"]
28852#[inline]
28853#[target_feature(enable = "neon")]
28854#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28855#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
28856#[cfg_attr(
28857 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28858 assert_instr(mla, LANE = 1)
28859)]
28860#[rustc_legacy_const_generics(3)]
28861#[cfg_attr(
28862 not(target_arch = "arm"),
28863 stable(feature = "neon_intrinsics", since = "1.59.0")
28864)]
28865#[cfg_attr(
28866 target_arch = "arm",
28867 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28868)]
28869pub fn vmlaq_lane_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t, c: int16x4_t) -> int16x8_t {
28870 static_assert_uimm_bits!(LANE, 2);
28871 unsafe {
28872 vmlaq_s16(
28873 a,
28874 b,
28875 simd_shuffle!(
28876 c,
28877 c,
28878 [
28879 LANE as u32,
28880 LANE as u32,
28881 LANE as u32,
28882 LANE as u32,
28883 LANE as u32,
28884 LANE as u32,
28885 LANE as u32,
28886 LANE as u32
28887 ]
28888 ),
28889 )
28890 }
28891}
28892#[doc = "Vector multiply accumulate with scalar"]
28893#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_lane_u16)"]
28894#[inline]
28895#[target_feature(enable = "neon")]
28896#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28897#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
28898#[cfg_attr(
28899 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28900 assert_instr(mla, LANE = 1)
28901)]
28902#[rustc_legacy_const_generics(3)]
28903#[cfg_attr(
28904 not(target_arch = "arm"),
28905 stable(feature = "neon_intrinsics", since = "1.59.0")
28906)]
28907#[cfg_attr(
28908 target_arch = "arm",
28909 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28910)]
28911pub fn vmlaq_lane_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t, c: uint16x4_t) -> uint16x8_t {
28912 static_assert_uimm_bits!(LANE, 2);
28913 unsafe {
28914 vmlaq_u16(
28915 a,
28916 b,
28917 simd_shuffle!(
28918 c,
28919 c,
28920 [
28921 LANE as u32,
28922 LANE as u32,
28923 LANE as u32,
28924 LANE as u32,
28925 LANE as u32,
28926 LANE as u32,
28927 LANE as u32,
28928 LANE as u32
28929 ]
28930 ),
28931 )
28932 }
28933}
28934#[doc = "Vector multiply accumulate with scalar"]
28935#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_s16)"]
28936#[inline]
28937#[target_feature(enable = "neon")]
28938#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28939#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
28940#[cfg_attr(
28941 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28942 assert_instr(mla, LANE = 1)
28943)]
28944#[rustc_legacy_const_generics(3)]
28945#[cfg_attr(
28946 not(target_arch = "arm"),
28947 stable(feature = "neon_intrinsics", since = "1.59.0")
28948)]
28949#[cfg_attr(
28950 target_arch = "arm",
28951 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28952)]
28953pub fn vmlaq_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
28954 static_assert_uimm_bits!(LANE, 3);
28955 unsafe {
28956 vmlaq_s16(
28957 a,
28958 b,
28959 simd_shuffle!(
28960 c,
28961 c,
28962 [
28963 LANE as u32,
28964 LANE as u32,
28965 LANE as u32,
28966 LANE as u32,
28967 LANE as u32,
28968 LANE as u32,
28969 LANE as u32,
28970 LANE as u32
28971 ]
28972 ),
28973 )
28974 }
28975}
28976#[doc = "Vector multiply accumulate with scalar"]
28977#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_u16)"]
28978#[inline]
28979#[target_feature(enable = "neon")]
28980#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28981#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
28982#[cfg_attr(
28983 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28984 assert_instr(mla, LANE = 1)
28985)]
28986#[rustc_legacy_const_generics(3)]
28987#[cfg_attr(
28988 not(target_arch = "arm"),
28989 stable(feature = "neon_intrinsics", since = "1.59.0")
28990)]
28991#[cfg_attr(
28992 target_arch = "arm",
28993 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28994)]
28995pub fn vmlaq_laneq_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t, c: uint16x8_t) -> uint16x8_t {
28996 static_assert_uimm_bits!(LANE, 3);
28997 unsafe {
28998 vmlaq_u16(
28999 a,
29000 b,
29001 simd_shuffle!(
29002 c,
29003 c,
29004 [
29005 LANE as u32,
29006 LANE as u32,
29007 LANE as u32,
29008 LANE as u32,
29009 LANE as u32,
29010 LANE as u32,
29011 LANE as u32,
29012 LANE as u32
29013 ]
29014 ),
29015 )
29016 }
29017}
29018#[doc = "Vector multiply accumulate with scalar"]
29019#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_s32)"]
29020#[inline]
29021#[target_feature(enable = "neon")]
29022#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29023#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
29024#[cfg_attr(
29025 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29026 assert_instr(mla, LANE = 1)
29027)]
29028#[rustc_legacy_const_generics(3)]
29029#[cfg_attr(
29030 not(target_arch = "arm"),
29031 stable(feature = "neon_intrinsics", since = "1.59.0")
29032)]
29033#[cfg_attr(
29034 target_arch = "arm",
29035 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29036)]
29037pub fn vmla_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
29038 static_assert_uimm_bits!(LANE, 1);
29039 unsafe { vmla_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29040}
29041#[doc = "Vector multiply accumulate with scalar"]
29042#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_u32)"]
29043#[inline]
29044#[target_feature(enable = "neon")]
29045#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29046#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
29047#[cfg_attr(
29048 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29049 assert_instr(mla, LANE = 1)
29050)]
29051#[rustc_legacy_const_generics(3)]
29052#[cfg_attr(
29053 not(target_arch = "arm"),
29054 stable(feature = "neon_intrinsics", since = "1.59.0")
29055)]
29056#[cfg_attr(
29057 target_arch = "arm",
29058 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29059)]
29060pub fn vmla_lane_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t, c: uint32x2_t) -> uint32x2_t {
29061 static_assert_uimm_bits!(LANE, 1);
29062 unsafe { vmla_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29063}
29064#[doc = "Vector multiply accumulate with scalar"]
29065#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_s32)"]
29066#[inline]
29067#[target_feature(enable = "neon")]
29068#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29069#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
29070#[cfg_attr(
29071 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29072 assert_instr(mla, LANE = 1)
29073)]
29074#[rustc_legacy_const_generics(3)]
29075#[cfg_attr(
29076 not(target_arch = "arm"),
29077 stable(feature = "neon_intrinsics", since = "1.59.0")
29078)]
29079#[cfg_attr(
29080 target_arch = "arm",
29081 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29082)]
29083pub fn vmla_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t, c: int32x4_t) -> int32x2_t {
29084 static_assert_uimm_bits!(LANE, 2);
29085 unsafe { vmla_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29086}
29087#[doc = "Vector multiply accumulate with scalar"]
29088#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_u32)"]
29089#[inline]
29090#[target_feature(enable = "neon")]
29091#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29092#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
29093#[cfg_attr(
29094 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29095 assert_instr(mla, LANE = 1)
29096)]
29097#[rustc_legacy_const_generics(3)]
29098#[cfg_attr(
29099 not(target_arch = "arm"),
29100 stable(feature = "neon_intrinsics", since = "1.59.0")
29101)]
29102#[cfg_attr(
29103 target_arch = "arm",
29104 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29105)]
29106pub fn vmla_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t, c: uint32x4_t) -> uint32x2_t {
29107 static_assert_uimm_bits!(LANE, 2);
29108 unsafe { vmla_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29109}
29110#[doc = "Vector multiply accumulate with scalar"]
29111#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_lane_s32)"]
29112#[inline]
29113#[target_feature(enable = "neon")]
29114#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29115#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
29116#[cfg_attr(
29117 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29118 assert_instr(mla, LANE = 1)
29119)]
29120#[rustc_legacy_const_generics(3)]
29121#[cfg_attr(
29122 not(target_arch = "arm"),
29123 stable(feature = "neon_intrinsics", since = "1.59.0")
29124)]
29125#[cfg_attr(
29126 target_arch = "arm",
29127 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29128)]
29129pub fn vmlaq_lane_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t, c: int32x2_t) -> int32x4_t {
29130 static_assert_uimm_bits!(LANE, 1);
29131 unsafe {
29132 vmlaq_s32(
29133 a,
29134 b,
29135 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29136 )
29137 }
29138}
29139#[doc = "Vector multiply accumulate with scalar"]
29140#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_lane_u32)"]
29141#[inline]
29142#[target_feature(enable = "neon")]
29143#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29144#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
29145#[cfg_attr(
29146 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29147 assert_instr(mla, LANE = 1)
29148)]
29149#[rustc_legacy_const_generics(3)]
29150#[cfg_attr(
29151 not(target_arch = "arm"),
29152 stable(feature = "neon_intrinsics", since = "1.59.0")
29153)]
29154#[cfg_attr(
29155 target_arch = "arm",
29156 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29157)]
29158pub fn vmlaq_lane_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t, c: uint32x2_t) -> uint32x4_t {
29159 static_assert_uimm_bits!(LANE, 1);
29160 unsafe {
29161 vmlaq_u32(
29162 a,
29163 b,
29164 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29165 )
29166 }
29167}
29168#[doc = "Vector multiply accumulate with scalar"]
29169#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_s32)"]
29170#[inline]
29171#[target_feature(enable = "neon")]
29172#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29173#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
29174#[cfg_attr(
29175 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29176 assert_instr(mla, LANE = 1)
29177)]
29178#[rustc_legacy_const_generics(3)]
29179#[cfg_attr(
29180 not(target_arch = "arm"),
29181 stable(feature = "neon_intrinsics", since = "1.59.0")
29182)]
29183#[cfg_attr(
29184 target_arch = "arm",
29185 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29186)]
29187pub fn vmlaq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
29188 static_assert_uimm_bits!(LANE, 2);
29189 unsafe {
29190 vmlaq_s32(
29191 a,
29192 b,
29193 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29194 )
29195 }
29196}
29197#[doc = "Vector multiply accumulate with scalar"]
29198#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_u32)"]
29199#[inline]
29200#[target_feature(enable = "neon")]
29201#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29202#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
29203#[cfg_attr(
29204 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29205 assert_instr(mla, LANE = 1)
29206)]
29207#[rustc_legacy_const_generics(3)]
29208#[cfg_attr(
29209 not(target_arch = "arm"),
29210 stable(feature = "neon_intrinsics", since = "1.59.0")
29211)]
29212#[cfg_attr(
29213 target_arch = "arm",
29214 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29215)]
29216pub fn vmlaq_laneq_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t, c: uint32x4_t) -> uint32x4_t {
29217 static_assert_uimm_bits!(LANE, 2);
29218 unsafe {
29219 vmlaq_u32(
29220 a,
29221 b,
29222 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29223 )
29224 }
29225}
29226#[doc = "Vector multiply accumulate with scalar"]
29227#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_f32)"]
29228#[inline]
29229#[target_feature(enable = "neon")]
29230#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29231#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32"))]
29232#[cfg_attr(
29233 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29234 assert_instr(fmul)
29235)]
29236#[cfg_attr(
29237 not(target_arch = "arm"),
29238 stable(feature = "neon_intrinsics", since = "1.59.0")
29239)]
29240#[cfg_attr(
29241 target_arch = "arm",
29242 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29243)]
29244pub fn vmla_n_f32(a: float32x2_t, b: float32x2_t, c: f32) -> float32x2_t {
29245 vmla_f32(a, b, vdup_n_f32(c))
29246}
29247#[doc = "Vector multiply accumulate with scalar"]
29248#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_f32)"]
29249#[inline]
29250#[target_feature(enable = "neon")]
29251#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29252#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32"))]
29253#[cfg_attr(
29254 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29255 assert_instr(fmul)
29256)]
29257#[cfg_attr(
29258 not(target_arch = "arm"),
29259 stable(feature = "neon_intrinsics", since = "1.59.0")
29260)]
29261#[cfg_attr(
29262 target_arch = "arm",
29263 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29264)]
29265pub fn vmlaq_n_f32(a: float32x4_t, b: float32x4_t, c: f32) -> float32x4_t {
29266 vmlaq_f32(a, b, vdupq_n_f32(c))
29267}
29268#[doc = "Vector multiply accumulate with scalar"]
29269#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_s16)"]
29270#[inline]
29271#[target_feature(enable = "neon")]
29272#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29273#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
29274#[cfg_attr(
29275 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29276 assert_instr(mla)
29277)]
29278#[cfg_attr(
29279 not(target_arch = "arm"),
29280 stable(feature = "neon_intrinsics", since = "1.59.0")
29281)]
29282#[cfg_attr(
29283 target_arch = "arm",
29284 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29285)]
29286pub fn vmla_n_s16(a: int16x4_t, b: int16x4_t, c: i16) -> int16x4_t {
29287 vmla_s16(a, b, vdup_n_s16(c))
29288}
29289#[doc = "Vector multiply accumulate with scalar"]
29290#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_s16)"]
29291#[inline]
29292#[target_feature(enable = "neon")]
29293#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29294#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
29295#[cfg_attr(
29296 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29297 assert_instr(mla)
29298)]
29299#[cfg_attr(
29300 not(target_arch = "arm"),
29301 stable(feature = "neon_intrinsics", since = "1.59.0")
29302)]
29303#[cfg_attr(
29304 target_arch = "arm",
29305 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29306)]
29307pub fn vmlaq_n_s16(a: int16x8_t, b: int16x8_t, c: i16) -> int16x8_t {
29308 vmlaq_s16(a, b, vdupq_n_s16(c))
29309}
29310#[doc = "Vector multiply accumulate with scalar"]
29311#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_u16)"]
29312#[inline]
29313#[target_feature(enable = "neon")]
29314#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29315#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
29316#[cfg_attr(
29317 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29318 assert_instr(mla)
29319)]
29320#[cfg_attr(
29321 not(target_arch = "arm"),
29322 stable(feature = "neon_intrinsics", since = "1.59.0")
29323)]
29324#[cfg_attr(
29325 target_arch = "arm",
29326 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29327)]
29328pub fn vmla_n_u16(a: uint16x4_t, b: uint16x4_t, c: u16) -> uint16x4_t {
29329 vmla_u16(a, b, vdup_n_u16(c))
29330}
29331#[doc = "Vector multiply accumulate with scalar"]
29332#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_u16)"]
29333#[inline]
29334#[target_feature(enable = "neon")]
29335#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29336#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
29337#[cfg_attr(
29338 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29339 assert_instr(mla)
29340)]
29341#[cfg_attr(
29342 not(target_arch = "arm"),
29343 stable(feature = "neon_intrinsics", since = "1.59.0")
29344)]
29345#[cfg_attr(
29346 target_arch = "arm",
29347 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29348)]
29349pub fn vmlaq_n_u16(a: uint16x8_t, b: uint16x8_t, c: u16) -> uint16x8_t {
29350 vmlaq_u16(a, b, vdupq_n_u16(c))
29351}
29352#[doc = "Vector multiply accumulate with scalar"]
29353#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_s32)"]
29354#[inline]
29355#[target_feature(enable = "neon")]
29356#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29357#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
29358#[cfg_attr(
29359 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29360 assert_instr(mla)
29361)]
29362#[cfg_attr(
29363 not(target_arch = "arm"),
29364 stable(feature = "neon_intrinsics", since = "1.59.0")
29365)]
29366#[cfg_attr(
29367 target_arch = "arm",
29368 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29369)]
29370pub fn vmla_n_s32(a: int32x2_t, b: int32x2_t, c: i32) -> int32x2_t {
29371 vmla_s32(a, b, vdup_n_s32(c))
29372}
29373#[doc = "Vector multiply accumulate with scalar"]
29374#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_s32)"]
29375#[inline]
29376#[target_feature(enable = "neon")]
29377#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29378#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
29379#[cfg_attr(
29380 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29381 assert_instr(mla)
29382)]
29383#[cfg_attr(
29384 not(target_arch = "arm"),
29385 stable(feature = "neon_intrinsics", since = "1.59.0")
29386)]
29387#[cfg_attr(
29388 target_arch = "arm",
29389 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29390)]
29391pub fn vmlaq_n_s32(a: int32x4_t, b: int32x4_t, c: i32) -> int32x4_t {
29392 vmlaq_s32(a, b, vdupq_n_s32(c))
29393}
29394#[doc = "Vector multiply accumulate with scalar"]
29395#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_u32)"]
29396#[inline]
29397#[target_feature(enable = "neon")]
29398#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29399#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
29400#[cfg_attr(
29401 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29402 assert_instr(mla)
29403)]
29404#[cfg_attr(
29405 not(target_arch = "arm"),
29406 stable(feature = "neon_intrinsics", since = "1.59.0")
29407)]
29408#[cfg_attr(
29409 target_arch = "arm",
29410 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29411)]
29412pub fn vmla_n_u32(a: uint32x2_t, b: uint32x2_t, c: u32) -> uint32x2_t {
29413 vmla_u32(a, b, vdup_n_u32(c))
29414}
29415#[doc = "Vector multiply accumulate with scalar"]
29416#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_u32)"]
29417#[inline]
29418#[target_feature(enable = "neon")]
29419#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29420#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
29421#[cfg_attr(
29422 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29423 assert_instr(mla)
29424)]
29425#[cfg_attr(
29426 not(target_arch = "arm"),
29427 stable(feature = "neon_intrinsics", since = "1.59.0")
29428)]
29429#[cfg_attr(
29430 target_arch = "arm",
29431 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29432)]
29433pub fn vmlaq_n_u32(a: uint32x4_t, b: uint32x4_t, c: u32) -> uint32x4_t {
29434 vmlaq_u32(a, b, vdupq_n_u32(c))
29435}
29436#[doc = "Multiply-add to accumulator"]
29437#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_s8)"]
29438#[inline]
29439#[target_feature(enable = "neon")]
29440#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29441#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i8"))]
29442#[cfg_attr(
29443 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29444 assert_instr(mla)
29445)]
29446#[cfg_attr(
29447 not(target_arch = "arm"),
29448 stable(feature = "neon_intrinsics", since = "1.59.0")
29449)]
29450#[cfg_attr(
29451 target_arch = "arm",
29452 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29453)]
29454pub fn vmla_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
29455 unsafe { simd_add(a, simd_mul(b, c)) }
29456}
29457#[doc = "Multiply-add to accumulator"]
29458#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_s8)"]
29459#[inline]
29460#[target_feature(enable = "neon")]
29461#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29462#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i8"))]
29463#[cfg_attr(
29464 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29465 assert_instr(mla)
29466)]
29467#[cfg_attr(
29468 not(target_arch = "arm"),
29469 stable(feature = "neon_intrinsics", since = "1.59.0")
29470)]
29471#[cfg_attr(
29472 target_arch = "arm",
29473 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29474)]
29475pub fn vmlaq_s8(a: int8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t {
29476 unsafe { simd_add(a, simd_mul(b, c)) }
29477}
29478#[doc = "Multiply-add to accumulator"]
29479#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_s16)"]
29480#[inline]
29481#[target_feature(enable = "neon")]
29482#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29483#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
29484#[cfg_attr(
29485 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29486 assert_instr(mla)
29487)]
29488#[cfg_attr(
29489 not(target_arch = "arm"),
29490 stable(feature = "neon_intrinsics", since = "1.59.0")
29491)]
29492#[cfg_attr(
29493 target_arch = "arm",
29494 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29495)]
29496pub fn vmla_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
29497 unsafe { simd_add(a, simd_mul(b, c)) }
29498}
29499#[doc = "Multiply-add to accumulator"]
29500#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_s16)"]
29501#[inline]
29502#[target_feature(enable = "neon")]
29503#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29504#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
29505#[cfg_attr(
29506 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29507 assert_instr(mla)
29508)]
29509#[cfg_attr(
29510 not(target_arch = "arm"),
29511 stable(feature = "neon_intrinsics", since = "1.59.0")
29512)]
29513#[cfg_attr(
29514 target_arch = "arm",
29515 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29516)]
29517pub fn vmlaq_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
29518 unsafe { simd_add(a, simd_mul(b, c)) }
29519}
29520#[doc = "Multiply-add to accumulator"]
29521#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_s32)"]
29522#[inline]
29523#[target_feature(enable = "neon")]
29524#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29525#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
29526#[cfg_attr(
29527 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29528 assert_instr(mla)
29529)]
29530#[cfg_attr(
29531 not(target_arch = "arm"),
29532 stable(feature = "neon_intrinsics", since = "1.59.0")
29533)]
29534#[cfg_attr(
29535 target_arch = "arm",
29536 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29537)]
29538pub fn vmla_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
29539 unsafe { simd_add(a, simd_mul(b, c)) }
29540}
29541#[doc = "Multiply-add to accumulator"]
29542#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_s32)"]
29543#[inline]
29544#[target_feature(enable = "neon")]
29545#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29546#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
29547#[cfg_attr(
29548 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29549 assert_instr(mla)
29550)]
29551#[cfg_attr(
29552 not(target_arch = "arm"),
29553 stable(feature = "neon_intrinsics", since = "1.59.0")
29554)]
29555#[cfg_attr(
29556 target_arch = "arm",
29557 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29558)]
29559pub fn vmlaq_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
29560 unsafe { simd_add(a, simd_mul(b, c)) }
29561}
29562#[doc = "Multiply-add to accumulator"]
29563#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_u8)"]
29564#[inline]
29565#[target_feature(enable = "neon")]
29566#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29567#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i8"))]
29568#[cfg_attr(
29569 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29570 assert_instr(mla)
29571)]
29572#[cfg_attr(
29573 not(target_arch = "arm"),
29574 stable(feature = "neon_intrinsics", since = "1.59.0")
29575)]
29576#[cfg_attr(
29577 target_arch = "arm",
29578 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29579)]
29580pub fn vmla_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
29581 unsafe { simd_add(a, simd_mul(b, c)) }
29582}
29583#[doc = "Multiply-add to accumulator"]
29584#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_u8)"]
29585#[inline]
29586#[target_feature(enable = "neon")]
29587#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29588#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i8"))]
29589#[cfg_attr(
29590 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29591 assert_instr(mla)
29592)]
29593#[cfg_attr(
29594 not(target_arch = "arm"),
29595 stable(feature = "neon_intrinsics", since = "1.59.0")
29596)]
29597#[cfg_attr(
29598 target_arch = "arm",
29599 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29600)]
29601pub fn vmlaq_u8(a: uint8x16_t, b: uint8x16_t, c: uint8x16_t) -> uint8x16_t {
29602 unsafe { simd_add(a, simd_mul(b, c)) }
29603}
29604#[doc = "Multiply-add to accumulator"]
29605#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_u16)"]
29606#[inline]
29607#[target_feature(enable = "neon")]
29608#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29609#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
29610#[cfg_attr(
29611 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29612 assert_instr(mla)
29613)]
29614#[cfg_attr(
29615 not(target_arch = "arm"),
29616 stable(feature = "neon_intrinsics", since = "1.59.0")
29617)]
29618#[cfg_attr(
29619 target_arch = "arm",
29620 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29621)]
29622pub fn vmla_u16(a: uint16x4_t, b: uint16x4_t, c: uint16x4_t) -> uint16x4_t {
29623 unsafe { simd_add(a, simd_mul(b, c)) }
29624}
29625#[doc = "Multiply-add to accumulator"]
29626#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_u16)"]
29627#[inline]
29628#[target_feature(enable = "neon")]
29629#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29630#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
29631#[cfg_attr(
29632 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29633 assert_instr(mla)
29634)]
29635#[cfg_attr(
29636 not(target_arch = "arm"),
29637 stable(feature = "neon_intrinsics", since = "1.59.0")
29638)]
29639#[cfg_attr(
29640 target_arch = "arm",
29641 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29642)]
29643pub fn vmlaq_u16(a: uint16x8_t, b: uint16x8_t, c: uint16x8_t) -> uint16x8_t {
29644 unsafe { simd_add(a, simd_mul(b, c)) }
29645}
29646#[doc = "Multiply-add to accumulator"]
29647#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_u32)"]
29648#[inline]
29649#[target_feature(enable = "neon")]
29650#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29651#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
29652#[cfg_attr(
29653 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29654 assert_instr(mla)
29655)]
29656#[cfg_attr(
29657 not(target_arch = "arm"),
29658 stable(feature = "neon_intrinsics", since = "1.59.0")
29659)]
29660#[cfg_attr(
29661 target_arch = "arm",
29662 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29663)]
29664pub fn vmla_u32(a: uint32x2_t, b: uint32x2_t, c: uint32x2_t) -> uint32x2_t {
29665 unsafe { simd_add(a, simd_mul(b, c)) }
29666}
29667#[doc = "Multiply-add to accumulator"]
29668#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_u32)"]
29669#[inline]
29670#[target_feature(enable = "neon")]
29671#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29672#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
29673#[cfg_attr(
29674 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29675 assert_instr(mla)
29676)]
29677#[cfg_attr(
29678 not(target_arch = "arm"),
29679 stable(feature = "neon_intrinsics", since = "1.59.0")
29680)]
29681#[cfg_attr(
29682 target_arch = "arm",
29683 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29684)]
29685pub fn vmlaq_u32(a: uint32x4_t, b: uint32x4_t, c: uint32x4_t) -> uint32x4_t {
29686 unsafe { simd_add(a, simd_mul(b, c)) }
29687}
29688#[doc = "Vector widening multiply accumulate with scalar"]
29689#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_lane_s16)"]
29690#[inline]
29691#[target_feature(enable = "neon")]
29692#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29693#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s16", LANE = 1))]
29694#[cfg_attr(
29695 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29696 assert_instr(smlal, LANE = 1)
29697)]
29698#[rustc_legacy_const_generics(3)]
29699#[cfg_attr(
29700 not(target_arch = "arm"),
29701 stable(feature = "neon_intrinsics", since = "1.59.0")
29702)]
29703#[cfg_attr(
29704 target_arch = "arm",
29705 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29706)]
29707pub fn vmlal_lane_s16<const LANE: i32>(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
29708 static_assert_uimm_bits!(LANE, 2);
29709 unsafe {
29710 vmlal_s16(
29711 a,
29712 b,
29713 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29714 )
29715 }
29716}
29717#[doc = "Vector widening multiply accumulate with scalar"]
29718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_laneq_s16)"]
29719#[inline]
29720#[target_feature(enable = "neon")]
29721#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29722#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s16", LANE = 1))]
29723#[cfg_attr(
29724 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29725 assert_instr(smlal, LANE = 1)
29726)]
29727#[rustc_legacy_const_generics(3)]
29728#[cfg_attr(
29729 not(target_arch = "arm"),
29730 stable(feature = "neon_intrinsics", since = "1.59.0")
29731)]
29732#[cfg_attr(
29733 target_arch = "arm",
29734 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29735)]
29736pub fn vmlal_laneq_s16<const LANE: i32>(a: int32x4_t, b: int16x4_t, c: int16x8_t) -> int32x4_t {
29737 static_assert_uimm_bits!(LANE, 3);
29738 unsafe {
29739 vmlal_s16(
29740 a,
29741 b,
29742 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29743 )
29744 }
29745}
29746#[doc = "Vector widening multiply accumulate with scalar"]
29747#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_lane_s32)"]
29748#[inline]
29749#[target_feature(enable = "neon")]
29750#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29751#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s32", LANE = 1))]
29752#[cfg_attr(
29753 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29754 assert_instr(smlal, LANE = 1)
29755)]
29756#[rustc_legacy_const_generics(3)]
29757#[cfg_attr(
29758 not(target_arch = "arm"),
29759 stable(feature = "neon_intrinsics", since = "1.59.0")
29760)]
29761#[cfg_attr(
29762 target_arch = "arm",
29763 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29764)]
29765pub fn vmlal_lane_s32<const LANE: i32>(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
29766 static_assert_uimm_bits!(LANE, 1);
29767 unsafe { vmlal_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29768}
29769#[doc = "Vector widening multiply accumulate with scalar"]
29770#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_laneq_s32)"]
29771#[inline]
29772#[target_feature(enable = "neon")]
29773#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29774#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s32", LANE = 1))]
29775#[cfg_attr(
29776 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29777 assert_instr(smlal, LANE = 1)
29778)]
29779#[rustc_legacy_const_generics(3)]
29780#[cfg_attr(
29781 not(target_arch = "arm"),
29782 stable(feature = "neon_intrinsics", since = "1.59.0")
29783)]
29784#[cfg_attr(
29785 target_arch = "arm",
29786 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29787)]
29788pub fn vmlal_laneq_s32<const LANE: i32>(a: int64x2_t, b: int32x2_t, c: int32x4_t) -> int64x2_t {
29789 static_assert_uimm_bits!(LANE, 2);
29790 unsafe { vmlal_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29791}
29792#[doc = "Vector widening multiply accumulate with scalar"]
29793#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_lane_u16)"]
29794#[inline]
29795#[target_feature(enable = "neon")]
29796#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29797#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u16", LANE = 1))]
29798#[cfg_attr(
29799 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29800 assert_instr(umlal, LANE = 1)
29801)]
29802#[rustc_legacy_const_generics(3)]
29803#[cfg_attr(
29804 not(target_arch = "arm"),
29805 stable(feature = "neon_intrinsics", since = "1.59.0")
29806)]
29807#[cfg_attr(
29808 target_arch = "arm",
29809 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29810)]
29811pub fn vmlal_lane_u16<const LANE: i32>(a: uint32x4_t, b: uint16x4_t, c: uint16x4_t) -> uint32x4_t {
29812 static_assert_uimm_bits!(LANE, 2);
29813 unsafe {
29814 vmlal_u16(
29815 a,
29816 b,
29817 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29818 )
29819 }
29820}
29821#[doc = "Vector widening multiply accumulate with scalar"]
29822#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_laneq_u16)"]
29823#[inline]
29824#[target_feature(enable = "neon")]
29825#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29826#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u16", LANE = 1))]
29827#[cfg_attr(
29828 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29829 assert_instr(umlal, LANE = 1)
29830)]
29831#[rustc_legacy_const_generics(3)]
29832#[cfg_attr(
29833 not(target_arch = "arm"),
29834 stable(feature = "neon_intrinsics", since = "1.59.0")
29835)]
29836#[cfg_attr(
29837 target_arch = "arm",
29838 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29839)]
29840pub fn vmlal_laneq_u16<const LANE: i32>(a: uint32x4_t, b: uint16x4_t, c: uint16x8_t) -> uint32x4_t {
29841 static_assert_uimm_bits!(LANE, 3);
29842 unsafe {
29843 vmlal_u16(
29844 a,
29845 b,
29846 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29847 )
29848 }
29849}
29850#[doc = "Vector widening multiply accumulate with scalar"]
29851#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_lane_u32)"]
29852#[inline]
29853#[target_feature(enable = "neon")]
29854#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29855#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u32", LANE = 1))]
29856#[cfg_attr(
29857 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29858 assert_instr(umlal, LANE = 1)
29859)]
29860#[rustc_legacy_const_generics(3)]
29861#[cfg_attr(
29862 not(target_arch = "arm"),
29863 stable(feature = "neon_intrinsics", since = "1.59.0")
29864)]
29865#[cfg_attr(
29866 target_arch = "arm",
29867 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29868)]
29869pub fn vmlal_lane_u32<const LANE: i32>(a: uint64x2_t, b: uint32x2_t, c: uint32x2_t) -> uint64x2_t {
29870 static_assert_uimm_bits!(LANE, 1);
29871 unsafe { vmlal_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29872}
29873#[doc = "Vector widening multiply accumulate with scalar"]
29874#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_laneq_u32)"]
29875#[inline]
29876#[target_feature(enable = "neon")]
29877#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29878#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u32", LANE = 1))]
29879#[cfg_attr(
29880 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29881 assert_instr(umlal, LANE = 1)
29882)]
29883#[rustc_legacy_const_generics(3)]
29884#[cfg_attr(
29885 not(target_arch = "arm"),
29886 stable(feature = "neon_intrinsics", since = "1.59.0")
29887)]
29888#[cfg_attr(
29889 target_arch = "arm",
29890 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29891)]
29892pub fn vmlal_laneq_u32<const LANE: i32>(a: uint64x2_t, b: uint32x2_t, c: uint32x4_t) -> uint64x2_t {
29893 static_assert_uimm_bits!(LANE, 2);
29894 unsafe { vmlal_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29895}
29896#[doc = "Vector widening multiply accumulate with scalar"]
29897#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_n_s16)"]
29898#[inline]
29899#[target_feature(enable = "neon")]
29900#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29901#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s16"))]
29902#[cfg_attr(
29903 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29904 assert_instr(smlal)
29905)]
29906#[cfg_attr(
29907 not(target_arch = "arm"),
29908 stable(feature = "neon_intrinsics", since = "1.59.0")
29909)]
29910#[cfg_attr(
29911 target_arch = "arm",
29912 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29913)]
29914pub fn vmlal_n_s16(a: int32x4_t, b: int16x4_t, c: i16) -> int32x4_t {
29915 vmlal_s16(a, b, vdup_n_s16(c))
29916}
29917#[doc = "Vector widening multiply accumulate with scalar"]
29918#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_n_s32)"]
29919#[inline]
29920#[target_feature(enable = "neon")]
29921#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29922#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s32"))]
29923#[cfg_attr(
29924 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29925 assert_instr(smlal)
29926)]
29927#[cfg_attr(
29928 not(target_arch = "arm"),
29929 stable(feature = "neon_intrinsics", since = "1.59.0")
29930)]
29931#[cfg_attr(
29932 target_arch = "arm",
29933 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29934)]
29935pub fn vmlal_n_s32(a: int64x2_t, b: int32x2_t, c: i32) -> int64x2_t {
29936 vmlal_s32(a, b, vdup_n_s32(c))
29937}
29938#[doc = "Vector widening multiply accumulate with scalar"]
29939#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_n_u16)"]
29940#[inline]
29941#[target_feature(enable = "neon")]
29942#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29943#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u16"))]
29944#[cfg_attr(
29945 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29946 assert_instr(umlal)
29947)]
29948#[cfg_attr(
29949 not(target_arch = "arm"),
29950 stable(feature = "neon_intrinsics", since = "1.59.0")
29951)]
29952#[cfg_attr(
29953 target_arch = "arm",
29954 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29955)]
29956pub fn vmlal_n_u16(a: uint32x4_t, b: uint16x4_t, c: u16) -> uint32x4_t {
29957 vmlal_u16(a, b, vdup_n_u16(c))
29958}
29959#[doc = "Vector widening multiply accumulate with scalar"]
29960#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_n_u32)"]
29961#[inline]
29962#[target_feature(enable = "neon")]
29963#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29964#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u32"))]
29965#[cfg_attr(
29966 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29967 assert_instr(umlal)
29968)]
29969#[cfg_attr(
29970 not(target_arch = "arm"),
29971 stable(feature = "neon_intrinsics", since = "1.59.0")
29972)]
29973#[cfg_attr(
29974 target_arch = "arm",
29975 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29976)]
29977pub fn vmlal_n_u32(a: uint64x2_t, b: uint32x2_t, c: u32) -> uint64x2_t {
29978 vmlal_u32(a, b, vdup_n_u32(c))
29979}
29980#[doc = "Signed multiply-add long"]
29981#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_s8)"]
29982#[inline]
29983#[target_feature(enable = "neon")]
29984#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29985#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s8"))]
29986#[cfg_attr(
29987 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29988 assert_instr(smlal)
29989)]
29990#[cfg_attr(
29991 not(target_arch = "arm"),
29992 stable(feature = "neon_intrinsics", since = "1.59.0")
29993)]
29994#[cfg_attr(
29995 target_arch = "arm",
29996 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29997)]
29998pub fn vmlal_s8(a: int16x8_t, b: int8x8_t, c: int8x8_t) -> int16x8_t {
29999 unsafe { simd_add(a, vmull_s8(b, c)) }
30000}
30001#[doc = "Signed multiply-add long"]
30002#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_s16)"]
30003#[inline]
30004#[target_feature(enable = "neon")]
30005#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30006#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s16"))]
30007#[cfg_attr(
30008 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30009 assert_instr(smlal)
30010)]
30011#[cfg_attr(
30012 not(target_arch = "arm"),
30013 stable(feature = "neon_intrinsics", since = "1.59.0")
30014)]
30015#[cfg_attr(
30016 target_arch = "arm",
30017 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30018)]
30019pub fn vmlal_s16(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
30020 unsafe { simd_add(a, vmull_s16(b, c)) }
30021}
30022#[doc = "Signed multiply-add long"]
30023#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_s32)"]
30024#[inline]
30025#[target_feature(enable = "neon")]
30026#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30027#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s32"))]
30028#[cfg_attr(
30029 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30030 assert_instr(smlal)
30031)]
30032#[cfg_attr(
30033 not(target_arch = "arm"),
30034 stable(feature = "neon_intrinsics", since = "1.59.0")
30035)]
30036#[cfg_attr(
30037 target_arch = "arm",
30038 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30039)]
30040pub fn vmlal_s32(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
30041 unsafe { simd_add(a, vmull_s32(b, c)) }
30042}
30043#[doc = "Unsigned multiply-add long"]
30044#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_u8)"]
30045#[inline]
30046#[target_feature(enable = "neon")]
30047#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30048#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u8"))]
30049#[cfg_attr(
30050 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30051 assert_instr(umlal)
30052)]
30053#[cfg_attr(
30054 not(target_arch = "arm"),
30055 stable(feature = "neon_intrinsics", since = "1.59.0")
30056)]
30057#[cfg_attr(
30058 target_arch = "arm",
30059 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30060)]
30061pub fn vmlal_u8(a: uint16x8_t, b: uint8x8_t, c: uint8x8_t) -> uint16x8_t {
30062 unsafe { simd_add(a, vmull_u8(b, c)) }
30063}
30064#[doc = "Unsigned multiply-add long"]
30065#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_u16)"]
30066#[inline]
30067#[target_feature(enable = "neon")]
30068#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30069#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u16"))]
30070#[cfg_attr(
30071 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30072 assert_instr(umlal)
30073)]
30074#[cfg_attr(
30075 not(target_arch = "arm"),
30076 stable(feature = "neon_intrinsics", since = "1.59.0")
30077)]
30078#[cfg_attr(
30079 target_arch = "arm",
30080 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30081)]
30082pub fn vmlal_u16(a: uint32x4_t, b: uint16x4_t, c: uint16x4_t) -> uint32x4_t {
30083 unsafe { simd_add(a, vmull_u16(b, c)) }
30084}
30085#[doc = "Unsigned multiply-add long"]
30086#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_u32)"]
30087#[inline]
30088#[target_feature(enable = "neon")]
30089#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30090#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u32"))]
30091#[cfg_attr(
30092 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30093 assert_instr(umlal)
30094)]
30095#[cfg_attr(
30096 not(target_arch = "arm"),
30097 stable(feature = "neon_intrinsics", since = "1.59.0")
30098)]
30099#[cfg_attr(
30100 target_arch = "arm",
30101 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30102)]
30103pub fn vmlal_u32(a: uint64x2_t, b: uint32x2_t, c: uint32x2_t) -> uint64x2_t {
30104 unsafe { simd_add(a, vmull_u32(b, c)) }
30105}
30106#[doc = "Floating-point multiply-subtract from accumulator"]
30107#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_f32)"]
30108#[inline]
30109#[target_feature(enable = "neon")]
30110#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30111#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32"))]
30112#[cfg_attr(
30113 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30114 assert_instr(fmul)
30115)]
30116#[cfg_attr(
30117 not(target_arch = "arm"),
30118 stable(feature = "neon_intrinsics", since = "1.59.0")
30119)]
30120#[cfg_attr(
30121 target_arch = "arm",
30122 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30123)]
30124pub fn vmls_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t) -> float32x2_t {
30125 unsafe { simd_sub(a, simd_mul(b, c)) }
30126}
30127#[doc = "Floating-point multiply-subtract from accumulator"]
30128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_f32)"]
30129#[inline]
30130#[target_feature(enable = "neon")]
30131#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30132#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32"))]
30133#[cfg_attr(
30134 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30135 assert_instr(fmul)
30136)]
30137#[cfg_attr(
30138 not(target_arch = "arm"),
30139 stable(feature = "neon_intrinsics", since = "1.59.0")
30140)]
30141#[cfg_attr(
30142 target_arch = "arm",
30143 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30144)]
30145pub fn vmlsq_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t) -> float32x4_t {
30146 unsafe { simd_sub(a, simd_mul(b, c)) }
30147}
30148#[doc = "Vector multiply subtract with scalar"]
30149#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_f32)"]
30150#[inline]
30151#[target_feature(enable = "neon")]
30152#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30153#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32", LANE = 1))]
30154#[cfg_attr(
30155 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30156 assert_instr(fmul, LANE = 1)
30157)]
30158#[rustc_legacy_const_generics(3)]
30159#[cfg_attr(
30160 not(target_arch = "arm"),
30161 stable(feature = "neon_intrinsics", since = "1.59.0")
30162)]
30163#[cfg_attr(
30164 target_arch = "arm",
30165 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30166)]
30167pub fn vmls_lane_f32<const LANE: i32>(
30168 a: float32x2_t,
30169 b: float32x2_t,
30170 c: float32x2_t,
30171) -> float32x2_t {
30172 static_assert_uimm_bits!(LANE, 1);
30173 unsafe { vmls_f32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
30174}
30175#[doc = "Vector multiply subtract with scalar"]
30176#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_f32)"]
30177#[inline]
30178#[target_feature(enable = "neon")]
30179#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30180#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32", LANE = 1))]
30181#[cfg_attr(
30182 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30183 assert_instr(fmul, LANE = 1)
30184)]
30185#[rustc_legacy_const_generics(3)]
30186#[cfg_attr(
30187 not(target_arch = "arm"),
30188 stable(feature = "neon_intrinsics", since = "1.59.0")
30189)]
30190#[cfg_attr(
30191 target_arch = "arm",
30192 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30193)]
30194pub fn vmls_laneq_f32<const LANE: i32>(
30195 a: float32x2_t,
30196 b: float32x2_t,
30197 c: float32x4_t,
30198) -> float32x2_t {
30199 static_assert_uimm_bits!(LANE, 2);
30200 unsafe { vmls_f32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
30201}
30202#[doc = "Vector multiply subtract with scalar"]
30203#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_lane_f32)"]
30204#[inline]
30205#[target_feature(enable = "neon")]
30206#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30207#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32", LANE = 1))]
30208#[cfg_attr(
30209 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30210 assert_instr(fmul, LANE = 1)
30211)]
30212#[rustc_legacy_const_generics(3)]
30213#[cfg_attr(
30214 not(target_arch = "arm"),
30215 stable(feature = "neon_intrinsics", since = "1.59.0")
30216)]
30217#[cfg_attr(
30218 target_arch = "arm",
30219 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30220)]
30221pub fn vmlsq_lane_f32<const LANE: i32>(
30222 a: float32x4_t,
30223 b: float32x4_t,
30224 c: float32x2_t,
30225) -> float32x4_t {
30226 static_assert_uimm_bits!(LANE, 1);
30227 unsafe {
30228 vmlsq_f32(
30229 a,
30230 b,
30231 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30232 )
30233 }
30234}
30235#[doc = "Vector multiply subtract with scalar"]
30236#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_f32)"]
30237#[inline]
30238#[target_feature(enable = "neon")]
30239#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30240#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32", LANE = 1))]
30241#[cfg_attr(
30242 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30243 assert_instr(fmul, LANE = 1)
30244)]
30245#[rustc_legacy_const_generics(3)]
30246#[cfg_attr(
30247 not(target_arch = "arm"),
30248 stable(feature = "neon_intrinsics", since = "1.59.0")
30249)]
30250#[cfg_attr(
30251 target_arch = "arm",
30252 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30253)]
30254pub fn vmlsq_laneq_f32<const LANE: i32>(
30255 a: float32x4_t,
30256 b: float32x4_t,
30257 c: float32x4_t,
30258) -> float32x4_t {
30259 static_assert_uimm_bits!(LANE, 2);
30260 unsafe {
30261 vmlsq_f32(
30262 a,
30263 b,
30264 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30265 )
30266 }
30267}
30268#[doc = "Vector multiply subtract with scalar"]
30269#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_s16)"]
30270#[inline]
30271#[target_feature(enable = "neon")]
30272#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30273#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
30274#[cfg_attr(
30275 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30276 assert_instr(mls, LANE = 1)
30277)]
30278#[rustc_legacy_const_generics(3)]
30279#[cfg_attr(
30280 not(target_arch = "arm"),
30281 stable(feature = "neon_intrinsics", since = "1.59.0")
30282)]
30283#[cfg_attr(
30284 target_arch = "arm",
30285 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30286)]
30287pub fn vmls_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
30288 static_assert_uimm_bits!(LANE, 2);
30289 unsafe {
30290 vmls_s16(
30291 a,
30292 b,
30293 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30294 )
30295 }
30296}
30297#[doc = "Vector multiply subtract with scalar"]
30298#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_u16)"]
30299#[inline]
30300#[target_feature(enable = "neon")]
30301#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30302#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
30303#[cfg_attr(
30304 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30305 assert_instr(mls, LANE = 1)
30306)]
30307#[rustc_legacy_const_generics(3)]
30308#[cfg_attr(
30309 not(target_arch = "arm"),
30310 stable(feature = "neon_intrinsics", since = "1.59.0")
30311)]
30312#[cfg_attr(
30313 target_arch = "arm",
30314 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30315)]
30316pub fn vmls_lane_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t, c: uint16x4_t) -> uint16x4_t {
30317 static_assert_uimm_bits!(LANE, 2);
30318 unsafe {
30319 vmls_u16(
30320 a,
30321 b,
30322 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30323 )
30324 }
30325}
30326#[doc = "Vector multiply subtract with scalar"]
30327#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_s16)"]
30328#[inline]
30329#[target_feature(enable = "neon")]
30330#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30331#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
30332#[cfg_attr(
30333 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30334 assert_instr(mls, LANE = 1)
30335)]
30336#[rustc_legacy_const_generics(3)]
30337#[cfg_attr(
30338 not(target_arch = "arm"),
30339 stable(feature = "neon_intrinsics", since = "1.59.0")
30340)]
30341#[cfg_attr(
30342 target_arch = "arm",
30343 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30344)]
30345pub fn vmls_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t, c: int16x8_t) -> int16x4_t {
30346 static_assert_uimm_bits!(LANE, 3);
30347 unsafe {
30348 vmls_s16(
30349 a,
30350 b,
30351 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30352 )
30353 }
30354}
30355#[doc = "Vector multiply subtract with scalar"]
30356#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_u16)"]
30357#[inline]
30358#[target_feature(enable = "neon")]
30359#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30360#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
30361#[cfg_attr(
30362 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30363 assert_instr(mls, LANE = 1)
30364)]
30365#[rustc_legacy_const_generics(3)]
30366#[cfg_attr(
30367 not(target_arch = "arm"),
30368 stable(feature = "neon_intrinsics", since = "1.59.0")
30369)]
30370#[cfg_attr(
30371 target_arch = "arm",
30372 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30373)]
30374pub fn vmls_laneq_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t, c: uint16x8_t) -> uint16x4_t {
30375 static_assert_uimm_bits!(LANE, 3);
30376 unsafe {
30377 vmls_u16(
30378 a,
30379 b,
30380 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30381 )
30382 }
30383}
30384#[doc = "Vector multiply subtract with scalar"]
30385#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_lane_s16)"]
30386#[inline]
30387#[target_feature(enable = "neon")]
30388#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30389#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
30390#[cfg_attr(
30391 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30392 assert_instr(mls, LANE = 1)
30393)]
30394#[rustc_legacy_const_generics(3)]
30395#[cfg_attr(
30396 not(target_arch = "arm"),
30397 stable(feature = "neon_intrinsics", since = "1.59.0")
30398)]
30399#[cfg_attr(
30400 target_arch = "arm",
30401 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30402)]
30403pub fn vmlsq_lane_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t, c: int16x4_t) -> int16x8_t {
30404 static_assert_uimm_bits!(LANE, 2);
30405 unsafe {
30406 vmlsq_s16(
30407 a,
30408 b,
30409 simd_shuffle!(
30410 c,
30411 c,
30412 [
30413 LANE as u32,
30414 LANE as u32,
30415 LANE as u32,
30416 LANE as u32,
30417 LANE as u32,
30418 LANE as u32,
30419 LANE as u32,
30420 LANE as u32
30421 ]
30422 ),
30423 )
30424 }
30425}
30426#[doc = "Vector multiply subtract with scalar"]
30427#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_lane_u16)"]
30428#[inline]
30429#[target_feature(enable = "neon")]
30430#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30431#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
30432#[cfg_attr(
30433 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30434 assert_instr(mls, LANE = 1)
30435)]
30436#[rustc_legacy_const_generics(3)]
30437#[cfg_attr(
30438 not(target_arch = "arm"),
30439 stable(feature = "neon_intrinsics", since = "1.59.0")
30440)]
30441#[cfg_attr(
30442 target_arch = "arm",
30443 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30444)]
30445pub fn vmlsq_lane_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t, c: uint16x4_t) -> uint16x8_t {
30446 static_assert_uimm_bits!(LANE, 2);
30447 unsafe {
30448 vmlsq_u16(
30449 a,
30450 b,
30451 simd_shuffle!(
30452 c,
30453 c,
30454 [
30455 LANE as u32,
30456 LANE as u32,
30457 LANE as u32,
30458 LANE as u32,
30459 LANE as u32,
30460 LANE as u32,
30461 LANE as u32,
30462 LANE as u32
30463 ]
30464 ),
30465 )
30466 }
30467}
30468#[doc = "Vector multiply subtract with scalar"]
30469#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_s16)"]
30470#[inline]
30471#[target_feature(enable = "neon")]
30472#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30473#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
30474#[cfg_attr(
30475 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30476 assert_instr(mls, LANE = 1)
30477)]
30478#[rustc_legacy_const_generics(3)]
30479#[cfg_attr(
30480 not(target_arch = "arm"),
30481 stable(feature = "neon_intrinsics", since = "1.59.0")
30482)]
30483#[cfg_attr(
30484 target_arch = "arm",
30485 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30486)]
30487pub fn vmlsq_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
30488 static_assert_uimm_bits!(LANE, 3);
30489 unsafe {
30490 vmlsq_s16(
30491 a,
30492 b,
30493 simd_shuffle!(
30494 c,
30495 c,
30496 [
30497 LANE as u32,
30498 LANE as u32,
30499 LANE as u32,
30500 LANE as u32,
30501 LANE as u32,
30502 LANE as u32,
30503 LANE as u32,
30504 LANE as u32
30505 ]
30506 ),
30507 )
30508 }
30509}
30510#[doc = "Vector multiply subtract with scalar"]
30511#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_u16)"]
30512#[inline]
30513#[target_feature(enable = "neon")]
30514#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30515#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
30516#[cfg_attr(
30517 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30518 assert_instr(mls, LANE = 1)
30519)]
30520#[rustc_legacy_const_generics(3)]
30521#[cfg_attr(
30522 not(target_arch = "arm"),
30523 stable(feature = "neon_intrinsics", since = "1.59.0")
30524)]
30525#[cfg_attr(
30526 target_arch = "arm",
30527 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30528)]
30529pub fn vmlsq_laneq_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t, c: uint16x8_t) -> uint16x8_t {
30530 static_assert_uimm_bits!(LANE, 3);
30531 unsafe {
30532 vmlsq_u16(
30533 a,
30534 b,
30535 simd_shuffle!(
30536 c,
30537 c,
30538 [
30539 LANE as u32,
30540 LANE as u32,
30541 LANE as u32,
30542 LANE as u32,
30543 LANE as u32,
30544 LANE as u32,
30545 LANE as u32,
30546 LANE as u32
30547 ]
30548 ),
30549 )
30550 }
30551}
30552#[doc = "Vector multiply subtract with scalar"]
30553#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_s32)"]
30554#[inline]
30555#[target_feature(enable = "neon")]
30556#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30557#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
30558#[cfg_attr(
30559 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30560 assert_instr(mls, LANE = 1)
30561)]
30562#[rustc_legacy_const_generics(3)]
30563#[cfg_attr(
30564 not(target_arch = "arm"),
30565 stable(feature = "neon_intrinsics", since = "1.59.0")
30566)]
30567#[cfg_attr(
30568 target_arch = "arm",
30569 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30570)]
30571pub fn vmls_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
30572 static_assert_uimm_bits!(LANE, 1);
30573 unsafe { vmls_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
30574}
30575#[doc = "Vector multiply subtract with scalar"]
30576#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_u32)"]
30577#[inline]
30578#[target_feature(enable = "neon")]
30579#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30580#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
30581#[cfg_attr(
30582 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30583 assert_instr(mls, LANE = 1)
30584)]
30585#[rustc_legacy_const_generics(3)]
30586#[cfg_attr(
30587 not(target_arch = "arm"),
30588 stable(feature = "neon_intrinsics", since = "1.59.0")
30589)]
30590#[cfg_attr(
30591 target_arch = "arm",
30592 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30593)]
30594pub fn vmls_lane_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t, c: uint32x2_t) -> uint32x2_t {
30595 static_assert_uimm_bits!(LANE, 1);
30596 unsafe { vmls_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
30597}
30598#[doc = "Vector multiply subtract with scalar"]
30599#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_s32)"]
30600#[inline]
30601#[target_feature(enable = "neon")]
30602#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30603#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
30604#[cfg_attr(
30605 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30606 assert_instr(mls, LANE = 1)
30607)]
30608#[rustc_legacy_const_generics(3)]
30609#[cfg_attr(
30610 not(target_arch = "arm"),
30611 stable(feature = "neon_intrinsics", since = "1.59.0")
30612)]
30613#[cfg_attr(
30614 target_arch = "arm",
30615 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30616)]
30617pub fn vmls_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t, c: int32x4_t) -> int32x2_t {
30618 static_assert_uimm_bits!(LANE, 2);
30619 unsafe { vmls_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
30620}
30621#[doc = "Vector multiply subtract with scalar"]
30622#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_u32)"]
30623#[inline]
30624#[target_feature(enable = "neon")]
30625#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30626#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
30627#[cfg_attr(
30628 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30629 assert_instr(mls, LANE = 1)
30630)]
30631#[rustc_legacy_const_generics(3)]
30632#[cfg_attr(
30633 not(target_arch = "arm"),
30634 stable(feature = "neon_intrinsics", since = "1.59.0")
30635)]
30636#[cfg_attr(
30637 target_arch = "arm",
30638 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30639)]
30640pub fn vmls_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t, c: uint32x4_t) -> uint32x2_t {
30641 static_assert_uimm_bits!(LANE, 2);
30642 unsafe { vmls_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
30643}
30644#[doc = "Vector multiply subtract with scalar"]
30645#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_lane_s32)"]
30646#[inline]
30647#[target_feature(enable = "neon")]
30648#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30649#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
30650#[cfg_attr(
30651 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30652 assert_instr(mls, LANE = 1)
30653)]
30654#[rustc_legacy_const_generics(3)]
30655#[cfg_attr(
30656 not(target_arch = "arm"),
30657 stable(feature = "neon_intrinsics", since = "1.59.0")
30658)]
30659#[cfg_attr(
30660 target_arch = "arm",
30661 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30662)]
30663pub fn vmlsq_lane_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t, c: int32x2_t) -> int32x4_t {
30664 static_assert_uimm_bits!(LANE, 1);
30665 unsafe {
30666 vmlsq_s32(
30667 a,
30668 b,
30669 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30670 )
30671 }
30672}
30673#[doc = "Vector multiply subtract with scalar"]
30674#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_lane_u32)"]
30675#[inline]
30676#[target_feature(enable = "neon")]
30677#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30678#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
30679#[cfg_attr(
30680 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30681 assert_instr(mls, LANE = 1)
30682)]
30683#[rustc_legacy_const_generics(3)]
30684#[cfg_attr(
30685 not(target_arch = "arm"),
30686 stable(feature = "neon_intrinsics", since = "1.59.0")
30687)]
30688#[cfg_attr(
30689 target_arch = "arm",
30690 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30691)]
30692pub fn vmlsq_lane_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t, c: uint32x2_t) -> uint32x4_t {
30693 static_assert_uimm_bits!(LANE, 1);
30694 unsafe {
30695 vmlsq_u32(
30696 a,
30697 b,
30698 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30699 )
30700 }
30701}
30702#[doc = "Vector multiply subtract with scalar"]
30703#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_s32)"]
30704#[inline]
30705#[target_feature(enable = "neon")]
30706#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30707#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
30708#[cfg_attr(
30709 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30710 assert_instr(mls, LANE = 1)
30711)]
30712#[rustc_legacy_const_generics(3)]
30713#[cfg_attr(
30714 not(target_arch = "arm"),
30715 stable(feature = "neon_intrinsics", since = "1.59.0")
30716)]
30717#[cfg_attr(
30718 target_arch = "arm",
30719 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30720)]
30721pub fn vmlsq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
30722 static_assert_uimm_bits!(LANE, 2);
30723 unsafe {
30724 vmlsq_s32(
30725 a,
30726 b,
30727 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30728 )
30729 }
30730}
30731#[doc = "Vector multiply subtract with scalar"]
30732#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_u32)"]
30733#[inline]
30734#[target_feature(enable = "neon")]
30735#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30736#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
30737#[cfg_attr(
30738 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30739 assert_instr(mls, LANE = 1)
30740)]
30741#[rustc_legacy_const_generics(3)]
30742#[cfg_attr(
30743 not(target_arch = "arm"),
30744 stable(feature = "neon_intrinsics", since = "1.59.0")
30745)]
30746#[cfg_attr(
30747 target_arch = "arm",
30748 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30749)]
30750pub fn vmlsq_laneq_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t, c: uint32x4_t) -> uint32x4_t {
30751 static_assert_uimm_bits!(LANE, 2);
30752 unsafe {
30753 vmlsq_u32(
30754 a,
30755 b,
30756 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30757 )
30758 }
30759}
30760#[doc = "Vector multiply subtract with scalar"]
30761#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_f32)"]
30762#[inline]
30763#[target_feature(enable = "neon")]
30764#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30765#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32"))]
30766#[cfg_attr(
30767 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30768 assert_instr(fmul)
30769)]
30770#[cfg_attr(
30771 not(target_arch = "arm"),
30772 stable(feature = "neon_intrinsics", since = "1.59.0")
30773)]
30774#[cfg_attr(
30775 target_arch = "arm",
30776 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30777)]
30778pub fn vmls_n_f32(a: float32x2_t, b: float32x2_t, c: f32) -> float32x2_t {
30779 vmls_f32(a, b, vdup_n_f32(c))
30780}
30781#[doc = "Vector multiply subtract with scalar"]
30782#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_f32)"]
30783#[inline]
30784#[target_feature(enable = "neon")]
30785#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30786#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32"))]
30787#[cfg_attr(
30788 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30789 assert_instr(fmul)
30790)]
30791#[cfg_attr(
30792 not(target_arch = "arm"),
30793 stable(feature = "neon_intrinsics", since = "1.59.0")
30794)]
30795#[cfg_attr(
30796 target_arch = "arm",
30797 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30798)]
30799pub fn vmlsq_n_f32(a: float32x4_t, b: float32x4_t, c: f32) -> float32x4_t {
30800 vmlsq_f32(a, b, vdupq_n_f32(c))
30801}
30802#[doc = "Vector multiply subtract with scalar"]
30803#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_s16)"]
30804#[inline]
30805#[target_feature(enable = "neon")]
30806#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30807#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
30808#[cfg_attr(
30809 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30810 assert_instr(mls)
30811)]
30812#[cfg_attr(
30813 not(target_arch = "arm"),
30814 stable(feature = "neon_intrinsics", since = "1.59.0")
30815)]
30816#[cfg_attr(
30817 target_arch = "arm",
30818 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30819)]
30820pub fn vmls_n_s16(a: int16x4_t, b: int16x4_t, c: i16) -> int16x4_t {
30821 vmls_s16(a, b, vdup_n_s16(c))
30822}
30823#[doc = "Vector multiply subtract with scalar"]
30824#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_s16)"]
30825#[inline]
30826#[target_feature(enable = "neon")]
30827#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30828#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
30829#[cfg_attr(
30830 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30831 assert_instr(mls)
30832)]
30833#[cfg_attr(
30834 not(target_arch = "arm"),
30835 stable(feature = "neon_intrinsics", since = "1.59.0")
30836)]
30837#[cfg_attr(
30838 target_arch = "arm",
30839 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30840)]
30841pub fn vmlsq_n_s16(a: int16x8_t, b: int16x8_t, c: i16) -> int16x8_t {
30842 vmlsq_s16(a, b, vdupq_n_s16(c))
30843}
30844#[doc = "Vector multiply subtract with scalar"]
30845#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_u16)"]
30846#[inline]
30847#[target_feature(enable = "neon")]
30848#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30849#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
30850#[cfg_attr(
30851 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30852 assert_instr(mls)
30853)]
30854#[cfg_attr(
30855 not(target_arch = "arm"),
30856 stable(feature = "neon_intrinsics", since = "1.59.0")
30857)]
30858#[cfg_attr(
30859 target_arch = "arm",
30860 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30861)]
30862pub fn vmls_n_u16(a: uint16x4_t, b: uint16x4_t, c: u16) -> uint16x4_t {
30863 vmls_u16(a, b, vdup_n_u16(c))
30864}
30865#[doc = "Vector multiply subtract with scalar"]
30866#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_u16)"]
30867#[inline]
30868#[target_feature(enable = "neon")]
30869#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30870#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
30871#[cfg_attr(
30872 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30873 assert_instr(mls)
30874)]
30875#[cfg_attr(
30876 not(target_arch = "arm"),
30877 stable(feature = "neon_intrinsics", since = "1.59.0")
30878)]
30879#[cfg_attr(
30880 target_arch = "arm",
30881 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30882)]
30883pub fn vmlsq_n_u16(a: uint16x8_t, b: uint16x8_t, c: u16) -> uint16x8_t {
30884 vmlsq_u16(a, b, vdupq_n_u16(c))
30885}
30886#[doc = "Vector multiply subtract with scalar"]
30887#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_s32)"]
30888#[inline]
30889#[target_feature(enable = "neon")]
30890#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30891#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
30892#[cfg_attr(
30893 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30894 assert_instr(mls)
30895)]
30896#[cfg_attr(
30897 not(target_arch = "arm"),
30898 stable(feature = "neon_intrinsics", since = "1.59.0")
30899)]
30900#[cfg_attr(
30901 target_arch = "arm",
30902 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30903)]
30904pub fn vmls_n_s32(a: int32x2_t, b: int32x2_t, c: i32) -> int32x2_t {
30905 vmls_s32(a, b, vdup_n_s32(c))
30906}
30907#[doc = "Vector multiply subtract with scalar"]
30908#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_s32)"]
30909#[inline]
30910#[target_feature(enable = "neon")]
30911#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30912#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
30913#[cfg_attr(
30914 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30915 assert_instr(mls)
30916)]
30917#[cfg_attr(
30918 not(target_arch = "arm"),
30919 stable(feature = "neon_intrinsics", since = "1.59.0")
30920)]
30921#[cfg_attr(
30922 target_arch = "arm",
30923 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30924)]
30925pub fn vmlsq_n_s32(a: int32x4_t, b: int32x4_t, c: i32) -> int32x4_t {
30926 vmlsq_s32(a, b, vdupq_n_s32(c))
30927}
30928#[doc = "Vector multiply subtract with scalar"]
30929#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_u32)"]
30930#[inline]
30931#[target_feature(enable = "neon")]
30932#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30933#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
30934#[cfg_attr(
30935 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30936 assert_instr(mls)
30937)]
30938#[cfg_attr(
30939 not(target_arch = "arm"),
30940 stable(feature = "neon_intrinsics", since = "1.59.0")
30941)]
30942#[cfg_attr(
30943 target_arch = "arm",
30944 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30945)]
30946pub fn vmls_n_u32(a: uint32x2_t, b: uint32x2_t, c: u32) -> uint32x2_t {
30947 vmls_u32(a, b, vdup_n_u32(c))
30948}
30949#[doc = "Vector multiply subtract with scalar"]
30950#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_u32)"]
30951#[inline]
30952#[target_feature(enable = "neon")]
30953#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30954#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
30955#[cfg_attr(
30956 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30957 assert_instr(mls)
30958)]
30959#[cfg_attr(
30960 not(target_arch = "arm"),
30961 stable(feature = "neon_intrinsics", since = "1.59.0")
30962)]
30963#[cfg_attr(
30964 target_arch = "arm",
30965 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30966)]
30967pub fn vmlsq_n_u32(a: uint32x4_t, b: uint32x4_t, c: u32) -> uint32x4_t {
30968 vmlsq_u32(a, b, vdupq_n_u32(c))
30969}
30970#[doc = "Multiply-subtract from accumulator"]
30971#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_s8)"]
30972#[inline]
30973#[target_feature(enable = "neon")]
30974#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30975#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i8"))]
30976#[cfg_attr(
30977 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30978 assert_instr(mls)
30979)]
30980#[cfg_attr(
30981 not(target_arch = "arm"),
30982 stable(feature = "neon_intrinsics", since = "1.59.0")
30983)]
30984#[cfg_attr(
30985 target_arch = "arm",
30986 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30987)]
30988pub fn vmls_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
30989 unsafe { simd_sub(a, simd_mul(b, c)) }
30990}
30991#[doc = "Multiply-subtract from accumulator"]
30992#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_s8)"]
30993#[inline]
30994#[target_feature(enable = "neon")]
30995#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30996#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i8"))]
30997#[cfg_attr(
30998 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30999 assert_instr(mls)
31000)]
31001#[cfg_attr(
31002 not(target_arch = "arm"),
31003 stable(feature = "neon_intrinsics", since = "1.59.0")
31004)]
31005#[cfg_attr(
31006 target_arch = "arm",
31007 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31008)]
31009pub fn vmlsq_s8(a: int8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t {
31010 unsafe { simd_sub(a, simd_mul(b, c)) }
31011}
31012#[doc = "Multiply-subtract from accumulator"]
31013#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_s16)"]
31014#[inline]
31015#[target_feature(enable = "neon")]
31016#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31017#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
31018#[cfg_attr(
31019 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31020 assert_instr(mls)
31021)]
31022#[cfg_attr(
31023 not(target_arch = "arm"),
31024 stable(feature = "neon_intrinsics", since = "1.59.0")
31025)]
31026#[cfg_attr(
31027 target_arch = "arm",
31028 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31029)]
31030pub fn vmls_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
31031 unsafe { simd_sub(a, simd_mul(b, c)) }
31032}
31033#[doc = "Multiply-subtract from accumulator"]
31034#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_s16)"]
31035#[inline]
31036#[target_feature(enable = "neon")]
31037#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31038#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
31039#[cfg_attr(
31040 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31041 assert_instr(mls)
31042)]
31043#[cfg_attr(
31044 not(target_arch = "arm"),
31045 stable(feature = "neon_intrinsics", since = "1.59.0")
31046)]
31047#[cfg_attr(
31048 target_arch = "arm",
31049 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31050)]
31051pub fn vmlsq_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
31052 unsafe { simd_sub(a, simd_mul(b, c)) }
31053}
31054#[doc = "Multiply-subtract from accumulator"]
31055#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_s32)"]
31056#[inline]
31057#[target_feature(enable = "neon")]
31058#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31059#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
31060#[cfg_attr(
31061 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31062 assert_instr(mls)
31063)]
31064#[cfg_attr(
31065 not(target_arch = "arm"),
31066 stable(feature = "neon_intrinsics", since = "1.59.0")
31067)]
31068#[cfg_attr(
31069 target_arch = "arm",
31070 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31071)]
31072pub fn vmls_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
31073 unsafe { simd_sub(a, simd_mul(b, c)) }
31074}
31075#[doc = "Multiply-subtract from accumulator"]
31076#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_s32)"]
31077#[inline]
31078#[target_feature(enable = "neon")]
31079#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31080#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
31081#[cfg_attr(
31082 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31083 assert_instr(mls)
31084)]
31085#[cfg_attr(
31086 not(target_arch = "arm"),
31087 stable(feature = "neon_intrinsics", since = "1.59.0")
31088)]
31089#[cfg_attr(
31090 target_arch = "arm",
31091 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31092)]
31093pub fn vmlsq_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
31094 unsafe { simd_sub(a, simd_mul(b, c)) }
31095}
31096#[doc = "Multiply-subtract from accumulator"]
31097#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_u8)"]
31098#[inline]
31099#[target_feature(enable = "neon")]
31100#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31101#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i8"))]
31102#[cfg_attr(
31103 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31104 assert_instr(mls)
31105)]
31106#[cfg_attr(
31107 not(target_arch = "arm"),
31108 stable(feature = "neon_intrinsics", since = "1.59.0")
31109)]
31110#[cfg_attr(
31111 target_arch = "arm",
31112 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31113)]
31114pub fn vmls_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
31115 unsafe { simd_sub(a, simd_mul(b, c)) }
31116}
31117#[doc = "Multiply-subtract from accumulator"]
31118#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_u8)"]
31119#[inline]
31120#[target_feature(enable = "neon")]
31121#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31122#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i8"))]
31123#[cfg_attr(
31124 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31125 assert_instr(mls)
31126)]
31127#[cfg_attr(
31128 not(target_arch = "arm"),
31129 stable(feature = "neon_intrinsics", since = "1.59.0")
31130)]
31131#[cfg_attr(
31132 target_arch = "arm",
31133 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31134)]
31135pub fn vmlsq_u8(a: uint8x16_t, b: uint8x16_t, c: uint8x16_t) -> uint8x16_t {
31136 unsafe { simd_sub(a, simd_mul(b, c)) }
31137}
31138#[doc = "Multiply-subtract from accumulator"]
31139#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_u16)"]
31140#[inline]
31141#[target_feature(enable = "neon")]
31142#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31143#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
31144#[cfg_attr(
31145 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31146 assert_instr(mls)
31147)]
31148#[cfg_attr(
31149 not(target_arch = "arm"),
31150 stable(feature = "neon_intrinsics", since = "1.59.0")
31151)]
31152#[cfg_attr(
31153 target_arch = "arm",
31154 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31155)]
31156pub fn vmls_u16(a: uint16x4_t, b: uint16x4_t, c: uint16x4_t) -> uint16x4_t {
31157 unsafe { simd_sub(a, simd_mul(b, c)) }
31158}
31159#[doc = "Multiply-subtract from accumulator"]
31160#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_u16)"]
31161#[inline]
31162#[target_feature(enable = "neon")]
31163#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31164#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
31165#[cfg_attr(
31166 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31167 assert_instr(mls)
31168)]
31169#[cfg_attr(
31170 not(target_arch = "arm"),
31171 stable(feature = "neon_intrinsics", since = "1.59.0")
31172)]
31173#[cfg_attr(
31174 target_arch = "arm",
31175 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31176)]
31177pub fn vmlsq_u16(a: uint16x8_t, b: uint16x8_t, c: uint16x8_t) -> uint16x8_t {
31178 unsafe { simd_sub(a, simd_mul(b, c)) }
31179}
31180#[doc = "Multiply-subtract from accumulator"]
31181#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_u32)"]
31182#[inline]
31183#[target_feature(enable = "neon")]
31184#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31185#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
31186#[cfg_attr(
31187 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31188 assert_instr(mls)
31189)]
31190#[cfg_attr(
31191 not(target_arch = "arm"),
31192 stable(feature = "neon_intrinsics", since = "1.59.0")
31193)]
31194#[cfg_attr(
31195 target_arch = "arm",
31196 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31197)]
31198pub fn vmls_u32(a: uint32x2_t, b: uint32x2_t, c: uint32x2_t) -> uint32x2_t {
31199 unsafe { simd_sub(a, simd_mul(b, c)) }
31200}
31201#[doc = "Multiply-subtract from accumulator"]
31202#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_u32)"]
31203#[inline]
31204#[target_feature(enable = "neon")]
31205#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31206#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
31207#[cfg_attr(
31208 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31209 assert_instr(mls)
31210)]
31211#[cfg_attr(
31212 not(target_arch = "arm"),
31213 stable(feature = "neon_intrinsics", since = "1.59.0")
31214)]
31215#[cfg_attr(
31216 target_arch = "arm",
31217 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31218)]
31219pub fn vmlsq_u32(a: uint32x4_t, b: uint32x4_t, c: uint32x4_t) -> uint32x4_t {
31220 unsafe { simd_sub(a, simd_mul(b, c)) }
31221}
31222#[doc = "Vector widening multiply subtract with scalar"]
31223#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_lane_s16)"]
31224#[inline]
31225#[target_feature(enable = "neon")]
31226#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31227#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s16", LANE = 1))]
31228#[cfg_attr(
31229 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31230 assert_instr(smlsl, LANE = 1)
31231)]
31232#[rustc_legacy_const_generics(3)]
31233#[cfg_attr(
31234 not(target_arch = "arm"),
31235 stable(feature = "neon_intrinsics", since = "1.59.0")
31236)]
31237#[cfg_attr(
31238 target_arch = "arm",
31239 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31240)]
31241pub fn vmlsl_lane_s16<const LANE: i32>(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
31242 static_assert_uimm_bits!(LANE, 2);
31243 unsafe {
31244 vmlsl_s16(
31245 a,
31246 b,
31247 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31248 )
31249 }
31250}
31251#[doc = "Vector widening multiply subtract with scalar"]
31252#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_laneq_s16)"]
31253#[inline]
31254#[target_feature(enable = "neon")]
31255#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31256#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s16", LANE = 1))]
31257#[cfg_attr(
31258 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31259 assert_instr(smlsl, LANE = 1)
31260)]
31261#[rustc_legacy_const_generics(3)]
31262#[cfg_attr(
31263 not(target_arch = "arm"),
31264 stable(feature = "neon_intrinsics", since = "1.59.0")
31265)]
31266#[cfg_attr(
31267 target_arch = "arm",
31268 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31269)]
31270pub fn vmlsl_laneq_s16<const LANE: i32>(a: int32x4_t, b: int16x4_t, c: int16x8_t) -> int32x4_t {
31271 static_assert_uimm_bits!(LANE, 3);
31272 unsafe {
31273 vmlsl_s16(
31274 a,
31275 b,
31276 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31277 )
31278 }
31279}
31280#[doc = "Vector widening multiply subtract with scalar"]
31281#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_lane_s32)"]
31282#[inline]
31283#[target_feature(enable = "neon")]
31284#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31285#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s32", LANE = 1))]
31286#[cfg_attr(
31287 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31288 assert_instr(smlsl, LANE = 1)
31289)]
31290#[rustc_legacy_const_generics(3)]
31291#[cfg_attr(
31292 not(target_arch = "arm"),
31293 stable(feature = "neon_intrinsics", since = "1.59.0")
31294)]
31295#[cfg_attr(
31296 target_arch = "arm",
31297 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31298)]
31299pub fn vmlsl_lane_s32<const LANE: i32>(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
31300 static_assert_uimm_bits!(LANE, 1);
31301 unsafe { vmlsl_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
31302}
31303#[doc = "Vector widening multiply subtract with scalar"]
31304#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_laneq_s32)"]
31305#[inline]
31306#[target_feature(enable = "neon")]
31307#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31308#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s32", LANE = 1))]
31309#[cfg_attr(
31310 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31311 assert_instr(smlsl, LANE = 1)
31312)]
31313#[rustc_legacy_const_generics(3)]
31314#[cfg_attr(
31315 not(target_arch = "arm"),
31316 stable(feature = "neon_intrinsics", since = "1.59.0")
31317)]
31318#[cfg_attr(
31319 target_arch = "arm",
31320 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31321)]
31322pub fn vmlsl_laneq_s32<const LANE: i32>(a: int64x2_t, b: int32x2_t, c: int32x4_t) -> int64x2_t {
31323 static_assert_uimm_bits!(LANE, 2);
31324 unsafe { vmlsl_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
31325}
31326#[doc = "Vector widening multiply subtract with scalar"]
31327#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_lane_u16)"]
31328#[inline]
31329#[target_feature(enable = "neon")]
31330#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31331#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u16", LANE = 1))]
31332#[cfg_attr(
31333 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31334 assert_instr(umlsl, LANE = 1)
31335)]
31336#[rustc_legacy_const_generics(3)]
31337#[cfg_attr(
31338 not(target_arch = "arm"),
31339 stable(feature = "neon_intrinsics", since = "1.59.0")
31340)]
31341#[cfg_attr(
31342 target_arch = "arm",
31343 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31344)]
31345pub fn vmlsl_lane_u16<const LANE: i32>(a: uint32x4_t, b: uint16x4_t, c: uint16x4_t) -> uint32x4_t {
31346 static_assert_uimm_bits!(LANE, 2);
31347 unsafe {
31348 vmlsl_u16(
31349 a,
31350 b,
31351 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31352 )
31353 }
31354}
31355#[doc = "Vector widening multiply subtract with scalar"]
31356#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_laneq_u16)"]
31357#[inline]
31358#[target_feature(enable = "neon")]
31359#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31360#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u16", LANE = 1))]
31361#[cfg_attr(
31362 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31363 assert_instr(umlsl, LANE = 1)
31364)]
31365#[rustc_legacy_const_generics(3)]
31366#[cfg_attr(
31367 not(target_arch = "arm"),
31368 stable(feature = "neon_intrinsics", since = "1.59.0")
31369)]
31370#[cfg_attr(
31371 target_arch = "arm",
31372 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31373)]
31374pub fn vmlsl_laneq_u16<const LANE: i32>(a: uint32x4_t, b: uint16x4_t, c: uint16x8_t) -> uint32x4_t {
31375 static_assert_uimm_bits!(LANE, 3);
31376 unsafe {
31377 vmlsl_u16(
31378 a,
31379 b,
31380 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31381 )
31382 }
31383}
31384#[doc = "Vector widening multiply subtract with scalar"]
31385#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_lane_u32)"]
31386#[inline]
31387#[target_feature(enable = "neon")]
31388#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31389#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u32", LANE = 1))]
31390#[cfg_attr(
31391 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31392 assert_instr(umlsl, LANE = 1)
31393)]
31394#[rustc_legacy_const_generics(3)]
31395#[cfg_attr(
31396 not(target_arch = "arm"),
31397 stable(feature = "neon_intrinsics", since = "1.59.0")
31398)]
31399#[cfg_attr(
31400 target_arch = "arm",
31401 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31402)]
31403pub fn vmlsl_lane_u32<const LANE: i32>(a: uint64x2_t, b: uint32x2_t, c: uint32x2_t) -> uint64x2_t {
31404 static_assert_uimm_bits!(LANE, 1);
31405 unsafe { vmlsl_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
31406}
31407#[doc = "Vector widening multiply subtract with scalar"]
31408#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_laneq_u32)"]
31409#[inline]
31410#[target_feature(enable = "neon")]
31411#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31412#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u32", LANE = 1))]
31413#[cfg_attr(
31414 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31415 assert_instr(umlsl, LANE = 1)
31416)]
31417#[rustc_legacy_const_generics(3)]
31418#[cfg_attr(
31419 not(target_arch = "arm"),
31420 stable(feature = "neon_intrinsics", since = "1.59.0")
31421)]
31422#[cfg_attr(
31423 target_arch = "arm",
31424 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31425)]
31426pub fn vmlsl_laneq_u32<const LANE: i32>(a: uint64x2_t, b: uint32x2_t, c: uint32x4_t) -> uint64x2_t {
31427 static_assert_uimm_bits!(LANE, 2);
31428 unsafe { vmlsl_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
31429}
31430#[doc = "Vector widening multiply subtract with scalar"]
31431#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_n_s16)"]
31432#[inline]
31433#[target_feature(enable = "neon")]
31434#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31435#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s16"))]
31436#[cfg_attr(
31437 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31438 assert_instr(smlsl)
31439)]
31440#[cfg_attr(
31441 not(target_arch = "arm"),
31442 stable(feature = "neon_intrinsics", since = "1.59.0")
31443)]
31444#[cfg_attr(
31445 target_arch = "arm",
31446 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31447)]
31448pub fn vmlsl_n_s16(a: int32x4_t, b: int16x4_t, c: i16) -> int32x4_t {
31449 vmlsl_s16(a, b, vdup_n_s16(c))
31450}
31451#[doc = "Vector widening multiply subtract with scalar"]
31452#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_n_s32)"]
31453#[inline]
31454#[target_feature(enable = "neon")]
31455#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31456#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s32"))]
31457#[cfg_attr(
31458 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31459 assert_instr(smlsl)
31460)]
31461#[cfg_attr(
31462 not(target_arch = "arm"),
31463 stable(feature = "neon_intrinsics", since = "1.59.0")
31464)]
31465#[cfg_attr(
31466 target_arch = "arm",
31467 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31468)]
31469pub fn vmlsl_n_s32(a: int64x2_t, b: int32x2_t, c: i32) -> int64x2_t {
31470 vmlsl_s32(a, b, vdup_n_s32(c))
31471}
31472#[doc = "Vector widening multiply subtract with scalar"]
31473#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_n_u16)"]
31474#[inline]
31475#[target_feature(enable = "neon")]
31476#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31477#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u16"))]
31478#[cfg_attr(
31479 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31480 assert_instr(umlsl)
31481)]
31482#[cfg_attr(
31483 not(target_arch = "arm"),
31484 stable(feature = "neon_intrinsics", since = "1.59.0")
31485)]
31486#[cfg_attr(
31487 target_arch = "arm",
31488 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31489)]
31490pub fn vmlsl_n_u16(a: uint32x4_t, b: uint16x4_t, c: u16) -> uint32x4_t {
31491 vmlsl_u16(a, b, vdup_n_u16(c))
31492}
31493#[doc = "Vector widening multiply subtract with scalar"]
31494#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_n_u32)"]
31495#[inline]
31496#[target_feature(enable = "neon")]
31497#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31498#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u32"))]
31499#[cfg_attr(
31500 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31501 assert_instr(umlsl)
31502)]
31503#[cfg_attr(
31504 not(target_arch = "arm"),
31505 stable(feature = "neon_intrinsics", since = "1.59.0")
31506)]
31507#[cfg_attr(
31508 target_arch = "arm",
31509 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31510)]
31511pub fn vmlsl_n_u32(a: uint64x2_t, b: uint32x2_t, c: u32) -> uint64x2_t {
31512 vmlsl_u32(a, b, vdup_n_u32(c))
31513}
31514#[doc = "Signed multiply-subtract long"]
31515#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_s8)"]
31516#[inline]
31517#[target_feature(enable = "neon")]
31518#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31519#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s8"))]
31520#[cfg_attr(
31521 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31522 assert_instr(smlsl)
31523)]
31524#[cfg_attr(
31525 not(target_arch = "arm"),
31526 stable(feature = "neon_intrinsics", since = "1.59.0")
31527)]
31528#[cfg_attr(
31529 target_arch = "arm",
31530 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31531)]
31532pub fn vmlsl_s8(a: int16x8_t, b: int8x8_t, c: int8x8_t) -> int16x8_t {
31533 unsafe { simd_sub(a, vmull_s8(b, c)) }
31534}
31535#[doc = "Signed multiply-subtract long"]
31536#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_s16)"]
31537#[inline]
31538#[target_feature(enable = "neon")]
31539#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31540#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s16"))]
31541#[cfg_attr(
31542 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31543 assert_instr(smlsl)
31544)]
31545#[cfg_attr(
31546 not(target_arch = "arm"),
31547 stable(feature = "neon_intrinsics", since = "1.59.0")
31548)]
31549#[cfg_attr(
31550 target_arch = "arm",
31551 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31552)]
31553pub fn vmlsl_s16(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
31554 unsafe { simd_sub(a, vmull_s16(b, c)) }
31555}
31556#[doc = "Signed multiply-subtract long"]
31557#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_s32)"]
31558#[inline]
31559#[target_feature(enable = "neon")]
31560#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31561#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s32"))]
31562#[cfg_attr(
31563 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31564 assert_instr(smlsl)
31565)]
31566#[cfg_attr(
31567 not(target_arch = "arm"),
31568 stable(feature = "neon_intrinsics", since = "1.59.0")
31569)]
31570#[cfg_attr(
31571 target_arch = "arm",
31572 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31573)]
31574pub fn vmlsl_s32(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
31575 unsafe { simd_sub(a, vmull_s32(b, c)) }
31576}
31577#[doc = "Unsigned multiply-subtract long"]
31578#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_u8)"]
31579#[inline]
31580#[target_feature(enable = "neon")]
31581#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31582#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u8"))]
31583#[cfg_attr(
31584 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31585 assert_instr(umlsl)
31586)]
31587#[cfg_attr(
31588 not(target_arch = "arm"),
31589 stable(feature = "neon_intrinsics", since = "1.59.0")
31590)]
31591#[cfg_attr(
31592 target_arch = "arm",
31593 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31594)]
31595pub fn vmlsl_u8(a: uint16x8_t, b: uint8x8_t, c: uint8x8_t) -> uint16x8_t {
31596 unsafe { simd_sub(a, vmull_u8(b, c)) }
31597}
31598#[doc = "Unsigned multiply-subtract long"]
31599#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_u16)"]
31600#[inline]
31601#[target_feature(enable = "neon")]
31602#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31603#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u16"))]
31604#[cfg_attr(
31605 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31606 assert_instr(umlsl)
31607)]
31608#[cfg_attr(
31609 not(target_arch = "arm"),
31610 stable(feature = "neon_intrinsics", since = "1.59.0")
31611)]
31612#[cfg_attr(
31613 target_arch = "arm",
31614 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31615)]
31616pub fn vmlsl_u16(a: uint32x4_t, b: uint16x4_t, c: uint16x4_t) -> uint32x4_t {
31617 unsafe { simd_sub(a, vmull_u16(b, c)) }
31618}
31619#[doc = "Unsigned multiply-subtract long"]
31620#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_u32)"]
31621#[inline]
31622#[target_feature(enable = "neon")]
31623#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31624#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u32"))]
31625#[cfg_attr(
31626 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31627 assert_instr(umlsl)
31628)]
31629#[cfg_attr(
31630 not(target_arch = "arm"),
31631 stable(feature = "neon_intrinsics", since = "1.59.0")
31632)]
31633#[cfg_attr(
31634 target_arch = "arm",
31635 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31636)]
31637pub fn vmlsl_u32(a: uint64x2_t, b: uint32x2_t, c: uint32x2_t) -> uint64x2_t {
31638 unsafe { simd_sub(a, vmull_u32(b, c)) }
31639}
31640#[doc = "8-bit integer matrix multiply-accumulate"]
31641#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmmlaq_s32)"]
31642#[inline]
31643#[target_feature(enable = "neon,i8mm")]
31644#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
31645#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
31646#[cfg_attr(
31647 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31648 assert_instr(smmla)
31649)]
31650#[cfg_attr(
31651 not(target_arch = "arm"),
31652 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
31653)]
31654#[cfg_attr(
31655 target_arch = "arm",
31656 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31657)]
31658pub fn vmmlaq_s32(a: int32x4_t, b: int8x16_t, c: int8x16_t) -> int32x4_t {
31659 unsafe extern "unadjusted" {
31660 #[cfg_attr(
31661 any(target_arch = "aarch64", target_arch = "arm64ec"),
31662 link_name = "llvm.aarch64.neon.smmla.v4i32.v16i8"
31663 )]
31664 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.smmla.v4i32.v16i8")]
31665 fn _vmmlaq_s32(a: int32x4_t, b: int8x16_t, c: int8x16_t) -> int32x4_t;
31666 }
31667 unsafe { _vmmlaq_s32(a, b, c) }
31668}
31669#[doc = "8-bit integer matrix multiply-accumulate"]
31670#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmmlaq_u32)"]
31671#[inline]
31672#[target_feature(enable = "neon,i8mm")]
31673#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
31674#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
31675#[cfg_attr(
31676 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31677 assert_instr(ummla)
31678)]
31679#[cfg_attr(
31680 not(target_arch = "arm"),
31681 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
31682)]
31683#[cfg_attr(
31684 target_arch = "arm",
31685 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31686)]
31687pub fn vmmlaq_u32(a: uint32x4_t, b: uint8x16_t, c: uint8x16_t) -> uint32x4_t {
31688 unsafe extern "unadjusted" {
31689 #[cfg_attr(
31690 any(target_arch = "aarch64", target_arch = "arm64ec"),
31691 link_name = "llvm.aarch64.neon.ummla.v4i32.v16i8"
31692 )]
31693 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.ummla.v4i32.v16i8")]
31694 fn _vmmlaq_u32(a: uint32x4_t, b: uint8x16_t, c: uint8x16_t) -> uint32x4_t;
31695 }
31696 unsafe { _vmmlaq_u32(a, b, c) }
31697}
31698#[doc = "Duplicate element to vector"]
31699#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_f16)"]
31700#[inline]
31701#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31702#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
31703#[cfg_attr(
31704 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31705 assert_instr(dup)
31706)]
31707#[target_feature(enable = "neon,fp16")]
31708#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
31709#[cfg(not(target_arch = "arm64ec"))]
31710pub fn vmov_n_f16(a: f16) -> float16x4_t {
31711 vdup_n_f16(a)
31712}
31713#[doc = "Duplicate element to vector"]
31714#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_f16)"]
31715#[inline]
31716#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31717#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
31718#[cfg_attr(
31719 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31720 assert_instr(dup)
31721)]
31722#[target_feature(enable = "neon,fp16")]
31723#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
31724#[cfg(not(target_arch = "arm64ec"))]
31725pub fn vmovq_n_f16(a: f16) -> float16x8_t {
31726 vdupq_n_f16(a)
31727}
31728#[doc = "Duplicate vector element to vector or scalar"]
31729#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_f32)"]
31730#[inline]
31731#[target_feature(enable = "neon")]
31732#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31733#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
31734#[cfg_attr(
31735 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31736 assert_instr(dup)
31737)]
31738#[cfg_attr(
31739 not(target_arch = "arm"),
31740 stable(feature = "neon_intrinsics", since = "1.59.0")
31741)]
31742#[cfg_attr(
31743 target_arch = "arm",
31744 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31745)]
31746pub fn vmov_n_f32(value: f32) -> float32x2_t {
31747 vdup_n_f32(value)
31748}
31749#[doc = "Duplicate vector element to vector or scalar"]
31750#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_p16)"]
31751#[inline]
31752#[target_feature(enable = "neon")]
31753#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31754#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
31755#[cfg_attr(
31756 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31757 assert_instr(dup)
31758)]
31759#[cfg_attr(
31760 not(target_arch = "arm"),
31761 stable(feature = "neon_intrinsics", since = "1.59.0")
31762)]
31763#[cfg_attr(
31764 target_arch = "arm",
31765 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31766)]
31767pub fn vmov_n_p16(value: p16) -> poly16x4_t {
31768 vdup_n_p16(value)
31769}
31770#[doc = "Duplicate vector element to vector or scalar"]
31771#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_p8)"]
31772#[inline]
31773#[target_feature(enable = "neon")]
31774#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31775#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
31776#[cfg_attr(
31777 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31778 assert_instr(dup)
31779)]
31780#[cfg_attr(
31781 not(target_arch = "arm"),
31782 stable(feature = "neon_intrinsics", since = "1.59.0")
31783)]
31784#[cfg_attr(
31785 target_arch = "arm",
31786 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31787)]
31788pub fn vmov_n_p8(value: p8) -> poly8x8_t {
31789 vdup_n_p8(value)
31790}
31791#[doc = "Duplicate vector element to vector or scalar"]
31792#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_s16)"]
31793#[inline]
31794#[target_feature(enable = "neon")]
31795#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31796#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
31797#[cfg_attr(
31798 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31799 assert_instr(dup)
31800)]
31801#[cfg_attr(
31802 not(target_arch = "arm"),
31803 stable(feature = "neon_intrinsics", since = "1.59.0")
31804)]
31805#[cfg_attr(
31806 target_arch = "arm",
31807 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31808)]
31809pub fn vmov_n_s16(value: i16) -> int16x4_t {
31810 vdup_n_s16(value)
31811}
31812#[doc = "Duplicate vector element to vector or scalar"]
31813#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_s32)"]
31814#[inline]
31815#[target_feature(enable = "neon")]
31816#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31817#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
31818#[cfg_attr(
31819 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31820 assert_instr(dup)
31821)]
31822#[cfg_attr(
31823 not(target_arch = "arm"),
31824 stable(feature = "neon_intrinsics", since = "1.59.0")
31825)]
31826#[cfg_attr(
31827 target_arch = "arm",
31828 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31829)]
31830pub fn vmov_n_s32(value: i32) -> int32x2_t {
31831 vdup_n_s32(value)
31832}
31833#[doc = "Duplicate vector element to vector or scalar"]
31834#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_s64)"]
31835#[inline]
31836#[target_feature(enable = "neon")]
31837#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31838#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
31839#[cfg_attr(
31840 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31841 assert_instr(fmov)
31842)]
31843#[cfg_attr(
31844 not(target_arch = "arm"),
31845 stable(feature = "neon_intrinsics", since = "1.59.0")
31846)]
31847#[cfg_attr(
31848 target_arch = "arm",
31849 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31850)]
31851pub fn vmov_n_s64(value: i64) -> int64x1_t {
31852 vdup_n_s64(value)
31853}
31854#[doc = "Duplicate vector element to vector or scalar"]
31855#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_s8)"]
31856#[inline]
31857#[target_feature(enable = "neon")]
31858#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31859#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
31860#[cfg_attr(
31861 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31862 assert_instr(dup)
31863)]
31864#[cfg_attr(
31865 not(target_arch = "arm"),
31866 stable(feature = "neon_intrinsics", since = "1.59.0")
31867)]
31868#[cfg_attr(
31869 target_arch = "arm",
31870 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31871)]
31872pub fn vmov_n_s8(value: i8) -> int8x8_t {
31873 vdup_n_s8(value)
31874}
31875#[doc = "Duplicate vector element to vector or scalar"]
31876#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_u16)"]
31877#[inline]
31878#[target_feature(enable = "neon")]
31879#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31880#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
31881#[cfg_attr(
31882 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31883 assert_instr(dup)
31884)]
31885#[cfg_attr(
31886 not(target_arch = "arm"),
31887 stable(feature = "neon_intrinsics", since = "1.59.0")
31888)]
31889#[cfg_attr(
31890 target_arch = "arm",
31891 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31892)]
31893pub fn vmov_n_u16(value: u16) -> uint16x4_t {
31894 vdup_n_u16(value)
31895}
31896#[doc = "Duplicate vector element to vector or scalar"]
31897#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_u32)"]
31898#[inline]
31899#[target_feature(enable = "neon")]
31900#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31901#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
31902#[cfg_attr(
31903 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31904 assert_instr(dup)
31905)]
31906#[cfg_attr(
31907 not(target_arch = "arm"),
31908 stable(feature = "neon_intrinsics", since = "1.59.0")
31909)]
31910#[cfg_attr(
31911 target_arch = "arm",
31912 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31913)]
31914pub fn vmov_n_u32(value: u32) -> uint32x2_t {
31915 vdup_n_u32(value)
31916}
31917#[doc = "Duplicate vector element to vector or scalar"]
31918#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_u64)"]
31919#[inline]
31920#[target_feature(enable = "neon")]
31921#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31922#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
31923#[cfg_attr(
31924 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31925 assert_instr(fmov)
31926)]
31927#[cfg_attr(
31928 not(target_arch = "arm"),
31929 stable(feature = "neon_intrinsics", since = "1.59.0")
31930)]
31931#[cfg_attr(
31932 target_arch = "arm",
31933 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31934)]
31935pub fn vmov_n_u64(value: u64) -> uint64x1_t {
31936 vdup_n_u64(value)
31937}
31938#[doc = "Duplicate vector element to vector or scalar"]
31939#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_u8)"]
31940#[inline]
31941#[target_feature(enable = "neon")]
31942#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31943#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
31944#[cfg_attr(
31945 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31946 assert_instr(dup)
31947)]
31948#[cfg_attr(
31949 not(target_arch = "arm"),
31950 stable(feature = "neon_intrinsics", since = "1.59.0")
31951)]
31952#[cfg_attr(
31953 target_arch = "arm",
31954 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31955)]
31956pub fn vmov_n_u8(value: u8) -> uint8x8_t {
31957 vdup_n_u8(value)
31958}
31959#[doc = "Duplicate vector element to vector or scalar"]
31960#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_f32)"]
31961#[inline]
31962#[target_feature(enable = "neon")]
31963#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31964#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
31965#[cfg_attr(
31966 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31967 assert_instr(dup)
31968)]
31969#[cfg_attr(
31970 not(target_arch = "arm"),
31971 stable(feature = "neon_intrinsics", since = "1.59.0")
31972)]
31973#[cfg_attr(
31974 target_arch = "arm",
31975 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31976)]
31977pub fn vmovq_n_f32(value: f32) -> float32x4_t {
31978 vdupq_n_f32(value)
31979}
31980#[doc = "Duplicate vector element to vector or scalar"]
31981#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_p16)"]
31982#[inline]
31983#[target_feature(enable = "neon")]
31984#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31985#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
31986#[cfg_attr(
31987 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31988 assert_instr(dup)
31989)]
31990#[cfg_attr(
31991 not(target_arch = "arm"),
31992 stable(feature = "neon_intrinsics", since = "1.59.0")
31993)]
31994#[cfg_attr(
31995 target_arch = "arm",
31996 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31997)]
31998pub fn vmovq_n_p16(value: p16) -> poly16x8_t {
31999 vdupq_n_p16(value)
32000}
32001#[doc = "Duplicate vector element to vector or scalar"]
32002#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_p8)"]
32003#[inline]
32004#[target_feature(enable = "neon")]
32005#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32006#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
32007#[cfg_attr(
32008 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32009 assert_instr(dup)
32010)]
32011#[cfg_attr(
32012 not(target_arch = "arm"),
32013 stable(feature = "neon_intrinsics", since = "1.59.0")
32014)]
32015#[cfg_attr(
32016 target_arch = "arm",
32017 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32018)]
32019pub fn vmovq_n_p8(value: p8) -> poly8x16_t {
32020 vdupq_n_p8(value)
32021}
32022#[doc = "Duplicate vector element to vector or scalar"]
32023#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_s16)"]
32024#[inline]
32025#[target_feature(enable = "neon")]
32026#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32027#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
32028#[cfg_attr(
32029 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32030 assert_instr(dup)
32031)]
32032#[cfg_attr(
32033 not(target_arch = "arm"),
32034 stable(feature = "neon_intrinsics", since = "1.59.0")
32035)]
32036#[cfg_attr(
32037 target_arch = "arm",
32038 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32039)]
32040pub fn vmovq_n_s16(value: i16) -> int16x8_t {
32041 vdupq_n_s16(value)
32042}
32043#[doc = "Duplicate vector element to vector or scalar"]
32044#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_s32)"]
32045#[inline]
32046#[target_feature(enable = "neon")]
32047#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32048#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
32049#[cfg_attr(
32050 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32051 assert_instr(dup)
32052)]
32053#[cfg_attr(
32054 not(target_arch = "arm"),
32055 stable(feature = "neon_intrinsics", since = "1.59.0")
32056)]
32057#[cfg_attr(
32058 target_arch = "arm",
32059 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32060)]
32061pub fn vmovq_n_s32(value: i32) -> int32x4_t {
32062 vdupq_n_s32(value)
32063}
32064#[doc = "Duplicate vector element to vector or scalar"]
32065#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_s64)"]
32066#[inline]
32067#[target_feature(enable = "neon")]
32068#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32069#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
32070#[cfg_attr(
32071 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32072 assert_instr(dup)
32073)]
32074#[cfg_attr(
32075 not(target_arch = "arm"),
32076 stable(feature = "neon_intrinsics", since = "1.59.0")
32077)]
32078#[cfg_attr(
32079 target_arch = "arm",
32080 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32081)]
32082pub fn vmovq_n_s64(value: i64) -> int64x2_t {
32083 vdupq_n_s64(value)
32084}
32085#[doc = "Duplicate vector element to vector or scalar"]
32086#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_s8)"]
32087#[inline]
32088#[target_feature(enable = "neon")]
32089#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32090#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
32091#[cfg_attr(
32092 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32093 assert_instr(dup)
32094)]
32095#[cfg_attr(
32096 not(target_arch = "arm"),
32097 stable(feature = "neon_intrinsics", since = "1.59.0")
32098)]
32099#[cfg_attr(
32100 target_arch = "arm",
32101 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32102)]
32103pub fn vmovq_n_s8(value: i8) -> int8x16_t {
32104 vdupq_n_s8(value)
32105}
32106#[doc = "Duplicate vector element to vector or scalar"]
32107#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_u16)"]
32108#[inline]
32109#[target_feature(enable = "neon")]
32110#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32111#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
32112#[cfg_attr(
32113 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32114 assert_instr(dup)
32115)]
32116#[cfg_attr(
32117 not(target_arch = "arm"),
32118 stable(feature = "neon_intrinsics", since = "1.59.0")
32119)]
32120#[cfg_attr(
32121 target_arch = "arm",
32122 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32123)]
32124pub fn vmovq_n_u16(value: u16) -> uint16x8_t {
32125 vdupq_n_u16(value)
32126}
32127#[doc = "Duplicate vector element to vector or scalar"]
32128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_u32)"]
32129#[inline]
32130#[target_feature(enable = "neon")]
32131#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32132#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
32133#[cfg_attr(
32134 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32135 assert_instr(dup)
32136)]
32137#[cfg_attr(
32138 not(target_arch = "arm"),
32139 stable(feature = "neon_intrinsics", since = "1.59.0")
32140)]
32141#[cfg_attr(
32142 target_arch = "arm",
32143 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32144)]
32145pub fn vmovq_n_u32(value: u32) -> uint32x4_t {
32146 vdupq_n_u32(value)
32147}
32148#[doc = "Duplicate vector element to vector or scalar"]
32149#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_u64)"]
32150#[inline]
32151#[target_feature(enable = "neon")]
32152#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32153#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
32154#[cfg_attr(
32155 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32156 assert_instr(dup)
32157)]
32158#[cfg_attr(
32159 not(target_arch = "arm"),
32160 stable(feature = "neon_intrinsics", since = "1.59.0")
32161)]
32162#[cfg_attr(
32163 target_arch = "arm",
32164 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32165)]
32166pub fn vmovq_n_u64(value: u64) -> uint64x2_t {
32167 vdupq_n_u64(value)
32168}
32169#[doc = "Duplicate vector element to vector or scalar"]
32170#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_u8)"]
32171#[inline]
32172#[target_feature(enable = "neon")]
32173#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32174#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
32175#[cfg_attr(
32176 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32177 assert_instr(dup)
32178)]
32179#[cfg_attr(
32180 not(target_arch = "arm"),
32181 stable(feature = "neon_intrinsics", since = "1.59.0")
32182)]
32183#[cfg_attr(
32184 target_arch = "arm",
32185 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32186)]
32187pub fn vmovq_n_u8(value: u8) -> uint8x16_t {
32188 vdupq_n_u8(value)
32189}
32190#[doc = "Vector long move."]
32191#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_s16)"]
32192#[inline]
32193#[target_feature(enable = "neon")]
32194#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32195#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
32196#[cfg_attr(
32197 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32198 assert_instr(sxtl)
32199)]
32200#[cfg_attr(
32201 not(target_arch = "arm"),
32202 stable(feature = "neon_intrinsics", since = "1.59.0")
32203)]
32204#[cfg_attr(
32205 target_arch = "arm",
32206 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32207)]
32208pub fn vmovl_s16(a: int16x4_t) -> int32x4_t {
32209 unsafe { simd_cast(a) }
32210}
32211#[doc = "Vector long move."]
32212#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_s32)"]
32213#[inline]
32214#[target_feature(enable = "neon")]
32215#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32216#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
32217#[cfg_attr(
32218 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32219 assert_instr(sxtl)
32220)]
32221#[cfg_attr(
32222 not(target_arch = "arm"),
32223 stable(feature = "neon_intrinsics", since = "1.59.0")
32224)]
32225#[cfg_attr(
32226 target_arch = "arm",
32227 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32228)]
32229pub fn vmovl_s32(a: int32x2_t) -> int64x2_t {
32230 unsafe { simd_cast(a) }
32231}
32232#[doc = "Vector long move."]
32233#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_s8)"]
32234#[inline]
32235#[target_feature(enable = "neon")]
32236#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32237#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
32238#[cfg_attr(
32239 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32240 assert_instr(sxtl)
32241)]
32242#[cfg_attr(
32243 not(target_arch = "arm"),
32244 stable(feature = "neon_intrinsics", since = "1.59.0")
32245)]
32246#[cfg_attr(
32247 target_arch = "arm",
32248 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32249)]
32250pub fn vmovl_s8(a: int8x8_t) -> int16x8_t {
32251 unsafe { simd_cast(a) }
32252}
32253#[doc = "Vector long move."]
32254#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_u16)"]
32255#[inline]
32256#[target_feature(enable = "neon")]
32257#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32258#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
32259#[cfg_attr(
32260 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32261 assert_instr(uxtl)
32262)]
32263#[cfg_attr(
32264 not(target_arch = "arm"),
32265 stable(feature = "neon_intrinsics", since = "1.59.0")
32266)]
32267#[cfg_attr(
32268 target_arch = "arm",
32269 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32270)]
32271pub fn vmovl_u16(a: uint16x4_t) -> uint32x4_t {
32272 unsafe { simd_cast(a) }
32273}
32274#[doc = "Vector long move."]
32275#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_u32)"]
32276#[inline]
32277#[target_feature(enable = "neon")]
32278#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32279#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
32280#[cfg_attr(
32281 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32282 assert_instr(uxtl)
32283)]
32284#[cfg_attr(
32285 not(target_arch = "arm"),
32286 stable(feature = "neon_intrinsics", since = "1.59.0")
32287)]
32288#[cfg_attr(
32289 target_arch = "arm",
32290 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32291)]
32292pub fn vmovl_u32(a: uint32x2_t) -> uint64x2_t {
32293 unsafe { simd_cast(a) }
32294}
32295#[doc = "Vector long move."]
32296#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_u8)"]
32297#[inline]
32298#[target_feature(enable = "neon")]
32299#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32300#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
32301#[cfg_attr(
32302 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32303 assert_instr(uxtl)
32304)]
32305#[cfg_attr(
32306 not(target_arch = "arm"),
32307 stable(feature = "neon_intrinsics", since = "1.59.0")
32308)]
32309#[cfg_attr(
32310 target_arch = "arm",
32311 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32312)]
32313pub fn vmovl_u8(a: uint8x8_t) -> uint16x8_t {
32314 unsafe { simd_cast(a) }
32315}
32316#[doc = "Vector narrow integer."]
32317#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_s16)"]
32318#[inline]
32319#[target_feature(enable = "neon")]
32320#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32321#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
32322#[cfg_attr(
32323 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32324 assert_instr(xtn)
32325)]
32326#[cfg_attr(
32327 not(target_arch = "arm"),
32328 stable(feature = "neon_intrinsics", since = "1.59.0")
32329)]
32330#[cfg_attr(
32331 target_arch = "arm",
32332 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32333)]
32334pub fn vmovn_s16(a: int16x8_t) -> int8x8_t {
32335 unsafe { simd_cast(a) }
32336}
32337#[doc = "Vector narrow integer."]
32338#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_s32)"]
32339#[inline]
32340#[target_feature(enable = "neon")]
32341#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32342#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
32343#[cfg_attr(
32344 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32345 assert_instr(xtn)
32346)]
32347#[cfg_attr(
32348 not(target_arch = "arm"),
32349 stable(feature = "neon_intrinsics", since = "1.59.0")
32350)]
32351#[cfg_attr(
32352 target_arch = "arm",
32353 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32354)]
32355pub fn vmovn_s32(a: int32x4_t) -> int16x4_t {
32356 unsafe { simd_cast(a) }
32357}
32358#[doc = "Vector narrow integer."]
32359#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_s64)"]
32360#[inline]
32361#[target_feature(enable = "neon")]
32362#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32363#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
32364#[cfg_attr(
32365 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32366 assert_instr(xtn)
32367)]
32368#[cfg_attr(
32369 not(target_arch = "arm"),
32370 stable(feature = "neon_intrinsics", since = "1.59.0")
32371)]
32372#[cfg_attr(
32373 target_arch = "arm",
32374 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32375)]
32376pub fn vmovn_s64(a: int64x2_t) -> int32x2_t {
32377 unsafe { simd_cast(a) }
32378}
32379#[doc = "Vector narrow integer."]
32380#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_u16)"]
32381#[inline]
32382#[target_feature(enable = "neon")]
32383#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32384#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
32385#[cfg_attr(
32386 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32387 assert_instr(xtn)
32388)]
32389#[cfg_attr(
32390 not(target_arch = "arm"),
32391 stable(feature = "neon_intrinsics", since = "1.59.0")
32392)]
32393#[cfg_attr(
32394 target_arch = "arm",
32395 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32396)]
32397pub fn vmovn_u16(a: uint16x8_t) -> uint8x8_t {
32398 unsafe { simd_cast(a) }
32399}
32400#[doc = "Vector narrow integer."]
32401#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_u32)"]
32402#[inline]
32403#[target_feature(enable = "neon")]
32404#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32405#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
32406#[cfg_attr(
32407 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32408 assert_instr(xtn)
32409)]
32410#[cfg_attr(
32411 not(target_arch = "arm"),
32412 stable(feature = "neon_intrinsics", since = "1.59.0")
32413)]
32414#[cfg_attr(
32415 target_arch = "arm",
32416 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32417)]
32418pub fn vmovn_u32(a: uint32x4_t) -> uint16x4_t {
32419 unsafe { simd_cast(a) }
32420}
32421#[doc = "Vector narrow integer."]
32422#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_u64)"]
32423#[inline]
32424#[target_feature(enable = "neon")]
32425#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32426#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
32427#[cfg_attr(
32428 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32429 assert_instr(xtn)
32430)]
32431#[cfg_attr(
32432 not(target_arch = "arm"),
32433 stable(feature = "neon_intrinsics", since = "1.59.0")
32434)]
32435#[cfg_attr(
32436 target_arch = "arm",
32437 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32438)]
32439pub fn vmovn_u64(a: uint64x2_t) -> uint32x2_t {
32440 unsafe { simd_cast(a) }
32441}
32442#[doc = "Multiply"]
32443#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_f16)"]
32444#[inline]
32445#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
32446#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.f16"))]
32447#[cfg_attr(
32448 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32449 assert_instr(fmul)
32450)]
32451#[target_feature(enable = "neon,fp16")]
32452#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
32453#[cfg(not(target_arch = "arm64ec"))]
32454pub fn vmul_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
32455 unsafe { simd_mul(a, b) }
32456}
32457#[doc = "Multiply"]
32458#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_f16)"]
32459#[inline]
32460#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
32461#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.f16"))]
32462#[cfg_attr(
32463 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32464 assert_instr(fmul)
32465)]
32466#[target_feature(enable = "neon,fp16")]
32467#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
32468#[cfg(not(target_arch = "arm64ec"))]
32469pub fn vmulq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
32470 unsafe { simd_mul(a, b) }
32471}
32472#[doc = "Multiply"]
32473#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_f32)"]
32474#[inline]
32475#[target_feature(enable = "neon")]
32476#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32477#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.f32"))]
32478#[cfg_attr(
32479 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32480 assert_instr(fmul)
32481)]
32482#[cfg_attr(
32483 not(target_arch = "arm"),
32484 stable(feature = "neon_intrinsics", since = "1.59.0")
32485)]
32486#[cfg_attr(
32487 target_arch = "arm",
32488 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32489)]
32490pub fn vmul_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
32491 unsafe { simd_mul(a, b) }
32492}
32493#[doc = "Multiply"]
32494#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_f32)"]
32495#[inline]
32496#[target_feature(enable = "neon")]
32497#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32498#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.f32"))]
32499#[cfg_attr(
32500 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32501 assert_instr(fmul)
32502)]
32503#[cfg_attr(
32504 not(target_arch = "arm"),
32505 stable(feature = "neon_intrinsics", since = "1.59.0")
32506)]
32507#[cfg_attr(
32508 target_arch = "arm",
32509 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32510)]
32511pub fn vmulq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
32512 unsafe { simd_mul(a, b) }
32513}
32514#[doc = "Multiply"]
32515#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_f16)"]
32516#[inline]
32517#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
32518#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
32519#[cfg_attr(
32520 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32521 assert_instr(fmul, LANE = 1)
32522)]
32523#[rustc_legacy_const_generics(2)]
32524#[target_feature(enable = "neon,fp16")]
32525#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
32526#[cfg(not(target_arch = "arm64ec"))]
32527pub fn vmul_lane_f16<const LANE: i32>(a: float16x4_t, v: float16x4_t) -> float16x4_t {
32528 static_assert_uimm_bits!(LANE, 2);
32529 unsafe {
32530 simd_mul(
32531 a,
32532 simd_shuffle!(v, v, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
32533 )
32534 }
32535}
32536#[doc = "Multiply"]
32537#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_f16)"]
32538#[inline]
32539#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
32540#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
32541#[cfg_attr(
32542 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32543 assert_instr(fmul, LANE = 1)
32544)]
32545#[rustc_legacy_const_generics(2)]
32546#[target_feature(enable = "neon,fp16")]
32547#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
32548#[cfg(not(target_arch = "arm64ec"))]
32549pub fn vmulq_lane_f16<const LANE: i32>(a: float16x8_t, v: float16x4_t) -> float16x8_t {
32550 static_assert_uimm_bits!(LANE, 2);
32551 unsafe {
32552 simd_mul(
32553 a,
32554 simd_shuffle!(
32555 v,
32556 v,
32557 [
32558 LANE as u32,
32559 LANE as u32,
32560 LANE as u32,
32561 LANE as u32,
32562 LANE as u32,
32563 LANE as u32,
32564 LANE as u32,
32565 LANE as u32
32566 ]
32567 ),
32568 )
32569 }
32570}
32571#[doc = "Floating-point multiply"]
32572#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_f32)"]
32573#[inline]
32574#[target_feature(enable = "neon")]
32575#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32576#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 0))]
32577#[cfg_attr(
32578 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32579 assert_instr(fmul, LANE = 0)
32580)]
32581#[rustc_legacy_const_generics(2)]
32582#[cfg_attr(
32583 not(target_arch = "arm"),
32584 stable(feature = "neon_intrinsics", since = "1.59.0")
32585)]
32586#[cfg_attr(
32587 target_arch = "arm",
32588 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32589)]
32590pub fn vmul_lane_f32<const LANE: i32>(a: float32x2_t, b: float32x2_t) -> float32x2_t {
32591 static_assert_uimm_bits!(LANE, 1);
32592 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
32593}
32594#[doc = "Floating-point multiply"]
32595#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_f32)"]
32596#[inline]
32597#[target_feature(enable = "neon")]
32598#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32599#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 0))]
32600#[cfg_attr(
32601 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32602 assert_instr(fmul, LANE = 0)
32603)]
32604#[rustc_legacy_const_generics(2)]
32605#[cfg_attr(
32606 not(target_arch = "arm"),
32607 stable(feature = "neon_intrinsics", since = "1.59.0")
32608)]
32609#[cfg_attr(
32610 target_arch = "arm",
32611 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32612)]
32613pub fn vmul_laneq_f32<const LANE: i32>(a: float32x2_t, b: float32x4_t) -> float32x2_t {
32614 static_assert_uimm_bits!(LANE, 2);
32615 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
32616}
32617#[doc = "Floating-point multiply"]
32618#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_f32)"]
32619#[inline]
32620#[target_feature(enable = "neon")]
32621#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32622#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 0))]
32623#[cfg_attr(
32624 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32625 assert_instr(fmul, LANE = 0)
32626)]
32627#[rustc_legacy_const_generics(2)]
32628#[cfg_attr(
32629 not(target_arch = "arm"),
32630 stable(feature = "neon_intrinsics", since = "1.59.0")
32631)]
32632#[cfg_attr(
32633 target_arch = "arm",
32634 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32635)]
32636pub fn vmulq_lane_f32<const LANE: i32>(a: float32x4_t, b: float32x2_t) -> float32x4_t {
32637 static_assert_uimm_bits!(LANE, 1);
32638 unsafe {
32639 simd_mul(
32640 a,
32641 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
32642 )
32643 }
32644}
32645#[doc = "Floating-point multiply"]
32646#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_f32)"]
32647#[inline]
32648#[target_feature(enable = "neon")]
32649#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32650#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 0))]
32651#[cfg_attr(
32652 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32653 assert_instr(fmul, LANE = 0)
32654)]
32655#[rustc_legacy_const_generics(2)]
32656#[cfg_attr(
32657 not(target_arch = "arm"),
32658 stable(feature = "neon_intrinsics", since = "1.59.0")
32659)]
32660#[cfg_attr(
32661 target_arch = "arm",
32662 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32663)]
32664pub fn vmulq_laneq_f32<const LANE: i32>(a: float32x4_t, b: float32x4_t) -> float32x4_t {
32665 static_assert_uimm_bits!(LANE, 2);
32666 unsafe {
32667 simd_mul(
32668 a,
32669 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
32670 )
32671 }
32672}
32673#[doc = "Multiply"]
32674#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_s16)"]
32675#[inline]
32676#[target_feature(enable = "neon")]
32677#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32678#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
32679#[cfg_attr(
32680 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32681 assert_instr(mul, LANE = 1)
32682)]
32683#[rustc_legacy_const_generics(2)]
32684#[cfg_attr(
32685 not(target_arch = "arm"),
32686 stable(feature = "neon_intrinsics", since = "1.59.0")
32687)]
32688#[cfg_attr(
32689 target_arch = "arm",
32690 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32691)]
32692pub fn vmul_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
32693 static_assert_uimm_bits!(LANE, 2);
32694 unsafe {
32695 simd_mul(
32696 a,
32697 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
32698 )
32699 }
32700}
32701#[doc = "Multiply"]
32702#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_s16)"]
32703#[inline]
32704#[target_feature(enable = "neon")]
32705#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32706#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
32707#[cfg_attr(
32708 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32709 assert_instr(mul, LANE = 1)
32710)]
32711#[rustc_legacy_const_generics(2)]
32712#[cfg_attr(
32713 not(target_arch = "arm"),
32714 stable(feature = "neon_intrinsics", since = "1.59.0")
32715)]
32716#[cfg_attr(
32717 target_arch = "arm",
32718 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32719)]
32720pub fn vmulq_lane_s16<const LANE: i32>(a: int16x8_t, b: int16x4_t) -> int16x8_t {
32721 static_assert_uimm_bits!(LANE, 2);
32722 unsafe {
32723 simd_mul(
32724 a,
32725 simd_shuffle!(
32726 b,
32727 b,
32728 [
32729 LANE as u32,
32730 LANE as u32,
32731 LANE as u32,
32732 LANE as u32,
32733 LANE as u32,
32734 LANE as u32,
32735 LANE as u32,
32736 LANE as u32
32737 ]
32738 ),
32739 )
32740 }
32741}
32742#[doc = "Multiply"]
32743#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_s32)"]
32744#[inline]
32745#[target_feature(enable = "neon")]
32746#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32747#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
32748#[cfg_attr(
32749 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32750 assert_instr(mul, LANE = 1)
32751)]
32752#[rustc_legacy_const_generics(2)]
32753#[cfg_attr(
32754 not(target_arch = "arm"),
32755 stable(feature = "neon_intrinsics", since = "1.59.0")
32756)]
32757#[cfg_attr(
32758 target_arch = "arm",
32759 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32760)]
32761pub fn vmul_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
32762 static_assert_uimm_bits!(LANE, 1);
32763 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
32764}
32765#[doc = "Multiply"]
32766#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_s32)"]
32767#[inline]
32768#[target_feature(enable = "neon")]
32769#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32770#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
32771#[cfg_attr(
32772 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32773 assert_instr(mul, LANE = 1)
32774)]
32775#[rustc_legacy_const_generics(2)]
32776#[cfg_attr(
32777 not(target_arch = "arm"),
32778 stable(feature = "neon_intrinsics", since = "1.59.0")
32779)]
32780#[cfg_attr(
32781 target_arch = "arm",
32782 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32783)]
32784pub fn vmulq_lane_s32<const LANE: i32>(a: int32x4_t, b: int32x2_t) -> int32x4_t {
32785 static_assert_uimm_bits!(LANE, 1);
32786 unsafe {
32787 simd_mul(
32788 a,
32789 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
32790 )
32791 }
32792}
32793#[doc = "Multiply"]
32794#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_u16)"]
32795#[inline]
32796#[target_feature(enable = "neon")]
32797#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32798#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
32799#[cfg_attr(
32800 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32801 assert_instr(mul, LANE = 1)
32802)]
32803#[rustc_legacy_const_generics(2)]
32804#[cfg_attr(
32805 not(target_arch = "arm"),
32806 stable(feature = "neon_intrinsics", since = "1.59.0")
32807)]
32808#[cfg_attr(
32809 target_arch = "arm",
32810 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32811)]
32812pub fn vmul_lane_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
32813 static_assert_uimm_bits!(LANE, 2);
32814 unsafe {
32815 simd_mul(
32816 a,
32817 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
32818 )
32819 }
32820}
32821#[doc = "Multiply"]
32822#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_u16)"]
32823#[inline]
32824#[target_feature(enable = "neon")]
32825#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32826#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
32827#[cfg_attr(
32828 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32829 assert_instr(mul, LANE = 1)
32830)]
32831#[rustc_legacy_const_generics(2)]
32832#[cfg_attr(
32833 not(target_arch = "arm"),
32834 stable(feature = "neon_intrinsics", since = "1.59.0")
32835)]
32836#[cfg_attr(
32837 target_arch = "arm",
32838 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32839)]
32840pub fn vmulq_lane_u16<const LANE: i32>(a: uint16x8_t, b: uint16x4_t) -> uint16x8_t {
32841 static_assert_uimm_bits!(LANE, 2);
32842 unsafe {
32843 simd_mul(
32844 a,
32845 simd_shuffle!(
32846 b,
32847 b,
32848 [
32849 LANE as u32,
32850 LANE as u32,
32851 LANE as u32,
32852 LANE as u32,
32853 LANE as u32,
32854 LANE as u32,
32855 LANE as u32,
32856 LANE as u32
32857 ]
32858 ),
32859 )
32860 }
32861}
32862#[doc = "Multiply"]
32863#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_u32)"]
32864#[inline]
32865#[target_feature(enable = "neon")]
32866#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32867#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
32868#[cfg_attr(
32869 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32870 assert_instr(mul, LANE = 1)
32871)]
32872#[rustc_legacy_const_generics(2)]
32873#[cfg_attr(
32874 not(target_arch = "arm"),
32875 stable(feature = "neon_intrinsics", since = "1.59.0")
32876)]
32877#[cfg_attr(
32878 target_arch = "arm",
32879 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32880)]
32881pub fn vmul_lane_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
32882 static_assert_uimm_bits!(LANE, 1);
32883 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
32884}
32885#[doc = "Multiply"]
32886#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_u32)"]
32887#[inline]
32888#[target_feature(enable = "neon")]
32889#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32890#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
32891#[cfg_attr(
32892 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32893 assert_instr(mul, LANE = 1)
32894)]
32895#[rustc_legacy_const_generics(2)]
32896#[cfg_attr(
32897 not(target_arch = "arm"),
32898 stable(feature = "neon_intrinsics", since = "1.59.0")
32899)]
32900#[cfg_attr(
32901 target_arch = "arm",
32902 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32903)]
32904pub fn vmulq_lane_u32<const LANE: i32>(a: uint32x4_t, b: uint32x2_t) -> uint32x4_t {
32905 static_assert_uimm_bits!(LANE, 1);
32906 unsafe {
32907 simd_mul(
32908 a,
32909 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
32910 )
32911 }
32912}
32913#[doc = "Multiply"]
32914#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_s16)"]
32915#[inline]
32916#[target_feature(enable = "neon")]
32917#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32918#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
32919#[cfg_attr(
32920 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32921 assert_instr(mul, LANE = 1)
32922)]
32923#[rustc_legacy_const_generics(2)]
32924#[cfg_attr(
32925 not(target_arch = "arm"),
32926 stable(feature = "neon_intrinsics", since = "1.59.0")
32927)]
32928#[cfg_attr(
32929 target_arch = "arm",
32930 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32931)]
32932pub fn vmul_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x8_t) -> int16x4_t {
32933 static_assert_uimm_bits!(LANE, 3);
32934 unsafe {
32935 simd_mul(
32936 a,
32937 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
32938 )
32939 }
32940}
32941#[doc = "Multiply"]
32942#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_s16)"]
32943#[inline]
32944#[target_feature(enable = "neon")]
32945#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32946#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
32947#[cfg_attr(
32948 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32949 assert_instr(mul, LANE = 1)
32950)]
32951#[rustc_legacy_const_generics(2)]
32952#[cfg_attr(
32953 not(target_arch = "arm"),
32954 stable(feature = "neon_intrinsics", since = "1.59.0")
32955)]
32956#[cfg_attr(
32957 target_arch = "arm",
32958 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32959)]
32960pub fn vmulq_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
32961 static_assert_uimm_bits!(LANE, 3);
32962 unsafe {
32963 simd_mul(
32964 a,
32965 simd_shuffle!(
32966 b,
32967 b,
32968 [
32969 LANE as u32,
32970 LANE as u32,
32971 LANE as u32,
32972 LANE as u32,
32973 LANE as u32,
32974 LANE as u32,
32975 LANE as u32,
32976 LANE as u32
32977 ]
32978 ),
32979 )
32980 }
32981}
32982#[doc = "Multiply"]
32983#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_s32)"]
32984#[inline]
32985#[target_feature(enable = "neon")]
32986#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32987#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
32988#[cfg_attr(
32989 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32990 assert_instr(mul, LANE = 1)
32991)]
32992#[rustc_legacy_const_generics(2)]
32993#[cfg_attr(
32994 not(target_arch = "arm"),
32995 stable(feature = "neon_intrinsics", since = "1.59.0")
32996)]
32997#[cfg_attr(
32998 target_arch = "arm",
32999 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33000)]
33001pub fn vmul_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x4_t) -> int32x2_t {
33002 static_assert_uimm_bits!(LANE, 2);
33003 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
33004}
33005#[doc = "Multiply"]
33006#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_s32)"]
33007#[inline]
33008#[target_feature(enable = "neon")]
33009#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33010#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33011#[cfg_attr(
33012 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33013 assert_instr(mul, LANE = 1)
33014)]
33015#[rustc_legacy_const_generics(2)]
33016#[cfg_attr(
33017 not(target_arch = "arm"),
33018 stable(feature = "neon_intrinsics", since = "1.59.0")
33019)]
33020#[cfg_attr(
33021 target_arch = "arm",
33022 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33023)]
33024pub fn vmulq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
33025 static_assert_uimm_bits!(LANE, 2);
33026 unsafe {
33027 simd_mul(
33028 a,
33029 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
33030 )
33031 }
33032}
33033#[doc = "Multiply"]
33034#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_u16)"]
33035#[inline]
33036#[target_feature(enable = "neon")]
33037#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33038#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33039#[cfg_attr(
33040 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33041 assert_instr(mul, LANE = 1)
33042)]
33043#[rustc_legacy_const_generics(2)]
33044#[cfg_attr(
33045 not(target_arch = "arm"),
33046 stable(feature = "neon_intrinsics", since = "1.59.0")
33047)]
33048#[cfg_attr(
33049 target_arch = "arm",
33050 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33051)]
33052pub fn vmul_laneq_u16<const LANE: i32>(a: uint16x4_t, b: uint16x8_t) -> uint16x4_t {
33053 static_assert_uimm_bits!(LANE, 3);
33054 unsafe {
33055 simd_mul(
33056 a,
33057 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
33058 )
33059 }
33060}
33061#[doc = "Multiply"]
33062#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_u16)"]
33063#[inline]
33064#[target_feature(enable = "neon")]
33065#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33066#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33067#[cfg_attr(
33068 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33069 assert_instr(mul, LANE = 1)
33070)]
33071#[rustc_legacy_const_generics(2)]
33072#[cfg_attr(
33073 not(target_arch = "arm"),
33074 stable(feature = "neon_intrinsics", since = "1.59.0")
33075)]
33076#[cfg_attr(
33077 target_arch = "arm",
33078 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33079)]
33080pub fn vmulq_laneq_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
33081 static_assert_uimm_bits!(LANE, 3);
33082 unsafe {
33083 simd_mul(
33084 a,
33085 simd_shuffle!(
33086 b,
33087 b,
33088 [
33089 LANE as u32,
33090 LANE as u32,
33091 LANE as u32,
33092 LANE as u32,
33093 LANE as u32,
33094 LANE as u32,
33095 LANE as u32,
33096 LANE as u32
33097 ]
33098 ),
33099 )
33100 }
33101}
33102#[doc = "Multiply"]
33103#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_u32)"]
33104#[inline]
33105#[target_feature(enable = "neon")]
33106#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33107#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33108#[cfg_attr(
33109 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33110 assert_instr(mul, LANE = 1)
33111)]
33112#[rustc_legacy_const_generics(2)]
33113#[cfg_attr(
33114 not(target_arch = "arm"),
33115 stable(feature = "neon_intrinsics", since = "1.59.0")
33116)]
33117#[cfg_attr(
33118 target_arch = "arm",
33119 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33120)]
33121pub fn vmul_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint32x4_t) -> uint32x2_t {
33122 static_assert_uimm_bits!(LANE, 2);
33123 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
33124}
33125#[doc = "Multiply"]
33126#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_u32)"]
33127#[inline]
33128#[target_feature(enable = "neon")]
33129#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33130#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33131#[cfg_attr(
33132 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33133 assert_instr(mul, LANE = 1)
33134)]
33135#[rustc_legacy_const_generics(2)]
33136#[cfg_attr(
33137 not(target_arch = "arm"),
33138 stable(feature = "neon_intrinsics", since = "1.59.0")
33139)]
33140#[cfg_attr(
33141 target_arch = "arm",
33142 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33143)]
33144pub fn vmulq_laneq_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
33145 static_assert_uimm_bits!(LANE, 2);
33146 unsafe {
33147 simd_mul(
33148 a,
33149 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
33150 )
33151 }
33152}
33153#[doc = "Vector multiply by scalar"]
33154#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_f16)"]
33155#[inline]
33156#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
33157#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33158#[cfg_attr(
33159 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33160 assert_instr(fmul)
33161)]
33162#[target_feature(enable = "neon,fp16")]
33163#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
33164#[cfg(not(target_arch = "arm64ec"))]
33165pub fn vmul_n_f16(a: float16x4_t, b: f16) -> float16x4_t {
33166 unsafe { simd_mul(a, vdup_n_f16(b)) }
33167}
33168#[doc = "Vector multiply by scalar"]
33169#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_f16)"]
33170#[inline]
33171#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
33172#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33173#[cfg_attr(
33174 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33175 assert_instr(fmul)
33176)]
33177#[target_feature(enable = "neon,fp16")]
33178#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
33179#[cfg(not(target_arch = "arm64ec"))]
33180pub fn vmulq_n_f16(a: float16x8_t, b: f16) -> float16x8_t {
33181 unsafe { simd_mul(a, vdupq_n_f16(b)) }
33182}
33183#[doc = "Vector multiply by scalar"]
33184#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_f32)"]
33185#[inline]
33186#[target_feature(enable = "neon")]
33187#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33188#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33189#[cfg_attr(
33190 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33191 assert_instr(fmul)
33192)]
33193#[cfg_attr(
33194 not(target_arch = "arm"),
33195 stable(feature = "neon_intrinsics", since = "1.59.0")
33196)]
33197#[cfg_attr(
33198 target_arch = "arm",
33199 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33200)]
33201pub fn vmul_n_f32(a: float32x2_t, b: f32) -> float32x2_t {
33202 unsafe { simd_mul(a, vdup_n_f32(b)) }
33203}
33204#[doc = "Vector multiply by scalar"]
33205#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_f32)"]
33206#[inline]
33207#[target_feature(enable = "neon")]
33208#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33209#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33210#[cfg_attr(
33211 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33212 assert_instr(fmul)
33213)]
33214#[cfg_attr(
33215 not(target_arch = "arm"),
33216 stable(feature = "neon_intrinsics", since = "1.59.0")
33217)]
33218#[cfg_attr(
33219 target_arch = "arm",
33220 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33221)]
33222pub fn vmulq_n_f32(a: float32x4_t, b: f32) -> float32x4_t {
33223 unsafe { simd_mul(a, vdupq_n_f32(b)) }
33224}
33225#[doc = "Vector multiply by scalar"]
33226#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_s16)"]
33227#[inline]
33228#[target_feature(enable = "neon")]
33229#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33230#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33231#[cfg_attr(
33232 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33233 assert_instr(mul)
33234)]
33235#[cfg_attr(
33236 not(target_arch = "arm"),
33237 stable(feature = "neon_intrinsics", since = "1.59.0")
33238)]
33239#[cfg_attr(
33240 target_arch = "arm",
33241 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33242)]
33243pub fn vmul_n_s16(a: int16x4_t, b: i16) -> int16x4_t {
33244 unsafe { simd_mul(a, vdup_n_s16(b)) }
33245}
33246#[doc = "Vector multiply by scalar"]
33247#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_s16)"]
33248#[inline]
33249#[target_feature(enable = "neon")]
33250#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33251#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33252#[cfg_attr(
33253 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33254 assert_instr(mul)
33255)]
33256#[cfg_attr(
33257 not(target_arch = "arm"),
33258 stable(feature = "neon_intrinsics", since = "1.59.0")
33259)]
33260#[cfg_attr(
33261 target_arch = "arm",
33262 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33263)]
33264pub fn vmulq_n_s16(a: int16x8_t, b: i16) -> int16x8_t {
33265 unsafe { simd_mul(a, vdupq_n_s16(b)) }
33266}
33267#[doc = "Vector multiply by scalar"]
33268#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_s32)"]
33269#[inline]
33270#[target_feature(enable = "neon")]
33271#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33272#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33273#[cfg_attr(
33274 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33275 assert_instr(mul)
33276)]
33277#[cfg_attr(
33278 not(target_arch = "arm"),
33279 stable(feature = "neon_intrinsics", since = "1.59.0")
33280)]
33281#[cfg_attr(
33282 target_arch = "arm",
33283 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33284)]
33285pub fn vmul_n_s32(a: int32x2_t, b: i32) -> int32x2_t {
33286 unsafe { simd_mul(a, vdup_n_s32(b)) }
33287}
33288#[doc = "Vector multiply by scalar"]
33289#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_s32)"]
33290#[inline]
33291#[target_feature(enable = "neon")]
33292#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33293#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33294#[cfg_attr(
33295 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33296 assert_instr(mul)
33297)]
33298#[cfg_attr(
33299 not(target_arch = "arm"),
33300 stable(feature = "neon_intrinsics", since = "1.59.0")
33301)]
33302#[cfg_attr(
33303 target_arch = "arm",
33304 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33305)]
33306pub fn vmulq_n_s32(a: int32x4_t, b: i32) -> int32x4_t {
33307 unsafe { simd_mul(a, vdupq_n_s32(b)) }
33308}
33309#[doc = "Vector multiply by scalar"]
33310#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_u16)"]
33311#[inline]
33312#[target_feature(enable = "neon")]
33313#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33314#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33315#[cfg_attr(
33316 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33317 assert_instr(mul)
33318)]
33319#[cfg_attr(
33320 not(target_arch = "arm"),
33321 stable(feature = "neon_intrinsics", since = "1.59.0")
33322)]
33323#[cfg_attr(
33324 target_arch = "arm",
33325 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33326)]
33327pub fn vmul_n_u16(a: uint16x4_t, b: u16) -> uint16x4_t {
33328 unsafe { simd_mul(a, vdup_n_u16(b)) }
33329}
33330#[doc = "Vector multiply by scalar"]
33331#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_u16)"]
33332#[inline]
33333#[target_feature(enable = "neon")]
33334#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33335#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33336#[cfg_attr(
33337 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33338 assert_instr(mul)
33339)]
33340#[cfg_attr(
33341 not(target_arch = "arm"),
33342 stable(feature = "neon_intrinsics", since = "1.59.0")
33343)]
33344#[cfg_attr(
33345 target_arch = "arm",
33346 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33347)]
33348pub fn vmulq_n_u16(a: uint16x8_t, b: u16) -> uint16x8_t {
33349 unsafe { simd_mul(a, vdupq_n_u16(b)) }
33350}
33351#[doc = "Vector multiply by scalar"]
33352#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_u32)"]
33353#[inline]
33354#[target_feature(enable = "neon")]
33355#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33356#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33357#[cfg_attr(
33358 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33359 assert_instr(mul)
33360)]
33361#[cfg_attr(
33362 not(target_arch = "arm"),
33363 stable(feature = "neon_intrinsics", since = "1.59.0")
33364)]
33365#[cfg_attr(
33366 target_arch = "arm",
33367 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33368)]
33369pub fn vmul_n_u32(a: uint32x2_t, b: u32) -> uint32x2_t {
33370 unsafe { simd_mul(a, vdup_n_u32(b)) }
33371}
33372#[doc = "Vector multiply by scalar"]
33373#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_u32)"]
33374#[inline]
33375#[target_feature(enable = "neon")]
33376#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33377#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33378#[cfg_attr(
33379 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33380 assert_instr(mul)
33381)]
33382#[cfg_attr(
33383 not(target_arch = "arm"),
33384 stable(feature = "neon_intrinsics", since = "1.59.0")
33385)]
33386#[cfg_attr(
33387 target_arch = "arm",
33388 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33389)]
33390pub fn vmulq_n_u32(a: uint32x4_t, b: u32) -> uint32x4_t {
33391 unsafe { simd_mul(a, vdupq_n_u32(b)) }
33392}
33393#[doc = "Polynomial multiply"]
33394#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_p8)"]
33395#[inline]
33396#[target_feature(enable = "neon")]
33397#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33398#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33399#[cfg_attr(
33400 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33401 assert_instr(pmul)
33402)]
33403#[cfg_attr(
33404 not(target_arch = "arm"),
33405 stable(feature = "neon_intrinsics", since = "1.59.0")
33406)]
33407#[cfg_attr(
33408 target_arch = "arm",
33409 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33410)]
33411pub fn vmul_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t {
33412 unsafe extern "unadjusted" {
33413 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmulp.v8i8")]
33414 #[cfg_attr(
33415 any(target_arch = "aarch64", target_arch = "arm64ec"),
33416 link_name = "llvm.aarch64.neon.pmul.v8i8"
33417 )]
33418 fn _vmul_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t;
33419 }
33420 unsafe { _vmul_p8(a, b) }
33421}
33422#[doc = "Polynomial multiply"]
33423#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_p8)"]
33424#[inline]
33425#[target_feature(enable = "neon")]
33426#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33427#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33428#[cfg_attr(
33429 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33430 assert_instr(pmul)
33431)]
33432#[cfg_attr(
33433 not(target_arch = "arm"),
33434 stable(feature = "neon_intrinsics", since = "1.59.0")
33435)]
33436#[cfg_attr(
33437 target_arch = "arm",
33438 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33439)]
33440pub fn vmulq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t {
33441 unsafe extern "unadjusted" {
33442 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmulp.v16i8")]
33443 #[cfg_attr(
33444 any(target_arch = "aarch64", target_arch = "arm64ec"),
33445 link_name = "llvm.aarch64.neon.pmul.v16i8"
33446 )]
33447 fn _vmulq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t;
33448 }
33449 unsafe { _vmulq_p8(a, b) }
33450}
33451#[doc = "Multiply"]
33452#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_s16)"]
33453#[inline]
33454#[target_feature(enable = "neon")]
33455#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33456#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i16"))]
33457#[cfg_attr(
33458 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33459 assert_instr(mul)
33460)]
33461#[cfg_attr(
33462 not(target_arch = "arm"),
33463 stable(feature = "neon_intrinsics", since = "1.59.0")
33464)]
33465#[cfg_attr(
33466 target_arch = "arm",
33467 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33468)]
33469pub fn vmul_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
33470 unsafe { simd_mul(a, b) }
33471}
33472#[doc = "Multiply"]
33473#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_s16)"]
33474#[inline]
33475#[target_feature(enable = "neon")]
33476#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33477#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i16"))]
33478#[cfg_attr(
33479 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33480 assert_instr(mul)
33481)]
33482#[cfg_attr(
33483 not(target_arch = "arm"),
33484 stable(feature = "neon_intrinsics", since = "1.59.0")
33485)]
33486#[cfg_attr(
33487 target_arch = "arm",
33488 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33489)]
33490pub fn vmulq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
33491 unsafe { simd_mul(a, b) }
33492}
33493#[doc = "Multiply"]
33494#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_u16)"]
33495#[inline]
33496#[target_feature(enable = "neon")]
33497#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33498#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i16"))]
33499#[cfg_attr(
33500 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33501 assert_instr(mul)
33502)]
33503#[cfg_attr(
33504 not(target_arch = "arm"),
33505 stable(feature = "neon_intrinsics", since = "1.59.0")
33506)]
33507#[cfg_attr(
33508 target_arch = "arm",
33509 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33510)]
33511pub fn vmul_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
33512 unsafe { simd_mul(a, b) }
33513}
33514#[doc = "Multiply"]
33515#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_u16)"]
33516#[inline]
33517#[target_feature(enable = "neon")]
33518#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33519#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i16"))]
33520#[cfg_attr(
33521 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33522 assert_instr(mul)
33523)]
33524#[cfg_attr(
33525 not(target_arch = "arm"),
33526 stable(feature = "neon_intrinsics", since = "1.59.0")
33527)]
33528#[cfg_attr(
33529 target_arch = "arm",
33530 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33531)]
33532pub fn vmulq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
33533 unsafe { simd_mul(a, b) }
33534}
33535#[doc = "Multiply"]
33536#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_s32)"]
33537#[inline]
33538#[target_feature(enable = "neon")]
33539#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33540#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i32"))]
33541#[cfg_attr(
33542 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33543 assert_instr(mul)
33544)]
33545#[cfg_attr(
33546 not(target_arch = "arm"),
33547 stable(feature = "neon_intrinsics", since = "1.59.0")
33548)]
33549#[cfg_attr(
33550 target_arch = "arm",
33551 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33552)]
33553pub fn vmul_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
33554 unsafe { simd_mul(a, b) }
33555}
33556#[doc = "Multiply"]
33557#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_s32)"]
33558#[inline]
33559#[target_feature(enable = "neon")]
33560#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33561#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i32"))]
33562#[cfg_attr(
33563 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33564 assert_instr(mul)
33565)]
33566#[cfg_attr(
33567 not(target_arch = "arm"),
33568 stable(feature = "neon_intrinsics", since = "1.59.0")
33569)]
33570#[cfg_attr(
33571 target_arch = "arm",
33572 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33573)]
33574pub fn vmulq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
33575 unsafe { simd_mul(a, b) }
33576}
33577#[doc = "Multiply"]
33578#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_u32)"]
33579#[inline]
33580#[target_feature(enable = "neon")]
33581#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33582#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i32"))]
33583#[cfg_attr(
33584 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33585 assert_instr(mul)
33586)]
33587#[cfg_attr(
33588 not(target_arch = "arm"),
33589 stable(feature = "neon_intrinsics", since = "1.59.0")
33590)]
33591#[cfg_attr(
33592 target_arch = "arm",
33593 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33594)]
33595pub fn vmul_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
33596 unsafe { simd_mul(a, b) }
33597}
33598#[doc = "Multiply"]
33599#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_u32)"]
33600#[inline]
33601#[target_feature(enable = "neon")]
33602#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33603#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i32"))]
33604#[cfg_attr(
33605 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33606 assert_instr(mul)
33607)]
33608#[cfg_attr(
33609 not(target_arch = "arm"),
33610 stable(feature = "neon_intrinsics", since = "1.59.0")
33611)]
33612#[cfg_attr(
33613 target_arch = "arm",
33614 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33615)]
33616pub fn vmulq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
33617 unsafe { simd_mul(a, b) }
33618}
33619#[doc = "Multiply"]
33620#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_s8)"]
33621#[inline]
33622#[target_feature(enable = "neon")]
33623#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33624#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i8"))]
33625#[cfg_attr(
33626 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33627 assert_instr(mul)
33628)]
33629#[cfg_attr(
33630 not(target_arch = "arm"),
33631 stable(feature = "neon_intrinsics", since = "1.59.0")
33632)]
33633#[cfg_attr(
33634 target_arch = "arm",
33635 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33636)]
33637pub fn vmul_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
33638 unsafe { simd_mul(a, b) }
33639}
33640#[doc = "Multiply"]
33641#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_s8)"]
33642#[inline]
33643#[target_feature(enable = "neon")]
33644#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33645#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i8"))]
33646#[cfg_attr(
33647 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33648 assert_instr(mul)
33649)]
33650#[cfg_attr(
33651 not(target_arch = "arm"),
33652 stable(feature = "neon_intrinsics", since = "1.59.0")
33653)]
33654#[cfg_attr(
33655 target_arch = "arm",
33656 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33657)]
33658pub fn vmulq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
33659 unsafe { simd_mul(a, b) }
33660}
33661#[doc = "Multiply"]
33662#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_u8)"]
33663#[inline]
33664#[target_feature(enable = "neon")]
33665#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33666#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i8"))]
33667#[cfg_attr(
33668 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33669 assert_instr(mul)
33670)]
33671#[cfg_attr(
33672 not(target_arch = "arm"),
33673 stable(feature = "neon_intrinsics", since = "1.59.0")
33674)]
33675#[cfg_attr(
33676 target_arch = "arm",
33677 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33678)]
33679pub fn vmul_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
33680 unsafe { simd_mul(a, b) }
33681}
33682#[doc = "Multiply"]
33683#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_u8)"]
33684#[inline]
33685#[target_feature(enable = "neon")]
33686#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33687#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i8"))]
33688#[cfg_attr(
33689 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33690 assert_instr(mul)
33691)]
33692#[cfg_attr(
33693 not(target_arch = "arm"),
33694 stable(feature = "neon_intrinsics", since = "1.59.0")
33695)]
33696#[cfg_attr(
33697 target_arch = "arm",
33698 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33699)]
33700pub fn vmulq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
33701 unsafe { simd_mul(a, b) }
33702}
33703#[doc = "Vector long multiply by scalar"]
33704#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_lane_s16)"]
33705#[inline]
33706#[target_feature(enable = "neon")]
33707#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33708#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
33709#[cfg_attr(
33710 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33711 assert_instr(smull, LANE = 1)
33712)]
33713#[rustc_legacy_const_generics(2)]
33714#[cfg_attr(
33715 not(target_arch = "arm"),
33716 stable(feature = "neon_intrinsics", since = "1.59.0")
33717)]
33718#[cfg_attr(
33719 target_arch = "arm",
33720 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33721)]
33722pub fn vmull_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t) -> int32x4_t {
33723 static_assert_uimm_bits!(LANE, 2);
33724 unsafe {
33725 vmull_s16(
33726 a,
33727 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
33728 )
33729 }
33730}
33731#[doc = "Vector long multiply by scalar"]
33732#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_laneq_s16)"]
33733#[inline]
33734#[target_feature(enable = "neon")]
33735#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33736#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
33737#[cfg_attr(
33738 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33739 assert_instr(smull, LANE = 1)
33740)]
33741#[rustc_legacy_const_generics(2)]
33742#[cfg_attr(
33743 not(target_arch = "arm"),
33744 stable(feature = "neon_intrinsics", since = "1.59.0")
33745)]
33746#[cfg_attr(
33747 target_arch = "arm",
33748 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33749)]
33750pub fn vmull_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x8_t) -> int32x4_t {
33751 static_assert_uimm_bits!(LANE, 3);
33752 unsafe {
33753 vmull_s16(
33754 a,
33755 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
33756 )
33757 }
33758}
33759#[doc = "Vector long multiply by scalar"]
33760#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_lane_s32)"]
33761#[inline]
33762#[target_feature(enable = "neon")]
33763#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33764#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
33765#[cfg_attr(
33766 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33767 assert_instr(smull, LANE = 1)
33768)]
33769#[rustc_legacy_const_generics(2)]
33770#[cfg_attr(
33771 not(target_arch = "arm"),
33772 stable(feature = "neon_intrinsics", since = "1.59.0")
33773)]
33774#[cfg_attr(
33775 target_arch = "arm",
33776 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33777)]
33778pub fn vmull_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t) -> int64x2_t {
33779 static_assert_uimm_bits!(LANE, 1);
33780 unsafe { vmull_s32(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
33781}
33782#[doc = "Vector long multiply by scalar"]
33783#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_laneq_s32)"]
33784#[inline]
33785#[target_feature(enable = "neon")]
33786#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33787#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
33788#[cfg_attr(
33789 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33790 assert_instr(smull, LANE = 1)
33791)]
33792#[rustc_legacy_const_generics(2)]
33793#[cfg_attr(
33794 not(target_arch = "arm"),
33795 stable(feature = "neon_intrinsics", since = "1.59.0")
33796)]
33797#[cfg_attr(
33798 target_arch = "arm",
33799 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33800)]
33801pub fn vmull_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x4_t) -> int64x2_t {
33802 static_assert_uimm_bits!(LANE, 2);
33803 unsafe { vmull_s32(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
33804}
33805#[doc = "Vector long multiply by scalar"]
33806#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_lane_u16)"]
33807#[inline]
33808#[target_feature(enable = "neon")]
33809#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33810#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
33811#[cfg_attr(
33812 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33813 assert_instr(umull, LANE = 1)
33814)]
33815#[rustc_legacy_const_generics(2)]
33816#[cfg_attr(
33817 not(target_arch = "arm"),
33818 stable(feature = "neon_intrinsics", since = "1.59.0")
33819)]
33820#[cfg_attr(
33821 target_arch = "arm",
33822 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33823)]
33824pub fn vmull_lane_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t) -> uint32x4_t {
33825 static_assert_uimm_bits!(LANE, 2);
33826 unsafe {
33827 vmull_u16(
33828 a,
33829 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
33830 )
33831 }
33832}
33833#[doc = "Vector long multiply by scalar"]
33834#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_laneq_u16)"]
33835#[inline]
33836#[target_feature(enable = "neon")]
33837#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33838#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
33839#[cfg_attr(
33840 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33841 assert_instr(umull, LANE = 1)
33842)]
33843#[rustc_legacy_const_generics(2)]
33844#[cfg_attr(
33845 not(target_arch = "arm"),
33846 stable(feature = "neon_intrinsics", since = "1.59.0")
33847)]
33848#[cfg_attr(
33849 target_arch = "arm",
33850 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33851)]
33852pub fn vmull_laneq_u16<const LANE: i32>(a: uint16x4_t, b: uint16x8_t) -> uint32x4_t {
33853 static_assert_uimm_bits!(LANE, 3);
33854 unsafe {
33855 vmull_u16(
33856 a,
33857 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
33858 )
33859 }
33860}
33861#[doc = "Vector long multiply by scalar"]
33862#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_lane_u32)"]
33863#[inline]
33864#[target_feature(enable = "neon")]
33865#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33866#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
33867#[cfg_attr(
33868 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33869 assert_instr(umull, LANE = 1)
33870)]
33871#[rustc_legacy_const_generics(2)]
33872#[cfg_attr(
33873 not(target_arch = "arm"),
33874 stable(feature = "neon_intrinsics", since = "1.59.0")
33875)]
33876#[cfg_attr(
33877 target_arch = "arm",
33878 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33879)]
33880pub fn vmull_lane_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t) -> uint64x2_t {
33881 static_assert_uimm_bits!(LANE, 1);
33882 unsafe { vmull_u32(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
33883}
33884#[doc = "Vector long multiply by scalar"]
33885#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_laneq_u32)"]
33886#[inline]
33887#[target_feature(enable = "neon")]
33888#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33889#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
33890#[cfg_attr(
33891 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33892 assert_instr(umull, LANE = 1)
33893)]
33894#[rustc_legacy_const_generics(2)]
33895#[cfg_attr(
33896 not(target_arch = "arm"),
33897 stable(feature = "neon_intrinsics", since = "1.59.0")
33898)]
33899#[cfg_attr(
33900 target_arch = "arm",
33901 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33902)]
33903pub fn vmull_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint32x4_t) -> uint64x2_t {
33904 static_assert_uimm_bits!(LANE, 2);
33905 unsafe { vmull_u32(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
33906}
33907#[doc = "Vector long multiply with scalar"]
33908#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_n_s16)"]
33909#[inline]
33910#[target_feature(enable = "neon")]
33911#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33912#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull))]
33913#[cfg_attr(
33914 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33915 assert_instr(smull)
33916)]
33917#[cfg_attr(
33918 not(target_arch = "arm"),
33919 stable(feature = "neon_intrinsics", since = "1.59.0")
33920)]
33921#[cfg_attr(
33922 target_arch = "arm",
33923 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33924)]
33925pub fn vmull_n_s16(a: int16x4_t, b: i16) -> int32x4_t {
33926 vmull_s16(a, vdup_n_s16(b))
33927}
33928#[doc = "Vector long multiply with scalar"]
33929#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_n_s32)"]
33930#[inline]
33931#[target_feature(enable = "neon")]
33932#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33933#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull))]
33934#[cfg_attr(
33935 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33936 assert_instr(smull)
33937)]
33938#[cfg_attr(
33939 not(target_arch = "arm"),
33940 stable(feature = "neon_intrinsics", since = "1.59.0")
33941)]
33942#[cfg_attr(
33943 target_arch = "arm",
33944 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33945)]
33946pub fn vmull_n_s32(a: int32x2_t, b: i32) -> int64x2_t {
33947 vmull_s32(a, vdup_n_s32(b))
33948}
33949#[doc = "Vector long multiply with scalar"]
33950#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_n_u16)"]
33951#[inline]
33952#[target_feature(enable = "neon")]
33953#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33954#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull))]
33955#[cfg_attr(
33956 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33957 assert_instr(umull)
33958)]
33959#[cfg_attr(
33960 not(target_arch = "arm"),
33961 stable(feature = "neon_intrinsics", since = "1.59.0")
33962)]
33963#[cfg_attr(
33964 target_arch = "arm",
33965 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33966)]
33967pub fn vmull_n_u16(a: uint16x4_t, b: u16) -> uint32x4_t {
33968 vmull_u16(a, vdup_n_u16(b))
33969}
33970#[doc = "Vector long multiply with scalar"]
33971#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_n_u32)"]
33972#[inline]
33973#[target_feature(enable = "neon")]
33974#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33975#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull))]
33976#[cfg_attr(
33977 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33978 assert_instr(umull)
33979)]
33980#[cfg_attr(
33981 not(target_arch = "arm"),
33982 stable(feature = "neon_intrinsics", since = "1.59.0")
33983)]
33984#[cfg_attr(
33985 target_arch = "arm",
33986 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33987)]
33988pub fn vmull_n_u32(a: uint32x2_t, b: u32) -> uint64x2_t {
33989 vmull_u32(a, vdup_n_u32(b))
33990}
33991#[doc = "Polynomial multiply long"]
33992#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_p8)"]
33993#[inline]
33994#[target_feature(enable = "neon")]
33995#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33996#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.p8"))]
33997#[cfg_attr(
33998 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33999 assert_instr(pmull)
34000)]
34001#[cfg_attr(
34002 not(target_arch = "arm"),
34003 stable(feature = "neon_intrinsics", since = "1.59.0")
34004)]
34005#[cfg_attr(
34006 target_arch = "arm",
34007 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34008)]
34009pub fn vmull_p8(a: poly8x8_t, b: poly8x8_t) -> poly16x8_t {
34010 unsafe extern "unadjusted" {
34011 #[cfg_attr(
34012 any(target_arch = "aarch64", target_arch = "arm64ec"),
34013 link_name = "llvm.aarch64.neon.pmull.v8i16"
34014 )]
34015 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmullp.v8i16")]
34016 fn _vmull_p8(a: poly8x8_t, b: poly8x8_t) -> poly16x8_t;
34017 }
34018 unsafe { _vmull_p8(a, b) }
34019}
34020#[doc = "Signed multiply long"]
34021#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_s16)"]
34022#[inline]
34023#[target_feature(enable = "neon")]
34024#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34025#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.s16"))]
34026#[cfg_attr(
34027 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34028 assert_instr(smull)
34029)]
34030#[cfg_attr(
34031 not(target_arch = "arm"),
34032 stable(feature = "neon_intrinsics", since = "1.59.0")
34033)]
34034#[cfg_attr(
34035 target_arch = "arm",
34036 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34037)]
34038pub fn vmull_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t {
34039 unsafe extern "unadjusted" {
34040 #[cfg_attr(
34041 any(target_arch = "aarch64", target_arch = "arm64ec"),
34042 link_name = "llvm.aarch64.neon.smull.v4i32"
34043 )]
34044 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmulls.v4i32")]
34045 fn _vmull_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t;
34046 }
34047 unsafe { _vmull_s16(a, b) }
34048}
34049#[doc = "Signed multiply long"]
34050#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_s32)"]
34051#[inline]
34052#[target_feature(enable = "neon")]
34053#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34054#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.s32"))]
34055#[cfg_attr(
34056 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34057 assert_instr(smull)
34058)]
34059#[cfg_attr(
34060 not(target_arch = "arm"),
34061 stable(feature = "neon_intrinsics", since = "1.59.0")
34062)]
34063#[cfg_attr(
34064 target_arch = "arm",
34065 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34066)]
34067pub fn vmull_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t {
34068 unsafe extern "unadjusted" {
34069 #[cfg_attr(
34070 any(target_arch = "aarch64", target_arch = "arm64ec"),
34071 link_name = "llvm.aarch64.neon.smull.v2i64"
34072 )]
34073 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmulls.v2i64")]
34074 fn _vmull_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t;
34075 }
34076 unsafe { _vmull_s32(a, b) }
34077}
34078#[doc = "Signed multiply long"]
34079#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_s8)"]
34080#[inline]
34081#[target_feature(enable = "neon")]
34082#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34083#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.s8"))]
34084#[cfg_attr(
34085 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34086 assert_instr(smull)
34087)]
34088#[cfg_attr(
34089 not(target_arch = "arm"),
34090 stable(feature = "neon_intrinsics", since = "1.59.0")
34091)]
34092#[cfg_attr(
34093 target_arch = "arm",
34094 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34095)]
34096pub fn vmull_s8(a: int8x8_t, b: int8x8_t) -> int16x8_t {
34097 unsafe extern "unadjusted" {
34098 #[cfg_attr(
34099 any(target_arch = "aarch64", target_arch = "arm64ec"),
34100 link_name = "llvm.aarch64.neon.smull.v8i16"
34101 )]
34102 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmulls.v8i16")]
34103 fn _vmull_s8(a: int8x8_t, b: int8x8_t) -> int16x8_t;
34104 }
34105 unsafe { _vmull_s8(a, b) }
34106}
34107#[doc = "Unsigned multiply long"]
34108#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_u8)"]
34109#[inline]
34110#[target_feature(enable = "neon")]
34111#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34112#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.u8"))]
34113#[cfg_attr(
34114 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34115 assert_instr(umull)
34116)]
34117#[cfg_attr(
34118 not(target_arch = "arm"),
34119 stable(feature = "neon_intrinsics", since = "1.59.0")
34120)]
34121#[cfg_attr(
34122 target_arch = "arm",
34123 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34124)]
34125pub fn vmull_u8(a: uint8x8_t, b: uint8x8_t) -> uint16x8_t {
34126 unsafe extern "unadjusted" {
34127 #[cfg_attr(
34128 any(target_arch = "aarch64", target_arch = "arm64ec"),
34129 link_name = "llvm.aarch64.neon.umull.v8i16"
34130 )]
34131 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmullu.v8i16")]
34132 fn _vmull_u8(a: uint8x8_t, b: uint8x8_t) -> uint16x8_t;
34133 }
34134 unsafe { _vmull_u8(a, b) }
34135}
34136#[doc = "Unsigned multiply long"]
34137#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_u16)"]
34138#[inline]
34139#[target_feature(enable = "neon")]
34140#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34141#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.u16"))]
34142#[cfg_attr(
34143 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34144 assert_instr(umull)
34145)]
34146#[cfg_attr(
34147 not(target_arch = "arm"),
34148 stable(feature = "neon_intrinsics", since = "1.59.0")
34149)]
34150#[cfg_attr(
34151 target_arch = "arm",
34152 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34153)]
34154pub fn vmull_u16(a: uint16x4_t, b: uint16x4_t) -> uint32x4_t {
34155 unsafe extern "unadjusted" {
34156 #[cfg_attr(
34157 any(target_arch = "aarch64", target_arch = "arm64ec"),
34158 link_name = "llvm.aarch64.neon.umull.v4i32"
34159 )]
34160 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmullu.v4i32")]
34161 fn _vmull_u16(a: uint16x4_t, b: uint16x4_t) -> uint32x4_t;
34162 }
34163 unsafe { _vmull_u16(a, b) }
34164}
34165#[doc = "Unsigned multiply long"]
34166#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_u32)"]
34167#[inline]
34168#[target_feature(enable = "neon")]
34169#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34170#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.u32"))]
34171#[cfg_attr(
34172 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34173 assert_instr(umull)
34174)]
34175#[cfg_attr(
34176 not(target_arch = "arm"),
34177 stable(feature = "neon_intrinsics", since = "1.59.0")
34178)]
34179#[cfg_attr(
34180 target_arch = "arm",
34181 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34182)]
34183pub fn vmull_u32(a: uint32x2_t, b: uint32x2_t) -> uint64x2_t {
34184 unsafe extern "unadjusted" {
34185 #[cfg_attr(
34186 any(target_arch = "aarch64", target_arch = "arm64ec"),
34187 link_name = "llvm.aarch64.neon.umull.v2i64"
34188 )]
34189 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmullu.v2i64")]
34190 fn _vmull_u32(a: uint32x2_t, b: uint32x2_t) -> uint64x2_t;
34191 }
34192 unsafe { _vmull_u32(a, b) }
34193}
34194#[doc = "Vector bitwise not."]
34195#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_p8)"]
34196#[inline]
34197#[target_feature(enable = "neon")]
34198#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34199#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34200#[cfg_attr(
34201 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34202 assert_instr(mvn)
34203)]
34204#[cfg_attr(
34205 not(target_arch = "arm"),
34206 stable(feature = "neon_intrinsics", since = "1.59.0")
34207)]
34208#[cfg_attr(
34209 target_arch = "arm",
34210 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34211)]
34212pub fn vmvn_p8(a: poly8x8_t) -> poly8x8_t {
34213 let b = poly8x8_t::splat(255);
34214 unsafe { simd_xor(a, b) }
34215}
34216#[doc = "Vector bitwise not."]
34217#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_s16)"]
34218#[inline]
34219#[target_feature(enable = "neon")]
34220#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34221#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34222#[cfg_attr(
34223 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34224 assert_instr(mvn)
34225)]
34226#[cfg_attr(
34227 not(target_arch = "arm"),
34228 stable(feature = "neon_intrinsics", since = "1.59.0")
34229)]
34230#[cfg_attr(
34231 target_arch = "arm",
34232 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34233)]
34234pub fn vmvn_s16(a: int16x4_t) -> int16x4_t {
34235 let b = int16x4_t::splat(-1);
34236 unsafe { simd_xor(a, b) }
34237}
34238#[doc = "Vector bitwise not."]
34239#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_s32)"]
34240#[inline]
34241#[target_feature(enable = "neon")]
34242#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34243#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34244#[cfg_attr(
34245 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34246 assert_instr(mvn)
34247)]
34248#[cfg_attr(
34249 not(target_arch = "arm"),
34250 stable(feature = "neon_intrinsics", since = "1.59.0")
34251)]
34252#[cfg_attr(
34253 target_arch = "arm",
34254 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34255)]
34256pub fn vmvn_s32(a: int32x2_t) -> int32x2_t {
34257 let b = int32x2_t::splat(-1);
34258 unsafe { simd_xor(a, b) }
34259}
34260#[doc = "Vector bitwise not."]
34261#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_s8)"]
34262#[inline]
34263#[target_feature(enable = "neon")]
34264#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34265#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34266#[cfg_attr(
34267 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34268 assert_instr(mvn)
34269)]
34270#[cfg_attr(
34271 not(target_arch = "arm"),
34272 stable(feature = "neon_intrinsics", since = "1.59.0")
34273)]
34274#[cfg_attr(
34275 target_arch = "arm",
34276 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34277)]
34278pub fn vmvn_s8(a: int8x8_t) -> int8x8_t {
34279 let b = int8x8_t::splat(-1);
34280 unsafe { simd_xor(a, b) }
34281}
34282#[doc = "Vector bitwise not."]
34283#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_u16)"]
34284#[inline]
34285#[target_feature(enable = "neon")]
34286#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34287#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34288#[cfg_attr(
34289 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34290 assert_instr(mvn)
34291)]
34292#[cfg_attr(
34293 not(target_arch = "arm"),
34294 stable(feature = "neon_intrinsics", since = "1.59.0")
34295)]
34296#[cfg_attr(
34297 target_arch = "arm",
34298 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34299)]
34300pub fn vmvn_u16(a: uint16x4_t) -> uint16x4_t {
34301 let b = uint16x4_t::splat(65_535);
34302 unsafe { simd_xor(a, b) }
34303}
34304#[doc = "Vector bitwise not."]
34305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_u32)"]
34306#[inline]
34307#[target_feature(enable = "neon")]
34308#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34309#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34310#[cfg_attr(
34311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34312 assert_instr(mvn)
34313)]
34314#[cfg_attr(
34315 not(target_arch = "arm"),
34316 stable(feature = "neon_intrinsics", since = "1.59.0")
34317)]
34318#[cfg_attr(
34319 target_arch = "arm",
34320 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34321)]
34322pub fn vmvn_u32(a: uint32x2_t) -> uint32x2_t {
34323 let b = uint32x2_t::splat(4_294_967_295);
34324 unsafe { simd_xor(a, b) }
34325}
34326#[doc = "Vector bitwise not."]
34327#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_u8)"]
34328#[inline]
34329#[target_feature(enable = "neon")]
34330#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34331#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34332#[cfg_attr(
34333 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34334 assert_instr(mvn)
34335)]
34336#[cfg_attr(
34337 not(target_arch = "arm"),
34338 stable(feature = "neon_intrinsics", since = "1.59.0")
34339)]
34340#[cfg_attr(
34341 target_arch = "arm",
34342 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34343)]
34344pub fn vmvn_u8(a: uint8x8_t) -> uint8x8_t {
34345 let b = uint8x8_t::splat(255);
34346 unsafe { simd_xor(a, b) }
34347}
34348#[doc = "Vector bitwise not."]
34349#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_p8)"]
34350#[inline]
34351#[target_feature(enable = "neon")]
34352#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34353#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34354#[cfg_attr(
34355 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34356 assert_instr(mvn)
34357)]
34358#[cfg_attr(
34359 not(target_arch = "arm"),
34360 stable(feature = "neon_intrinsics", since = "1.59.0")
34361)]
34362#[cfg_attr(
34363 target_arch = "arm",
34364 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34365)]
34366pub fn vmvnq_p8(a: poly8x16_t) -> poly8x16_t {
34367 let b = poly8x16_t::splat(255);
34368 unsafe { simd_xor(a, b) }
34369}
34370#[doc = "Vector bitwise not."]
34371#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_s16)"]
34372#[inline]
34373#[target_feature(enable = "neon")]
34374#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34375#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34376#[cfg_attr(
34377 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34378 assert_instr(mvn)
34379)]
34380#[cfg_attr(
34381 not(target_arch = "arm"),
34382 stable(feature = "neon_intrinsics", since = "1.59.0")
34383)]
34384#[cfg_attr(
34385 target_arch = "arm",
34386 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34387)]
34388pub fn vmvnq_s16(a: int16x8_t) -> int16x8_t {
34389 let b = int16x8_t::splat(-1);
34390 unsafe { simd_xor(a, b) }
34391}
34392#[doc = "Vector bitwise not."]
34393#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_s32)"]
34394#[inline]
34395#[target_feature(enable = "neon")]
34396#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34397#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34398#[cfg_attr(
34399 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34400 assert_instr(mvn)
34401)]
34402#[cfg_attr(
34403 not(target_arch = "arm"),
34404 stable(feature = "neon_intrinsics", since = "1.59.0")
34405)]
34406#[cfg_attr(
34407 target_arch = "arm",
34408 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34409)]
34410pub fn vmvnq_s32(a: int32x4_t) -> int32x4_t {
34411 let b = int32x4_t::splat(-1);
34412 unsafe { simd_xor(a, b) }
34413}
34414#[doc = "Vector bitwise not."]
34415#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_s8)"]
34416#[inline]
34417#[target_feature(enable = "neon")]
34418#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34419#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34420#[cfg_attr(
34421 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34422 assert_instr(mvn)
34423)]
34424#[cfg_attr(
34425 not(target_arch = "arm"),
34426 stable(feature = "neon_intrinsics", since = "1.59.0")
34427)]
34428#[cfg_attr(
34429 target_arch = "arm",
34430 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34431)]
34432pub fn vmvnq_s8(a: int8x16_t) -> int8x16_t {
34433 let b = int8x16_t::splat(-1);
34434 unsafe { simd_xor(a, b) }
34435}
34436#[doc = "Vector bitwise not."]
34437#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_u16)"]
34438#[inline]
34439#[target_feature(enable = "neon")]
34440#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34441#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34442#[cfg_attr(
34443 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34444 assert_instr(mvn)
34445)]
34446#[cfg_attr(
34447 not(target_arch = "arm"),
34448 stable(feature = "neon_intrinsics", since = "1.59.0")
34449)]
34450#[cfg_attr(
34451 target_arch = "arm",
34452 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34453)]
34454pub fn vmvnq_u16(a: uint16x8_t) -> uint16x8_t {
34455 let b = uint16x8_t::splat(65_535);
34456 unsafe { simd_xor(a, b) }
34457}
34458#[doc = "Vector bitwise not."]
34459#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_u32)"]
34460#[inline]
34461#[target_feature(enable = "neon")]
34462#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34463#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34464#[cfg_attr(
34465 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34466 assert_instr(mvn)
34467)]
34468#[cfg_attr(
34469 not(target_arch = "arm"),
34470 stable(feature = "neon_intrinsics", since = "1.59.0")
34471)]
34472#[cfg_attr(
34473 target_arch = "arm",
34474 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34475)]
34476pub fn vmvnq_u32(a: uint32x4_t) -> uint32x4_t {
34477 let b = uint32x4_t::splat(4_294_967_295);
34478 unsafe { simd_xor(a, b) }
34479}
34480#[doc = "Vector bitwise not."]
34481#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_u8)"]
34482#[inline]
34483#[target_feature(enable = "neon")]
34484#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34485#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34486#[cfg_attr(
34487 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34488 assert_instr(mvn)
34489)]
34490#[cfg_attr(
34491 not(target_arch = "arm"),
34492 stable(feature = "neon_intrinsics", since = "1.59.0")
34493)]
34494#[cfg_attr(
34495 target_arch = "arm",
34496 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34497)]
34498pub fn vmvnq_u8(a: uint8x16_t) -> uint8x16_t {
34499 let b = uint8x16_t::splat(255);
34500 unsafe { simd_xor(a, b) }
34501}
34502#[doc = "Negate"]
34503#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_f16)"]
34504#[inline]
34505#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
34506#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.f16"))]
34507#[cfg_attr(
34508 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34509 assert_instr(fneg)
34510)]
34511#[target_feature(enable = "neon,fp16")]
34512#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
34513#[cfg(not(target_arch = "arm64ec"))]
34514pub fn vneg_f16(a: float16x4_t) -> float16x4_t {
34515 unsafe { simd_neg(a) }
34516}
34517#[doc = "Negate"]
34518#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_f16)"]
34519#[inline]
34520#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
34521#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.f16"))]
34522#[cfg_attr(
34523 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34524 assert_instr(fneg)
34525)]
34526#[target_feature(enable = "neon,fp16")]
34527#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
34528#[cfg(not(target_arch = "arm64ec"))]
34529pub fn vnegq_f16(a: float16x8_t) -> float16x8_t {
34530 unsafe { simd_neg(a) }
34531}
34532#[doc = "Negate"]
34533#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_f32)"]
34534#[inline]
34535#[target_feature(enable = "neon")]
34536#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34537#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.f32"))]
34538#[cfg_attr(
34539 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34540 assert_instr(fneg)
34541)]
34542#[cfg_attr(
34543 not(target_arch = "arm"),
34544 stable(feature = "neon_intrinsics", since = "1.59.0")
34545)]
34546#[cfg_attr(
34547 target_arch = "arm",
34548 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34549)]
34550pub fn vneg_f32(a: float32x2_t) -> float32x2_t {
34551 unsafe { simd_neg(a) }
34552}
34553#[doc = "Negate"]
34554#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_f32)"]
34555#[inline]
34556#[target_feature(enable = "neon")]
34557#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34558#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.f32"))]
34559#[cfg_attr(
34560 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34561 assert_instr(fneg)
34562)]
34563#[cfg_attr(
34564 not(target_arch = "arm"),
34565 stable(feature = "neon_intrinsics", since = "1.59.0")
34566)]
34567#[cfg_attr(
34568 target_arch = "arm",
34569 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34570)]
34571pub fn vnegq_f32(a: float32x4_t) -> float32x4_t {
34572 unsafe { simd_neg(a) }
34573}
34574#[doc = "Negate"]
34575#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_s8)"]
34576#[inline]
34577#[target_feature(enable = "neon")]
34578#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34579#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.s8"))]
34580#[cfg_attr(
34581 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34582 assert_instr(neg)
34583)]
34584#[cfg_attr(
34585 not(target_arch = "arm"),
34586 stable(feature = "neon_intrinsics", since = "1.59.0")
34587)]
34588#[cfg_attr(
34589 target_arch = "arm",
34590 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34591)]
34592pub fn vneg_s8(a: int8x8_t) -> int8x8_t {
34593 unsafe { simd_neg(a) }
34594}
34595#[doc = "Negate"]
34596#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_s8)"]
34597#[inline]
34598#[target_feature(enable = "neon")]
34599#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34600#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.s8"))]
34601#[cfg_attr(
34602 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34603 assert_instr(neg)
34604)]
34605#[cfg_attr(
34606 not(target_arch = "arm"),
34607 stable(feature = "neon_intrinsics", since = "1.59.0")
34608)]
34609#[cfg_attr(
34610 target_arch = "arm",
34611 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34612)]
34613pub fn vnegq_s8(a: int8x16_t) -> int8x16_t {
34614 unsafe { simd_neg(a) }
34615}
34616#[doc = "Negate"]
34617#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_s16)"]
34618#[inline]
34619#[target_feature(enable = "neon")]
34620#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34621#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.s16"))]
34622#[cfg_attr(
34623 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34624 assert_instr(neg)
34625)]
34626#[cfg_attr(
34627 not(target_arch = "arm"),
34628 stable(feature = "neon_intrinsics", since = "1.59.0")
34629)]
34630#[cfg_attr(
34631 target_arch = "arm",
34632 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34633)]
34634pub fn vneg_s16(a: int16x4_t) -> int16x4_t {
34635 unsafe { simd_neg(a) }
34636}
34637#[doc = "Negate"]
34638#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_s16)"]
34639#[inline]
34640#[target_feature(enable = "neon")]
34641#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34642#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.s16"))]
34643#[cfg_attr(
34644 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34645 assert_instr(neg)
34646)]
34647#[cfg_attr(
34648 not(target_arch = "arm"),
34649 stable(feature = "neon_intrinsics", since = "1.59.0")
34650)]
34651#[cfg_attr(
34652 target_arch = "arm",
34653 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34654)]
34655pub fn vnegq_s16(a: int16x8_t) -> int16x8_t {
34656 unsafe { simd_neg(a) }
34657}
34658#[doc = "Negate"]
34659#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_s32)"]
34660#[inline]
34661#[target_feature(enable = "neon")]
34662#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34663#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.s32"))]
34664#[cfg_attr(
34665 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34666 assert_instr(neg)
34667)]
34668#[cfg_attr(
34669 not(target_arch = "arm"),
34670 stable(feature = "neon_intrinsics", since = "1.59.0")
34671)]
34672#[cfg_attr(
34673 target_arch = "arm",
34674 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34675)]
34676pub fn vneg_s32(a: int32x2_t) -> int32x2_t {
34677 unsafe { simd_neg(a) }
34678}
34679#[doc = "Negate"]
34680#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_s32)"]
34681#[inline]
34682#[target_feature(enable = "neon")]
34683#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34684#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.s32"))]
34685#[cfg_attr(
34686 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34687 assert_instr(neg)
34688)]
34689#[cfg_attr(
34690 not(target_arch = "arm"),
34691 stable(feature = "neon_intrinsics", since = "1.59.0")
34692)]
34693#[cfg_attr(
34694 target_arch = "arm",
34695 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34696)]
34697pub fn vnegq_s32(a: int32x4_t) -> int32x4_t {
34698 unsafe { simd_neg(a) }
34699}
34700#[doc = "Vector bitwise inclusive OR NOT"]
34701#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_s16)"]
34702#[inline]
34703#[target_feature(enable = "neon")]
34704#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34705#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
34706#[cfg_attr(
34707 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34708 assert_instr(orn)
34709)]
34710#[cfg_attr(
34711 not(target_arch = "arm"),
34712 stable(feature = "neon_intrinsics", since = "1.59.0")
34713)]
34714#[cfg_attr(
34715 target_arch = "arm",
34716 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34717)]
34718pub fn vorn_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
34719 let c = int16x4_t::splat(-1);
34720 unsafe { simd_or(simd_xor(b, c), a) }
34721}
34722#[doc = "Vector bitwise inclusive OR NOT"]
34723#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_s32)"]
34724#[inline]
34725#[target_feature(enable = "neon")]
34726#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34727#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
34728#[cfg_attr(
34729 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34730 assert_instr(orn)
34731)]
34732#[cfg_attr(
34733 not(target_arch = "arm"),
34734 stable(feature = "neon_intrinsics", since = "1.59.0")
34735)]
34736#[cfg_attr(
34737 target_arch = "arm",
34738 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34739)]
34740pub fn vorn_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
34741 let c = int32x2_t::splat(-1);
34742 unsafe { simd_or(simd_xor(b, c), a) }
34743}
34744#[doc = "Vector bitwise inclusive OR NOT"]
34745#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_s64)"]
34746#[inline]
34747#[target_feature(enable = "neon")]
34748#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34749#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
34750#[cfg_attr(
34751 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34752 assert_instr(orn)
34753)]
34754#[cfg_attr(
34755 not(target_arch = "arm"),
34756 stable(feature = "neon_intrinsics", since = "1.59.0")
34757)]
34758#[cfg_attr(
34759 target_arch = "arm",
34760 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34761)]
34762pub fn vorn_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
34763 let c = int64x1_t::splat(-1);
34764 unsafe { simd_or(simd_xor(b, c), a) }
34765}
34766#[doc = "Vector bitwise inclusive OR NOT"]
34767#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_s8)"]
34768#[inline]
34769#[target_feature(enable = "neon")]
34770#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34771#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
34772#[cfg_attr(
34773 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34774 assert_instr(orn)
34775)]
34776#[cfg_attr(
34777 not(target_arch = "arm"),
34778 stable(feature = "neon_intrinsics", since = "1.59.0")
34779)]
34780#[cfg_attr(
34781 target_arch = "arm",
34782 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34783)]
34784pub fn vorn_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
34785 let c = int8x8_t::splat(-1);
34786 unsafe { simd_or(simd_xor(b, c), a) }
34787}
34788#[doc = "Vector bitwise inclusive OR NOT"]
34789#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_s16)"]
34790#[inline]
34791#[target_feature(enable = "neon")]
34792#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34793#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
34794#[cfg_attr(
34795 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34796 assert_instr(orn)
34797)]
34798#[cfg_attr(
34799 not(target_arch = "arm"),
34800 stable(feature = "neon_intrinsics", since = "1.59.0")
34801)]
34802#[cfg_attr(
34803 target_arch = "arm",
34804 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34805)]
34806pub fn vornq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
34807 let c = int16x8_t::splat(-1);
34808 unsafe { simd_or(simd_xor(b, c), a) }
34809}
34810#[doc = "Vector bitwise inclusive OR NOT"]
34811#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_s32)"]
34812#[inline]
34813#[target_feature(enable = "neon")]
34814#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34815#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
34816#[cfg_attr(
34817 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34818 assert_instr(orn)
34819)]
34820#[cfg_attr(
34821 not(target_arch = "arm"),
34822 stable(feature = "neon_intrinsics", since = "1.59.0")
34823)]
34824#[cfg_attr(
34825 target_arch = "arm",
34826 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34827)]
34828pub fn vornq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
34829 let c = int32x4_t::splat(-1);
34830 unsafe { simd_or(simd_xor(b, c), a) }
34831}
34832#[doc = "Vector bitwise inclusive OR NOT"]
34833#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_s64)"]
34834#[inline]
34835#[target_feature(enable = "neon")]
34836#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34837#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
34838#[cfg_attr(
34839 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34840 assert_instr(orn)
34841)]
34842#[cfg_attr(
34843 not(target_arch = "arm"),
34844 stable(feature = "neon_intrinsics", since = "1.59.0")
34845)]
34846#[cfg_attr(
34847 target_arch = "arm",
34848 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34849)]
34850pub fn vornq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
34851 let c = int64x2_t::splat(-1);
34852 unsafe { simd_or(simd_xor(b, c), a) }
34853}
34854#[doc = "Vector bitwise inclusive OR NOT"]
34855#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_s8)"]
34856#[inline]
34857#[target_feature(enable = "neon")]
34858#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34859#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
34860#[cfg_attr(
34861 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34862 assert_instr(orn)
34863)]
34864#[cfg_attr(
34865 not(target_arch = "arm"),
34866 stable(feature = "neon_intrinsics", since = "1.59.0")
34867)]
34868#[cfg_attr(
34869 target_arch = "arm",
34870 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34871)]
34872pub fn vornq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
34873 let c = int8x16_t::splat(-1);
34874 unsafe { simd_or(simd_xor(b, c), a) }
34875}
34876#[doc = "Vector bitwise inclusive OR NOT"]
34877#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_u16)"]
34878#[inline]
34879#[target_feature(enable = "neon")]
34880#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34881#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
34882#[cfg_attr(
34883 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34884 assert_instr(orn)
34885)]
34886#[cfg_attr(
34887 not(target_arch = "arm"),
34888 stable(feature = "neon_intrinsics", since = "1.59.0")
34889)]
34890#[cfg_attr(
34891 target_arch = "arm",
34892 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34893)]
34894pub fn vorn_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
34895 let c = int16x4_t::splat(-1);
34896 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
34897}
34898#[doc = "Vector bitwise inclusive OR NOT"]
34899#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_u32)"]
34900#[inline]
34901#[target_feature(enable = "neon")]
34902#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34903#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
34904#[cfg_attr(
34905 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34906 assert_instr(orn)
34907)]
34908#[cfg_attr(
34909 not(target_arch = "arm"),
34910 stable(feature = "neon_intrinsics", since = "1.59.0")
34911)]
34912#[cfg_attr(
34913 target_arch = "arm",
34914 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34915)]
34916pub fn vorn_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
34917 let c = int32x2_t::splat(-1);
34918 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
34919}
34920#[doc = "Vector bitwise inclusive OR NOT"]
34921#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_u64)"]
34922#[inline]
34923#[target_feature(enable = "neon")]
34924#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34925#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
34926#[cfg_attr(
34927 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34928 assert_instr(orn)
34929)]
34930#[cfg_attr(
34931 not(target_arch = "arm"),
34932 stable(feature = "neon_intrinsics", since = "1.59.0")
34933)]
34934#[cfg_attr(
34935 target_arch = "arm",
34936 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34937)]
34938pub fn vorn_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
34939 let c = int64x1_t::splat(-1);
34940 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
34941}
34942#[doc = "Vector bitwise inclusive OR NOT"]
34943#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_u8)"]
34944#[inline]
34945#[target_feature(enable = "neon")]
34946#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34947#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
34948#[cfg_attr(
34949 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34950 assert_instr(orn)
34951)]
34952#[cfg_attr(
34953 not(target_arch = "arm"),
34954 stable(feature = "neon_intrinsics", since = "1.59.0")
34955)]
34956#[cfg_attr(
34957 target_arch = "arm",
34958 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34959)]
34960pub fn vorn_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
34961 let c = int8x8_t::splat(-1);
34962 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
34963}
34964#[doc = "Vector bitwise inclusive OR NOT"]
34965#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_u16)"]
34966#[inline]
34967#[target_feature(enable = "neon")]
34968#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34969#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
34970#[cfg_attr(
34971 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34972 assert_instr(orn)
34973)]
34974#[cfg_attr(
34975 not(target_arch = "arm"),
34976 stable(feature = "neon_intrinsics", since = "1.59.0")
34977)]
34978#[cfg_attr(
34979 target_arch = "arm",
34980 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34981)]
34982pub fn vornq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
34983 let c = int16x8_t::splat(-1);
34984 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
34985}
34986#[doc = "Vector bitwise inclusive OR NOT"]
34987#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_u32)"]
34988#[inline]
34989#[target_feature(enable = "neon")]
34990#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34991#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
34992#[cfg_attr(
34993 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34994 assert_instr(orn)
34995)]
34996#[cfg_attr(
34997 not(target_arch = "arm"),
34998 stable(feature = "neon_intrinsics", since = "1.59.0")
34999)]
35000#[cfg_attr(
35001 target_arch = "arm",
35002 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35003)]
35004pub fn vornq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
35005 let c = int32x4_t::splat(-1);
35006 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
35007}
35008#[doc = "Vector bitwise inclusive OR NOT"]
35009#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_u64)"]
35010#[inline]
35011#[target_feature(enable = "neon")]
35012#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35013#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
35014#[cfg_attr(
35015 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35016 assert_instr(orn)
35017)]
35018#[cfg_attr(
35019 not(target_arch = "arm"),
35020 stable(feature = "neon_intrinsics", since = "1.59.0")
35021)]
35022#[cfg_attr(
35023 target_arch = "arm",
35024 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35025)]
35026pub fn vornq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
35027 let c = int64x2_t::splat(-1);
35028 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
35029}
35030#[doc = "Vector bitwise inclusive OR NOT"]
35031#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_u8)"]
35032#[inline]
35033#[target_feature(enable = "neon")]
35034#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35035#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
35036#[cfg_attr(
35037 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35038 assert_instr(orn)
35039)]
35040#[cfg_attr(
35041 not(target_arch = "arm"),
35042 stable(feature = "neon_intrinsics", since = "1.59.0")
35043)]
35044#[cfg_attr(
35045 target_arch = "arm",
35046 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35047)]
35048pub fn vornq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
35049 let c = int8x16_t::splat(-1);
35050 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
35051}
35052#[doc = "Vector bitwise or (immediate, inclusive)"]
35053#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_s8)"]
35054#[inline]
35055#[target_feature(enable = "neon")]
35056#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35057#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35058#[cfg_attr(
35059 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35060 assert_instr(orr)
35061)]
35062#[cfg_attr(
35063 not(target_arch = "arm"),
35064 stable(feature = "neon_intrinsics", since = "1.59.0")
35065)]
35066#[cfg_attr(
35067 target_arch = "arm",
35068 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35069)]
35070pub fn vorr_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
35071 unsafe { simd_or(a, b) }
35072}
35073#[doc = "Vector bitwise or (immediate, inclusive)"]
35074#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_s8)"]
35075#[inline]
35076#[target_feature(enable = "neon")]
35077#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35078#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35079#[cfg_attr(
35080 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35081 assert_instr(orr)
35082)]
35083#[cfg_attr(
35084 not(target_arch = "arm"),
35085 stable(feature = "neon_intrinsics", since = "1.59.0")
35086)]
35087#[cfg_attr(
35088 target_arch = "arm",
35089 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35090)]
35091pub fn vorrq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
35092 unsafe { simd_or(a, b) }
35093}
35094#[doc = "Vector bitwise or (immediate, inclusive)"]
35095#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_s16)"]
35096#[inline]
35097#[target_feature(enable = "neon")]
35098#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35099#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35100#[cfg_attr(
35101 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35102 assert_instr(orr)
35103)]
35104#[cfg_attr(
35105 not(target_arch = "arm"),
35106 stable(feature = "neon_intrinsics", since = "1.59.0")
35107)]
35108#[cfg_attr(
35109 target_arch = "arm",
35110 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35111)]
35112pub fn vorr_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
35113 unsafe { simd_or(a, b) }
35114}
35115#[doc = "Vector bitwise or (immediate, inclusive)"]
35116#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_s16)"]
35117#[inline]
35118#[target_feature(enable = "neon")]
35119#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35120#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35121#[cfg_attr(
35122 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35123 assert_instr(orr)
35124)]
35125#[cfg_attr(
35126 not(target_arch = "arm"),
35127 stable(feature = "neon_intrinsics", since = "1.59.0")
35128)]
35129#[cfg_attr(
35130 target_arch = "arm",
35131 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35132)]
35133pub fn vorrq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
35134 unsafe { simd_or(a, b) }
35135}
35136#[doc = "Vector bitwise or (immediate, inclusive)"]
35137#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_s32)"]
35138#[inline]
35139#[target_feature(enable = "neon")]
35140#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35141#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35142#[cfg_attr(
35143 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35144 assert_instr(orr)
35145)]
35146#[cfg_attr(
35147 not(target_arch = "arm"),
35148 stable(feature = "neon_intrinsics", since = "1.59.0")
35149)]
35150#[cfg_attr(
35151 target_arch = "arm",
35152 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35153)]
35154pub fn vorr_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
35155 unsafe { simd_or(a, b) }
35156}
35157#[doc = "Vector bitwise or (immediate, inclusive)"]
35158#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_s32)"]
35159#[inline]
35160#[target_feature(enable = "neon")]
35161#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35162#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35163#[cfg_attr(
35164 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35165 assert_instr(orr)
35166)]
35167#[cfg_attr(
35168 not(target_arch = "arm"),
35169 stable(feature = "neon_intrinsics", since = "1.59.0")
35170)]
35171#[cfg_attr(
35172 target_arch = "arm",
35173 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35174)]
35175pub fn vorrq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
35176 unsafe { simd_or(a, b) }
35177}
35178#[doc = "Vector bitwise or (immediate, inclusive)"]
35179#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_s64)"]
35180#[inline]
35181#[target_feature(enable = "neon")]
35182#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35183#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35184#[cfg_attr(
35185 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35186 assert_instr(orr)
35187)]
35188#[cfg_attr(
35189 not(target_arch = "arm"),
35190 stable(feature = "neon_intrinsics", since = "1.59.0")
35191)]
35192#[cfg_attr(
35193 target_arch = "arm",
35194 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35195)]
35196pub fn vorr_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
35197 unsafe { simd_or(a, b) }
35198}
35199#[doc = "Vector bitwise or (immediate, inclusive)"]
35200#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_s64)"]
35201#[inline]
35202#[target_feature(enable = "neon")]
35203#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35204#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35205#[cfg_attr(
35206 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35207 assert_instr(orr)
35208)]
35209#[cfg_attr(
35210 not(target_arch = "arm"),
35211 stable(feature = "neon_intrinsics", since = "1.59.0")
35212)]
35213#[cfg_attr(
35214 target_arch = "arm",
35215 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35216)]
35217pub fn vorrq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
35218 unsafe { simd_or(a, b) }
35219}
35220#[doc = "Vector bitwise or (immediate, inclusive)"]
35221#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_u8)"]
35222#[inline]
35223#[target_feature(enable = "neon")]
35224#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35225#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35226#[cfg_attr(
35227 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35228 assert_instr(orr)
35229)]
35230#[cfg_attr(
35231 not(target_arch = "arm"),
35232 stable(feature = "neon_intrinsics", since = "1.59.0")
35233)]
35234#[cfg_attr(
35235 target_arch = "arm",
35236 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35237)]
35238pub fn vorr_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
35239 unsafe { simd_or(a, b) }
35240}
35241#[doc = "Vector bitwise or (immediate, inclusive)"]
35242#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_u8)"]
35243#[inline]
35244#[target_feature(enable = "neon")]
35245#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35246#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35247#[cfg_attr(
35248 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35249 assert_instr(orr)
35250)]
35251#[cfg_attr(
35252 not(target_arch = "arm"),
35253 stable(feature = "neon_intrinsics", since = "1.59.0")
35254)]
35255#[cfg_attr(
35256 target_arch = "arm",
35257 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35258)]
35259pub fn vorrq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
35260 unsafe { simd_or(a, b) }
35261}
35262#[doc = "Vector bitwise or (immediate, inclusive)"]
35263#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_u16)"]
35264#[inline]
35265#[target_feature(enable = "neon")]
35266#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35267#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35268#[cfg_attr(
35269 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35270 assert_instr(orr)
35271)]
35272#[cfg_attr(
35273 not(target_arch = "arm"),
35274 stable(feature = "neon_intrinsics", since = "1.59.0")
35275)]
35276#[cfg_attr(
35277 target_arch = "arm",
35278 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35279)]
35280pub fn vorr_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
35281 unsafe { simd_or(a, b) }
35282}
35283#[doc = "Vector bitwise or (immediate, inclusive)"]
35284#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_u16)"]
35285#[inline]
35286#[target_feature(enable = "neon")]
35287#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35288#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35289#[cfg_attr(
35290 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35291 assert_instr(orr)
35292)]
35293#[cfg_attr(
35294 not(target_arch = "arm"),
35295 stable(feature = "neon_intrinsics", since = "1.59.0")
35296)]
35297#[cfg_attr(
35298 target_arch = "arm",
35299 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35300)]
35301pub fn vorrq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
35302 unsafe { simd_or(a, b) }
35303}
35304#[doc = "Vector bitwise or (immediate, inclusive)"]
35305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_u32)"]
35306#[inline]
35307#[target_feature(enable = "neon")]
35308#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35309#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35310#[cfg_attr(
35311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35312 assert_instr(orr)
35313)]
35314#[cfg_attr(
35315 not(target_arch = "arm"),
35316 stable(feature = "neon_intrinsics", since = "1.59.0")
35317)]
35318#[cfg_attr(
35319 target_arch = "arm",
35320 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35321)]
35322pub fn vorr_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
35323 unsafe { simd_or(a, b) }
35324}
35325#[doc = "Vector bitwise or (immediate, inclusive)"]
35326#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_u32)"]
35327#[inline]
35328#[target_feature(enable = "neon")]
35329#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35330#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35331#[cfg_attr(
35332 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35333 assert_instr(orr)
35334)]
35335#[cfg_attr(
35336 not(target_arch = "arm"),
35337 stable(feature = "neon_intrinsics", since = "1.59.0")
35338)]
35339#[cfg_attr(
35340 target_arch = "arm",
35341 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35342)]
35343pub fn vorrq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
35344 unsafe { simd_or(a, b) }
35345}
35346#[doc = "Vector bitwise or (immediate, inclusive)"]
35347#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_u64)"]
35348#[inline]
35349#[target_feature(enable = "neon")]
35350#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35351#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35352#[cfg_attr(
35353 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35354 assert_instr(orr)
35355)]
35356#[cfg_attr(
35357 not(target_arch = "arm"),
35358 stable(feature = "neon_intrinsics", since = "1.59.0")
35359)]
35360#[cfg_attr(
35361 target_arch = "arm",
35362 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35363)]
35364pub fn vorr_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
35365 unsafe { simd_or(a, b) }
35366}
35367#[doc = "Vector bitwise or (immediate, inclusive)"]
35368#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_u64)"]
35369#[inline]
35370#[target_feature(enable = "neon")]
35371#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35372#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35373#[cfg_attr(
35374 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35375 assert_instr(orr)
35376)]
35377#[cfg_attr(
35378 not(target_arch = "arm"),
35379 stable(feature = "neon_intrinsics", since = "1.59.0")
35380)]
35381#[cfg_attr(
35382 target_arch = "arm",
35383 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35384)]
35385pub fn vorrq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
35386 unsafe { simd_or(a, b) }
35387}
35388#[doc = "Signed Add and Accumulate Long Pairwise."]
35389#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_s8)"]
35390#[inline]
35391#[target_feature(enable = "neon")]
35392#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35393#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s8"))]
35394#[cfg_attr(
35395 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35396 assert_instr(sadalp)
35397)]
35398#[cfg_attr(
35399 not(target_arch = "arm"),
35400 stable(feature = "neon_intrinsics", since = "1.59.0")
35401)]
35402#[cfg_attr(
35403 target_arch = "arm",
35404 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35405)]
35406pub fn vpadal_s8(a: int16x4_t, b: int8x8_t) -> int16x4_t {
35407 let x: int16x4_t;
35408 #[cfg(target_arch = "arm")]
35409 {
35410 x = priv_vpadal_s8(a, b);
35411 }
35412 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
35413 unsafe {
35414 x = simd_add(vpaddl_s8(b), a);
35415 };
35416 x
35417}
35418#[doc = "Signed Add and Accumulate Long Pairwise."]
35419#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_s8)"]
35420#[inline]
35421#[target_feature(enable = "neon")]
35422#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35423#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s8"))]
35424#[cfg_attr(
35425 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35426 assert_instr(sadalp)
35427)]
35428#[cfg_attr(
35429 not(target_arch = "arm"),
35430 stable(feature = "neon_intrinsics", since = "1.59.0")
35431)]
35432#[cfg_attr(
35433 target_arch = "arm",
35434 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35435)]
35436pub fn vpadalq_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {
35437 let x: int16x8_t;
35438 #[cfg(target_arch = "arm")]
35439 {
35440 x = priv_vpadalq_s8(a, b);
35441 }
35442 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
35443 unsafe {
35444 x = simd_add(vpaddlq_s8(b), a);
35445 };
35446 x
35447}
35448#[doc = "Signed Add and Accumulate Long Pairwise."]
35449#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_s16)"]
35450#[inline]
35451#[target_feature(enable = "neon")]
35452#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35453#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s16"))]
35454#[cfg_attr(
35455 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35456 assert_instr(sadalp)
35457)]
35458#[cfg_attr(
35459 not(target_arch = "arm"),
35460 stable(feature = "neon_intrinsics", since = "1.59.0")
35461)]
35462#[cfg_attr(
35463 target_arch = "arm",
35464 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35465)]
35466pub fn vpadal_s16(a: int32x2_t, b: int16x4_t) -> int32x2_t {
35467 let x: int32x2_t;
35468 #[cfg(target_arch = "arm")]
35469 {
35470 x = priv_vpadal_s16(a, b);
35471 }
35472 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
35473 unsafe {
35474 x = simd_add(vpaddl_s16(b), a);
35475 };
35476 x
35477}
35478#[doc = "Signed Add and Accumulate Long Pairwise."]
35479#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_s16)"]
35480#[inline]
35481#[target_feature(enable = "neon")]
35482#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35483#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s16"))]
35484#[cfg_attr(
35485 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35486 assert_instr(sadalp)
35487)]
35488#[cfg_attr(
35489 not(target_arch = "arm"),
35490 stable(feature = "neon_intrinsics", since = "1.59.0")
35491)]
35492#[cfg_attr(
35493 target_arch = "arm",
35494 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35495)]
35496pub fn vpadalq_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {
35497 let x: int32x4_t;
35498 #[cfg(target_arch = "arm")]
35499 {
35500 x = priv_vpadalq_s16(a, b);
35501 }
35502 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
35503 unsafe {
35504 x = simd_add(vpaddlq_s16(b), a);
35505 };
35506 x
35507}
35508#[doc = "Signed Add and Accumulate Long Pairwise."]
35509#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_s32)"]
35510#[inline]
35511#[target_feature(enable = "neon")]
35512#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35513#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s32"))]
35514#[cfg_attr(
35515 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35516 assert_instr(sadalp)
35517)]
35518#[cfg_attr(
35519 not(target_arch = "arm"),
35520 stable(feature = "neon_intrinsics", since = "1.59.0")
35521)]
35522#[cfg_attr(
35523 target_arch = "arm",
35524 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35525)]
35526pub fn vpadal_s32(a: int64x1_t, b: int32x2_t) -> int64x1_t {
35527 let x: int64x1_t;
35528 #[cfg(target_arch = "arm")]
35529 {
35530 x = priv_vpadal_s32(a, b);
35531 }
35532 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
35533 unsafe {
35534 x = simd_add(vpaddl_s32(b), a);
35535 };
35536 x
35537}
35538#[doc = "Signed Add and Accumulate Long Pairwise."]
35539#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_s32)"]
35540#[inline]
35541#[target_feature(enable = "neon")]
35542#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35543#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s32"))]
35544#[cfg_attr(
35545 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35546 assert_instr(sadalp)
35547)]
35548#[cfg_attr(
35549 not(target_arch = "arm"),
35550 stable(feature = "neon_intrinsics", since = "1.59.0")
35551)]
35552#[cfg_attr(
35553 target_arch = "arm",
35554 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35555)]
35556pub fn vpadalq_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {
35557 let x: int64x2_t;
35558 #[cfg(target_arch = "arm")]
35559 {
35560 x = priv_vpadalq_s32(a, b);
35561 }
35562 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
35563 unsafe {
35564 x = simd_add(vpaddlq_s32(b), a);
35565 };
35566 x
35567}
35568#[doc = "Unsigned Add and Accumulate Long Pairwise."]
35569#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_u8)"]
35570#[inline]
35571#[target_feature(enable = "neon")]
35572#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35573#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u8"))]
35574#[cfg_attr(
35575 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35576 assert_instr(uadalp)
35577)]
35578#[cfg_attr(
35579 not(target_arch = "arm"),
35580 stable(feature = "neon_intrinsics", since = "1.59.0")
35581)]
35582#[cfg_attr(
35583 target_arch = "arm",
35584 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35585)]
35586pub fn vpadal_u8(a: uint16x4_t, b: uint8x8_t) -> uint16x4_t {
35587 let x: uint16x4_t;
35588 #[cfg(target_arch = "arm")]
35589 {
35590 x = priv_vpadal_u8(a, b);
35591 }
35592 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
35593 unsafe {
35594 x = simd_add(vpaddl_u8(b), a);
35595 };
35596 x
35597}
35598#[doc = "Unsigned Add and Accumulate Long Pairwise."]
35599#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_u8)"]
35600#[inline]
35601#[target_feature(enable = "neon")]
35602#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35603#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u8"))]
35604#[cfg_attr(
35605 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35606 assert_instr(uadalp)
35607)]
35608#[cfg_attr(
35609 not(target_arch = "arm"),
35610 stable(feature = "neon_intrinsics", since = "1.59.0")
35611)]
35612#[cfg_attr(
35613 target_arch = "arm",
35614 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35615)]
35616pub fn vpadalq_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {
35617 let x: uint16x8_t;
35618 #[cfg(target_arch = "arm")]
35619 {
35620 x = priv_vpadalq_u8(a, b);
35621 }
35622 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
35623 unsafe {
35624 x = simd_add(vpaddlq_u8(b), a);
35625 };
35626 x
35627}
35628#[doc = "Unsigned Add and Accumulate Long Pairwise."]
35629#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_u16)"]
35630#[inline]
35631#[target_feature(enable = "neon")]
35632#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35633#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u16"))]
35634#[cfg_attr(
35635 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35636 assert_instr(uadalp)
35637)]
35638#[cfg_attr(
35639 not(target_arch = "arm"),
35640 stable(feature = "neon_intrinsics", since = "1.59.0")
35641)]
35642#[cfg_attr(
35643 target_arch = "arm",
35644 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35645)]
35646pub fn vpadal_u16(a: uint32x2_t, b: uint16x4_t) -> uint32x2_t {
35647 let x: uint32x2_t;
35648 #[cfg(target_arch = "arm")]
35649 {
35650 x = priv_vpadal_u16(a, b);
35651 }
35652 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
35653 unsafe {
35654 x = simd_add(vpaddl_u16(b), a);
35655 };
35656 x
35657}
35658#[doc = "Unsigned Add and Accumulate Long Pairwise."]
35659#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_u16)"]
35660#[inline]
35661#[target_feature(enable = "neon")]
35662#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35663#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u16"))]
35664#[cfg_attr(
35665 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35666 assert_instr(uadalp)
35667)]
35668#[cfg_attr(
35669 not(target_arch = "arm"),
35670 stable(feature = "neon_intrinsics", since = "1.59.0")
35671)]
35672#[cfg_attr(
35673 target_arch = "arm",
35674 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35675)]
35676pub fn vpadalq_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {
35677 let x: uint32x4_t;
35678 #[cfg(target_arch = "arm")]
35679 {
35680 x = priv_vpadalq_u16(a, b);
35681 }
35682 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
35683 unsafe {
35684 x = simd_add(vpaddlq_u16(b), a);
35685 };
35686 x
35687}
35688#[doc = "Unsigned Add and Accumulate Long Pairwise."]
35689#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_u32)"]
35690#[inline]
35691#[target_feature(enable = "neon")]
35692#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35693#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u32"))]
35694#[cfg_attr(
35695 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35696 assert_instr(uadalp)
35697)]
35698#[cfg_attr(
35699 not(target_arch = "arm"),
35700 stable(feature = "neon_intrinsics", since = "1.59.0")
35701)]
35702#[cfg_attr(
35703 target_arch = "arm",
35704 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35705)]
35706pub fn vpadal_u32(a: uint64x1_t, b: uint32x2_t) -> uint64x1_t {
35707 let x: uint64x1_t;
35708 #[cfg(target_arch = "arm")]
35709 {
35710 x = priv_vpadal_u32(a, b);
35711 }
35712 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
35713 unsafe {
35714 x = simd_add(vpaddl_u32(b), a);
35715 };
35716 x
35717}
35718#[doc = "Unsigned Add and Accumulate Long Pairwise."]
35719#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_u32)"]
35720#[inline]
35721#[target_feature(enable = "neon")]
35722#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35723#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u32"))]
35724#[cfg_attr(
35725 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35726 assert_instr(uadalp)
35727)]
35728#[cfg_attr(
35729 not(target_arch = "arm"),
35730 stable(feature = "neon_intrinsics", since = "1.59.0")
35731)]
35732#[cfg_attr(
35733 target_arch = "arm",
35734 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35735)]
35736pub fn vpadalq_u32(a: uint64x2_t, b: uint32x4_t) -> uint64x2_t {
35737 let x: uint64x2_t;
35738 #[cfg(target_arch = "arm")]
35739 {
35740 x = priv_vpadalq_u32(a, b);
35741 }
35742 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
35743 unsafe {
35744 x = simd_add(vpaddlq_u32(b), a);
35745 };
35746 x
35747}
35748#[doc = "Floating-point add pairwise"]
35749#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_f16)"]
35750#[inline]
35751#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
35752#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
35753#[cfg_attr(
35754 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35755 assert_instr(faddp)
35756)]
35757#[target_feature(enable = "neon,fp16")]
35758#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
35759#[cfg(not(target_arch = "arm64ec"))]
35760pub fn vpadd_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
35761 unsafe extern "unadjusted" {
35762 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v4f16")]
35763 #[cfg_attr(
35764 any(target_arch = "aarch64", target_arch = "arm64ec"),
35765 link_name = "llvm.aarch64.neon.faddp.v4f16"
35766 )]
35767 fn _vpadd_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
35768 }
35769 unsafe { _vpadd_f16(a, b) }
35770}
35771#[doc = "Floating-point add pairwise"]
35772#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_f32)"]
35773#[inline]
35774#[target_feature(enable = "neon")]
35775#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35776#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
35777#[cfg_attr(
35778 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35779 assert_instr(faddp)
35780)]
35781#[cfg_attr(
35782 not(target_arch = "arm"),
35783 stable(feature = "neon_intrinsics", since = "1.59.0")
35784)]
35785#[cfg_attr(
35786 target_arch = "arm",
35787 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35788)]
35789pub fn vpadd_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
35790 unsafe extern "unadjusted" {
35791 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v2f32")]
35792 #[cfg_attr(
35793 any(target_arch = "aarch64", target_arch = "arm64ec"),
35794 link_name = "llvm.aarch64.neon.faddp.v2f32"
35795 )]
35796 fn _vpadd_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
35797 }
35798 unsafe { _vpadd_f32(a, b) }
35799}
35800#[doc = "Add pairwise."]
35801#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_s8)"]
35802#[inline]
35803#[target_feature(enable = "neon")]
35804#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35805#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
35806#[cfg_attr(
35807 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35808 assert_instr(addp)
35809)]
35810#[cfg_attr(
35811 not(target_arch = "arm"),
35812 stable(feature = "neon_intrinsics", since = "1.59.0")
35813)]
35814#[cfg_attr(
35815 target_arch = "arm",
35816 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35817)]
35818pub fn vpadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
35819 unsafe extern "unadjusted" {
35820 #[cfg_attr(
35821 any(target_arch = "aarch64", target_arch = "arm64ec"),
35822 link_name = "llvm.aarch64.neon.addp.v8i8"
35823 )]
35824 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v8i8")]
35825 fn _vpadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
35826 }
35827 unsafe { _vpadd_s8(a, b) }
35828}
35829#[doc = "Add pairwise."]
35830#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_s16)"]
35831#[inline]
35832#[target_feature(enable = "neon")]
35833#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35834#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
35835#[cfg_attr(
35836 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35837 assert_instr(addp)
35838)]
35839#[cfg_attr(
35840 not(target_arch = "arm"),
35841 stable(feature = "neon_intrinsics", since = "1.59.0")
35842)]
35843#[cfg_attr(
35844 target_arch = "arm",
35845 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35846)]
35847pub fn vpadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
35848 unsafe extern "unadjusted" {
35849 #[cfg_attr(
35850 any(target_arch = "aarch64", target_arch = "arm64ec"),
35851 link_name = "llvm.aarch64.neon.addp.v4i16"
35852 )]
35853 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v4i16")]
35854 fn _vpadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
35855 }
35856 unsafe { _vpadd_s16(a, b) }
35857}
35858#[doc = "Add pairwise."]
35859#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_s32)"]
35860#[inline]
35861#[target_feature(enable = "neon")]
35862#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35863#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
35864#[cfg_attr(
35865 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35866 assert_instr(addp)
35867)]
35868#[cfg_attr(
35869 not(target_arch = "arm"),
35870 stable(feature = "neon_intrinsics", since = "1.59.0")
35871)]
35872#[cfg_attr(
35873 target_arch = "arm",
35874 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35875)]
35876pub fn vpadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
35877 unsafe extern "unadjusted" {
35878 #[cfg_attr(
35879 any(target_arch = "aarch64", target_arch = "arm64ec"),
35880 link_name = "llvm.aarch64.neon.addp.v2i32"
35881 )]
35882 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v2i32")]
35883 fn _vpadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
35884 }
35885 unsafe { _vpadd_s32(a, b) }
35886}
35887#[doc = "Add pairwise."]
35888#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u8)"]
35889#[inline]
35890#[cfg(target_endian = "little")]
35891#[target_feature(enable = "neon")]
35892#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35893#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
35894#[cfg_attr(
35895 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35896 assert_instr(addp)
35897)]
35898#[cfg_attr(
35899 not(target_arch = "arm"),
35900 stable(feature = "neon_intrinsics", since = "1.59.0")
35901)]
35902#[cfg_attr(
35903 target_arch = "arm",
35904 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35905)]
35906pub fn vpadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
35907 unsafe { transmute(vpadd_s8(transmute(a), transmute(b))) }
35908}
35909#[doc = "Add pairwise."]
35910#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u8)"]
35911#[inline]
35912#[cfg(target_endian = "big")]
35913#[target_feature(enable = "neon")]
35914#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35915#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
35916#[cfg_attr(
35917 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35918 assert_instr(addp)
35919)]
35920#[cfg_attr(
35921 not(target_arch = "arm"),
35922 stable(feature = "neon_intrinsics", since = "1.59.0")
35923)]
35924#[cfg_attr(
35925 target_arch = "arm",
35926 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35927)]
35928pub fn vpadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
35929 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
35930 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
35931 unsafe {
35932 let ret_val: uint8x8_t = transmute(vpadd_s8(transmute(a), transmute(b)));
35933 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
35934 }
35935}
35936#[doc = "Add pairwise."]
35937#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u16)"]
35938#[inline]
35939#[cfg(target_endian = "little")]
35940#[target_feature(enable = "neon")]
35941#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35942#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
35943#[cfg_attr(
35944 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35945 assert_instr(addp)
35946)]
35947#[cfg_attr(
35948 not(target_arch = "arm"),
35949 stable(feature = "neon_intrinsics", since = "1.59.0")
35950)]
35951#[cfg_attr(
35952 target_arch = "arm",
35953 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35954)]
35955pub fn vpadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
35956 unsafe { transmute(vpadd_s16(transmute(a), transmute(b))) }
35957}
35958#[doc = "Add pairwise."]
35959#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u16)"]
35960#[inline]
35961#[cfg(target_endian = "big")]
35962#[target_feature(enable = "neon")]
35963#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35964#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
35965#[cfg_attr(
35966 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35967 assert_instr(addp)
35968)]
35969#[cfg_attr(
35970 not(target_arch = "arm"),
35971 stable(feature = "neon_intrinsics", since = "1.59.0")
35972)]
35973#[cfg_attr(
35974 target_arch = "arm",
35975 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35976)]
35977pub fn vpadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
35978 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
35979 let b: uint16x4_t = unsafe { simd_shuffle!(b, b, [3, 2, 1, 0]) };
35980 unsafe {
35981 let ret_val: uint16x4_t = transmute(vpadd_s16(transmute(a), transmute(b)));
35982 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
35983 }
35984}
35985#[doc = "Add pairwise."]
35986#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u32)"]
35987#[inline]
35988#[cfg(target_endian = "little")]
35989#[target_feature(enable = "neon")]
35990#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35991#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
35992#[cfg_attr(
35993 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35994 assert_instr(addp)
35995)]
35996#[cfg_attr(
35997 not(target_arch = "arm"),
35998 stable(feature = "neon_intrinsics", since = "1.59.0")
35999)]
36000#[cfg_attr(
36001 target_arch = "arm",
36002 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36003)]
36004pub fn vpadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
36005 unsafe { transmute(vpadd_s32(transmute(a), transmute(b))) }
36006}
36007#[doc = "Add pairwise."]
36008#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u32)"]
36009#[inline]
36010#[cfg(target_endian = "big")]
36011#[target_feature(enable = "neon")]
36012#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36013#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
36014#[cfg_attr(
36015 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36016 assert_instr(addp)
36017)]
36018#[cfg_attr(
36019 not(target_arch = "arm"),
36020 stable(feature = "neon_intrinsics", since = "1.59.0")
36021)]
36022#[cfg_attr(
36023 target_arch = "arm",
36024 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36025)]
36026pub fn vpadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
36027 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
36028 let b: uint32x2_t = unsafe { simd_shuffle!(b, b, [1, 0]) };
36029 unsafe {
36030 let ret_val: uint32x2_t = transmute(vpadd_s32(transmute(a), transmute(b)));
36031 simd_shuffle!(ret_val, ret_val, [1, 0])
36032 }
36033}
36034#[doc = "Signed Add and Accumulate Long Pairwise."]
36035#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_s8)"]
36036#[inline]
36037#[target_feature(enable = "neon")]
36038#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36039#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s8"))]
36040#[cfg_attr(
36041 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36042 assert_instr(saddlp)
36043)]
36044#[cfg_attr(
36045 not(target_arch = "arm"),
36046 stable(feature = "neon_intrinsics", since = "1.59.0")
36047)]
36048#[cfg_attr(
36049 target_arch = "arm",
36050 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36051)]
36052pub fn vpaddl_s8(a: int8x8_t) -> int16x4_t {
36053 unsafe extern "unadjusted" {
36054 #[cfg_attr(
36055 any(target_arch = "aarch64", target_arch = "arm64ec"),
36056 link_name = "llvm.aarch64.neon.saddlp.v4i16.v8i8"
36057 )]
36058 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v4i16.v8i8")]
36059 fn _vpaddl_s8(a: int8x8_t) -> int16x4_t;
36060 }
36061 unsafe { _vpaddl_s8(a) }
36062}
36063#[doc = "Signed Add and Accumulate Long Pairwise."]
36064#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_s8)"]
36065#[inline]
36066#[target_feature(enable = "neon")]
36067#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36068#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s8"))]
36069#[cfg_attr(
36070 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36071 assert_instr(saddlp)
36072)]
36073#[cfg_attr(
36074 not(target_arch = "arm"),
36075 stable(feature = "neon_intrinsics", since = "1.59.0")
36076)]
36077#[cfg_attr(
36078 target_arch = "arm",
36079 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36080)]
36081pub fn vpaddlq_s8(a: int8x16_t) -> int16x8_t {
36082 unsafe extern "unadjusted" {
36083 #[cfg_attr(
36084 any(target_arch = "aarch64", target_arch = "arm64ec"),
36085 link_name = "llvm.aarch64.neon.saddlp.v8i16.v16i8"
36086 )]
36087 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v8i16.v16i8")]
36088 fn _vpaddlq_s8(a: int8x16_t) -> int16x8_t;
36089 }
36090 unsafe { _vpaddlq_s8(a) }
36091}
36092#[doc = "Signed Add and Accumulate Long Pairwise."]
36093#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_s16)"]
36094#[inline]
36095#[target_feature(enable = "neon")]
36096#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36097#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s16"))]
36098#[cfg_attr(
36099 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36100 assert_instr(saddlp)
36101)]
36102#[cfg_attr(
36103 not(target_arch = "arm"),
36104 stable(feature = "neon_intrinsics", since = "1.59.0")
36105)]
36106#[cfg_attr(
36107 target_arch = "arm",
36108 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36109)]
36110pub fn vpaddl_s16(a: int16x4_t) -> int32x2_t {
36111 unsafe extern "unadjusted" {
36112 #[cfg_attr(
36113 any(target_arch = "aarch64", target_arch = "arm64ec"),
36114 link_name = "llvm.aarch64.neon.saddlp.v2i32.v4i16"
36115 )]
36116 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v2i32.v4i16")]
36117 fn _vpaddl_s16(a: int16x4_t) -> int32x2_t;
36118 }
36119 unsafe { _vpaddl_s16(a) }
36120}
36121#[doc = "Signed Add and Accumulate Long Pairwise."]
36122#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_s16)"]
36123#[inline]
36124#[target_feature(enable = "neon")]
36125#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36126#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s16"))]
36127#[cfg_attr(
36128 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36129 assert_instr(saddlp)
36130)]
36131#[cfg_attr(
36132 not(target_arch = "arm"),
36133 stable(feature = "neon_intrinsics", since = "1.59.0")
36134)]
36135#[cfg_attr(
36136 target_arch = "arm",
36137 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36138)]
36139pub fn vpaddlq_s16(a: int16x8_t) -> int32x4_t {
36140 unsafe extern "unadjusted" {
36141 #[cfg_attr(
36142 any(target_arch = "aarch64", target_arch = "arm64ec"),
36143 link_name = "llvm.aarch64.neon.saddlp.v4i32.v8i16"
36144 )]
36145 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v4i32.v8i16")]
36146 fn _vpaddlq_s16(a: int16x8_t) -> int32x4_t;
36147 }
36148 unsafe { _vpaddlq_s16(a) }
36149}
36150#[doc = "Signed Add and Accumulate Long Pairwise."]
36151#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_s32)"]
36152#[inline]
36153#[target_feature(enable = "neon")]
36154#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36155#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s32"))]
36156#[cfg_attr(
36157 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36158 assert_instr(saddlp)
36159)]
36160#[cfg_attr(
36161 not(target_arch = "arm"),
36162 stable(feature = "neon_intrinsics", since = "1.59.0")
36163)]
36164#[cfg_attr(
36165 target_arch = "arm",
36166 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36167)]
36168pub fn vpaddl_s32(a: int32x2_t) -> int64x1_t {
36169 unsafe extern "unadjusted" {
36170 #[cfg_attr(
36171 any(target_arch = "aarch64", target_arch = "arm64ec"),
36172 link_name = "llvm.aarch64.neon.saddlp.v1i64.v2i32"
36173 )]
36174 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v1i64.v2i32")]
36175 fn _vpaddl_s32(a: int32x2_t) -> int64x1_t;
36176 }
36177 unsafe { _vpaddl_s32(a) }
36178}
36179#[doc = "Signed Add and Accumulate Long Pairwise."]
36180#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_s32)"]
36181#[inline]
36182#[target_feature(enable = "neon")]
36183#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36184#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s32"))]
36185#[cfg_attr(
36186 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36187 assert_instr(saddlp)
36188)]
36189#[cfg_attr(
36190 not(target_arch = "arm"),
36191 stable(feature = "neon_intrinsics", since = "1.59.0")
36192)]
36193#[cfg_attr(
36194 target_arch = "arm",
36195 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36196)]
36197pub fn vpaddlq_s32(a: int32x4_t) -> int64x2_t {
36198 unsafe extern "unadjusted" {
36199 #[cfg_attr(
36200 any(target_arch = "aarch64", target_arch = "arm64ec"),
36201 link_name = "llvm.aarch64.neon.saddlp.v2i64.v4i32"
36202 )]
36203 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v2i64.v4i32")]
36204 fn _vpaddlq_s32(a: int32x4_t) -> int64x2_t;
36205 }
36206 unsafe { _vpaddlq_s32(a) }
36207}
36208#[doc = "Unsigned Add and Accumulate Long Pairwise."]
36209#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_u8)"]
36210#[inline]
36211#[target_feature(enable = "neon")]
36212#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36213#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u8"))]
36214#[cfg_attr(
36215 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36216 assert_instr(uaddlp)
36217)]
36218#[cfg_attr(
36219 not(target_arch = "arm"),
36220 stable(feature = "neon_intrinsics", since = "1.59.0")
36221)]
36222#[cfg_attr(
36223 target_arch = "arm",
36224 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36225)]
36226pub fn vpaddl_u8(a: uint8x8_t) -> uint16x4_t {
36227 unsafe extern "unadjusted" {
36228 #[cfg_attr(
36229 any(target_arch = "aarch64", target_arch = "arm64ec"),
36230 link_name = "llvm.aarch64.neon.uaddlp.v4i16.v8i8"
36231 )]
36232 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v4i16.v8i8")]
36233 fn _vpaddl_u8(a: uint8x8_t) -> uint16x4_t;
36234 }
36235 unsafe { _vpaddl_u8(a) }
36236}
36237#[doc = "Unsigned Add and Accumulate Long Pairwise."]
36238#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_u8)"]
36239#[inline]
36240#[target_feature(enable = "neon")]
36241#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36242#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u8"))]
36243#[cfg_attr(
36244 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36245 assert_instr(uaddlp)
36246)]
36247#[cfg_attr(
36248 not(target_arch = "arm"),
36249 stable(feature = "neon_intrinsics", since = "1.59.0")
36250)]
36251#[cfg_attr(
36252 target_arch = "arm",
36253 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36254)]
36255pub fn vpaddlq_u8(a: uint8x16_t) -> uint16x8_t {
36256 unsafe extern "unadjusted" {
36257 #[cfg_attr(
36258 any(target_arch = "aarch64", target_arch = "arm64ec"),
36259 link_name = "llvm.aarch64.neon.uaddlp.v8i16.v16i8"
36260 )]
36261 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v8i16.v16i8")]
36262 fn _vpaddlq_u8(a: uint8x16_t) -> uint16x8_t;
36263 }
36264 unsafe { _vpaddlq_u8(a) }
36265}
36266#[doc = "Unsigned Add and Accumulate Long Pairwise."]
36267#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_u16)"]
36268#[inline]
36269#[target_feature(enable = "neon")]
36270#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36271#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u16"))]
36272#[cfg_attr(
36273 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36274 assert_instr(uaddlp)
36275)]
36276#[cfg_attr(
36277 not(target_arch = "arm"),
36278 stable(feature = "neon_intrinsics", since = "1.59.0")
36279)]
36280#[cfg_attr(
36281 target_arch = "arm",
36282 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36283)]
36284pub fn vpaddl_u16(a: uint16x4_t) -> uint32x2_t {
36285 unsafe extern "unadjusted" {
36286 #[cfg_attr(
36287 any(target_arch = "aarch64", target_arch = "arm64ec"),
36288 link_name = "llvm.aarch64.neon.uaddlp.v2i32.v4i16"
36289 )]
36290 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v2i32.v4i16")]
36291 fn _vpaddl_u16(a: uint16x4_t) -> uint32x2_t;
36292 }
36293 unsafe { _vpaddl_u16(a) }
36294}
36295#[doc = "Unsigned Add and Accumulate Long Pairwise."]
36296#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_u16)"]
36297#[inline]
36298#[target_feature(enable = "neon")]
36299#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36300#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u16"))]
36301#[cfg_attr(
36302 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36303 assert_instr(uaddlp)
36304)]
36305#[cfg_attr(
36306 not(target_arch = "arm"),
36307 stable(feature = "neon_intrinsics", since = "1.59.0")
36308)]
36309#[cfg_attr(
36310 target_arch = "arm",
36311 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36312)]
36313pub fn vpaddlq_u16(a: uint16x8_t) -> uint32x4_t {
36314 unsafe extern "unadjusted" {
36315 #[cfg_attr(
36316 any(target_arch = "aarch64", target_arch = "arm64ec"),
36317 link_name = "llvm.aarch64.neon.uaddlp.v4i32.v8i16"
36318 )]
36319 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v4i32.v8i16")]
36320 fn _vpaddlq_u16(a: uint16x8_t) -> uint32x4_t;
36321 }
36322 unsafe { _vpaddlq_u16(a) }
36323}
36324#[doc = "Unsigned Add and Accumulate Long Pairwise."]
36325#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_u32)"]
36326#[inline]
36327#[target_feature(enable = "neon")]
36328#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36329#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u32"))]
36330#[cfg_attr(
36331 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36332 assert_instr(uaddlp)
36333)]
36334#[cfg_attr(
36335 not(target_arch = "arm"),
36336 stable(feature = "neon_intrinsics", since = "1.59.0")
36337)]
36338#[cfg_attr(
36339 target_arch = "arm",
36340 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36341)]
36342pub fn vpaddl_u32(a: uint32x2_t) -> uint64x1_t {
36343 unsafe extern "unadjusted" {
36344 #[cfg_attr(
36345 any(target_arch = "aarch64", target_arch = "arm64ec"),
36346 link_name = "llvm.aarch64.neon.uaddlp.v1i64.v2i32"
36347 )]
36348 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v1i64.v2i32")]
36349 fn _vpaddl_u32(a: uint32x2_t) -> uint64x1_t;
36350 }
36351 unsafe { _vpaddl_u32(a) }
36352}
36353#[doc = "Unsigned Add and Accumulate Long Pairwise."]
36354#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_u32)"]
36355#[inline]
36356#[target_feature(enable = "neon")]
36357#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36358#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u32"))]
36359#[cfg_attr(
36360 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36361 assert_instr(uaddlp)
36362)]
36363#[cfg_attr(
36364 not(target_arch = "arm"),
36365 stable(feature = "neon_intrinsics", since = "1.59.0")
36366)]
36367#[cfg_attr(
36368 target_arch = "arm",
36369 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36370)]
36371pub fn vpaddlq_u32(a: uint32x4_t) -> uint64x2_t {
36372 unsafe extern "unadjusted" {
36373 #[cfg_attr(
36374 any(target_arch = "aarch64", target_arch = "arm64ec"),
36375 link_name = "llvm.aarch64.neon.uaddlp.v2i64.v4i32"
36376 )]
36377 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v2i64.v4i32")]
36378 fn _vpaddlq_u32(a: uint32x4_t) -> uint64x2_t;
36379 }
36380 unsafe { _vpaddlq_u32(a) }
36381}
36382#[doc = "Folding maximum of adjacent pairs"]
36383#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_f32)"]
36384#[inline]
36385#[target_feature(enable = "neon")]
36386#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36387#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
36388#[cfg_attr(
36389 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36390 assert_instr(fmaxp)
36391)]
36392#[cfg_attr(
36393 not(target_arch = "arm"),
36394 stable(feature = "neon_intrinsics", since = "1.59.0")
36395)]
36396#[cfg_attr(
36397 target_arch = "arm",
36398 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36399)]
36400pub fn vpmax_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
36401 unsafe extern "unadjusted" {
36402 #[cfg_attr(
36403 any(target_arch = "aarch64", target_arch = "arm64ec"),
36404 link_name = "llvm.aarch64.neon.fmaxp.v2f32"
36405 )]
36406 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxs.v2f32")]
36407 fn _vpmax_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
36408 }
36409 unsafe { _vpmax_f32(a, b) }
36410}
36411#[doc = "Folding maximum of adjacent pairs"]
36412#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_s8)"]
36413#[inline]
36414#[target_feature(enable = "neon")]
36415#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36416#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
36417#[cfg_attr(
36418 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36419 assert_instr(smaxp)
36420)]
36421#[cfg_attr(
36422 not(target_arch = "arm"),
36423 stable(feature = "neon_intrinsics", since = "1.59.0")
36424)]
36425#[cfg_attr(
36426 target_arch = "arm",
36427 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36428)]
36429pub fn vpmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
36430 unsafe extern "unadjusted" {
36431 #[cfg_attr(
36432 any(target_arch = "aarch64", target_arch = "arm64ec"),
36433 link_name = "llvm.aarch64.neon.smaxp.v8i8"
36434 )]
36435 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxs.v8i8")]
36436 fn _vpmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
36437 }
36438 unsafe { _vpmax_s8(a, b) }
36439}
36440#[doc = "Folding maximum of adjacent pairs"]
36441#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_s16)"]
36442#[inline]
36443#[target_feature(enable = "neon")]
36444#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36445#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
36446#[cfg_attr(
36447 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36448 assert_instr(smaxp)
36449)]
36450#[cfg_attr(
36451 not(target_arch = "arm"),
36452 stable(feature = "neon_intrinsics", since = "1.59.0")
36453)]
36454#[cfg_attr(
36455 target_arch = "arm",
36456 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36457)]
36458pub fn vpmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
36459 unsafe extern "unadjusted" {
36460 #[cfg_attr(
36461 any(target_arch = "aarch64", target_arch = "arm64ec"),
36462 link_name = "llvm.aarch64.neon.smaxp.v4i16"
36463 )]
36464 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxs.v4i16")]
36465 fn _vpmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
36466 }
36467 unsafe { _vpmax_s16(a, b) }
36468}
36469#[doc = "Folding maximum of adjacent pairs"]
36470#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_s32)"]
36471#[inline]
36472#[target_feature(enable = "neon")]
36473#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36474#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
36475#[cfg_attr(
36476 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36477 assert_instr(smaxp)
36478)]
36479#[cfg_attr(
36480 not(target_arch = "arm"),
36481 stable(feature = "neon_intrinsics", since = "1.59.0")
36482)]
36483#[cfg_attr(
36484 target_arch = "arm",
36485 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36486)]
36487pub fn vpmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
36488 unsafe extern "unadjusted" {
36489 #[cfg_attr(
36490 any(target_arch = "aarch64", target_arch = "arm64ec"),
36491 link_name = "llvm.aarch64.neon.smaxp.v2i32"
36492 )]
36493 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxs.v2i32")]
36494 fn _vpmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
36495 }
36496 unsafe { _vpmax_s32(a, b) }
36497}
36498#[doc = "Folding maximum of adjacent pairs"]
36499#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_u8)"]
36500#[inline]
36501#[target_feature(enable = "neon")]
36502#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36503#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
36504#[cfg_attr(
36505 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36506 assert_instr(umaxp)
36507)]
36508#[cfg_attr(
36509 not(target_arch = "arm"),
36510 stable(feature = "neon_intrinsics", since = "1.59.0")
36511)]
36512#[cfg_attr(
36513 target_arch = "arm",
36514 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36515)]
36516pub fn vpmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
36517 unsafe extern "unadjusted" {
36518 #[cfg_attr(
36519 any(target_arch = "aarch64", target_arch = "arm64ec"),
36520 link_name = "llvm.aarch64.neon.umaxp.v8i8"
36521 )]
36522 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxu.v8i8")]
36523 fn _vpmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
36524 }
36525 unsafe { _vpmax_u8(a, b) }
36526}
36527#[doc = "Folding maximum of adjacent pairs"]
36528#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_u16)"]
36529#[inline]
36530#[target_feature(enable = "neon")]
36531#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36532#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
36533#[cfg_attr(
36534 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36535 assert_instr(umaxp)
36536)]
36537#[cfg_attr(
36538 not(target_arch = "arm"),
36539 stable(feature = "neon_intrinsics", since = "1.59.0")
36540)]
36541#[cfg_attr(
36542 target_arch = "arm",
36543 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36544)]
36545pub fn vpmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
36546 unsafe extern "unadjusted" {
36547 #[cfg_attr(
36548 any(target_arch = "aarch64", target_arch = "arm64ec"),
36549 link_name = "llvm.aarch64.neon.umaxp.v4i16"
36550 )]
36551 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxu.v4i16")]
36552 fn _vpmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
36553 }
36554 unsafe { _vpmax_u16(a, b) }
36555}
36556#[doc = "Folding maximum of adjacent pairs"]
36557#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_u32)"]
36558#[inline]
36559#[target_feature(enable = "neon")]
36560#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36561#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
36562#[cfg_attr(
36563 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36564 assert_instr(umaxp)
36565)]
36566#[cfg_attr(
36567 not(target_arch = "arm"),
36568 stable(feature = "neon_intrinsics", since = "1.59.0")
36569)]
36570#[cfg_attr(
36571 target_arch = "arm",
36572 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36573)]
36574pub fn vpmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
36575 unsafe extern "unadjusted" {
36576 #[cfg_attr(
36577 any(target_arch = "aarch64", target_arch = "arm64ec"),
36578 link_name = "llvm.aarch64.neon.umaxp.v2i32"
36579 )]
36580 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxu.v2i32")]
36581 fn _vpmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
36582 }
36583 unsafe { _vpmax_u32(a, b) }
36584}
36585#[doc = "Folding minimum of adjacent pairs"]
36586#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_f32)"]
36587#[inline]
36588#[target_feature(enable = "neon")]
36589#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36590#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
36591#[cfg_attr(
36592 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36593 assert_instr(fminp)
36594)]
36595#[cfg_attr(
36596 not(target_arch = "arm"),
36597 stable(feature = "neon_intrinsics", since = "1.59.0")
36598)]
36599#[cfg_attr(
36600 target_arch = "arm",
36601 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36602)]
36603pub fn vpmin_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
36604 unsafe extern "unadjusted" {
36605 #[cfg_attr(
36606 any(target_arch = "aarch64", target_arch = "arm64ec"),
36607 link_name = "llvm.aarch64.neon.fminp.v2f32"
36608 )]
36609 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmins.v2f32")]
36610 fn _vpmin_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
36611 }
36612 unsafe { _vpmin_f32(a, b) }
36613}
36614#[doc = "Folding minimum of adjacent pairs"]
36615#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_s8)"]
36616#[inline]
36617#[target_feature(enable = "neon")]
36618#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36619#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
36620#[cfg_attr(
36621 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36622 assert_instr(sminp)
36623)]
36624#[cfg_attr(
36625 not(target_arch = "arm"),
36626 stable(feature = "neon_intrinsics", since = "1.59.0")
36627)]
36628#[cfg_attr(
36629 target_arch = "arm",
36630 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36631)]
36632pub fn vpmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
36633 unsafe extern "unadjusted" {
36634 #[cfg_attr(
36635 any(target_arch = "aarch64", target_arch = "arm64ec"),
36636 link_name = "llvm.aarch64.neon.sminp.v8i8"
36637 )]
36638 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmins.v8i8")]
36639 fn _vpmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
36640 }
36641 unsafe { _vpmin_s8(a, b) }
36642}
36643#[doc = "Folding minimum of adjacent pairs"]
36644#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_s16)"]
36645#[inline]
36646#[target_feature(enable = "neon")]
36647#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36648#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
36649#[cfg_attr(
36650 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36651 assert_instr(sminp)
36652)]
36653#[cfg_attr(
36654 not(target_arch = "arm"),
36655 stable(feature = "neon_intrinsics", since = "1.59.0")
36656)]
36657#[cfg_attr(
36658 target_arch = "arm",
36659 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36660)]
36661pub fn vpmin_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
36662 unsafe extern "unadjusted" {
36663 #[cfg_attr(
36664 any(target_arch = "aarch64", target_arch = "arm64ec"),
36665 link_name = "llvm.aarch64.neon.sminp.v4i16"
36666 )]
36667 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmins.v4i16")]
36668 fn _vpmin_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
36669 }
36670 unsafe { _vpmin_s16(a, b) }
36671}
36672#[doc = "Folding minimum of adjacent pairs"]
36673#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_s32)"]
36674#[inline]
36675#[target_feature(enable = "neon")]
36676#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36677#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
36678#[cfg_attr(
36679 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36680 assert_instr(sminp)
36681)]
36682#[cfg_attr(
36683 not(target_arch = "arm"),
36684 stable(feature = "neon_intrinsics", since = "1.59.0")
36685)]
36686#[cfg_attr(
36687 target_arch = "arm",
36688 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36689)]
36690pub fn vpmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
36691 unsafe extern "unadjusted" {
36692 #[cfg_attr(
36693 any(target_arch = "aarch64", target_arch = "arm64ec"),
36694 link_name = "llvm.aarch64.neon.sminp.v2i32"
36695 )]
36696 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmins.v2i32")]
36697 fn _vpmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
36698 }
36699 unsafe { _vpmin_s32(a, b) }
36700}
36701#[doc = "Folding minimum of adjacent pairs"]
36702#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_u8)"]
36703#[inline]
36704#[target_feature(enable = "neon")]
36705#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36706#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
36707#[cfg_attr(
36708 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36709 assert_instr(uminp)
36710)]
36711#[cfg_attr(
36712 not(target_arch = "arm"),
36713 stable(feature = "neon_intrinsics", since = "1.59.0")
36714)]
36715#[cfg_attr(
36716 target_arch = "arm",
36717 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36718)]
36719pub fn vpmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
36720 unsafe extern "unadjusted" {
36721 #[cfg_attr(
36722 any(target_arch = "aarch64", target_arch = "arm64ec"),
36723 link_name = "llvm.aarch64.neon.uminp.v8i8"
36724 )]
36725 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpminu.v8i8")]
36726 fn _vpmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
36727 }
36728 unsafe { _vpmin_u8(a, b) }
36729}
36730#[doc = "Folding minimum of adjacent pairs"]
36731#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_u16)"]
36732#[inline]
36733#[target_feature(enable = "neon")]
36734#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36735#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
36736#[cfg_attr(
36737 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36738 assert_instr(uminp)
36739)]
36740#[cfg_attr(
36741 not(target_arch = "arm"),
36742 stable(feature = "neon_intrinsics", since = "1.59.0")
36743)]
36744#[cfg_attr(
36745 target_arch = "arm",
36746 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36747)]
36748pub fn vpmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
36749 unsafe extern "unadjusted" {
36750 #[cfg_attr(
36751 any(target_arch = "aarch64", target_arch = "arm64ec"),
36752 link_name = "llvm.aarch64.neon.uminp.v4i16"
36753 )]
36754 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpminu.v4i16")]
36755 fn _vpmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
36756 }
36757 unsafe { _vpmin_u16(a, b) }
36758}
36759#[doc = "Folding minimum of adjacent pairs"]
36760#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_u32)"]
36761#[inline]
36762#[target_feature(enable = "neon")]
36763#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36764#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
36765#[cfg_attr(
36766 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36767 assert_instr(uminp)
36768)]
36769#[cfg_attr(
36770 not(target_arch = "arm"),
36771 stable(feature = "neon_intrinsics", since = "1.59.0")
36772)]
36773#[cfg_attr(
36774 target_arch = "arm",
36775 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36776)]
36777pub fn vpmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
36778 unsafe extern "unadjusted" {
36779 #[cfg_attr(
36780 any(target_arch = "aarch64", target_arch = "arm64ec"),
36781 link_name = "llvm.aarch64.neon.uminp.v2i32"
36782 )]
36783 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpminu.v2i32")]
36784 fn _vpmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
36785 }
36786 unsafe { _vpmin_u32(a, b) }
36787}
36788#[doc = "Signed saturating Absolute value"]
36789#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabs_s8)"]
36790#[inline]
36791#[target_feature(enable = "neon")]
36792#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36793#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s8"))]
36794#[cfg_attr(
36795 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36796 assert_instr(sqabs)
36797)]
36798#[cfg_attr(
36799 not(target_arch = "arm"),
36800 stable(feature = "neon_intrinsics", since = "1.59.0")
36801)]
36802#[cfg_attr(
36803 target_arch = "arm",
36804 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36805)]
36806pub fn vqabs_s8(a: int8x8_t) -> int8x8_t {
36807 unsafe extern "unadjusted" {
36808 #[cfg_attr(
36809 any(target_arch = "aarch64", target_arch = "arm64ec"),
36810 link_name = "llvm.aarch64.neon.sqabs.v8i8"
36811 )]
36812 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v8i8")]
36813 fn _vqabs_s8(a: int8x8_t) -> int8x8_t;
36814 }
36815 unsafe { _vqabs_s8(a) }
36816}
36817#[doc = "Signed saturating Absolute value"]
36818#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabsq_s8)"]
36819#[inline]
36820#[target_feature(enable = "neon")]
36821#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36822#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s8"))]
36823#[cfg_attr(
36824 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36825 assert_instr(sqabs)
36826)]
36827#[cfg_attr(
36828 not(target_arch = "arm"),
36829 stable(feature = "neon_intrinsics", since = "1.59.0")
36830)]
36831#[cfg_attr(
36832 target_arch = "arm",
36833 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36834)]
36835pub fn vqabsq_s8(a: int8x16_t) -> int8x16_t {
36836 unsafe extern "unadjusted" {
36837 #[cfg_attr(
36838 any(target_arch = "aarch64", target_arch = "arm64ec"),
36839 link_name = "llvm.aarch64.neon.sqabs.v16i8"
36840 )]
36841 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v16i8")]
36842 fn _vqabsq_s8(a: int8x16_t) -> int8x16_t;
36843 }
36844 unsafe { _vqabsq_s8(a) }
36845}
36846#[doc = "Signed saturating Absolute value"]
36847#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabs_s16)"]
36848#[inline]
36849#[target_feature(enable = "neon")]
36850#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36851#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s16"))]
36852#[cfg_attr(
36853 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36854 assert_instr(sqabs)
36855)]
36856#[cfg_attr(
36857 not(target_arch = "arm"),
36858 stable(feature = "neon_intrinsics", since = "1.59.0")
36859)]
36860#[cfg_attr(
36861 target_arch = "arm",
36862 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36863)]
36864pub fn vqabs_s16(a: int16x4_t) -> int16x4_t {
36865 unsafe extern "unadjusted" {
36866 #[cfg_attr(
36867 any(target_arch = "aarch64", target_arch = "arm64ec"),
36868 link_name = "llvm.aarch64.neon.sqabs.v4i16"
36869 )]
36870 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v4i16")]
36871 fn _vqabs_s16(a: int16x4_t) -> int16x4_t;
36872 }
36873 unsafe { _vqabs_s16(a) }
36874}
36875#[doc = "Signed saturating Absolute value"]
36876#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabsq_s16)"]
36877#[inline]
36878#[target_feature(enable = "neon")]
36879#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36880#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s16"))]
36881#[cfg_attr(
36882 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36883 assert_instr(sqabs)
36884)]
36885#[cfg_attr(
36886 not(target_arch = "arm"),
36887 stable(feature = "neon_intrinsics", since = "1.59.0")
36888)]
36889#[cfg_attr(
36890 target_arch = "arm",
36891 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36892)]
36893pub fn vqabsq_s16(a: int16x8_t) -> int16x8_t {
36894 unsafe extern "unadjusted" {
36895 #[cfg_attr(
36896 any(target_arch = "aarch64", target_arch = "arm64ec"),
36897 link_name = "llvm.aarch64.neon.sqabs.v8i16"
36898 )]
36899 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v8i16")]
36900 fn _vqabsq_s16(a: int16x8_t) -> int16x8_t;
36901 }
36902 unsafe { _vqabsq_s16(a) }
36903}
36904#[doc = "Signed saturating Absolute value"]
36905#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabs_s32)"]
36906#[inline]
36907#[target_feature(enable = "neon")]
36908#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36909#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s32"))]
36910#[cfg_attr(
36911 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36912 assert_instr(sqabs)
36913)]
36914#[cfg_attr(
36915 not(target_arch = "arm"),
36916 stable(feature = "neon_intrinsics", since = "1.59.0")
36917)]
36918#[cfg_attr(
36919 target_arch = "arm",
36920 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36921)]
36922pub fn vqabs_s32(a: int32x2_t) -> int32x2_t {
36923 unsafe extern "unadjusted" {
36924 #[cfg_attr(
36925 any(target_arch = "aarch64", target_arch = "arm64ec"),
36926 link_name = "llvm.aarch64.neon.sqabs.v2i32"
36927 )]
36928 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v2i32")]
36929 fn _vqabs_s32(a: int32x2_t) -> int32x2_t;
36930 }
36931 unsafe { _vqabs_s32(a) }
36932}
36933#[doc = "Signed saturating Absolute value"]
36934#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabsq_s32)"]
36935#[inline]
36936#[target_feature(enable = "neon")]
36937#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36938#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s32"))]
36939#[cfg_attr(
36940 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36941 assert_instr(sqabs)
36942)]
36943#[cfg_attr(
36944 not(target_arch = "arm"),
36945 stable(feature = "neon_intrinsics", since = "1.59.0")
36946)]
36947#[cfg_attr(
36948 target_arch = "arm",
36949 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36950)]
36951pub fn vqabsq_s32(a: int32x4_t) -> int32x4_t {
36952 unsafe extern "unadjusted" {
36953 #[cfg_attr(
36954 any(target_arch = "aarch64", target_arch = "arm64ec"),
36955 link_name = "llvm.aarch64.neon.sqabs.v4i32"
36956 )]
36957 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v4i32")]
36958 fn _vqabsq_s32(a: int32x4_t) -> int32x4_t;
36959 }
36960 unsafe { _vqabsq_s32(a) }
36961}
36962#[doc = "Saturating add"]
36963#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_s8)"]
36964#[inline]
36965#[target_feature(enable = "neon")]
36966#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36967#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s8"))]
36968#[cfg_attr(
36969 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36970 assert_instr(sqadd)
36971)]
36972#[cfg_attr(
36973 not(target_arch = "arm"),
36974 stable(feature = "neon_intrinsics", since = "1.59.0")
36975)]
36976#[cfg_attr(
36977 target_arch = "arm",
36978 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36979)]
36980pub fn vqadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
36981 unsafe { simd_saturating_add(a, b) }
36982}
36983#[doc = "Saturating add"]
36984#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s8)"]
36985#[inline]
36986#[target_feature(enable = "neon")]
36987#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36988#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s8"))]
36989#[cfg_attr(
36990 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36991 assert_instr(sqadd)
36992)]
36993#[cfg_attr(
36994 not(target_arch = "arm"),
36995 stable(feature = "neon_intrinsics", since = "1.59.0")
36996)]
36997#[cfg_attr(
36998 target_arch = "arm",
36999 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37000)]
37001pub fn vqaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
37002 unsafe { simd_saturating_add(a, b) }
37003}
37004#[doc = "Saturating add"]
37005#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_s16)"]
37006#[inline]
37007#[target_feature(enable = "neon")]
37008#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37009#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s16"))]
37010#[cfg_attr(
37011 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37012 assert_instr(sqadd)
37013)]
37014#[cfg_attr(
37015 not(target_arch = "arm"),
37016 stable(feature = "neon_intrinsics", since = "1.59.0")
37017)]
37018#[cfg_attr(
37019 target_arch = "arm",
37020 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37021)]
37022pub fn vqadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
37023 unsafe { simd_saturating_add(a, b) }
37024}
37025#[doc = "Saturating add"]
37026#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s16)"]
37027#[inline]
37028#[target_feature(enable = "neon")]
37029#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37030#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s16"))]
37031#[cfg_attr(
37032 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37033 assert_instr(sqadd)
37034)]
37035#[cfg_attr(
37036 not(target_arch = "arm"),
37037 stable(feature = "neon_intrinsics", since = "1.59.0")
37038)]
37039#[cfg_attr(
37040 target_arch = "arm",
37041 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37042)]
37043pub fn vqaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
37044 unsafe { simd_saturating_add(a, b) }
37045}
37046#[doc = "Saturating add"]
37047#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_s32)"]
37048#[inline]
37049#[target_feature(enable = "neon")]
37050#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37051#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s32"))]
37052#[cfg_attr(
37053 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37054 assert_instr(sqadd)
37055)]
37056#[cfg_attr(
37057 not(target_arch = "arm"),
37058 stable(feature = "neon_intrinsics", since = "1.59.0")
37059)]
37060#[cfg_attr(
37061 target_arch = "arm",
37062 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37063)]
37064pub fn vqadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
37065 unsafe { simd_saturating_add(a, b) }
37066}
37067#[doc = "Saturating add"]
37068#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s32)"]
37069#[inline]
37070#[target_feature(enable = "neon")]
37071#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37072#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s32"))]
37073#[cfg_attr(
37074 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37075 assert_instr(sqadd)
37076)]
37077#[cfg_attr(
37078 not(target_arch = "arm"),
37079 stable(feature = "neon_intrinsics", since = "1.59.0")
37080)]
37081#[cfg_attr(
37082 target_arch = "arm",
37083 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37084)]
37085pub fn vqaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
37086 unsafe { simd_saturating_add(a, b) }
37087}
37088#[doc = "Saturating add"]
37089#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_s64)"]
37090#[inline]
37091#[target_feature(enable = "neon")]
37092#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37093#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s64"))]
37094#[cfg_attr(
37095 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37096 assert_instr(sqadd)
37097)]
37098#[cfg_attr(
37099 not(target_arch = "arm"),
37100 stable(feature = "neon_intrinsics", since = "1.59.0")
37101)]
37102#[cfg_attr(
37103 target_arch = "arm",
37104 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37105)]
37106pub fn vqadd_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
37107 unsafe { simd_saturating_add(a, b) }
37108}
37109#[doc = "Saturating add"]
37110#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s64)"]
37111#[inline]
37112#[target_feature(enable = "neon")]
37113#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37114#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s64"))]
37115#[cfg_attr(
37116 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37117 assert_instr(sqadd)
37118)]
37119#[cfg_attr(
37120 not(target_arch = "arm"),
37121 stable(feature = "neon_intrinsics", since = "1.59.0")
37122)]
37123#[cfg_attr(
37124 target_arch = "arm",
37125 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37126)]
37127pub fn vqaddq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
37128 unsafe { simd_saturating_add(a, b) }
37129}
37130#[doc = "Saturating add"]
37131#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u8)"]
37132#[inline]
37133#[target_feature(enable = "neon")]
37134#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37135#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u8"))]
37136#[cfg_attr(
37137 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37138 assert_instr(uqadd)
37139)]
37140#[cfg_attr(
37141 not(target_arch = "arm"),
37142 stable(feature = "neon_intrinsics", since = "1.59.0")
37143)]
37144#[cfg_attr(
37145 target_arch = "arm",
37146 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37147)]
37148pub fn vqadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
37149 unsafe { simd_saturating_add(a, b) }
37150}
37151#[doc = "Saturating add"]
37152#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u8)"]
37153#[inline]
37154#[target_feature(enable = "neon")]
37155#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37156#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u8"))]
37157#[cfg_attr(
37158 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37159 assert_instr(uqadd)
37160)]
37161#[cfg_attr(
37162 not(target_arch = "arm"),
37163 stable(feature = "neon_intrinsics", since = "1.59.0")
37164)]
37165#[cfg_attr(
37166 target_arch = "arm",
37167 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37168)]
37169pub fn vqaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
37170 unsafe { simd_saturating_add(a, b) }
37171}
37172#[doc = "Saturating add"]
37173#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u16)"]
37174#[inline]
37175#[target_feature(enable = "neon")]
37176#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37177#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u16"))]
37178#[cfg_attr(
37179 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37180 assert_instr(uqadd)
37181)]
37182#[cfg_attr(
37183 not(target_arch = "arm"),
37184 stable(feature = "neon_intrinsics", since = "1.59.0")
37185)]
37186#[cfg_attr(
37187 target_arch = "arm",
37188 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37189)]
37190pub fn vqadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
37191 unsafe { simd_saturating_add(a, b) }
37192}
37193#[doc = "Saturating add"]
37194#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u16)"]
37195#[inline]
37196#[target_feature(enable = "neon")]
37197#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37198#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u16"))]
37199#[cfg_attr(
37200 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37201 assert_instr(uqadd)
37202)]
37203#[cfg_attr(
37204 not(target_arch = "arm"),
37205 stable(feature = "neon_intrinsics", since = "1.59.0")
37206)]
37207#[cfg_attr(
37208 target_arch = "arm",
37209 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37210)]
37211pub fn vqaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
37212 unsafe { simd_saturating_add(a, b) }
37213}
37214#[doc = "Saturating add"]
37215#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u32)"]
37216#[inline]
37217#[target_feature(enable = "neon")]
37218#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37219#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u32"))]
37220#[cfg_attr(
37221 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37222 assert_instr(uqadd)
37223)]
37224#[cfg_attr(
37225 not(target_arch = "arm"),
37226 stable(feature = "neon_intrinsics", since = "1.59.0")
37227)]
37228#[cfg_attr(
37229 target_arch = "arm",
37230 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37231)]
37232pub fn vqadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
37233 unsafe { simd_saturating_add(a, b) }
37234}
37235#[doc = "Saturating add"]
37236#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u32)"]
37237#[inline]
37238#[target_feature(enable = "neon")]
37239#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37240#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u32"))]
37241#[cfg_attr(
37242 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37243 assert_instr(uqadd)
37244)]
37245#[cfg_attr(
37246 not(target_arch = "arm"),
37247 stable(feature = "neon_intrinsics", since = "1.59.0")
37248)]
37249#[cfg_attr(
37250 target_arch = "arm",
37251 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37252)]
37253pub fn vqaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
37254 unsafe { simd_saturating_add(a, b) }
37255}
37256#[doc = "Saturating add"]
37257#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u64)"]
37258#[inline]
37259#[target_feature(enable = "neon")]
37260#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37261#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u64"))]
37262#[cfg_attr(
37263 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37264 assert_instr(uqadd)
37265)]
37266#[cfg_attr(
37267 not(target_arch = "arm"),
37268 stable(feature = "neon_intrinsics", since = "1.59.0")
37269)]
37270#[cfg_attr(
37271 target_arch = "arm",
37272 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37273)]
37274pub fn vqadd_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
37275 unsafe { simd_saturating_add(a, b) }
37276}
37277#[doc = "Saturating add"]
37278#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u64)"]
37279#[inline]
37280#[target_feature(enable = "neon")]
37281#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37282#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u64"))]
37283#[cfg_attr(
37284 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37285 assert_instr(uqadd)
37286)]
37287#[cfg_attr(
37288 not(target_arch = "arm"),
37289 stable(feature = "neon_intrinsics", since = "1.59.0")
37290)]
37291#[cfg_attr(
37292 target_arch = "arm",
37293 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37294)]
37295pub fn vqaddq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
37296 unsafe { simd_saturating_add(a, b) }
37297}
37298#[doc = "Vector widening saturating doubling multiply accumulate with scalar"]
37299#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_lane_s16)"]
37300#[inline]
37301#[target_feature(enable = "neon")]
37302#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37303#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal, N = 2))]
37304#[cfg_attr(
37305 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37306 assert_instr(sqdmlal, N = 2)
37307)]
37308#[rustc_legacy_const_generics(3)]
37309#[cfg_attr(
37310 not(target_arch = "arm"),
37311 stable(feature = "neon_intrinsics", since = "1.59.0")
37312)]
37313#[cfg_attr(
37314 target_arch = "arm",
37315 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37316)]
37317pub fn vqdmlal_lane_s16<const N: i32>(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
37318 static_assert_uimm_bits!(N, 2);
37319 vqaddq_s32(a, vqdmull_lane_s16::<N>(b, c))
37320}
37321#[doc = "Vector widening saturating doubling multiply accumulate with scalar"]
37322#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_lane_s32)"]
37323#[inline]
37324#[target_feature(enable = "neon")]
37325#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37326#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal, N = 1))]
37327#[cfg_attr(
37328 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37329 assert_instr(sqdmlal, N = 1)
37330)]
37331#[rustc_legacy_const_generics(3)]
37332#[cfg_attr(
37333 not(target_arch = "arm"),
37334 stable(feature = "neon_intrinsics", since = "1.59.0")
37335)]
37336#[cfg_attr(
37337 target_arch = "arm",
37338 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37339)]
37340pub fn vqdmlal_lane_s32<const N: i32>(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
37341 static_assert_uimm_bits!(N, 1);
37342 vqaddq_s64(a, vqdmull_lane_s32::<N>(b, c))
37343}
37344#[doc = "Vector widening saturating doubling multiply accumulate with scalar"]
37345#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_n_s16)"]
37346#[inline]
37347#[target_feature(enable = "neon")]
37348#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37349#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal))]
37350#[cfg_attr(
37351 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37352 assert_instr(sqdmlal)
37353)]
37354#[cfg_attr(
37355 not(target_arch = "arm"),
37356 stable(feature = "neon_intrinsics", since = "1.59.0")
37357)]
37358#[cfg_attr(
37359 target_arch = "arm",
37360 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37361)]
37362pub fn vqdmlal_n_s16(a: int32x4_t, b: int16x4_t, c: i16) -> int32x4_t {
37363 vqaddq_s32(a, vqdmull_n_s16(b, c))
37364}
37365#[doc = "Vector widening saturating doubling multiply accumulate with scalar"]
37366#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_n_s32)"]
37367#[inline]
37368#[target_feature(enable = "neon")]
37369#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37370#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal))]
37371#[cfg_attr(
37372 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37373 assert_instr(sqdmlal)
37374)]
37375#[cfg_attr(
37376 not(target_arch = "arm"),
37377 stable(feature = "neon_intrinsics", since = "1.59.0")
37378)]
37379#[cfg_attr(
37380 target_arch = "arm",
37381 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37382)]
37383pub fn vqdmlal_n_s32(a: int64x2_t, b: int32x2_t, c: i32) -> int64x2_t {
37384 vqaddq_s64(a, vqdmull_n_s32(b, c))
37385}
37386#[doc = "Signed saturating doubling multiply-add long"]
37387#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_s16)"]
37388#[inline]
37389#[target_feature(enable = "neon")]
37390#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37391#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal))]
37392#[cfg_attr(
37393 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37394 assert_instr(sqdmlal)
37395)]
37396#[cfg_attr(
37397 not(target_arch = "arm"),
37398 stable(feature = "neon_intrinsics", since = "1.59.0")
37399)]
37400#[cfg_attr(
37401 target_arch = "arm",
37402 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37403)]
37404pub fn vqdmlal_s16(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
37405 vqaddq_s32(a, vqdmull_s16(b, c))
37406}
37407#[doc = "Signed saturating doubling multiply-add long"]
37408#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_s32)"]
37409#[inline]
37410#[target_feature(enable = "neon")]
37411#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37412#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal))]
37413#[cfg_attr(
37414 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37415 assert_instr(sqdmlal)
37416)]
37417#[cfg_attr(
37418 not(target_arch = "arm"),
37419 stable(feature = "neon_intrinsics", since = "1.59.0")
37420)]
37421#[cfg_attr(
37422 target_arch = "arm",
37423 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37424)]
37425pub fn vqdmlal_s32(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
37426 vqaddq_s64(a, vqdmull_s32(b, c))
37427}
37428#[doc = "Vector widening saturating doubling multiply subtract with scalar"]
37429#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_lane_s16)"]
37430#[inline]
37431#[target_feature(enable = "neon")]
37432#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37433#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl, N = 2))]
37434#[cfg_attr(
37435 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37436 assert_instr(sqdmlsl, N = 2)
37437)]
37438#[rustc_legacy_const_generics(3)]
37439#[cfg_attr(
37440 not(target_arch = "arm"),
37441 stable(feature = "neon_intrinsics", since = "1.59.0")
37442)]
37443#[cfg_attr(
37444 target_arch = "arm",
37445 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37446)]
37447pub fn vqdmlsl_lane_s16<const N: i32>(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
37448 static_assert_uimm_bits!(N, 2);
37449 vqsubq_s32(a, vqdmull_lane_s16::<N>(b, c))
37450}
37451#[doc = "Vector widening saturating doubling multiply subtract with scalar"]
37452#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_lane_s32)"]
37453#[inline]
37454#[target_feature(enable = "neon")]
37455#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37456#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl, N = 1))]
37457#[cfg_attr(
37458 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37459 assert_instr(sqdmlsl, N = 1)
37460)]
37461#[rustc_legacy_const_generics(3)]
37462#[cfg_attr(
37463 not(target_arch = "arm"),
37464 stable(feature = "neon_intrinsics", since = "1.59.0")
37465)]
37466#[cfg_attr(
37467 target_arch = "arm",
37468 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37469)]
37470pub fn vqdmlsl_lane_s32<const N: i32>(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
37471 static_assert_uimm_bits!(N, 1);
37472 vqsubq_s64(a, vqdmull_lane_s32::<N>(b, c))
37473}
37474#[doc = "Vector widening saturating doubling multiply subtract with scalar"]
37475#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_n_s16)"]
37476#[inline]
37477#[target_feature(enable = "neon")]
37478#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37479#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl))]
37480#[cfg_attr(
37481 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37482 assert_instr(sqdmlsl)
37483)]
37484#[cfg_attr(
37485 not(target_arch = "arm"),
37486 stable(feature = "neon_intrinsics", since = "1.59.0")
37487)]
37488#[cfg_attr(
37489 target_arch = "arm",
37490 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37491)]
37492pub fn vqdmlsl_n_s16(a: int32x4_t, b: int16x4_t, c: i16) -> int32x4_t {
37493 vqsubq_s32(a, vqdmull_n_s16(b, c))
37494}
37495#[doc = "Vector widening saturating doubling multiply subtract with scalar"]
37496#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_n_s32)"]
37497#[inline]
37498#[target_feature(enable = "neon")]
37499#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37500#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl))]
37501#[cfg_attr(
37502 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37503 assert_instr(sqdmlsl)
37504)]
37505#[cfg_attr(
37506 not(target_arch = "arm"),
37507 stable(feature = "neon_intrinsics", since = "1.59.0")
37508)]
37509#[cfg_attr(
37510 target_arch = "arm",
37511 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37512)]
37513pub fn vqdmlsl_n_s32(a: int64x2_t, b: int32x2_t, c: i32) -> int64x2_t {
37514 vqsubq_s64(a, vqdmull_n_s32(b, c))
37515}
37516#[doc = "Signed saturating doubling multiply-subtract long"]
37517#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_s16)"]
37518#[inline]
37519#[target_feature(enable = "neon")]
37520#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37521#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl))]
37522#[cfg_attr(
37523 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37524 assert_instr(sqdmlsl)
37525)]
37526#[cfg_attr(
37527 not(target_arch = "arm"),
37528 stable(feature = "neon_intrinsics", since = "1.59.0")
37529)]
37530#[cfg_attr(
37531 target_arch = "arm",
37532 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37533)]
37534pub fn vqdmlsl_s16(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
37535 vqsubq_s32(a, vqdmull_s16(b, c))
37536}
37537#[doc = "Signed saturating doubling multiply-subtract long"]
37538#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_s32)"]
37539#[inline]
37540#[target_feature(enable = "neon")]
37541#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37542#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl))]
37543#[cfg_attr(
37544 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37545 assert_instr(sqdmlsl)
37546)]
37547#[cfg_attr(
37548 not(target_arch = "arm"),
37549 stable(feature = "neon_intrinsics", since = "1.59.0")
37550)]
37551#[cfg_attr(
37552 target_arch = "arm",
37553 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37554)]
37555pub fn vqdmlsl_s32(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
37556 vqsubq_s64(a, vqdmull_s32(b, c))
37557}
37558#[doc = "Vector saturating doubling multiply high by scalar"]
37559#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_laneq_s16)"]
37560#[inline]
37561#[target_feature(enable = "neon")]
37562#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37563#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh, LANE = 0))]
37564#[cfg_attr(
37565 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37566 assert_instr(sqdmulh, LANE = 0)
37567)]
37568#[rustc_legacy_const_generics(2)]
37569#[cfg_attr(
37570 not(target_arch = "arm"),
37571 stable(feature = "neon_intrinsics", since = "1.59.0")
37572)]
37573#[cfg_attr(
37574 target_arch = "arm",
37575 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37576)]
37577pub fn vqdmulh_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x8_t) -> int16x4_t {
37578 static_assert_uimm_bits!(LANE, 3);
37579 unsafe { vqdmulh_s16(a, vdup_n_s16(simd_extract!(b, LANE as u32))) }
37580}
37581#[doc = "Vector saturating doubling multiply high by scalar"]
37582#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_laneq_s16)"]
37583#[inline]
37584#[target_feature(enable = "neon")]
37585#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37586#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh, LANE = 0))]
37587#[cfg_attr(
37588 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37589 assert_instr(sqdmulh, LANE = 0)
37590)]
37591#[rustc_legacy_const_generics(2)]
37592#[cfg_attr(
37593 not(target_arch = "arm"),
37594 stable(feature = "neon_intrinsics", since = "1.59.0")
37595)]
37596#[cfg_attr(
37597 target_arch = "arm",
37598 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37599)]
37600pub fn vqdmulhq_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
37601 static_assert_uimm_bits!(LANE, 3);
37602 unsafe { vqdmulhq_s16(a, vdupq_n_s16(simd_extract!(b, LANE as u32))) }
37603}
37604#[doc = "Vector saturating doubling multiply high by scalar"]
37605#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_laneq_s32)"]
37606#[inline]
37607#[target_feature(enable = "neon")]
37608#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37609#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh, LANE = 0))]
37610#[cfg_attr(
37611 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37612 assert_instr(sqdmulh, LANE = 0)
37613)]
37614#[rustc_legacy_const_generics(2)]
37615#[cfg_attr(
37616 not(target_arch = "arm"),
37617 stable(feature = "neon_intrinsics", since = "1.59.0")
37618)]
37619#[cfg_attr(
37620 target_arch = "arm",
37621 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37622)]
37623pub fn vqdmulh_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x4_t) -> int32x2_t {
37624 static_assert_uimm_bits!(LANE, 2);
37625 unsafe { vqdmulh_s32(a, vdup_n_s32(simd_extract!(b, LANE as u32))) }
37626}
37627#[doc = "Vector saturating doubling multiply high by scalar"]
37628#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_laneq_s32)"]
37629#[inline]
37630#[target_feature(enable = "neon")]
37631#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37632#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh, LANE = 0))]
37633#[cfg_attr(
37634 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37635 assert_instr(sqdmulh, LANE = 0)
37636)]
37637#[rustc_legacy_const_generics(2)]
37638#[cfg_attr(
37639 not(target_arch = "arm"),
37640 stable(feature = "neon_intrinsics", since = "1.59.0")
37641)]
37642#[cfg_attr(
37643 target_arch = "arm",
37644 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37645)]
37646pub fn vqdmulhq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
37647 static_assert_uimm_bits!(LANE, 2);
37648 unsafe { vqdmulhq_s32(a, vdupq_n_s32(simd_extract!(b, LANE as u32))) }
37649}
37650#[doc = "Vector saturating doubling multiply high with scalar"]
37651#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_n_s16)"]
37652#[inline]
37653#[target_feature(enable = "neon")]
37654#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37655#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
37656#[cfg_attr(
37657 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37658 assert_instr(sqdmulh)
37659)]
37660#[cfg_attr(
37661 not(target_arch = "arm"),
37662 stable(feature = "neon_intrinsics", since = "1.59.0")
37663)]
37664#[cfg_attr(
37665 target_arch = "arm",
37666 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37667)]
37668pub fn vqdmulh_n_s16(a: int16x4_t, b: i16) -> int16x4_t {
37669 let b: int16x4_t = vdup_n_s16(b);
37670 vqdmulh_s16(a, b)
37671}
37672#[doc = "Vector saturating doubling multiply high with scalar"]
37673#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_n_s16)"]
37674#[inline]
37675#[target_feature(enable = "neon")]
37676#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37677#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
37678#[cfg_attr(
37679 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37680 assert_instr(sqdmulh)
37681)]
37682#[cfg_attr(
37683 not(target_arch = "arm"),
37684 stable(feature = "neon_intrinsics", since = "1.59.0")
37685)]
37686#[cfg_attr(
37687 target_arch = "arm",
37688 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37689)]
37690pub fn vqdmulhq_n_s16(a: int16x8_t, b: i16) -> int16x8_t {
37691 let b: int16x8_t = vdupq_n_s16(b);
37692 vqdmulhq_s16(a, b)
37693}
37694#[doc = "Vector saturating doubling multiply high with scalar"]
37695#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_n_s32)"]
37696#[inline]
37697#[target_feature(enable = "neon")]
37698#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37699#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
37700#[cfg_attr(
37701 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37702 assert_instr(sqdmulh)
37703)]
37704#[cfg_attr(
37705 not(target_arch = "arm"),
37706 stable(feature = "neon_intrinsics", since = "1.59.0")
37707)]
37708#[cfg_attr(
37709 target_arch = "arm",
37710 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37711)]
37712pub fn vqdmulh_n_s32(a: int32x2_t, b: i32) -> int32x2_t {
37713 let b: int32x2_t = vdup_n_s32(b);
37714 vqdmulh_s32(a, b)
37715}
37716#[doc = "Vector saturating doubling multiply high with scalar"]
37717#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_n_s32)"]
37718#[inline]
37719#[target_feature(enable = "neon")]
37720#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37721#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
37722#[cfg_attr(
37723 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37724 assert_instr(sqdmulh)
37725)]
37726#[cfg_attr(
37727 not(target_arch = "arm"),
37728 stable(feature = "neon_intrinsics", since = "1.59.0")
37729)]
37730#[cfg_attr(
37731 target_arch = "arm",
37732 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37733)]
37734pub fn vqdmulhq_n_s32(a: int32x4_t, b: i32) -> int32x4_t {
37735 let b: int32x4_t = vdupq_n_s32(b);
37736 vqdmulhq_s32(a, b)
37737}
37738#[doc = "Signed saturating doubling multiply returning high half"]
37739#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_s16)"]
37740#[inline]
37741#[target_feature(enable = "neon")]
37742#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37743#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
37744#[cfg_attr(
37745 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37746 assert_instr(sqdmulh)
37747)]
37748#[cfg_attr(
37749 not(target_arch = "arm"),
37750 stable(feature = "neon_intrinsics", since = "1.59.0")
37751)]
37752#[cfg_attr(
37753 target_arch = "arm",
37754 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37755)]
37756pub fn vqdmulh_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
37757 unsafe extern "unadjusted" {
37758 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmulh.v4i16")]
37759 #[cfg_attr(
37760 any(target_arch = "aarch64", target_arch = "arm64ec"),
37761 link_name = "llvm.aarch64.neon.sqdmulh.v4i16"
37762 )]
37763 fn _vqdmulh_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
37764 }
37765 unsafe { _vqdmulh_s16(a, b) }
37766}
37767#[doc = "Signed saturating doubling multiply returning high half"]
37768#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_s16)"]
37769#[inline]
37770#[target_feature(enable = "neon")]
37771#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37772#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
37773#[cfg_attr(
37774 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37775 assert_instr(sqdmulh)
37776)]
37777#[cfg_attr(
37778 not(target_arch = "arm"),
37779 stable(feature = "neon_intrinsics", since = "1.59.0")
37780)]
37781#[cfg_attr(
37782 target_arch = "arm",
37783 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37784)]
37785pub fn vqdmulhq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
37786 unsafe extern "unadjusted" {
37787 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmulh.v8i16")]
37788 #[cfg_attr(
37789 any(target_arch = "aarch64", target_arch = "arm64ec"),
37790 link_name = "llvm.aarch64.neon.sqdmulh.v8i16"
37791 )]
37792 fn _vqdmulhq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
37793 }
37794 unsafe { _vqdmulhq_s16(a, b) }
37795}
37796#[doc = "Signed saturating doubling multiply returning high half"]
37797#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_s32)"]
37798#[inline]
37799#[target_feature(enable = "neon")]
37800#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37801#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
37802#[cfg_attr(
37803 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37804 assert_instr(sqdmulh)
37805)]
37806#[cfg_attr(
37807 not(target_arch = "arm"),
37808 stable(feature = "neon_intrinsics", since = "1.59.0")
37809)]
37810#[cfg_attr(
37811 target_arch = "arm",
37812 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37813)]
37814pub fn vqdmulh_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
37815 unsafe extern "unadjusted" {
37816 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmulh.v2i32")]
37817 #[cfg_attr(
37818 any(target_arch = "aarch64", target_arch = "arm64ec"),
37819 link_name = "llvm.aarch64.neon.sqdmulh.v2i32"
37820 )]
37821 fn _vqdmulh_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
37822 }
37823 unsafe { _vqdmulh_s32(a, b) }
37824}
37825#[doc = "Signed saturating doubling multiply returning high half"]
37826#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_s32)"]
37827#[inline]
37828#[target_feature(enable = "neon")]
37829#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37830#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
37831#[cfg_attr(
37832 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37833 assert_instr(sqdmulh)
37834)]
37835#[cfg_attr(
37836 not(target_arch = "arm"),
37837 stable(feature = "neon_intrinsics", since = "1.59.0")
37838)]
37839#[cfg_attr(
37840 target_arch = "arm",
37841 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37842)]
37843pub fn vqdmulhq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
37844 unsafe extern "unadjusted" {
37845 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmulh.v4i32")]
37846 #[cfg_attr(
37847 any(target_arch = "aarch64", target_arch = "arm64ec"),
37848 link_name = "llvm.aarch64.neon.sqdmulh.v4i32"
37849 )]
37850 fn _vqdmulhq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
37851 }
37852 unsafe { _vqdmulhq_s32(a, b) }
37853}
37854#[doc = "Vector saturating doubling long multiply by scalar"]
37855#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_lane_s16)"]
37856#[inline]
37857#[target_feature(enable = "neon")]
37858#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37859#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull, N = 2))]
37860#[cfg_attr(
37861 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37862 assert_instr(sqdmull, N = 2)
37863)]
37864#[rustc_legacy_const_generics(2)]
37865#[cfg_attr(
37866 not(target_arch = "arm"),
37867 stable(feature = "neon_intrinsics", since = "1.59.0")
37868)]
37869#[cfg_attr(
37870 target_arch = "arm",
37871 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37872)]
37873pub fn vqdmull_lane_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int32x4_t {
37874 static_assert_uimm_bits!(N, 2);
37875 unsafe {
37876 let b: int16x4_t = simd_shuffle!(b, b, [N as u32, N as u32, N as u32, N as u32]);
37877 vqdmull_s16(a, b)
37878 }
37879}
37880#[doc = "Vector saturating doubling long multiply by scalar"]
37881#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_lane_s32)"]
37882#[inline]
37883#[target_feature(enable = "neon")]
37884#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37885#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull, N = 1))]
37886#[cfg_attr(
37887 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37888 assert_instr(sqdmull, N = 1)
37889)]
37890#[rustc_legacy_const_generics(2)]
37891#[cfg_attr(
37892 not(target_arch = "arm"),
37893 stable(feature = "neon_intrinsics", since = "1.59.0")
37894)]
37895#[cfg_attr(
37896 target_arch = "arm",
37897 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37898)]
37899pub fn vqdmull_lane_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int64x2_t {
37900 static_assert_uimm_bits!(N, 1);
37901 unsafe {
37902 let b: int32x2_t = simd_shuffle!(b, b, [N as u32, N as u32]);
37903 vqdmull_s32(a, b)
37904 }
37905}
37906#[doc = "Vector saturating doubling long multiply with scalar"]
37907#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_n_s16)"]
37908#[inline]
37909#[target_feature(enable = "neon")]
37910#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37911#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull))]
37912#[cfg_attr(
37913 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37914 assert_instr(sqdmull)
37915)]
37916#[cfg_attr(
37917 not(target_arch = "arm"),
37918 stable(feature = "neon_intrinsics", since = "1.59.0")
37919)]
37920#[cfg_attr(
37921 target_arch = "arm",
37922 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37923)]
37924pub fn vqdmull_n_s16(a: int16x4_t, b: i16) -> int32x4_t {
37925 vqdmull_s16(a, vdup_n_s16(b))
37926}
37927#[doc = "Vector saturating doubling long multiply with scalar"]
37928#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_n_s32)"]
37929#[inline]
37930#[target_feature(enable = "neon")]
37931#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37932#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull))]
37933#[cfg_attr(
37934 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37935 assert_instr(sqdmull)
37936)]
37937#[cfg_attr(
37938 not(target_arch = "arm"),
37939 stable(feature = "neon_intrinsics", since = "1.59.0")
37940)]
37941#[cfg_attr(
37942 target_arch = "arm",
37943 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37944)]
37945pub fn vqdmull_n_s32(a: int32x2_t, b: i32) -> int64x2_t {
37946 vqdmull_s32(a, vdup_n_s32(b))
37947}
37948#[doc = "Signed saturating doubling multiply long"]
37949#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_s16)"]
37950#[inline]
37951#[target_feature(enable = "neon")]
37952#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37953#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull))]
37954#[cfg_attr(
37955 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37956 assert_instr(sqdmull)
37957)]
37958#[cfg_attr(
37959 not(target_arch = "arm"),
37960 stable(feature = "neon_intrinsics", since = "1.59.0")
37961)]
37962#[cfg_attr(
37963 target_arch = "arm",
37964 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37965)]
37966pub fn vqdmull_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t {
37967 unsafe extern "unadjusted" {
37968 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmull.v4i32")]
37969 #[cfg_attr(
37970 any(target_arch = "aarch64", target_arch = "arm64ec"),
37971 link_name = "llvm.aarch64.neon.sqdmull.v4i32"
37972 )]
37973 fn _vqdmull_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t;
37974 }
37975 unsafe { _vqdmull_s16(a, b) }
37976}
37977#[doc = "Signed saturating doubling multiply long"]
37978#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_s32)"]
37979#[inline]
37980#[target_feature(enable = "neon")]
37981#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37982#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull))]
37983#[cfg_attr(
37984 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37985 assert_instr(sqdmull)
37986)]
37987#[cfg_attr(
37988 not(target_arch = "arm"),
37989 stable(feature = "neon_intrinsics", since = "1.59.0")
37990)]
37991#[cfg_attr(
37992 target_arch = "arm",
37993 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37994)]
37995pub fn vqdmull_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t {
37996 unsafe extern "unadjusted" {
37997 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmull.v2i64")]
37998 #[cfg_attr(
37999 any(target_arch = "aarch64", target_arch = "arm64ec"),
38000 link_name = "llvm.aarch64.neon.sqdmull.v2i64"
38001 )]
38002 fn _vqdmull_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t;
38003 }
38004 unsafe { _vqdmull_s32(a, b) }
38005}
38006#[doc = "Signed saturating extract narrow"]
38007#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_s16)"]
38008#[inline]
38009#[target_feature(enable = "neon")]
38010#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38011#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
38012#[cfg_attr(
38013 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38014 assert_instr(sqxtn)
38015)]
38016#[cfg_attr(
38017 not(target_arch = "arm"),
38018 stable(feature = "neon_intrinsics", since = "1.59.0")
38019)]
38020#[cfg_attr(
38021 target_arch = "arm",
38022 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38023)]
38024pub fn vqmovn_s16(a: int16x8_t) -> int8x8_t {
38025 unsafe extern "unadjusted" {
38026 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovns.v8i8")]
38027 #[cfg_attr(
38028 any(target_arch = "aarch64", target_arch = "arm64ec"),
38029 link_name = "llvm.aarch64.neon.sqxtn.v8i8"
38030 )]
38031 fn _vqmovn_s16(a: int16x8_t) -> int8x8_t;
38032 }
38033 unsafe { _vqmovn_s16(a) }
38034}
38035#[doc = "Signed saturating extract narrow"]
38036#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_s32)"]
38037#[inline]
38038#[target_feature(enable = "neon")]
38039#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38040#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
38041#[cfg_attr(
38042 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38043 assert_instr(sqxtn)
38044)]
38045#[cfg_attr(
38046 not(target_arch = "arm"),
38047 stable(feature = "neon_intrinsics", since = "1.59.0")
38048)]
38049#[cfg_attr(
38050 target_arch = "arm",
38051 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38052)]
38053pub fn vqmovn_s32(a: int32x4_t) -> int16x4_t {
38054 unsafe extern "unadjusted" {
38055 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovns.v4i16")]
38056 #[cfg_attr(
38057 any(target_arch = "aarch64", target_arch = "arm64ec"),
38058 link_name = "llvm.aarch64.neon.sqxtn.v4i16"
38059 )]
38060 fn _vqmovn_s32(a: int32x4_t) -> int16x4_t;
38061 }
38062 unsafe { _vqmovn_s32(a) }
38063}
38064#[doc = "Signed saturating extract narrow"]
38065#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_s64)"]
38066#[inline]
38067#[target_feature(enable = "neon")]
38068#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38069#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
38070#[cfg_attr(
38071 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38072 assert_instr(sqxtn)
38073)]
38074#[cfg_attr(
38075 not(target_arch = "arm"),
38076 stable(feature = "neon_intrinsics", since = "1.59.0")
38077)]
38078#[cfg_attr(
38079 target_arch = "arm",
38080 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38081)]
38082pub fn vqmovn_s64(a: int64x2_t) -> int32x2_t {
38083 unsafe extern "unadjusted" {
38084 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovns.v2i32")]
38085 #[cfg_attr(
38086 any(target_arch = "aarch64", target_arch = "arm64ec"),
38087 link_name = "llvm.aarch64.neon.sqxtn.v2i32"
38088 )]
38089 fn _vqmovn_s64(a: int64x2_t) -> int32x2_t;
38090 }
38091 unsafe { _vqmovn_s64(a) }
38092}
38093#[doc = "Unsigned saturating extract narrow"]
38094#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_u16)"]
38095#[inline]
38096#[target_feature(enable = "neon")]
38097#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38098#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
38099#[cfg_attr(
38100 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38101 assert_instr(uqxtn)
38102)]
38103#[cfg_attr(
38104 not(target_arch = "arm"),
38105 stable(feature = "neon_intrinsics", since = "1.59.0")
38106)]
38107#[cfg_attr(
38108 target_arch = "arm",
38109 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38110)]
38111pub fn vqmovn_u16(a: uint16x8_t) -> uint8x8_t {
38112 unsafe extern "unadjusted" {
38113 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnu.v8i8")]
38114 #[cfg_attr(
38115 any(target_arch = "aarch64", target_arch = "arm64ec"),
38116 link_name = "llvm.aarch64.neon.uqxtn.v8i8"
38117 )]
38118 fn _vqmovn_u16(a: uint16x8_t) -> uint8x8_t;
38119 }
38120 unsafe { _vqmovn_u16(a) }
38121}
38122#[doc = "Unsigned saturating extract narrow"]
38123#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_u32)"]
38124#[inline]
38125#[target_feature(enable = "neon")]
38126#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38127#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
38128#[cfg_attr(
38129 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38130 assert_instr(uqxtn)
38131)]
38132#[cfg_attr(
38133 not(target_arch = "arm"),
38134 stable(feature = "neon_intrinsics", since = "1.59.0")
38135)]
38136#[cfg_attr(
38137 target_arch = "arm",
38138 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38139)]
38140pub fn vqmovn_u32(a: uint32x4_t) -> uint16x4_t {
38141 unsafe extern "unadjusted" {
38142 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnu.v4i16")]
38143 #[cfg_attr(
38144 any(target_arch = "aarch64", target_arch = "arm64ec"),
38145 link_name = "llvm.aarch64.neon.uqxtn.v4i16"
38146 )]
38147 fn _vqmovn_u32(a: uint32x4_t) -> uint16x4_t;
38148 }
38149 unsafe { _vqmovn_u32(a) }
38150}
38151#[doc = "Unsigned saturating extract narrow"]
38152#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_u64)"]
38153#[inline]
38154#[target_feature(enable = "neon")]
38155#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38156#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
38157#[cfg_attr(
38158 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38159 assert_instr(uqxtn)
38160)]
38161#[cfg_attr(
38162 not(target_arch = "arm"),
38163 stable(feature = "neon_intrinsics", since = "1.59.0")
38164)]
38165#[cfg_attr(
38166 target_arch = "arm",
38167 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38168)]
38169pub fn vqmovn_u64(a: uint64x2_t) -> uint32x2_t {
38170 unsafe extern "unadjusted" {
38171 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnu.v2i32")]
38172 #[cfg_attr(
38173 any(target_arch = "aarch64", target_arch = "arm64ec"),
38174 link_name = "llvm.aarch64.neon.uqxtn.v2i32"
38175 )]
38176 fn _vqmovn_u64(a: uint64x2_t) -> uint32x2_t;
38177 }
38178 unsafe { _vqmovn_u64(a) }
38179}
38180#[doc = "Signed saturating extract unsigned narrow"]
38181#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovun_s16)"]
38182#[inline]
38183#[target_feature(enable = "neon")]
38184#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38185#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovun))]
38186#[cfg_attr(
38187 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38188 assert_instr(sqxtun)
38189)]
38190#[cfg_attr(
38191 not(target_arch = "arm"),
38192 stable(feature = "neon_intrinsics", since = "1.59.0")
38193)]
38194#[cfg_attr(
38195 target_arch = "arm",
38196 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38197)]
38198pub fn vqmovun_s16(a: int16x8_t) -> uint8x8_t {
38199 unsafe extern "unadjusted" {
38200 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnsu.v8i8")]
38201 #[cfg_attr(
38202 any(target_arch = "aarch64", target_arch = "arm64ec"),
38203 link_name = "llvm.aarch64.neon.sqxtun.v8i8"
38204 )]
38205 fn _vqmovun_s16(a: int16x8_t) -> uint8x8_t;
38206 }
38207 unsafe { _vqmovun_s16(a) }
38208}
38209#[doc = "Signed saturating extract unsigned narrow"]
38210#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovun_s32)"]
38211#[inline]
38212#[target_feature(enable = "neon")]
38213#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38214#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovun))]
38215#[cfg_attr(
38216 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38217 assert_instr(sqxtun)
38218)]
38219#[cfg_attr(
38220 not(target_arch = "arm"),
38221 stable(feature = "neon_intrinsics", since = "1.59.0")
38222)]
38223#[cfg_attr(
38224 target_arch = "arm",
38225 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38226)]
38227pub fn vqmovun_s32(a: int32x4_t) -> uint16x4_t {
38228 unsafe extern "unadjusted" {
38229 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnsu.v4i16")]
38230 #[cfg_attr(
38231 any(target_arch = "aarch64", target_arch = "arm64ec"),
38232 link_name = "llvm.aarch64.neon.sqxtun.v4i16"
38233 )]
38234 fn _vqmovun_s32(a: int32x4_t) -> uint16x4_t;
38235 }
38236 unsafe { _vqmovun_s32(a) }
38237}
38238#[doc = "Signed saturating extract unsigned narrow"]
38239#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovun_s64)"]
38240#[inline]
38241#[target_feature(enable = "neon")]
38242#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38243#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovun))]
38244#[cfg_attr(
38245 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38246 assert_instr(sqxtun)
38247)]
38248#[cfg_attr(
38249 not(target_arch = "arm"),
38250 stable(feature = "neon_intrinsics", since = "1.59.0")
38251)]
38252#[cfg_attr(
38253 target_arch = "arm",
38254 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38255)]
38256pub fn vqmovun_s64(a: int64x2_t) -> uint32x2_t {
38257 unsafe extern "unadjusted" {
38258 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnsu.v2i32")]
38259 #[cfg_attr(
38260 any(target_arch = "aarch64", target_arch = "arm64ec"),
38261 link_name = "llvm.aarch64.neon.sqxtun.v2i32"
38262 )]
38263 fn _vqmovun_s64(a: int64x2_t) -> uint32x2_t;
38264 }
38265 unsafe { _vqmovun_s64(a) }
38266}
38267#[doc = "Signed saturating negate"]
38268#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqneg_s8)"]
38269#[inline]
38270#[target_feature(enable = "neon")]
38271#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38272#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s8"))]
38273#[cfg_attr(
38274 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38275 assert_instr(sqneg)
38276)]
38277#[cfg_attr(
38278 not(target_arch = "arm"),
38279 stable(feature = "neon_intrinsics", since = "1.59.0")
38280)]
38281#[cfg_attr(
38282 target_arch = "arm",
38283 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38284)]
38285pub fn vqneg_s8(a: int8x8_t) -> int8x8_t {
38286 unsafe extern "unadjusted" {
38287 #[cfg_attr(
38288 any(target_arch = "aarch64", target_arch = "arm64ec"),
38289 link_name = "llvm.aarch64.neon.sqneg.v8i8"
38290 )]
38291 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v8i8")]
38292 fn _vqneg_s8(a: int8x8_t) -> int8x8_t;
38293 }
38294 unsafe { _vqneg_s8(a) }
38295}
38296#[doc = "Signed saturating negate"]
38297#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqnegq_s8)"]
38298#[inline]
38299#[target_feature(enable = "neon")]
38300#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38301#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s8"))]
38302#[cfg_attr(
38303 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38304 assert_instr(sqneg)
38305)]
38306#[cfg_attr(
38307 not(target_arch = "arm"),
38308 stable(feature = "neon_intrinsics", since = "1.59.0")
38309)]
38310#[cfg_attr(
38311 target_arch = "arm",
38312 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38313)]
38314pub fn vqnegq_s8(a: int8x16_t) -> int8x16_t {
38315 unsafe extern "unadjusted" {
38316 #[cfg_attr(
38317 any(target_arch = "aarch64", target_arch = "arm64ec"),
38318 link_name = "llvm.aarch64.neon.sqneg.v16i8"
38319 )]
38320 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v16i8")]
38321 fn _vqnegq_s8(a: int8x16_t) -> int8x16_t;
38322 }
38323 unsafe { _vqnegq_s8(a) }
38324}
38325#[doc = "Signed saturating negate"]
38326#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqneg_s16)"]
38327#[inline]
38328#[target_feature(enable = "neon")]
38329#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38330#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s16"))]
38331#[cfg_attr(
38332 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38333 assert_instr(sqneg)
38334)]
38335#[cfg_attr(
38336 not(target_arch = "arm"),
38337 stable(feature = "neon_intrinsics", since = "1.59.0")
38338)]
38339#[cfg_attr(
38340 target_arch = "arm",
38341 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38342)]
38343pub fn vqneg_s16(a: int16x4_t) -> int16x4_t {
38344 unsafe extern "unadjusted" {
38345 #[cfg_attr(
38346 any(target_arch = "aarch64", target_arch = "arm64ec"),
38347 link_name = "llvm.aarch64.neon.sqneg.v4i16"
38348 )]
38349 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v4i16")]
38350 fn _vqneg_s16(a: int16x4_t) -> int16x4_t;
38351 }
38352 unsafe { _vqneg_s16(a) }
38353}
38354#[doc = "Signed saturating negate"]
38355#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqnegq_s16)"]
38356#[inline]
38357#[target_feature(enable = "neon")]
38358#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38359#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s16"))]
38360#[cfg_attr(
38361 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38362 assert_instr(sqneg)
38363)]
38364#[cfg_attr(
38365 not(target_arch = "arm"),
38366 stable(feature = "neon_intrinsics", since = "1.59.0")
38367)]
38368#[cfg_attr(
38369 target_arch = "arm",
38370 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38371)]
38372pub fn vqnegq_s16(a: int16x8_t) -> int16x8_t {
38373 unsafe extern "unadjusted" {
38374 #[cfg_attr(
38375 any(target_arch = "aarch64", target_arch = "arm64ec"),
38376 link_name = "llvm.aarch64.neon.sqneg.v8i16"
38377 )]
38378 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v8i16")]
38379 fn _vqnegq_s16(a: int16x8_t) -> int16x8_t;
38380 }
38381 unsafe { _vqnegq_s16(a) }
38382}
38383#[doc = "Signed saturating negate"]
38384#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqneg_s32)"]
38385#[inline]
38386#[target_feature(enable = "neon")]
38387#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38388#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s32"))]
38389#[cfg_attr(
38390 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38391 assert_instr(sqneg)
38392)]
38393#[cfg_attr(
38394 not(target_arch = "arm"),
38395 stable(feature = "neon_intrinsics", since = "1.59.0")
38396)]
38397#[cfg_attr(
38398 target_arch = "arm",
38399 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38400)]
38401pub fn vqneg_s32(a: int32x2_t) -> int32x2_t {
38402 unsafe extern "unadjusted" {
38403 #[cfg_attr(
38404 any(target_arch = "aarch64", target_arch = "arm64ec"),
38405 link_name = "llvm.aarch64.neon.sqneg.v2i32"
38406 )]
38407 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v2i32")]
38408 fn _vqneg_s32(a: int32x2_t) -> int32x2_t;
38409 }
38410 unsafe { _vqneg_s32(a) }
38411}
38412#[doc = "Signed saturating negate"]
38413#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqnegq_s32)"]
38414#[inline]
38415#[target_feature(enable = "neon")]
38416#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38417#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s32"))]
38418#[cfg_attr(
38419 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38420 assert_instr(sqneg)
38421)]
38422#[cfg_attr(
38423 not(target_arch = "arm"),
38424 stable(feature = "neon_intrinsics", since = "1.59.0")
38425)]
38426#[cfg_attr(
38427 target_arch = "arm",
38428 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38429)]
38430pub fn vqnegq_s32(a: int32x4_t) -> int32x4_t {
38431 unsafe extern "unadjusted" {
38432 #[cfg_attr(
38433 any(target_arch = "aarch64", target_arch = "arm64ec"),
38434 link_name = "llvm.aarch64.neon.sqneg.v4i32"
38435 )]
38436 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v4i32")]
38437 fn _vqnegq_s32(a: int32x4_t) -> int32x4_t;
38438 }
38439 unsafe { _vqnegq_s32(a) }
38440}
38441#[doc = "Vector rounding saturating doubling multiply high by scalar"]
38442#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_lane_s16)"]
38443#[inline]
38444#[target_feature(enable = "neon")]
38445#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38446#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
38447#[cfg_attr(
38448 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38449 assert_instr(sqrdmulh, LANE = 1)
38450)]
38451#[rustc_legacy_const_generics(2)]
38452#[cfg_attr(
38453 not(target_arch = "arm"),
38454 stable(feature = "neon_intrinsics", since = "1.59.0")
38455)]
38456#[cfg_attr(
38457 target_arch = "arm",
38458 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38459)]
38460pub fn vqrdmulh_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
38461 static_assert_uimm_bits!(LANE, 2);
38462 unsafe {
38463 let b: int16x4_t =
38464 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
38465 vqrdmulh_s16(a, b)
38466 }
38467}
38468#[doc = "Vector rounding saturating doubling multiply high by scalar"]
38469#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_lane_s32)"]
38470#[inline]
38471#[target_feature(enable = "neon")]
38472#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38473#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
38474#[cfg_attr(
38475 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38476 assert_instr(sqrdmulh, LANE = 1)
38477)]
38478#[rustc_legacy_const_generics(2)]
38479#[cfg_attr(
38480 not(target_arch = "arm"),
38481 stable(feature = "neon_intrinsics", since = "1.59.0")
38482)]
38483#[cfg_attr(
38484 target_arch = "arm",
38485 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38486)]
38487pub fn vqrdmulh_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
38488 static_assert_uimm_bits!(LANE, 1);
38489 unsafe {
38490 let b: int32x2_t = simd_shuffle!(b, b, [LANE as u32, LANE as u32]);
38491 vqrdmulh_s32(a, b)
38492 }
38493}
38494#[doc = "Vector rounding saturating doubling multiply high by scalar"]
38495#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_laneq_s16)"]
38496#[inline]
38497#[target_feature(enable = "neon")]
38498#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38499#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
38500#[cfg_attr(
38501 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38502 assert_instr(sqrdmulh, LANE = 1)
38503)]
38504#[rustc_legacy_const_generics(2)]
38505#[cfg_attr(
38506 not(target_arch = "arm"),
38507 stable(feature = "neon_intrinsics", since = "1.59.0")
38508)]
38509#[cfg_attr(
38510 target_arch = "arm",
38511 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38512)]
38513pub fn vqrdmulh_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x8_t) -> int16x4_t {
38514 static_assert_uimm_bits!(LANE, 3);
38515 unsafe {
38516 let b: int16x4_t =
38517 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
38518 vqrdmulh_s16(a, b)
38519 }
38520}
38521#[doc = "Vector rounding saturating doubling multiply high by scalar"]
38522#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_laneq_s32)"]
38523#[inline]
38524#[target_feature(enable = "neon")]
38525#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38526#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
38527#[cfg_attr(
38528 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38529 assert_instr(sqrdmulh, LANE = 1)
38530)]
38531#[rustc_legacy_const_generics(2)]
38532#[cfg_attr(
38533 not(target_arch = "arm"),
38534 stable(feature = "neon_intrinsics", since = "1.59.0")
38535)]
38536#[cfg_attr(
38537 target_arch = "arm",
38538 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38539)]
38540pub fn vqrdmulh_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x4_t) -> int32x2_t {
38541 static_assert_uimm_bits!(LANE, 2);
38542 unsafe {
38543 let b: int32x2_t = simd_shuffle!(b, b, [LANE as u32, LANE as u32]);
38544 vqrdmulh_s32(a, b)
38545 }
38546}
38547#[doc = "Vector rounding saturating doubling multiply high by scalar"]
38548#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_lane_s16)"]
38549#[inline]
38550#[target_feature(enable = "neon")]
38551#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38552#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
38553#[cfg_attr(
38554 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38555 assert_instr(sqrdmulh, LANE = 1)
38556)]
38557#[rustc_legacy_const_generics(2)]
38558#[cfg_attr(
38559 not(target_arch = "arm"),
38560 stable(feature = "neon_intrinsics", since = "1.59.0")
38561)]
38562#[cfg_attr(
38563 target_arch = "arm",
38564 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38565)]
38566pub fn vqrdmulhq_lane_s16<const LANE: i32>(a: int16x8_t, b: int16x4_t) -> int16x8_t {
38567 static_assert_uimm_bits!(LANE, 2);
38568 unsafe {
38569 let b: int16x8_t = simd_shuffle!(
38570 b,
38571 b,
38572 [
38573 LANE as u32,
38574 LANE as u32,
38575 LANE as u32,
38576 LANE as u32,
38577 LANE as u32,
38578 LANE as u32,
38579 LANE as u32,
38580 LANE as u32
38581 ]
38582 );
38583 vqrdmulhq_s16(a, b)
38584 }
38585}
38586#[doc = "Vector rounding saturating doubling multiply high by scalar"]
38587#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_lane_s32)"]
38588#[inline]
38589#[target_feature(enable = "neon")]
38590#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38591#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
38592#[cfg_attr(
38593 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38594 assert_instr(sqrdmulh, LANE = 1)
38595)]
38596#[rustc_legacy_const_generics(2)]
38597#[cfg_attr(
38598 not(target_arch = "arm"),
38599 stable(feature = "neon_intrinsics", since = "1.59.0")
38600)]
38601#[cfg_attr(
38602 target_arch = "arm",
38603 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38604)]
38605pub fn vqrdmulhq_lane_s32<const LANE: i32>(a: int32x4_t, b: int32x2_t) -> int32x4_t {
38606 static_assert_uimm_bits!(LANE, 1);
38607 unsafe {
38608 let b: int32x4_t =
38609 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
38610 vqrdmulhq_s32(a, b)
38611 }
38612}
38613#[doc = "Vector rounding saturating doubling multiply high by scalar"]
38614#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_laneq_s16)"]
38615#[inline]
38616#[target_feature(enable = "neon")]
38617#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38618#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
38619#[cfg_attr(
38620 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38621 assert_instr(sqrdmulh, LANE = 1)
38622)]
38623#[rustc_legacy_const_generics(2)]
38624#[cfg_attr(
38625 not(target_arch = "arm"),
38626 stable(feature = "neon_intrinsics", since = "1.59.0")
38627)]
38628#[cfg_attr(
38629 target_arch = "arm",
38630 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38631)]
38632pub fn vqrdmulhq_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
38633 static_assert_uimm_bits!(LANE, 3);
38634 unsafe {
38635 let b: int16x8_t = simd_shuffle!(
38636 b,
38637 b,
38638 [
38639 LANE as u32,
38640 LANE as u32,
38641 LANE as u32,
38642 LANE as u32,
38643 LANE as u32,
38644 LANE as u32,
38645 LANE as u32,
38646 LANE as u32
38647 ]
38648 );
38649 vqrdmulhq_s16(a, b)
38650 }
38651}
38652#[doc = "Vector rounding saturating doubling multiply high by scalar"]
38653#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_laneq_s32)"]
38654#[inline]
38655#[target_feature(enable = "neon")]
38656#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38657#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
38658#[cfg_attr(
38659 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38660 assert_instr(sqrdmulh, LANE = 1)
38661)]
38662#[rustc_legacy_const_generics(2)]
38663#[cfg_attr(
38664 not(target_arch = "arm"),
38665 stable(feature = "neon_intrinsics", since = "1.59.0")
38666)]
38667#[cfg_attr(
38668 target_arch = "arm",
38669 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38670)]
38671pub fn vqrdmulhq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
38672 static_assert_uimm_bits!(LANE, 2);
38673 unsafe {
38674 let b: int32x4_t =
38675 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
38676 vqrdmulhq_s32(a, b)
38677 }
38678}
38679#[doc = "Vector saturating rounding doubling multiply high with scalar"]
38680#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_n_s16)"]
38681#[inline]
38682#[target_feature(enable = "neon")]
38683#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38684#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
38685#[cfg_attr(
38686 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38687 assert_instr(sqrdmulh)
38688)]
38689#[cfg_attr(
38690 not(target_arch = "arm"),
38691 stable(feature = "neon_intrinsics", since = "1.59.0")
38692)]
38693#[cfg_attr(
38694 target_arch = "arm",
38695 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38696)]
38697pub fn vqrdmulh_n_s16(a: int16x4_t, b: i16) -> int16x4_t {
38698 vqrdmulh_s16(a, vdup_n_s16(b))
38699}
38700#[doc = "Vector saturating rounding doubling multiply high with scalar"]
38701#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_n_s16)"]
38702#[inline]
38703#[target_feature(enable = "neon")]
38704#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38705#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
38706#[cfg_attr(
38707 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38708 assert_instr(sqrdmulh)
38709)]
38710#[cfg_attr(
38711 not(target_arch = "arm"),
38712 stable(feature = "neon_intrinsics", since = "1.59.0")
38713)]
38714#[cfg_attr(
38715 target_arch = "arm",
38716 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38717)]
38718pub fn vqrdmulhq_n_s16(a: int16x8_t, b: i16) -> int16x8_t {
38719 vqrdmulhq_s16(a, vdupq_n_s16(b))
38720}
38721#[doc = "Vector saturating rounding doubling multiply high with scalar"]
38722#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_n_s32)"]
38723#[inline]
38724#[target_feature(enable = "neon")]
38725#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38726#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
38727#[cfg_attr(
38728 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38729 assert_instr(sqrdmulh)
38730)]
38731#[cfg_attr(
38732 not(target_arch = "arm"),
38733 stable(feature = "neon_intrinsics", since = "1.59.0")
38734)]
38735#[cfg_attr(
38736 target_arch = "arm",
38737 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38738)]
38739pub fn vqrdmulh_n_s32(a: int32x2_t, b: i32) -> int32x2_t {
38740 vqrdmulh_s32(a, vdup_n_s32(b))
38741}
38742#[doc = "Vector saturating rounding doubling multiply high with scalar"]
38743#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_n_s32)"]
38744#[inline]
38745#[target_feature(enable = "neon")]
38746#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38747#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
38748#[cfg_attr(
38749 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38750 assert_instr(sqrdmulh)
38751)]
38752#[cfg_attr(
38753 not(target_arch = "arm"),
38754 stable(feature = "neon_intrinsics", since = "1.59.0")
38755)]
38756#[cfg_attr(
38757 target_arch = "arm",
38758 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38759)]
38760pub fn vqrdmulhq_n_s32(a: int32x4_t, b: i32) -> int32x4_t {
38761 vqrdmulhq_s32(a, vdupq_n_s32(b))
38762}
38763#[doc = "Signed saturating rounding doubling multiply returning high half"]
38764#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_s16)"]
38765#[inline]
38766#[target_feature(enable = "neon")]
38767#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38768#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
38769#[cfg_attr(
38770 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38771 assert_instr(sqrdmulh)
38772)]
38773#[cfg_attr(
38774 not(target_arch = "arm"),
38775 stable(feature = "neon_intrinsics", since = "1.59.0")
38776)]
38777#[cfg_attr(
38778 target_arch = "arm",
38779 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38780)]
38781pub fn vqrdmulh_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
38782 unsafe extern "unadjusted" {
38783 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrdmulh.v4i16")]
38784 #[cfg_attr(
38785 any(target_arch = "aarch64", target_arch = "arm64ec"),
38786 link_name = "llvm.aarch64.neon.sqrdmulh.v4i16"
38787 )]
38788 fn _vqrdmulh_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
38789 }
38790 unsafe { _vqrdmulh_s16(a, b) }
38791}
38792#[doc = "Signed saturating rounding doubling multiply returning high half"]
38793#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_s16)"]
38794#[inline]
38795#[target_feature(enable = "neon")]
38796#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38797#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
38798#[cfg_attr(
38799 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38800 assert_instr(sqrdmulh)
38801)]
38802#[cfg_attr(
38803 not(target_arch = "arm"),
38804 stable(feature = "neon_intrinsics", since = "1.59.0")
38805)]
38806#[cfg_attr(
38807 target_arch = "arm",
38808 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38809)]
38810pub fn vqrdmulhq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
38811 unsafe extern "unadjusted" {
38812 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrdmulh.v8i16")]
38813 #[cfg_attr(
38814 any(target_arch = "aarch64", target_arch = "arm64ec"),
38815 link_name = "llvm.aarch64.neon.sqrdmulh.v8i16"
38816 )]
38817 fn _vqrdmulhq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
38818 }
38819 unsafe { _vqrdmulhq_s16(a, b) }
38820}
38821#[doc = "Signed saturating rounding doubling multiply returning high half"]
38822#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_s32)"]
38823#[inline]
38824#[target_feature(enable = "neon")]
38825#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38826#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
38827#[cfg_attr(
38828 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38829 assert_instr(sqrdmulh)
38830)]
38831#[cfg_attr(
38832 not(target_arch = "arm"),
38833 stable(feature = "neon_intrinsics", since = "1.59.0")
38834)]
38835#[cfg_attr(
38836 target_arch = "arm",
38837 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38838)]
38839pub fn vqrdmulh_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
38840 unsafe extern "unadjusted" {
38841 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrdmulh.v2i32")]
38842 #[cfg_attr(
38843 any(target_arch = "aarch64", target_arch = "arm64ec"),
38844 link_name = "llvm.aarch64.neon.sqrdmulh.v2i32"
38845 )]
38846 fn _vqrdmulh_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
38847 }
38848 unsafe { _vqrdmulh_s32(a, b) }
38849}
38850#[doc = "Signed saturating rounding doubling multiply returning high half"]
38851#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_s32)"]
38852#[inline]
38853#[target_feature(enable = "neon")]
38854#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38855#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
38856#[cfg_attr(
38857 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38858 assert_instr(sqrdmulh)
38859)]
38860#[cfg_attr(
38861 not(target_arch = "arm"),
38862 stable(feature = "neon_intrinsics", since = "1.59.0")
38863)]
38864#[cfg_attr(
38865 target_arch = "arm",
38866 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38867)]
38868pub fn vqrdmulhq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
38869 unsafe extern "unadjusted" {
38870 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrdmulh.v4i32")]
38871 #[cfg_attr(
38872 any(target_arch = "aarch64", target_arch = "arm64ec"),
38873 link_name = "llvm.aarch64.neon.sqrdmulh.v4i32"
38874 )]
38875 fn _vqrdmulhq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
38876 }
38877 unsafe { _vqrdmulhq_s32(a, b) }
38878}
38879#[doc = "Signed saturating rounding shift left"]
38880#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_s8)"]
38881#[inline]
38882#[target_feature(enable = "neon")]
38883#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38884#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
38885#[cfg_attr(
38886 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38887 assert_instr(sqrshl)
38888)]
38889#[cfg_attr(
38890 not(target_arch = "arm"),
38891 stable(feature = "neon_intrinsics", since = "1.59.0")
38892)]
38893#[cfg_attr(
38894 target_arch = "arm",
38895 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38896)]
38897pub fn vqrshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
38898 unsafe extern "unadjusted" {
38899 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v8i8")]
38900 #[cfg_attr(
38901 any(target_arch = "aarch64", target_arch = "arm64ec"),
38902 link_name = "llvm.aarch64.neon.sqrshl.v8i8"
38903 )]
38904 fn _vqrshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
38905 }
38906 unsafe { _vqrshl_s8(a, b) }
38907}
38908#[doc = "Signed saturating rounding shift left"]
38909#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_s8)"]
38910#[inline]
38911#[target_feature(enable = "neon")]
38912#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38913#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
38914#[cfg_attr(
38915 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38916 assert_instr(sqrshl)
38917)]
38918#[cfg_attr(
38919 not(target_arch = "arm"),
38920 stable(feature = "neon_intrinsics", since = "1.59.0")
38921)]
38922#[cfg_attr(
38923 target_arch = "arm",
38924 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38925)]
38926pub fn vqrshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
38927 unsafe extern "unadjusted" {
38928 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v16i8")]
38929 #[cfg_attr(
38930 any(target_arch = "aarch64", target_arch = "arm64ec"),
38931 link_name = "llvm.aarch64.neon.sqrshl.v16i8"
38932 )]
38933 fn _vqrshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
38934 }
38935 unsafe { _vqrshlq_s8(a, b) }
38936}
38937#[doc = "Signed saturating rounding shift left"]
38938#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_s16)"]
38939#[inline]
38940#[target_feature(enable = "neon")]
38941#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38942#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
38943#[cfg_attr(
38944 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38945 assert_instr(sqrshl)
38946)]
38947#[cfg_attr(
38948 not(target_arch = "arm"),
38949 stable(feature = "neon_intrinsics", since = "1.59.0")
38950)]
38951#[cfg_attr(
38952 target_arch = "arm",
38953 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38954)]
38955pub fn vqrshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
38956 unsafe extern "unadjusted" {
38957 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v4i16")]
38958 #[cfg_attr(
38959 any(target_arch = "aarch64", target_arch = "arm64ec"),
38960 link_name = "llvm.aarch64.neon.sqrshl.v4i16"
38961 )]
38962 fn _vqrshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
38963 }
38964 unsafe { _vqrshl_s16(a, b) }
38965}
38966#[doc = "Signed saturating rounding shift left"]
38967#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_s16)"]
38968#[inline]
38969#[target_feature(enable = "neon")]
38970#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38971#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
38972#[cfg_attr(
38973 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38974 assert_instr(sqrshl)
38975)]
38976#[cfg_attr(
38977 not(target_arch = "arm"),
38978 stable(feature = "neon_intrinsics", since = "1.59.0")
38979)]
38980#[cfg_attr(
38981 target_arch = "arm",
38982 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38983)]
38984pub fn vqrshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
38985 unsafe extern "unadjusted" {
38986 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v8i16")]
38987 #[cfg_attr(
38988 any(target_arch = "aarch64", target_arch = "arm64ec"),
38989 link_name = "llvm.aarch64.neon.sqrshl.v8i16"
38990 )]
38991 fn _vqrshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
38992 }
38993 unsafe { _vqrshlq_s16(a, b) }
38994}
38995#[doc = "Signed saturating rounding shift left"]
38996#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_s32)"]
38997#[inline]
38998#[target_feature(enable = "neon")]
38999#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39000#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39001#[cfg_attr(
39002 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39003 assert_instr(sqrshl)
39004)]
39005#[cfg_attr(
39006 not(target_arch = "arm"),
39007 stable(feature = "neon_intrinsics", since = "1.59.0")
39008)]
39009#[cfg_attr(
39010 target_arch = "arm",
39011 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39012)]
39013pub fn vqrshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
39014 unsafe extern "unadjusted" {
39015 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v2i32")]
39016 #[cfg_attr(
39017 any(target_arch = "aarch64", target_arch = "arm64ec"),
39018 link_name = "llvm.aarch64.neon.sqrshl.v2i32"
39019 )]
39020 fn _vqrshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
39021 }
39022 unsafe { _vqrshl_s32(a, b) }
39023}
39024#[doc = "Signed saturating rounding shift left"]
39025#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_s32)"]
39026#[inline]
39027#[target_feature(enable = "neon")]
39028#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39029#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39030#[cfg_attr(
39031 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39032 assert_instr(sqrshl)
39033)]
39034#[cfg_attr(
39035 not(target_arch = "arm"),
39036 stable(feature = "neon_intrinsics", since = "1.59.0")
39037)]
39038#[cfg_attr(
39039 target_arch = "arm",
39040 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39041)]
39042pub fn vqrshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
39043 unsafe extern "unadjusted" {
39044 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v4i32")]
39045 #[cfg_attr(
39046 any(target_arch = "aarch64", target_arch = "arm64ec"),
39047 link_name = "llvm.aarch64.neon.sqrshl.v4i32"
39048 )]
39049 fn _vqrshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
39050 }
39051 unsafe { _vqrshlq_s32(a, b) }
39052}
39053#[doc = "Signed saturating rounding shift left"]
39054#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_s64)"]
39055#[inline]
39056#[target_feature(enable = "neon")]
39057#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39058#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39059#[cfg_attr(
39060 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39061 assert_instr(sqrshl)
39062)]
39063#[cfg_attr(
39064 not(target_arch = "arm"),
39065 stable(feature = "neon_intrinsics", since = "1.59.0")
39066)]
39067#[cfg_attr(
39068 target_arch = "arm",
39069 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39070)]
39071pub fn vqrshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
39072 unsafe extern "unadjusted" {
39073 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v1i64")]
39074 #[cfg_attr(
39075 any(target_arch = "aarch64", target_arch = "arm64ec"),
39076 link_name = "llvm.aarch64.neon.sqrshl.v1i64"
39077 )]
39078 fn _vqrshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t;
39079 }
39080 unsafe { _vqrshl_s64(a, b) }
39081}
39082#[doc = "Signed saturating rounding shift left"]
39083#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_s64)"]
39084#[inline]
39085#[target_feature(enable = "neon")]
39086#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39087#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39088#[cfg_attr(
39089 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39090 assert_instr(sqrshl)
39091)]
39092#[cfg_attr(
39093 not(target_arch = "arm"),
39094 stable(feature = "neon_intrinsics", since = "1.59.0")
39095)]
39096#[cfg_attr(
39097 target_arch = "arm",
39098 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39099)]
39100pub fn vqrshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
39101 unsafe extern "unadjusted" {
39102 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v2i64")]
39103 #[cfg_attr(
39104 any(target_arch = "aarch64", target_arch = "arm64ec"),
39105 link_name = "llvm.aarch64.neon.sqrshl.v2i64"
39106 )]
39107 fn _vqrshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t;
39108 }
39109 unsafe { _vqrshlq_s64(a, b) }
39110}
39111#[doc = "Unsigned signed saturating rounding shift left"]
39112#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_u8)"]
39113#[inline]
39114#[target_feature(enable = "neon")]
39115#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39116#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39117#[cfg_attr(
39118 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39119 assert_instr(uqrshl)
39120)]
39121#[cfg_attr(
39122 not(target_arch = "arm"),
39123 stable(feature = "neon_intrinsics", since = "1.59.0")
39124)]
39125#[cfg_attr(
39126 target_arch = "arm",
39127 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39128)]
39129pub fn vqrshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t {
39130 unsafe extern "unadjusted" {
39131 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v8i8")]
39132 #[cfg_attr(
39133 any(target_arch = "aarch64", target_arch = "arm64ec"),
39134 link_name = "llvm.aarch64.neon.uqrshl.v8i8"
39135 )]
39136 fn _vqrshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t;
39137 }
39138 unsafe { _vqrshl_u8(a, b) }
39139}
39140#[doc = "Unsigned signed saturating rounding shift left"]
39141#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_u8)"]
39142#[inline]
39143#[target_feature(enable = "neon")]
39144#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39145#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39146#[cfg_attr(
39147 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39148 assert_instr(uqrshl)
39149)]
39150#[cfg_attr(
39151 not(target_arch = "arm"),
39152 stable(feature = "neon_intrinsics", since = "1.59.0")
39153)]
39154#[cfg_attr(
39155 target_arch = "arm",
39156 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39157)]
39158pub fn vqrshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t {
39159 unsafe extern "unadjusted" {
39160 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v16i8")]
39161 #[cfg_attr(
39162 any(target_arch = "aarch64", target_arch = "arm64ec"),
39163 link_name = "llvm.aarch64.neon.uqrshl.v16i8"
39164 )]
39165 fn _vqrshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t;
39166 }
39167 unsafe { _vqrshlq_u8(a, b) }
39168}
39169#[doc = "Unsigned signed saturating rounding shift left"]
39170#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_u16)"]
39171#[inline]
39172#[target_feature(enable = "neon")]
39173#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39174#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39175#[cfg_attr(
39176 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39177 assert_instr(uqrshl)
39178)]
39179#[cfg_attr(
39180 not(target_arch = "arm"),
39181 stable(feature = "neon_intrinsics", since = "1.59.0")
39182)]
39183#[cfg_attr(
39184 target_arch = "arm",
39185 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39186)]
39187pub fn vqrshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t {
39188 unsafe extern "unadjusted" {
39189 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v4i16")]
39190 #[cfg_attr(
39191 any(target_arch = "aarch64", target_arch = "arm64ec"),
39192 link_name = "llvm.aarch64.neon.uqrshl.v4i16"
39193 )]
39194 fn _vqrshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t;
39195 }
39196 unsafe { _vqrshl_u16(a, b) }
39197}
39198#[doc = "Unsigned signed saturating rounding shift left"]
39199#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_u16)"]
39200#[inline]
39201#[target_feature(enable = "neon")]
39202#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39203#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39204#[cfg_attr(
39205 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39206 assert_instr(uqrshl)
39207)]
39208#[cfg_attr(
39209 not(target_arch = "arm"),
39210 stable(feature = "neon_intrinsics", since = "1.59.0")
39211)]
39212#[cfg_attr(
39213 target_arch = "arm",
39214 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39215)]
39216pub fn vqrshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t {
39217 unsafe extern "unadjusted" {
39218 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v8i16")]
39219 #[cfg_attr(
39220 any(target_arch = "aarch64", target_arch = "arm64ec"),
39221 link_name = "llvm.aarch64.neon.uqrshl.v8i16"
39222 )]
39223 fn _vqrshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t;
39224 }
39225 unsafe { _vqrshlq_u16(a, b) }
39226}
39227#[doc = "Unsigned signed saturating rounding shift left"]
39228#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_u32)"]
39229#[inline]
39230#[target_feature(enable = "neon")]
39231#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39232#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39233#[cfg_attr(
39234 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39235 assert_instr(uqrshl)
39236)]
39237#[cfg_attr(
39238 not(target_arch = "arm"),
39239 stable(feature = "neon_intrinsics", since = "1.59.0")
39240)]
39241#[cfg_attr(
39242 target_arch = "arm",
39243 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39244)]
39245pub fn vqrshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t {
39246 unsafe extern "unadjusted" {
39247 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v2i32")]
39248 #[cfg_attr(
39249 any(target_arch = "aarch64", target_arch = "arm64ec"),
39250 link_name = "llvm.aarch64.neon.uqrshl.v2i32"
39251 )]
39252 fn _vqrshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t;
39253 }
39254 unsafe { _vqrshl_u32(a, b) }
39255}
39256#[doc = "Unsigned signed saturating rounding shift left"]
39257#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_u32)"]
39258#[inline]
39259#[target_feature(enable = "neon")]
39260#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39261#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39262#[cfg_attr(
39263 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39264 assert_instr(uqrshl)
39265)]
39266#[cfg_attr(
39267 not(target_arch = "arm"),
39268 stable(feature = "neon_intrinsics", since = "1.59.0")
39269)]
39270#[cfg_attr(
39271 target_arch = "arm",
39272 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39273)]
39274pub fn vqrshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t {
39275 unsafe extern "unadjusted" {
39276 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v4i32")]
39277 #[cfg_attr(
39278 any(target_arch = "aarch64", target_arch = "arm64ec"),
39279 link_name = "llvm.aarch64.neon.uqrshl.v4i32"
39280 )]
39281 fn _vqrshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t;
39282 }
39283 unsafe { _vqrshlq_u32(a, b) }
39284}
39285#[doc = "Unsigned signed saturating rounding shift left"]
39286#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_u64)"]
39287#[inline]
39288#[target_feature(enable = "neon")]
39289#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39290#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39291#[cfg_attr(
39292 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39293 assert_instr(uqrshl)
39294)]
39295#[cfg_attr(
39296 not(target_arch = "arm"),
39297 stable(feature = "neon_intrinsics", since = "1.59.0")
39298)]
39299#[cfg_attr(
39300 target_arch = "arm",
39301 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39302)]
39303pub fn vqrshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t {
39304 unsafe extern "unadjusted" {
39305 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v1i64")]
39306 #[cfg_attr(
39307 any(target_arch = "aarch64", target_arch = "arm64ec"),
39308 link_name = "llvm.aarch64.neon.uqrshl.v1i64"
39309 )]
39310 fn _vqrshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t;
39311 }
39312 unsafe { _vqrshl_u64(a, b) }
39313}
39314#[doc = "Unsigned signed saturating rounding shift left"]
39315#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_u64)"]
39316#[inline]
39317#[target_feature(enable = "neon")]
39318#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39319#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39320#[cfg_attr(
39321 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39322 assert_instr(uqrshl)
39323)]
39324#[cfg_attr(
39325 not(target_arch = "arm"),
39326 stable(feature = "neon_intrinsics", since = "1.59.0")
39327)]
39328#[cfg_attr(
39329 target_arch = "arm",
39330 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39331)]
39332pub fn vqrshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t {
39333 unsafe extern "unadjusted" {
39334 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v2i64")]
39335 #[cfg_attr(
39336 any(target_arch = "aarch64", target_arch = "arm64ec"),
39337 link_name = "llvm.aarch64.neon.uqrshl.v2i64"
39338 )]
39339 fn _vqrshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t;
39340 }
39341 unsafe { _vqrshlq_u64(a, b) }
39342}
39343#[doc = "Signed saturating rounded shift right narrow"]
39344#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s16)"]
39345#[inline]
39346#[cfg(target_arch = "arm")]
39347#[target_feature(enable = "neon,v7")]
39348#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
39349#[rustc_legacy_const_generics(1)]
39350#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
39351pub fn vqrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
39352 static_assert!(N >= 1 && N <= 8);
39353 unsafe extern "unadjusted" {
39354 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v8i8")]
39355 fn _vqrshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;
39356 }
39357 unsafe { _vqrshrn_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
39358}
39359#[doc = "Signed saturating rounded shift right narrow"]
39360#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s32)"]
39361#[inline]
39362#[cfg(target_arch = "arm")]
39363#[target_feature(enable = "neon,v7")]
39364#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
39365#[rustc_legacy_const_generics(1)]
39366#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
39367pub fn vqrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
39368 static_assert!(N >= 1 && N <= 16);
39369 unsafe extern "unadjusted" {
39370 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v4i16")]
39371 fn _vqrshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;
39372 }
39373 unsafe { _vqrshrn_n_s32(a, const { int32x4_t([-N; 4]) }) }
39374}
39375#[doc = "Signed saturating rounded shift right narrow"]
39376#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s64)"]
39377#[inline]
39378#[cfg(target_arch = "arm")]
39379#[target_feature(enable = "neon,v7")]
39380#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
39381#[rustc_legacy_const_generics(1)]
39382#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
39383pub fn vqrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
39384 static_assert!(N >= 1 && N <= 32);
39385 unsafe extern "unadjusted" {
39386 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v2i32")]
39387 fn _vqrshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;
39388 }
39389 unsafe { _vqrshrn_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
39390}
39391#[doc = "Signed saturating rounded shift right narrow"]
39392#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s16)"]
39393#[inline]
39394#[target_feature(enable = "neon")]
39395#[cfg(not(target_arch = "arm"))]
39396#[cfg_attr(test, assert_instr(sqrshrn, N = 2))]
39397#[rustc_legacy_const_generics(1)]
39398#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39399pub fn vqrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
39400 static_assert!(N >= 1 && N <= 8);
39401 unsafe extern "unadjusted" {
39402 #[cfg_attr(
39403 any(target_arch = "aarch64", target_arch = "arm64ec"),
39404 link_name = "llvm.aarch64.neon.sqrshrn.v8i8"
39405 )]
39406 fn _vqrshrn_n_s16(a: int16x8_t, n: i32) -> int8x8_t;
39407 }
39408 unsafe { _vqrshrn_n_s16(a, N) }
39409}
39410#[doc = "Signed saturating rounded shift right narrow"]
39411#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s32)"]
39412#[inline]
39413#[target_feature(enable = "neon")]
39414#[cfg(not(target_arch = "arm"))]
39415#[cfg_attr(test, assert_instr(sqrshrn, N = 2))]
39416#[rustc_legacy_const_generics(1)]
39417#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39418pub fn vqrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
39419 static_assert!(N >= 1 && N <= 16);
39420 unsafe extern "unadjusted" {
39421 #[cfg_attr(
39422 any(target_arch = "aarch64", target_arch = "arm64ec"),
39423 link_name = "llvm.aarch64.neon.sqrshrn.v4i16"
39424 )]
39425 fn _vqrshrn_n_s32(a: int32x4_t, n: i32) -> int16x4_t;
39426 }
39427 unsafe { _vqrshrn_n_s32(a, N) }
39428}
39429#[doc = "Signed saturating rounded shift right narrow"]
39430#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s64)"]
39431#[inline]
39432#[target_feature(enable = "neon")]
39433#[cfg(not(target_arch = "arm"))]
39434#[cfg_attr(test, assert_instr(sqrshrn, N = 2))]
39435#[rustc_legacy_const_generics(1)]
39436#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39437pub fn vqrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
39438 static_assert!(N >= 1 && N <= 32);
39439 unsafe extern "unadjusted" {
39440 #[cfg_attr(
39441 any(target_arch = "aarch64", target_arch = "arm64ec"),
39442 link_name = "llvm.aarch64.neon.sqrshrn.v2i32"
39443 )]
39444 fn _vqrshrn_n_s64(a: int64x2_t, n: i32) -> int32x2_t;
39445 }
39446 unsafe { _vqrshrn_n_s64(a, N) }
39447}
39448#[doc = "Unsigned signed saturating rounded shift right narrow"]
39449#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u16)"]
39450#[inline]
39451#[cfg(target_arch = "arm")]
39452#[target_feature(enable = "neon,v7")]
39453#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
39454#[rustc_legacy_const_generics(1)]
39455#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
39456pub fn vqrshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
39457 static_assert!(N >= 1 && N <= 8);
39458 unsafe extern "unadjusted" {
39459 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnu.v8i8")]
39460 fn _vqrshrn_n_u16(a: uint16x8_t, n: uint16x8_t) -> uint8x8_t;
39461 }
39462 unsafe {
39463 _vqrshrn_n_u16(
39464 a,
39465 const {
39466 uint16x8_t([
39467 -N as u16, -N as u16, -N as u16, -N as u16, -N as u16, -N as u16, -N as u16,
39468 -N as u16,
39469 ])
39470 },
39471 )
39472 }
39473}
39474#[doc = "Unsigned signed saturating rounded shift right narrow"]
39475#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u32)"]
39476#[inline]
39477#[cfg(target_arch = "arm")]
39478#[target_feature(enable = "neon,v7")]
39479#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
39480#[rustc_legacy_const_generics(1)]
39481#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
39482pub fn vqrshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
39483 static_assert!(N >= 1 && N <= 16);
39484 unsafe extern "unadjusted" {
39485 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnu.v4i16")]
39486 fn _vqrshrn_n_u32(a: uint32x4_t, n: uint32x4_t) -> uint16x4_t;
39487 }
39488 unsafe {
39489 _vqrshrn_n_u32(
39490 a,
39491 const { uint32x4_t([-N as u32, -N as u32, -N as u32, -N as u32]) },
39492 )
39493 }
39494}
39495#[doc = "Unsigned signed saturating rounded shift right narrow"]
39496#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u64)"]
39497#[inline]
39498#[cfg(target_arch = "arm")]
39499#[target_feature(enable = "neon,v7")]
39500#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
39501#[rustc_legacy_const_generics(1)]
39502#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
39503pub fn vqrshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
39504 static_assert!(N >= 1 && N <= 32);
39505 unsafe extern "unadjusted" {
39506 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnu.v2i32")]
39507 fn _vqrshrn_n_u64(a: uint64x2_t, n: uint64x2_t) -> uint32x2_t;
39508 }
39509 unsafe { _vqrshrn_n_u64(a, const { uint64x2_t([-N as u64, -N as u64]) }) }
39510}
39511#[doc = "Unsigned signed saturating rounded shift right narrow"]
39512#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u16)"]
39513#[inline]
39514#[target_feature(enable = "neon")]
39515#[cfg(not(target_arch = "arm"))]
39516#[cfg_attr(test, assert_instr(uqrshrn, N = 2))]
39517#[rustc_legacy_const_generics(1)]
39518#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39519pub fn vqrshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
39520 static_assert!(N >= 1 && N <= 8);
39521 unsafe extern "unadjusted" {
39522 #[cfg_attr(
39523 any(target_arch = "aarch64", target_arch = "arm64ec"),
39524 link_name = "llvm.aarch64.neon.uqrshrn.v8i8"
39525 )]
39526 fn _vqrshrn_n_u16(a: uint16x8_t, n: i32) -> uint8x8_t;
39527 }
39528 unsafe { _vqrshrn_n_u16(a, N) }
39529}
39530#[doc = "Unsigned signed saturating rounded shift right narrow"]
39531#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u32)"]
39532#[inline]
39533#[target_feature(enable = "neon")]
39534#[cfg(not(target_arch = "arm"))]
39535#[cfg_attr(test, assert_instr(uqrshrn, N = 2))]
39536#[rustc_legacy_const_generics(1)]
39537#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39538pub fn vqrshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
39539 static_assert!(N >= 1 && N <= 16);
39540 unsafe extern "unadjusted" {
39541 #[cfg_attr(
39542 any(target_arch = "aarch64", target_arch = "arm64ec"),
39543 link_name = "llvm.aarch64.neon.uqrshrn.v4i16"
39544 )]
39545 fn _vqrshrn_n_u32(a: uint32x4_t, n: i32) -> uint16x4_t;
39546 }
39547 unsafe { _vqrshrn_n_u32(a, N) }
39548}
39549#[doc = "Unsigned signed saturating rounded shift right narrow"]
39550#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u64)"]
39551#[inline]
39552#[target_feature(enable = "neon")]
39553#[cfg(not(target_arch = "arm"))]
39554#[cfg_attr(test, assert_instr(uqrshrn, N = 2))]
39555#[rustc_legacy_const_generics(1)]
39556#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39557pub fn vqrshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
39558 static_assert!(N >= 1 && N <= 32);
39559 unsafe extern "unadjusted" {
39560 #[cfg_attr(
39561 any(target_arch = "aarch64", target_arch = "arm64ec"),
39562 link_name = "llvm.aarch64.neon.uqrshrn.v2i32"
39563 )]
39564 fn _vqrshrn_n_u64(a: uint64x2_t, n: i32) -> uint32x2_t;
39565 }
39566 unsafe { _vqrshrn_n_u64(a, N) }
39567}
39568#[doc = "Signed saturating rounded shift right unsigned narrow"]
39569#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s16)"]
39570#[inline]
39571#[cfg(target_arch = "arm")]
39572#[target_feature(enable = "neon,v7")]
39573#[cfg_attr(test, assert_instr(vqrshrun, N = 2))]
39574#[rustc_legacy_const_generics(1)]
39575#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
39576pub fn vqrshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
39577 static_assert!(N >= 1 && N <= 8);
39578 unsafe extern "unadjusted" {
39579 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v8i8")]
39580 fn _vqrshrun_n_s16(a: int16x8_t, n: int16x8_t) -> uint8x8_t;
39581 }
39582 unsafe { _vqrshrun_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
39583}
39584#[doc = "Signed saturating rounded shift right unsigned narrow"]
39585#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s32)"]
39586#[inline]
39587#[cfg(target_arch = "arm")]
39588#[target_feature(enable = "neon,v7")]
39589#[cfg_attr(test, assert_instr(vqrshrun, N = 2))]
39590#[rustc_legacy_const_generics(1)]
39591#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
39592pub fn vqrshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
39593 static_assert!(N >= 1 && N <= 16);
39594 unsafe extern "unadjusted" {
39595 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v4i16")]
39596 fn _vqrshrun_n_s32(a: int32x4_t, n: int32x4_t) -> uint16x4_t;
39597 }
39598 unsafe { _vqrshrun_n_s32(a, const { int32x4_t([-N; 4]) }) }
39599}
39600#[doc = "Signed saturating rounded shift right unsigned narrow"]
39601#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s64)"]
39602#[inline]
39603#[cfg(target_arch = "arm")]
39604#[target_feature(enable = "neon,v7")]
39605#[cfg_attr(test, assert_instr(vqrshrun, N = 2))]
39606#[rustc_legacy_const_generics(1)]
39607#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
39608pub fn vqrshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
39609 static_assert!(N >= 1 && N <= 32);
39610 unsafe extern "unadjusted" {
39611 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v2i32")]
39612 fn _vqrshrun_n_s64(a: int64x2_t, n: int64x2_t) -> uint32x2_t;
39613 }
39614 unsafe { _vqrshrun_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
39615}
39616#[doc = "Signed saturating rounded shift right unsigned narrow"]
39617#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s16)"]
39618#[inline]
39619#[target_feature(enable = "neon")]
39620#[cfg(not(target_arch = "arm"))]
39621#[cfg_attr(test, assert_instr(sqrshrun, N = 2))]
39622#[rustc_legacy_const_generics(1)]
39623#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39624pub fn vqrshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
39625 static_assert!(N >= 1 && N <= 8);
39626 unsafe extern "unadjusted" {
39627 #[cfg_attr(
39628 any(target_arch = "aarch64", target_arch = "arm64ec"),
39629 link_name = "llvm.aarch64.neon.sqrshrun.v8i8"
39630 )]
39631 fn _vqrshrun_n_s16(a: int16x8_t, n: i32) -> uint8x8_t;
39632 }
39633 unsafe { _vqrshrun_n_s16(a, N) }
39634}
39635#[doc = "Signed saturating rounded shift right unsigned narrow"]
39636#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s32)"]
39637#[inline]
39638#[target_feature(enable = "neon")]
39639#[cfg(not(target_arch = "arm"))]
39640#[cfg_attr(test, assert_instr(sqrshrun, N = 2))]
39641#[rustc_legacy_const_generics(1)]
39642#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39643pub fn vqrshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
39644 static_assert!(N >= 1 && N <= 16);
39645 unsafe extern "unadjusted" {
39646 #[cfg_attr(
39647 any(target_arch = "aarch64", target_arch = "arm64ec"),
39648 link_name = "llvm.aarch64.neon.sqrshrun.v4i16"
39649 )]
39650 fn _vqrshrun_n_s32(a: int32x4_t, n: i32) -> uint16x4_t;
39651 }
39652 unsafe { _vqrshrun_n_s32(a, N) }
39653}
39654#[doc = "Signed saturating rounded shift right unsigned narrow"]
39655#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s64)"]
39656#[inline]
39657#[target_feature(enable = "neon")]
39658#[cfg(not(target_arch = "arm"))]
39659#[cfg_attr(test, assert_instr(sqrshrun, N = 2))]
39660#[rustc_legacy_const_generics(1)]
39661#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39662pub fn vqrshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
39663 static_assert!(N >= 1 && N <= 32);
39664 unsafe extern "unadjusted" {
39665 #[cfg_attr(
39666 any(target_arch = "aarch64", target_arch = "arm64ec"),
39667 link_name = "llvm.aarch64.neon.sqrshrun.v2i32"
39668 )]
39669 fn _vqrshrun_n_s64(a: int64x2_t, n: i32) -> uint32x2_t;
39670 }
39671 unsafe { _vqrshrun_n_s64(a, N) }
39672}
39673#[doc = "Signed saturating shift left"]
39674#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_s8)"]
39675#[inline]
39676#[target_feature(enable = "neon")]
39677#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39678#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
39679#[cfg_attr(
39680 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39681 assert_instr(sqshl, N = 2)
39682)]
39683#[rustc_legacy_const_generics(1)]
39684#[cfg_attr(
39685 not(target_arch = "arm"),
39686 stable(feature = "neon_intrinsics", since = "1.59.0")
39687)]
39688#[cfg_attr(
39689 target_arch = "arm",
39690 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39691)]
39692pub fn vqshl_n_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
39693 static_assert_uimm_bits!(N, 3);
39694 vqshl_s8(a, vdup_n_s8(N as _))
39695}
39696#[doc = "Signed saturating shift left"]
39697#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_s8)"]
39698#[inline]
39699#[target_feature(enable = "neon")]
39700#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39701#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
39702#[cfg_attr(
39703 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39704 assert_instr(sqshl, N = 2)
39705)]
39706#[rustc_legacy_const_generics(1)]
39707#[cfg_attr(
39708 not(target_arch = "arm"),
39709 stable(feature = "neon_intrinsics", since = "1.59.0")
39710)]
39711#[cfg_attr(
39712 target_arch = "arm",
39713 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39714)]
39715pub fn vqshlq_n_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
39716 static_assert_uimm_bits!(N, 3);
39717 vqshlq_s8(a, vdupq_n_s8(N as _))
39718}
39719#[doc = "Signed saturating shift left"]
39720#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_s16)"]
39721#[inline]
39722#[target_feature(enable = "neon")]
39723#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39724#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
39725#[cfg_attr(
39726 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39727 assert_instr(sqshl, N = 2)
39728)]
39729#[rustc_legacy_const_generics(1)]
39730#[cfg_attr(
39731 not(target_arch = "arm"),
39732 stable(feature = "neon_intrinsics", since = "1.59.0")
39733)]
39734#[cfg_attr(
39735 target_arch = "arm",
39736 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39737)]
39738pub fn vqshl_n_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
39739 static_assert_uimm_bits!(N, 4);
39740 vqshl_s16(a, vdup_n_s16(N as _))
39741}
39742#[doc = "Signed saturating shift left"]
39743#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_s16)"]
39744#[inline]
39745#[target_feature(enable = "neon")]
39746#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39747#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
39748#[cfg_attr(
39749 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39750 assert_instr(sqshl, N = 2)
39751)]
39752#[rustc_legacy_const_generics(1)]
39753#[cfg_attr(
39754 not(target_arch = "arm"),
39755 stable(feature = "neon_intrinsics", since = "1.59.0")
39756)]
39757#[cfg_attr(
39758 target_arch = "arm",
39759 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39760)]
39761pub fn vqshlq_n_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
39762 static_assert_uimm_bits!(N, 4);
39763 vqshlq_s16(a, vdupq_n_s16(N as _))
39764}
39765#[doc = "Signed saturating shift left"]
39766#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_s32)"]
39767#[inline]
39768#[target_feature(enable = "neon")]
39769#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39770#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
39771#[cfg_attr(
39772 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39773 assert_instr(sqshl, N = 2)
39774)]
39775#[rustc_legacy_const_generics(1)]
39776#[cfg_attr(
39777 not(target_arch = "arm"),
39778 stable(feature = "neon_intrinsics", since = "1.59.0")
39779)]
39780#[cfg_attr(
39781 target_arch = "arm",
39782 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39783)]
39784pub fn vqshl_n_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
39785 static_assert_uimm_bits!(N, 5);
39786 vqshl_s32(a, vdup_n_s32(N as _))
39787}
39788#[doc = "Signed saturating shift left"]
39789#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_s32)"]
39790#[inline]
39791#[target_feature(enable = "neon")]
39792#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39793#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
39794#[cfg_attr(
39795 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39796 assert_instr(sqshl, N = 2)
39797)]
39798#[rustc_legacy_const_generics(1)]
39799#[cfg_attr(
39800 not(target_arch = "arm"),
39801 stable(feature = "neon_intrinsics", since = "1.59.0")
39802)]
39803#[cfg_attr(
39804 target_arch = "arm",
39805 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39806)]
39807pub fn vqshlq_n_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
39808 static_assert_uimm_bits!(N, 5);
39809 vqshlq_s32(a, vdupq_n_s32(N as _))
39810}
39811#[doc = "Signed saturating shift left"]
39812#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_s64)"]
39813#[inline]
39814#[target_feature(enable = "neon")]
39815#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39816#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
39817#[cfg_attr(
39818 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39819 assert_instr(sqshl, N = 2)
39820)]
39821#[rustc_legacy_const_generics(1)]
39822#[cfg_attr(
39823 not(target_arch = "arm"),
39824 stable(feature = "neon_intrinsics", since = "1.59.0")
39825)]
39826#[cfg_attr(
39827 target_arch = "arm",
39828 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39829)]
39830pub fn vqshl_n_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
39831 static_assert_uimm_bits!(N, 6);
39832 vqshl_s64(a, vdup_n_s64(N as _))
39833}
39834#[doc = "Signed saturating shift left"]
39835#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_s64)"]
39836#[inline]
39837#[target_feature(enable = "neon")]
39838#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39839#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
39840#[cfg_attr(
39841 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39842 assert_instr(sqshl, N = 2)
39843)]
39844#[rustc_legacy_const_generics(1)]
39845#[cfg_attr(
39846 not(target_arch = "arm"),
39847 stable(feature = "neon_intrinsics", since = "1.59.0")
39848)]
39849#[cfg_attr(
39850 target_arch = "arm",
39851 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39852)]
39853pub fn vqshlq_n_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
39854 static_assert_uimm_bits!(N, 6);
39855 vqshlq_s64(a, vdupq_n_s64(N as _))
39856}
39857#[doc = "Unsigned saturating shift left"]
39858#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_u8)"]
39859#[inline]
39860#[target_feature(enable = "neon")]
39861#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39862#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
39863#[cfg_attr(
39864 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39865 assert_instr(uqshl, N = 2)
39866)]
39867#[rustc_legacy_const_generics(1)]
39868#[cfg_attr(
39869 not(target_arch = "arm"),
39870 stable(feature = "neon_intrinsics", since = "1.59.0")
39871)]
39872#[cfg_attr(
39873 target_arch = "arm",
39874 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39875)]
39876pub fn vqshl_n_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
39877 static_assert_uimm_bits!(N, 3);
39878 vqshl_u8(a, vdup_n_s8(N as _))
39879}
39880#[doc = "Unsigned saturating shift left"]
39881#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_u8)"]
39882#[inline]
39883#[target_feature(enable = "neon")]
39884#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39885#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
39886#[cfg_attr(
39887 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39888 assert_instr(uqshl, N = 2)
39889)]
39890#[rustc_legacy_const_generics(1)]
39891#[cfg_attr(
39892 not(target_arch = "arm"),
39893 stable(feature = "neon_intrinsics", since = "1.59.0")
39894)]
39895#[cfg_attr(
39896 target_arch = "arm",
39897 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39898)]
39899pub fn vqshlq_n_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
39900 static_assert_uimm_bits!(N, 3);
39901 vqshlq_u8(a, vdupq_n_s8(N as _))
39902}
39903#[doc = "Unsigned saturating shift left"]
39904#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_u16)"]
39905#[inline]
39906#[target_feature(enable = "neon")]
39907#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39908#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
39909#[cfg_attr(
39910 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39911 assert_instr(uqshl, N = 2)
39912)]
39913#[rustc_legacy_const_generics(1)]
39914#[cfg_attr(
39915 not(target_arch = "arm"),
39916 stable(feature = "neon_intrinsics", since = "1.59.0")
39917)]
39918#[cfg_attr(
39919 target_arch = "arm",
39920 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39921)]
39922pub fn vqshl_n_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
39923 static_assert_uimm_bits!(N, 4);
39924 vqshl_u16(a, vdup_n_s16(N as _))
39925}
39926#[doc = "Unsigned saturating shift left"]
39927#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_u16)"]
39928#[inline]
39929#[target_feature(enable = "neon")]
39930#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39931#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
39932#[cfg_attr(
39933 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39934 assert_instr(uqshl, N = 2)
39935)]
39936#[rustc_legacy_const_generics(1)]
39937#[cfg_attr(
39938 not(target_arch = "arm"),
39939 stable(feature = "neon_intrinsics", since = "1.59.0")
39940)]
39941#[cfg_attr(
39942 target_arch = "arm",
39943 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39944)]
39945pub fn vqshlq_n_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
39946 static_assert_uimm_bits!(N, 4);
39947 vqshlq_u16(a, vdupq_n_s16(N as _))
39948}
39949#[doc = "Unsigned saturating shift left"]
39950#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_u32)"]
39951#[inline]
39952#[target_feature(enable = "neon")]
39953#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39954#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
39955#[cfg_attr(
39956 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39957 assert_instr(uqshl, N = 2)
39958)]
39959#[rustc_legacy_const_generics(1)]
39960#[cfg_attr(
39961 not(target_arch = "arm"),
39962 stable(feature = "neon_intrinsics", since = "1.59.0")
39963)]
39964#[cfg_attr(
39965 target_arch = "arm",
39966 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39967)]
39968pub fn vqshl_n_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
39969 static_assert_uimm_bits!(N, 5);
39970 vqshl_u32(a, vdup_n_s32(N as _))
39971}
39972#[doc = "Unsigned saturating shift left"]
39973#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_u32)"]
39974#[inline]
39975#[target_feature(enable = "neon")]
39976#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39977#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
39978#[cfg_attr(
39979 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39980 assert_instr(uqshl, N = 2)
39981)]
39982#[rustc_legacy_const_generics(1)]
39983#[cfg_attr(
39984 not(target_arch = "arm"),
39985 stable(feature = "neon_intrinsics", since = "1.59.0")
39986)]
39987#[cfg_attr(
39988 target_arch = "arm",
39989 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39990)]
39991pub fn vqshlq_n_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
39992 static_assert_uimm_bits!(N, 5);
39993 vqshlq_u32(a, vdupq_n_s32(N as _))
39994}
39995#[doc = "Unsigned saturating shift left"]
39996#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_u64)"]
39997#[inline]
39998#[target_feature(enable = "neon")]
39999#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40000#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
40001#[cfg_attr(
40002 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40003 assert_instr(uqshl, N = 2)
40004)]
40005#[rustc_legacy_const_generics(1)]
40006#[cfg_attr(
40007 not(target_arch = "arm"),
40008 stable(feature = "neon_intrinsics", since = "1.59.0")
40009)]
40010#[cfg_attr(
40011 target_arch = "arm",
40012 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40013)]
40014pub fn vqshl_n_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
40015 static_assert_uimm_bits!(N, 6);
40016 vqshl_u64(a, vdup_n_s64(N as _))
40017}
40018#[doc = "Unsigned saturating shift left"]
40019#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_u64)"]
40020#[inline]
40021#[target_feature(enable = "neon")]
40022#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40023#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
40024#[cfg_attr(
40025 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40026 assert_instr(uqshl, N = 2)
40027)]
40028#[rustc_legacy_const_generics(1)]
40029#[cfg_attr(
40030 not(target_arch = "arm"),
40031 stable(feature = "neon_intrinsics", since = "1.59.0")
40032)]
40033#[cfg_attr(
40034 target_arch = "arm",
40035 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40036)]
40037pub fn vqshlq_n_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
40038 static_assert_uimm_bits!(N, 6);
40039 vqshlq_u64(a, vdupq_n_s64(N as _))
40040}
40041#[doc = "Signed saturating shift left"]
40042#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_s8)"]
40043#[inline]
40044#[target_feature(enable = "neon")]
40045#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40046#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40047#[cfg_attr(
40048 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40049 assert_instr(sqshl)
40050)]
40051#[cfg_attr(
40052 not(target_arch = "arm"),
40053 stable(feature = "neon_intrinsics", since = "1.59.0")
40054)]
40055#[cfg_attr(
40056 target_arch = "arm",
40057 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40058)]
40059pub fn vqshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
40060 unsafe extern "unadjusted" {
40061 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v8i8")]
40062 #[cfg_attr(
40063 any(target_arch = "aarch64", target_arch = "arm64ec"),
40064 link_name = "llvm.aarch64.neon.sqshl.v8i8"
40065 )]
40066 fn _vqshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
40067 }
40068 unsafe { _vqshl_s8(a, b) }
40069}
40070#[doc = "Signed saturating shift left"]
40071#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_s8)"]
40072#[inline]
40073#[target_feature(enable = "neon")]
40074#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40075#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40076#[cfg_attr(
40077 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40078 assert_instr(sqshl)
40079)]
40080#[cfg_attr(
40081 not(target_arch = "arm"),
40082 stable(feature = "neon_intrinsics", since = "1.59.0")
40083)]
40084#[cfg_attr(
40085 target_arch = "arm",
40086 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40087)]
40088pub fn vqshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
40089 unsafe extern "unadjusted" {
40090 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v16i8")]
40091 #[cfg_attr(
40092 any(target_arch = "aarch64", target_arch = "arm64ec"),
40093 link_name = "llvm.aarch64.neon.sqshl.v16i8"
40094 )]
40095 fn _vqshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
40096 }
40097 unsafe { _vqshlq_s8(a, b) }
40098}
40099#[doc = "Signed saturating shift left"]
40100#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_s16)"]
40101#[inline]
40102#[target_feature(enable = "neon")]
40103#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40104#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40105#[cfg_attr(
40106 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40107 assert_instr(sqshl)
40108)]
40109#[cfg_attr(
40110 not(target_arch = "arm"),
40111 stable(feature = "neon_intrinsics", since = "1.59.0")
40112)]
40113#[cfg_attr(
40114 target_arch = "arm",
40115 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40116)]
40117pub fn vqshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
40118 unsafe extern "unadjusted" {
40119 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v4i16")]
40120 #[cfg_attr(
40121 any(target_arch = "aarch64", target_arch = "arm64ec"),
40122 link_name = "llvm.aarch64.neon.sqshl.v4i16"
40123 )]
40124 fn _vqshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
40125 }
40126 unsafe { _vqshl_s16(a, b) }
40127}
40128#[doc = "Signed saturating shift left"]
40129#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_s16)"]
40130#[inline]
40131#[target_feature(enable = "neon")]
40132#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40133#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40134#[cfg_attr(
40135 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40136 assert_instr(sqshl)
40137)]
40138#[cfg_attr(
40139 not(target_arch = "arm"),
40140 stable(feature = "neon_intrinsics", since = "1.59.0")
40141)]
40142#[cfg_attr(
40143 target_arch = "arm",
40144 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40145)]
40146pub fn vqshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
40147 unsafe extern "unadjusted" {
40148 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v8i16")]
40149 #[cfg_attr(
40150 any(target_arch = "aarch64", target_arch = "arm64ec"),
40151 link_name = "llvm.aarch64.neon.sqshl.v8i16"
40152 )]
40153 fn _vqshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
40154 }
40155 unsafe { _vqshlq_s16(a, b) }
40156}
40157#[doc = "Signed saturating shift left"]
40158#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_s32)"]
40159#[inline]
40160#[target_feature(enable = "neon")]
40161#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40162#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40163#[cfg_attr(
40164 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40165 assert_instr(sqshl)
40166)]
40167#[cfg_attr(
40168 not(target_arch = "arm"),
40169 stable(feature = "neon_intrinsics", since = "1.59.0")
40170)]
40171#[cfg_attr(
40172 target_arch = "arm",
40173 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40174)]
40175pub fn vqshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
40176 unsafe extern "unadjusted" {
40177 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v2i32")]
40178 #[cfg_attr(
40179 any(target_arch = "aarch64", target_arch = "arm64ec"),
40180 link_name = "llvm.aarch64.neon.sqshl.v2i32"
40181 )]
40182 fn _vqshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
40183 }
40184 unsafe { _vqshl_s32(a, b) }
40185}
40186#[doc = "Signed saturating shift left"]
40187#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_s32)"]
40188#[inline]
40189#[target_feature(enable = "neon")]
40190#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40191#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40192#[cfg_attr(
40193 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40194 assert_instr(sqshl)
40195)]
40196#[cfg_attr(
40197 not(target_arch = "arm"),
40198 stable(feature = "neon_intrinsics", since = "1.59.0")
40199)]
40200#[cfg_attr(
40201 target_arch = "arm",
40202 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40203)]
40204pub fn vqshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
40205 unsafe extern "unadjusted" {
40206 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v4i32")]
40207 #[cfg_attr(
40208 any(target_arch = "aarch64", target_arch = "arm64ec"),
40209 link_name = "llvm.aarch64.neon.sqshl.v4i32"
40210 )]
40211 fn _vqshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
40212 }
40213 unsafe { _vqshlq_s32(a, b) }
40214}
40215#[doc = "Signed saturating shift left"]
40216#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_s64)"]
40217#[inline]
40218#[target_feature(enable = "neon")]
40219#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40220#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40221#[cfg_attr(
40222 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40223 assert_instr(sqshl)
40224)]
40225#[cfg_attr(
40226 not(target_arch = "arm"),
40227 stable(feature = "neon_intrinsics", since = "1.59.0")
40228)]
40229#[cfg_attr(
40230 target_arch = "arm",
40231 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40232)]
40233pub fn vqshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
40234 unsafe extern "unadjusted" {
40235 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v1i64")]
40236 #[cfg_attr(
40237 any(target_arch = "aarch64", target_arch = "arm64ec"),
40238 link_name = "llvm.aarch64.neon.sqshl.v1i64"
40239 )]
40240 fn _vqshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t;
40241 }
40242 unsafe { _vqshl_s64(a, b) }
40243}
40244#[doc = "Signed saturating shift left"]
40245#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_s64)"]
40246#[inline]
40247#[target_feature(enable = "neon")]
40248#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40249#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40250#[cfg_attr(
40251 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40252 assert_instr(sqshl)
40253)]
40254#[cfg_attr(
40255 not(target_arch = "arm"),
40256 stable(feature = "neon_intrinsics", since = "1.59.0")
40257)]
40258#[cfg_attr(
40259 target_arch = "arm",
40260 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40261)]
40262pub fn vqshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
40263 unsafe extern "unadjusted" {
40264 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v2i64")]
40265 #[cfg_attr(
40266 any(target_arch = "aarch64", target_arch = "arm64ec"),
40267 link_name = "llvm.aarch64.neon.sqshl.v2i64"
40268 )]
40269 fn _vqshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t;
40270 }
40271 unsafe { _vqshlq_s64(a, b) }
40272}
40273#[doc = "Unsigned saturating shift left"]
40274#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_u8)"]
40275#[inline]
40276#[target_feature(enable = "neon")]
40277#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40278#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40279#[cfg_attr(
40280 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40281 assert_instr(uqshl)
40282)]
40283#[cfg_attr(
40284 not(target_arch = "arm"),
40285 stable(feature = "neon_intrinsics", since = "1.59.0")
40286)]
40287#[cfg_attr(
40288 target_arch = "arm",
40289 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40290)]
40291pub fn vqshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t {
40292 unsafe extern "unadjusted" {
40293 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v8i8")]
40294 #[cfg_attr(
40295 any(target_arch = "aarch64", target_arch = "arm64ec"),
40296 link_name = "llvm.aarch64.neon.uqshl.v8i8"
40297 )]
40298 fn _vqshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t;
40299 }
40300 unsafe { _vqshl_u8(a, b) }
40301}
40302#[doc = "Unsigned saturating shift left"]
40303#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_u8)"]
40304#[inline]
40305#[target_feature(enable = "neon")]
40306#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40307#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40308#[cfg_attr(
40309 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40310 assert_instr(uqshl)
40311)]
40312#[cfg_attr(
40313 not(target_arch = "arm"),
40314 stable(feature = "neon_intrinsics", since = "1.59.0")
40315)]
40316#[cfg_attr(
40317 target_arch = "arm",
40318 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40319)]
40320pub fn vqshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t {
40321 unsafe extern "unadjusted" {
40322 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v16i8")]
40323 #[cfg_attr(
40324 any(target_arch = "aarch64", target_arch = "arm64ec"),
40325 link_name = "llvm.aarch64.neon.uqshl.v16i8"
40326 )]
40327 fn _vqshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t;
40328 }
40329 unsafe { _vqshlq_u8(a, b) }
40330}
40331#[doc = "Unsigned saturating shift left"]
40332#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_u16)"]
40333#[inline]
40334#[target_feature(enable = "neon")]
40335#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40336#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40337#[cfg_attr(
40338 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40339 assert_instr(uqshl)
40340)]
40341#[cfg_attr(
40342 not(target_arch = "arm"),
40343 stable(feature = "neon_intrinsics", since = "1.59.0")
40344)]
40345#[cfg_attr(
40346 target_arch = "arm",
40347 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40348)]
40349pub fn vqshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t {
40350 unsafe extern "unadjusted" {
40351 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v4i16")]
40352 #[cfg_attr(
40353 any(target_arch = "aarch64", target_arch = "arm64ec"),
40354 link_name = "llvm.aarch64.neon.uqshl.v4i16"
40355 )]
40356 fn _vqshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t;
40357 }
40358 unsafe { _vqshl_u16(a, b) }
40359}
40360#[doc = "Unsigned saturating shift left"]
40361#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_u16)"]
40362#[inline]
40363#[target_feature(enable = "neon")]
40364#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40365#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40366#[cfg_attr(
40367 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40368 assert_instr(uqshl)
40369)]
40370#[cfg_attr(
40371 not(target_arch = "arm"),
40372 stable(feature = "neon_intrinsics", since = "1.59.0")
40373)]
40374#[cfg_attr(
40375 target_arch = "arm",
40376 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40377)]
40378pub fn vqshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t {
40379 unsafe extern "unadjusted" {
40380 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v8i16")]
40381 #[cfg_attr(
40382 any(target_arch = "aarch64", target_arch = "arm64ec"),
40383 link_name = "llvm.aarch64.neon.uqshl.v8i16"
40384 )]
40385 fn _vqshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t;
40386 }
40387 unsafe { _vqshlq_u16(a, b) }
40388}
40389#[doc = "Unsigned saturating shift left"]
40390#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_u32)"]
40391#[inline]
40392#[target_feature(enable = "neon")]
40393#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40394#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40395#[cfg_attr(
40396 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40397 assert_instr(uqshl)
40398)]
40399#[cfg_attr(
40400 not(target_arch = "arm"),
40401 stable(feature = "neon_intrinsics", since = "1.59.0")
40402)]
40403#[cfg_attr(
40404 target_arch = "arm",
40405 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40406)]
40407pub fn vqshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t {
40408 unsafe extern "unadjusted" {
40409 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v2i32")]
40410 #[cfg_attr(
40411 any(target_arch = "aarch64", target_arch = "arm64ec"),
40412 link_name = "llvm.aarch64.neon.uqshl.v2i32"
40413 )]
40414 fn _vqshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t;
40415 }
40416 unsafe { _vqshl_u32(a, b) }
40417}
40418#[doc = "Unsigned saturating shift left"]
40419#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_u32)"]
40420#[inline]
40421#[target_feature(enable = "neon")]
40422#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40423#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40424#[cfg_attr(
40425 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40426 assert_instr(uqshl)
40427)]
40428#[cfg_attr(
40429 not(target_arch = "arm"),
40430 stable(feature = "neon_intrinsics", since = "1.59.0")
40431)]
40432#[cfg_attr(
40433 target_arch = "arm",
40434 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40435)]
40436pub fn vqshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t {
40437 unsafe extern "unadjusted" {
40438 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v4i32")]
40439 #[cfg_attr(
40440 any(target_arch = "aarch64", target_arch = "arm64ec"),
40441 link_name = "llvm.aarch64.neon.uqshl.v4i32"
40442 )]
40443 fn _vqshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t;
40444 }
40445 unsafe { _vqshlq_u32(a, b) }
40446}
40447#[doc = "Unsigned saturating shift left"]
40448#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_u64)"]
40449#[inline]
40450#[target_feature(enable = "neon")]
40451#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40452#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40453#[cfg_attr(
40454 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40455 assert_instr(uqshl)
40456)]
40457#[cfg_attr(
40458 not(target_arch = "arm"),
40459 stable(feature = "neon_intrinsics", since = "1.59.0")
40460)]
40461#[cfg_attr(
40462 target_arch = "arm",
40463 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40464)]
40465pub fn vqshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t {
40466 unsafe extern "unadjusted" {
40467 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v1i64")]
40468 #[cfg_attr(
40469 any(target_arch = "aarch64", target_arch = "arm64ec"),
40470 link_name = "llvm.aarch64.neon.uqshl.v1i64"
40471 )]
40472 fn _vqshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t;
40473 }
40474 unsafe { _vqshl_u64(a, b) }
40475}
40476#[doc = "Unsigned saturating shift left"]
40477#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_u64)"]
40478#[inline]
40479#[target_feature(enable = "neon")]
40480#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40481#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40482#[cfg_attr(
40483 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40484 assert_instr(uqshl)
40485)]
40486#[cfg_attr(
40487 not(target_arch = "arm"),
40488 stable(feature = "neon_intrinsics", since = "1.59.0")
40489)]
40490#[cfg_attr(
40491 target_arch = "arm",
40492 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40493)]
40494pub fn vqshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t {
40495 unsafe extern "unadjusted" {
40496 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v2i64")]
40497 #[cfg_attr(
40498 any(target_arch = "aarch64", target_arch = "arm64ec"),
40499 link_name = "llvm.aarch64.neon.uqshl.v2i64"
40500 )]
40501 fn _vqshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t;
40502 }
40503 unsafe { _vqshlq_u64(a, b) }
40504}
40505#[doc = "Signed saturating shift left unsigned"]
40506#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s8)"]
40507#[inline]
40508#[cfg(target_arch = "arm")]
40509#[target_feature(enable = "neon,v7")]
40510#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
40511#[rustc_legacy_const_generics(1)]
40512#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40513pub fn vqshlu_n_s8<const N: i32>(a: int8x8_t) -> uint8x8_t {
40514 static_assert_uimm_bits!(N, 3);
40515 unsafe extern "unadjusted" {
40516 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v8i8")]
40517 fn _vqshlu_n_s8(a: int8x8_t, n: int8x8_t) -> uint8x8_t;
40518 }
40519 unsafe { _vqshlu_n_s8(a, const { int8x8_t([N as i8; 8]) }) }
40520}
40521#[doc = "Signed saturating shift left unsigned"]
40522#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s8)"]
40523#[inline]
40524#[cfg(target_arch = "arm")]
40525#[target_feature(enable = "neon,v7")]
40526#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
40527#[rustc_legacy_const_generics(1)]
40528#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40529pub fn vqshluq_n_s8<const N: i32>(a: int8x16_t) -> uint8x16_t {
40530 static_assert_uimm_bits!(N, 3);
40531 unsafe extern "unadjusted" {
40532 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v16i8")]
40533 fn _vqshluq_n_s8(a: int8x16_t, n: int8x16_t) -> uint8x16_t;
40534 }
40535 unsafe { _vqshluq_n_s8(a, const { int8x16_t([N as i8; 16]) }) }
40536}
40537#[doc = "Signed saturating shift left unsigned"]
40538#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s16)"]
40539#[inline]
40540#[cfg(target_arch = "arm")]
40541#[target_feature(enable = "neon,v7")]
40542#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
40543#[rustc_legacy_const_generics(1)]
40544#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40545pub fn vqshlu_n_s16<const N: i32>(a: int16x4_t) -> uint16x4_t {
40546 static_assert_uimm_bits!(N, 4);
40547 unsafe extern "unadjusted" {
40548 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v4i16")]
40549 fn _vqshlu_n_s16(a: int16x4_t, n: int16x4_t) -> uint16x4_t;
40550 }
40551 unsafe { _vqshlu_n_s16(a, const { int16x4_t([N as i16; 4]) }) }
40552}
40553#[doc = "Signed saturating shift left unsigned"]
40554#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s16)"]
40555#[inline]
40556#[cfg(target_arch = "arm")]
40557#[target_feature(enable = "neon,v7")]
40558#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
40559#[rustc_legacy_const_generics(1)]
40560#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40561pub fn vqshluq_n_s16<const N: i32>(a: int16x8_t) -> uint16x8_t {
40562 static_assert_uimm_bits!(N, 4);
40563 unsafe extern "unadjusted" {
40564 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v8i16")]
40565 fn _vqshluq_n_s16(a: int16x8_t, n: int16x8_t) -> uint16x8_t;
40566 }
40567 unsafe { _vqshluq_n_s16(a, const { int16x8_t([N as i16; 8]) }) }
40568}
40569#[doc = "Signed saturating shift left unsigned"]
40570#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s32)"]
40571#[inline]
40572#[cfg(target_arch = "arm")]
40573#[target_feature(enable = "neon,v7")]
40574#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
40575#[rustc_legacy_const_generics(1)]
40576#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40577pub fn vqshlu_n_s32<const N: i32>(a: int32x2_t) -> uint32x2_t {
40578 static_assert_uimm_bits!(N, 5);
40579 unsafe extern "unadjusted" {
40580 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v2i32")]
40581 fn _vqshlu_n_s32(a: int32x2_t, n: int32x2_t) -> uint32x2_t;
40582 }
40583 unsafe { _vqshlu_n_s32(a, const { int32x2_t([N; 2]) }) }
40584}
40585#[doc = "Signed saturating shift left unsigned"]
40586#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s32)"]
40587#[inline]
40588#[cfg(target_arch = "arm")]
40589#[target_feature(enable = "neon,v7")]
40590#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
40591#[rustc_legacy_const_generics(1)]
40592#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40593pub fn vqshluq_n_s32<const N: i32>(a: int32x4_t) -> uint32x4_t {
40594 static_assert_uimm_bits!(N, 5);
40595 unsafe extern "unadjusted" {
40596 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v4i32")]
40597 fn _vqshluq_n_s32(a: int32x4_t, n: int32x4_t) -> uint32x4_t;
40598 }
40599 unsafe { _vqshluq_n_s32(a, const { int32x4_t([N; 4]) }) }
40600}
40601#[doc = "Signed saturating shift left unsigned"]
40602#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s64)"]
40603#[inline]
40604#[cfg(target_arch = "arm")]
40605#[target_feature(enable = "neon,v7")]
40606#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
40607#[rustc_legacy_const_generics(1)]
40608#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40609pub fn vqshlu_n_s64<const N: i32>(a: int64x1_t) -> uint64x1_t {
40610 static_assert_uimm_bits!(N, 6);
40611 unsafe extern "unadjusted" {
40612 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v1i64")]
40613 fn _vqshlu_n_s64(a: int64x1_t, n: int64x1_t) -> uint64x1_t;
40614 }
40615 unsafe { _vqshlu_n_s64(a, const { int64x1_t([N as i64]) }) }
40616}
40617#[doc = "Signed saturating shift left unsigned"]
40618#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s64)"]
40619#[inline]
40620#[cfg(target_arch = "arm")]
40621#[target_feature(enable = "neon,v7")]
40622#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
40623#[rustc_legacy_const_generics(1)]
40624#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40625pub fn vqshluq_n_s64<const N: i32>(a: int64x2_t) -> uint64x2_t {
40626 static_assert_uimm_bits!(N, 6);
40627 unsafe extern "unadjusted" {
40628 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v2i64")]
40629 fn _vqshluq_n_s64(a: int64x2_t, n: int64x2_t) -> uint64x2_t;
40630 }
40631 unsafe { _vqshluq_n_s64(a, const { int64x2_t([N as i64; 2]) }) }
40632}
40633#[doc = "Signed saturating shift left unsigned"]
40634#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s8)"]
40635#[inline]
40636#[target_feature(enable = "neon")]
40637#[cfg(not(target_arch = "arm"))]
40638#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
40639#[rustc_legacy_const_generics(1)]
40640#[stable(feature = "neon_intrinsics", since = "1.59.0")]
40641pub fn vqshlu_n_s8<const N: i32>(a: int8x8_t) -> uint8x8_t {
40642 static_assert_uimm_bits!(N, 3);
40643 unsafe extern "unadjusted" {
40644 #[cfg_attr(
40645 any(target_arch = "aarch64", target_arch = "arm64ec"),
40646 link_name = "llvm.aarch64.neon.sqshlu.v8i8"
40647 )]
40648 fn _vqshlu_n_s8(a: int8x8_t, n: int8x8_t) -> uint8x8_t;
40649 }
40650 unsafe { _vqshlu_n_s8(a, const { int8x8_t([N as i8; 8]) }) }
40651}
40652#[doc = "Signed saturating shift left unsigned"]
40653#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s8)"]
40654#[inline]
40655#[target_feature(enable = "neon")]
40656#[cfg(not(target_arch = "arm"))]
40657#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
40658#[rustc_legacy_const_generics(1)]
40659#[stable(feature = "neon_intrinsics", since = "1.59.0")]
40660pub fn vqshluq_n_s8<const N: i32>(a: int8x16_t) -> uint8x16_t {
40661 static_assert_uimm_bits!(N, 3);
40662 unsafe extern "unadjusted" {
40663 #[cfg_attr(
40664 any(target_arch = "aarch64", target_arch = "arm64ec"),
40665 link_name = "llvm.aarch64.neon.sqshlu.v16i8"
40666 )]
40667 fn _vqshluq_n_s8(a: int8x16_t, n: int8x16_t) -> uint8x16_t;
40668 }
40669 unsafe { _vqshluq_n_s8(a, const { int8x16_t([N as i8; 16]) }) }
40670}
40671#[doc = "Signed saturating shift left unsigned"]
40672#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s16)"]
40673#[inline]
40674#[target_feature(enable = "neon")]
40675#[cfg(not(target_arch = "arm"))]
40676#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
40677#[rustc_legacy_const_generics(1)]
40678#[stable(feature = "neon_intrinsics", since = "1.59.0")]
40679pub fn vqshlu_n_s16<const N: i32>(a: int16x4_t) -> uint16x4_t {
40680 static_assert_uimm_bits!(N, 4);
40681 unsafe extern "unadjusted" {
40682 #[cfg_attr(
40683 any(target_arch = "aarch64", target_arch = "arm64ec"),
40684 link_name = "llvm.aarch64.neon.sqshlu.v4i16"
40685 )]
40686 fn _vqshlu_n_s16(a: int16x4_t, n: int16x4_t) -> uint16x4_t;
40687 }
40688 unsafe { _vqshlu_n_s16(a, const { int16x4_t([N as i16; 4]) }) }
40689}
40690#[doc = "Signed saturating shift left unsigned"]
40691#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s16)"]
40692#[inline]
40693#[target_feature(enable = "neon")]
40694#[cfg(not(target_arch = "arm"))]
40695#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
40696#[rustc_legacy_const_generics(1)]
40697#[stable(feature = "neon_intrinsics", since = "1.59.0")]
40698pub fn vqshluq_n_s16<const N: i32>(a: int16x8_t) -> uint16x8_t {
40699 static_assert_uimm_bits!(N, 4);
40700 unsafe extern "unadjusted" {
40701 #[cfg_attr(
40702 any(target_arch = "aarch64", target_arch = "arm64ec"),
40703 link_name = "llvm.aarch64.neon.sqshlu.v8i16"
40704 )]
40705 fn _vqshluq_n_s16(a: int16x8_t, n: int16x8_t) -> uint16x8_t;
40706 }
40707 unsafe { _vqshluq_n_s16(a, const { int16x8_t([N as i16; 8]) }) }
40708}
40709#[doc = "Signed saturating shift left unsigned"]
40710#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s32)"]
40711#[inline]
40712#[target_feature(enable = "neon")]
40713#[cfg(not(target_arch = "arm"))]
40714#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
40715#[rustc_legacy_const_generics(1)]
40716#[stable(feature = "neon_intrinsics", since = "1.59.0")]
40717pub fn vqshlu_n_s32<const N: i32>(a: int32x2_t) -> uint32x2_t {
40718 static_assert_uimm_bits!(N, 5);
40719 unsafe extern "unadjusted" {
40720 #[cfg_attr(
40721 any(target_arch = "aarch64", target_arch = "arm64ec"),
40722 link_name = "llvm.aarch64.neon.sqshlu.v2i32"
40723 )]
40724 fn _vqshlu_n_s32(a: int32x2_t, n: int32x2_t) -> uint32x2_t;
40725 }
40726 unsafe { _vqshlu_n_s32(a, const { int32x2_t([N; 2]) }) }
40727}
40728#[doc = "Signed saturating shift left unsigned"]
40729#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s32)"]
40730#[inline]
40731#[target_feature(enable = "neon")]
40732#[cfg(not(target_arch = "arm"))]
40733#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
40734#[rustc_legacy_const_generics(1)]
40735#[stable(feature = "neon_intrinsics", since = "1.59.0")]
40736pub fn vqshluq_n_s32<const N: i32>(a: int32x4_t) -> uint32x4_t {
40737 static_assert_uimm_bits!(N, 5);
40738 unsafe extern "unadjusted" {
40739 #[cfg_attr(
40740 any(target_arch = "aarch64", target_arch = "arm64ec"),
40741 link_name = "llvm.aarch64.neon.sqshlu.v4i32"
40742 )]
40743 fn _vqshluq_n_s32(a: int32x4_t, n: int32x4_t) -> uint32x4_t;
40744 }
40745 unsafe { _vqshluq_n_s32(a, const { int32x4_t([N; 4]) }) }
40746}
40747#[doc = "Signed saturating shift left unsigned"]
40748#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s64)"]
40749#[inline]
40750#[target_feature(enable = "neon")]
40751#[cfg(not(target_arch = "arm"))]
40752#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
40753#[rustc_legacy_const_generics(1)]
40754#[stable(feature = "neon_intrinsics", since = "1.59.0")]
40755pub fn vqshlu_n_s64<const N: i32>(a: int64x1_t) -> uint64x1_t {
40756 static_assert_uimm_bits!(N, 6);
40757 unsafe extern "unadjusted" {
40758 #[cfg_attr(
40759 any(target_arch = "aarch64", target_arch = "arm64ec"),
40760 link_name = "llvm.aarch64.neon.sqshlu.v1i64"
40761 )]
40762 fn _vqshlu_n_s64(a: int64x1_t, n: int64x1_t) -> uint64x1_t;
40763 }
40764 unsafe { _vqshlu_n_s64(a, const { int64x1_t([N as i64]) }) }
40765}
40766#[doc = "Signed saturating shift left unsigned"]
40767#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s64)"]
40768#[inline]
40769#[target_feature(enable = "neon")]
40770#[cfg(not(target_arch = "arm"))]
40771#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
40772#[rustc_legacy_const_generics(1)]
40773#[stable(feature = "neon_intrinsics", since = "1.59.0")]
40774pub fn vqshluq_n_s64<const N: i32>(a: int64x2_t) -> uint64x2_t {
40775 static_assert_uimm_bits!(N, 6);
40776 unsafe extern "unadjusted" {
40777 #[cfg_attr(
40778 any(target_arch = "aarch64", target_arch = "arm64ec"),
40779 link_name = "llvm.aarch64.neon.sqshlu.v2i64"
40780 )]
40781 fn _vqshluq_n_s64(a: int64x2_t, n: int64x2_t) -> uint64x2_t;
40782 }
40783 unsafe { _vqshluq_n_s64(a, const { int64x2_t([N as i64; 2]) }) }
40784}
40785#[doc = "Signed saturating shift right narrow"]
40786#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s16)"]
40787#[inline]
40788#[cfg(target_arch = "arm")]
40789#[target_feature(enable = "neon,v7")]
40790#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
40791#[rustc_legacy_const_generics(1)]
40792#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40793pub fn vqshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
40794 static_assert!(N >= 1 && N <= 8);
40795 unsafe extern "unadjusted" {
40796 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v8i8")]
40797 fn _vqshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;
40798 }
40799 unsafe { _vqshrn_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
40800}
40801#[doc = "Signed saturating shift right narrow"]
40802#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s32)"]
40803#[inline]
40804#[cfg(target_arch = "arm")]
40805#[target_feature(enable = "neon,v7")]
40806#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
40807#[rustc_legacy_const_generics(1)]
40808#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40809pub fn vqshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
40810 static_assert!(N >= 1 && N <= 16);
40811 unsafe extern "unadjusted" {
40812 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v4i16")]
40813 fn _vqshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;
40814 }
40815 unsafe { _vqshrn_n_s32(a, const { int32x4_t([-N; 4]) }) }
40816}
40817#[doc = "Signed saturating shift right narrow"]
40818#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s64)"]
40819#[inline]
40820#[cfg(target_arch = "arm")]
40821#[target_feature(enable = "neon,v7")]
40822#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
40823#[rustc_legacy_const_generics(1)]
40824#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40825pub fn vqshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
40826 static_assert!(N >= 1 && N <= 32);
40827 unsafe extern "unadjusted" {
40828 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v2i32")]
40829 fn _vqshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;
40830 }
40831 unsafe { _vqshrn_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
40832}
40833#[doc = "Signed saturating shift right narrow"]
40834#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s16)"]
40835#[inline]
40836#[target_feature(enable = "neon")]
40837#[cfg(not(target_arch = "arm"))]
40838#[cfg_attr(test, assert_instr(sqshrn, N = 2))]
40839#[rustc_legacy_const_generics(1)]
40840#[stable(feature = "neon_intrinsics", since = "1.59.0")]
40841pub fn vqshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
40842 static_assert!(N >= 1 && N <= 8);
40843 unsafe extern "unadjusted" {
40844 #[cfg_attr(
40845 any(target_arch = "aarch64", target_arch = "arm64ec"),
40846 link_name = "llvm.aarch64.neon.sqshrn.v8i8"
40847 )]
40848 fn _vqshrn_n_s16(a: int16x8_t, n: i32) -> int8x8_t;
40849 }
40850 unsafe { _vqshrn_n_s16(a, N) }
40851}
40852#[doc = "Signed saturating shift right narrow"]
40853#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s32)"]
40854#[inline]
40855#[target_feature(enable = "neon")]
40856#[cfg(not(target_arch = "arm"))]
40857#[cfg_attr(test, assert_instr(sqshrn, N = 2))]
40858#[rustc_legacy_const_generics(1)]
40859#[stable(feature = "neon_intrinsics", since = "1.59.0")]
40860pub fn vqshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
40861 static_assert!(N >= 1 && N <= 16);
40862 unsafe extern "unadjusted" {
40863 #[cfg_attr(
40864 any(target_arch = "aarch64", target_arch = "arm64ec"),
40865 link_name = "llvm.aarch64.neon.sqshrn.v4i16"
40866 )]
40867 fn _vqshrn_n_s32(a: int32x4_t, n: i32) -> int16x4_t;
40868 }
40869 unsafe { _vqshrn_n_s32(a, N) }
40870}
40871#[doc = "Signed saturating shift right narrow"]
40872#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s64)"]
40873#[inline]
40874#[target_feature(enable = "neon")]
40875#[cfg(not(target_arch = "arm"))]
40876#[cfg_attr(test, assert_instr(sqshrn, N = 2))]
40877#[rustc_legacy_const_generics(1)]
40878#[stable(feature = "neon_intrinsics", since = "1.59.0")]
40879pub fn vqshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
40880 static_assert!(N >= 1 && N <= 32);
40881 unsafe extern "unadjusted" {
40882 #[cfg_attr(
40883 any(target_arch = "aarch64", target_arch = "arm64ec"),
40884 link_name = "llvm.aarch64.neon.sqshrn.v2i32"
40885 )]
40886 fn _vqshrn_n_s64(a: int64x2_t, n: i32) -> int32x2_t;
40887 }
40888 unsafe { _vqshrn_n_s64(a, N) }
40889}
40890#[doc = "Unsigned saturating shift right narrow"]
40891#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u16)"]
40892#[inline]
40893#[cfg(target_arch = "arm")]
40894#[target_feature(enable = "neon,v7")]
40895#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
40896#[rustc_legacy_const_generics(1)]
40897#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40898pub fn vqshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
40899 static_assert!(N >= 1 && N <= 8);
40900 unsafe extern "unadjusted" {
40901 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnu.v8i8")]
40902 fn _vqshrn_n_u16(a: uint16x8_t, n: uint16x8_t) -> uint8x8_t;
40903 }
40904 unsafe {
40905 _vqshrn_n_u16(
40906 a,
40907 const {
40908 uint16x8_t([
40909 -N as u16, -N as u16, -N as u16, -N as u16, -N as u16, -N as u16, -N as u16,
40910 -N as u16,
40911 ])
40912 },
40913 )
40914 }
40915}
40916#[doc = "Unsigned saturating shift right narrow"]
40917#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u32)"]
40918#[inline]
40919#[cfg(target_arch = "arm")]
40920#[target_feature(enable = "neon,v7")]
40921#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
40922#[rustc_legacy_const_generics(1)]
40923#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40924pub fn vqshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
40925 static_assert!(N >= 1 && N <= 16);
40926 unsafe extern "unadjusted" {
40927 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnu.v4i16")]
40928 fn _vqshrn_n_u32(a: uint32x4_t, n: uint32x4_t) -> uint16x4_t;
40929 }
40930 unsafe {
40931 _vqshrn_n_u32(
40932 a,
40933 const { uint32x4_t([-N as u32, -N as u32, -N as u32, -N as u32]) },
40934 )
40935 }
40936}
40937#[doc = "Unsigned saturating shift right narrow"]
40938#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u64)"]
40939#[inline]
40940#[cfg(target_arch = "arm")]
40941#[target_feature(enable = "neon,v7")]
40942#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
40943#[rustc_legacy_const_generics(1)]
40944#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40945pub fn vqshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
40946 static_assert!(N >= 1 && N <= 32);
40947 unsafe extern "unadjusted" {
40948 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnu.v2i32")]
40949 fn _vqshrn_n_u64(a: uint64x2_t, n: uint64x2_t) -> uint32x2_t;
40950 }
40951 unsafe { _vqshrn_n_u64(a, const { uint64x2_t([-N as u64, -N as u64]) }) }
40952}
40953#[doc = "Unsigned saturating shift right narrow"]
40954#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u16)"]
40955#[inline]
40956#[target_feature(enable = "neon")]
40957#[cfg(not(target_arch = "arm"))]
40958#[cfg_attr(test, assert_instr(uqshrn, N = 2))]
40959#[rustc_legacy_const_generics(1)]
40960#[stable(feature = "neon_intrinsics", since = "1.59.0")]
40961pub fn vqshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
40962 static_assert!(N >= 1 && N <= 8);
40963 unsafe extern "unadjusted" {
40964 #[cfg_attr(
40965 any(target_arch = "aarch64", target_arch = "arm64ec"),
40966 link_name = "llvm.aarch64.neon.uqshrn.v8i8"
40967 )]
40968 fn _vqshrn_n_u16(a: uint16x8_t, n: i32) -> uint8x8_t;
40969 }
40970 unsafe { _vqshrn_n_u16(a, N) }
40971}
40972#[doc = "Unsigned saturating shift right narrow"]
40973#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u32)"]
40974#[inline]
40975#[target_feature(enable = "neon")]
40976#[cfg(not(target_arch = "arm"))]
40977#[cfg_attr(test, assert_instr(uqshrn, N = 2))]
40978#[rustc_legacy_const_generics(1)]
40979#[stable(feature = "neon_intrinsics", since = "1.59.0")]
40980pub fn vqshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
40981 static_assert!(N >= 1 && N <= 16);
40982 unsafe extern "unadjusted" {
40983 #[cfg_attr(
40984 any(target_arch = "aarch64", target_arch = "arm64ec"),
40985 link_name = "llvm.aarch64.neon.uqshrn.v4i16"
40986 )]
40987 fn _vqshrn_n_u32(a: uint32x4_t, n: i32) -> uint16x4_t;
40988 }
40989 unsafe { _vqshrn_n_u32(a, N) }
40990}
40991#[doc = "Unsigned saturating shift right narrow"]
40992#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u64)"]
40993#[inline]
40994#[target_feature(enable = "neon")]
40995#[cfg(not(target_arch = "arm"))]
40996#[cfg_attr(test, assert_instr(uqshrn, N = 2))]
40997#[rustc_legacy_const_generics(1)]
40998#[stable(feature = "neon_intrinsics", since = "1.59.0")]
40999pub fn vqshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
41000 static_assert!(N >= 1 && N <= 32);
41001 unsafe extern "unadjusted" {
41002 #[cfg_attr(
41003 any(target_arch = "aarch64", target_arch = "arm64ec"),
41004 link_name = "llvm.aarch64.neon.uqshrn.v2i32"
41005 )]
41006 fn _vqshrn_n_u64(a: uint64x2_t, n: i32) -> uint32x2_t;
41007 }
41008 unsafe { _vqshrn_n_u64(a, N) }
41009}
41010#[doc = "Signed saturating shift right unsigned narrow"]
41011#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s16)"]
41012#[inline]
41013#[cfg(target_arch = "arm")]
41014#[target_feature(enable = "neon,v7")]
41015#[cfg_attr(test, assert_instr(vqshrun, N = 2))]
41016#[rustc_legacy_const_generics(1)]
41017#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
41018pub fn vqshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
41019 static_assert!(N >= 1 && N <= 8);
41020 unsafe extern "unadjusted" {
41021 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v8i8")]
41022 fn _vqshrun_n_s16(a: int16x8_t, n: int16x8_t) -> uint8x8_t;
41023 }
41024 unsafe { _vqshrun_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
41025}
41026#[doc = "Signed saturating shift right unsigned narrow"]
41027#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s32)"]
41028#[inline]
41029#[cfg(target_arch = "arm")]
41030#[target_feature(enable = "neon,v7")]
41031#[cfg_attr(test, assert_instr(vqshrun, N = 2))]
41032#[rustc_legacy_const_generics(1)]
41033#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
41034pub fn vqshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
41035 static_assert!(N >= 1 && N <= 16);
41036 unsafe extern "unadjusted" {
41037 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v4i16")]
41038 fn _vqshrun_n_s32(a: int32x4_t, n: int32x4_t) -> uint16x4_t;
41039 }
41040 unsafe { _vqshrun_n_s32(a, const { int32x4_t([-N; 4]) }) }
41041}
41042#[doc = "Signed saturating shift right unsigned narrow"]
41043#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s64)"]
41044#[inline]
41045#[cfg(target_arch = "arm")]
41046#[target_feature(enable = "neon,v7")]
41047#[cfg_attr(test, assert_instr(vqshrun, N = 2))]
41048#[rustc_legacy_const_generics(1)]
41049#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
41050pub fn vqshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
41051 static_assert!(N >= 1 && N <= 32);
41052 unsafe extern "unadjusted" {
41053 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v2i32")]
41054 fn _vqshrun_n_s64(a: int64x2_t, n: int64x2_t) -> uint32x2_t;
41055 }
41056 unsafe { _vqshrun_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
41057}
41058#[doc = "Signed saturating shift right unsigned narrow"]
41059#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s16)"]
41060#[inline]
41061#[target_feature(enable = "neon")]
41062#[cfg(not(target_arch = "arm"))]
41063#[cfg_attr(test, assert_instr(sqshrun, N = 2))]
41064#[rustc_legacy_const_generics(1)]
41065#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41066pub fn vqshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
41067 static_assert!(N >= 1 && N <= 8);
41068 unsafe extern "unadjusted" {
41069 #[cfg_attr(
41070 any(target_arch = "aarch64", target_arch = "arm64ec"),
41071 link_name = "llvm.aarch64.neon.sqshrun.v8i8"
41072 )]
41073 fn _vqshrun_n_s16(a: int16x8_t, n: i32) -> uint8x8_t;
41074 }
41075 unsafe { _vqshrun_n_s16(a, N) }
41076}
41077#[doc = "Signed saturating shift right unsigned narrow"]
41078#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s32)"]
41079#[inline]
41080#[target_feature(enable = "neon")]
41081#[cfg(not(target_arch = "arm"))]
41082#[cfg_attr(test, assert_instr(sqshrun, N = 2))]
41083#[rustc_legacy_const_generics(1)]
41084#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41085pub fn vqshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
41086 static_assert!(N >= 1 && N <= 16);
41087 unsafe extern "unadjusted" {
41088 #[cfg_attr(
41089 any(target_arch = "aarch64", target_arch = "arm64ec"),
41090 link_name = "llvm.aarch64.neon.sqshrun.v4i16"
41091 )]
41092 fn _vqshrun_n_s32(a: int32x4_t, n: i32) -> uint16x4_t;
41093 }
41094 unsafe { _vqshrun_n_s32(a, N) }
41095}
41096#[doc = "Signed saturating shift right unsigned narrow"]
41097#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s64)"]
41098#[inline]
41099#[target_feature(enable = "neon")]
41100#[cfg(not(target_arch = "arm"))]
41101#[cfg_attr(test, assert_instr(sqshrun, N = 2))]
41102#[rustc_legacy_const_generics(1)]
41103#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41104pub fn vqshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
41105 static_assert!(N >= 1 && N <= 32);
41106 unsafe extern "unadjusted" {
41107 #[cfg_attr(
41108 any(target_arch = "aarch64", target_arch = "arm64ec"),
41109 link_name = "llvm.aarch64.neon.sqshrun.v2i32"
41110 )]
41111 fn _vqshrun_n_s64(a: int64x2_t, n: i32) -> uint32x2_t;
41112 }
41113 unsafe { _vqshrun_n_s64(a, N) }
41114}
41115#[doc = "Saturating subtract"]
41116#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_s8)"]
41117#[inline]
41118#[target_feature(enable = "neon")]
41119#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41120#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s8"))]
41121#[cfg_attr(
41122 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41123 assert_instr(sqsub)
41124)]
41125#[cfg_attr(
41126 not(target_arch = "arm"),
41127 stable(feature = "neon_intrinsics", since = "1.59.0")
41128)]
41129#[cfg_attr(
41130 target_arch = "arm",
41131 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41132)]
41133pub fn vqsub_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
41134 unsafe { simd_saturating_sub(a, b) }
41135}
41136#[doc = "Saturating subtract"]
41137#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s8)"]
41138#[inline]
41139#[target_feature(enable = "neon")]
41140#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41141#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s8"))]
41142#[cfg_attr(
41143 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41144 assert_instr(sqsub)
41145)]
41146#[cfg_attr(
41147 not(target_arch = "arm"),
41148 stable(feature = "neon_intrinsics", since = "1.59.0")
41149)]
41150#[cfg_attr(
41151 target_arch = "arm",
41152 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41153)]
41154pub fn vqsubq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
41155 unsafe { simd_saturating_sub(a, b) }
41156}
41157#[doc = "Saturating subtract"]
41158#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_s16)"]
41159#[inline]
41160#[target_feature(enable = "neon")]
41161#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41162#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s16"))]
41163#[cfg_attr(
41164 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41165 assert_instr(sqsub)
41166)]
41167#[cfg_attr(
41168 not(target_arch = "arm"),
41169 stable(feature = "neon_intrinsics", since = "1.59.0")
41170)]
41171#[cfg_attr(
41172 target_arch = "arm",
41173 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41174)]
41175pub fn vqsub_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
41176 unsafe { simd_saturating_sub(a, b) }
41177}
41178#[doc = "Saturating subtract"]
41179#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s16)"]
41180#[inline]
41181#[target_feature(enable = "neon")]
41182#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41183#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s16"))]
41184#[cfg_attr(
41185 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41186 assert_instr(sqsub)
41187)]
41188#[cfg_attr(
41189 not(target_arch = "arm"),
41190 stable(feature = "neon_intrinsics", since = "1.59.0")
41191)]
41192#[cfg_attr(
41193 target_arch = "arm",
41194 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41195)]
41196pub fn vqsubq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
41197 unsafe { simd_saturating_sub(a, b) }
41198}
41199#[doc = "Saturating subtract"]
41200#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_s32)"]
41201#[inline]
41202#[target_feature(enable = "neon")]
41203#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41204#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s32"))]
41205#[cfg_attr(
41206 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41207 assert_instr(sqsub)
41208)]
41209#[cfg_attr(
41210 not(target_arch = "arm"),
41211 stable(feature = "neon_intrinsics", since = "1.59.0")
41212)]
41213#[cfg_attr(
41214 target_arch = "arm",
41215 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41216)]
41217pub fn vqsub_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
41218 unsafe { simd_saturating_sub(a, b) }
41219}
41220#[doc = "Saturating subtract"]
41221#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s32)"]
41222#[inline]
41223#[target_feature(enable = "neon")]
41224#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41225#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s32"))]
41226#[cfg_attr(
41227 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41228 assert_instr(sqsub)
41229)]
41230#[cfg_attr(
41231 not(target_arch = "arm"),
41232 stable(feature = "neon_intrinsics", since = "1.59.0")
41233)]
41234#[cfg_attr(
41235 target_arch = "arm",
41236 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41237)]
41238pub fn vqsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
41239 unsafe { simd_saturating_sub(a, b) }
41240}
41241#[doc = "Saturating subtract"]
41242#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_s64)"]
41243#[inline]
41244#[target_feature(enable = "neon")]
41245#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41246#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s64"))]
41247#[cfg_attr(
41248 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41249 assert_instr(sqsub)
41250)]
41251#[cfg_attr(
41252 not(target_arch = "arm"),
41253 stable(feature = "neon_intrinsics", since = "1.59.0")
41254)]
41255#[cfg_attr(
41256 target_arch = "arm",
41257 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41258)]
41259pub fn vqsub_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
41260 unsafe { simd_saturating_sub(a, b) }
41261}
41262#[doc = "Saturating subtract"]
41263#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s64)"]
41264#[inline]
41265#[target_feature(enable = "neon")]
41266#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41267#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s64"))]
41268#[cfg_attr(
41269 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41270 assert_instr(sqsub)
41271)]
41272#[cfg_attr(
41273 not(target_arch = "arm"),
41274 stable(feature = "neon_intrinsics", since = "1.59.0")
41275)]
41276#[cfg_attr(
41277 target_arch = "arm",
41278 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41279)]
41280pub fn vqsubq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
41281 unsafe { simd_saturating_sub(a, b) }
41282}
41283#[doc = "Saturating subtract"]
41284#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u8)"]
41285#[inline]
41286#[target_feature(enable = "neon")]
41287#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41288#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u8"))]
41289#[cfg_attr(
41290 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41291 assert_instr(uqsub)
41292)]
41293#[cfg_attr(
41294 not(target_arch = "arm"),
41295 stable(feature = "neon_intrinsics", since = "1.59.0")
41296)]
41297#[cfg_attr(
41298 target_arch = "arm",
41299 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41300)]
41301pub fn vqsub_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
41302 unsafe { simd_saturating_sub(a, b) }
41303}
41304#[doc = "Saturating subtract"]
41305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u8)"]
41306#[inline]
41307#[target_feature(enable = "neon")]
41308#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41309#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u8"))]
41310#[cfg_attr(
41311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41312 assert_instr(uqsub)
41313)]
41314#[cfg_attr(
41315 not(target_arch = "arm"),
41316 stable(feature = "neon_intrinsics", since = "1.59.0")
41317)]
41318#[cfg_attr(
41319 target_arch = "arm",
41320 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41321)]
41322pub fn vqsubq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
41323 unsafe { simd_saturating_sub(a, b) }
41324}
41325#[doc = "Saturating subtract"]
41326#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u16)"]
41327#[inline]
41328#[target_feature(enable = "neon")]
41329#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41330#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u16"))]
41331#[cfg_attr(
41332 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41333 assert_instr(uqsub)
41334)]
41335#[cfg_attr(
41336 not(target_arch = "arm"),
41337 stable(feature = "neon_intrinsics", since = "1.59.0")
41338)]
41339#[cfg_attr(
41340 target_arch = "arm",
41341 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41342)]
41343pub fn vqsub_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
41344 unsafe { simd_saturating_sub(a, b) }
41345}
41346#[doc = "Saturating subtract"]
41347#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u16)"]
41348#[inline]
41349#[target_feature(enable = "neon")]
41350#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41351#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u16"))]
41352#[cfg_attr(
41353 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41354 assert_instr(uqsub)
41355)]
41356#[cfg_attr(
41357 not(target_arch = "arm"),
41358 stable(feature = "neon_intrinsics", since = "1.59.0")
41359)]
41360#[cfg_attr(
41361 target_arch = "arm",
41362 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41363)]
41364pub fn vqsubq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
41365 unsafe { simd_saturating_sub(a, b) }
41366}
41367#[doc = "Saturating subtract"]
41368#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u32)"]
41369#[inline]
41370#[target_feature(enable = "neon")]
41371#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41372#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u32"))]
41373#[cfg_attr(
41374 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41375 assert_instr(uqsub)
41376)]
41377#[cfg_attr(
41378 not(target_arch = "arm"),
41379 stable(feature = "neon_intrinsics", since = "1.59.0")
41380)]
41381#[cfg_attr(
41382 target_arch = "arm",
41383 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41384)]
41385pub fn vqsub_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
41386 unsafe { simd_saturating_sub(a, b) }
41387}
41388#[doc = "Saturating subtract"]
41389#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u32)"]
41390#[inline]
41391#[target_feature(enable = "neon")]
41392#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41393#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u32"))]
41394#[cfg_attr(
41395 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41396 assert_instr(uqsub)
41397)]
41398#[cfg_attr(
41399 not(target_arch = "arm"),
41400 stable(feature = "neon_intrinsics", since = "1.59.0")
41401)]
41402#[cfg_attr(
41403 target_arch = "arm",
41404 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41405)]
41406pub fn vqsubq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
41407 unsafe { simd_saturating_sub(a, b) }
41408}
41409#[doc = "Saturating subtract"]
41410#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u64)"]
41411#[inline]
41412#[target_feature(enable = "neon")]
41413#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41414#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u64"))]
41415#[cfg_attr(
41416 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41417 assert_instr(uqsub)
41418)]
41419#[cfg_attr(
41420 not(target_arch = "arm"),
41421 stable(feature = "neon_intrinsics", since = "1.59.0")
41422)]
41423#[cfg_attr(
41424 target_arch = "arm",
41425 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41426)]
41427pub fn vqsub_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
41428 unsafe { simd_saturating_sub(a, b) }
41429}
41430#[doc = "Saturating subtract"]
41431#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u64)"]
41432#[inline]
41433#[target_feature(enable = "neon")]
41434#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41435#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u64"))]
41436#[cfg_attr(
41437 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41438 assert_instr(uqsub)
41439)]
41440#[cfg_attr(
41441 not(target_arch = "arm"),
41442 stable(feature = "neon_intrinsics", since = "1.59.0")
41443)]
41444#[cfg_attr(
41445 target_arch = "arm",
41446 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41447)]
41448pub fn vqsubq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
41449 unsafe { simd_saturating_sub(a, b) }
41450}
41451#[doc = "Rounding Add returning High Narrow (high half)."]
41452#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_s16)"]
41453#[inline]
41454#[target_feature(enable = "neon")]
41455#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41456#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i16"))]
41457#[cfg_attr(
41458 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41459 assert_instr(raddhn2)
41460)]
41461#[cfg_attr(
41462 not(target_arch = "arm"),
41463 stable(feature = "neon_intrinsics", since = "1.59.0")
41464)]
41465#[cfg_attr(
41466 target_arch = "arm",
41467 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41468)]
41469pub fn vraddhn_high_s16(a: int8x8_t, b: int16x8_t, c: int16x8_t) -> int8x16_t {
41470 let x = vraddhn_s16(b, c);
41471 unsafe { simd_shuffle!(a, x, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) }
41472}
41473#[doc = "Rounding Add returning High Narrow (high half)."]
41474#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_s32)"]
41475#[inline]
41476#[target_feature(enable = "neon")]
41477#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41478#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
41479#[cfg_attr(
41480 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41481 assert_instr(raddhn2)
41482)]
41483#[cfg_attr(
41484 not(target_arch = "arm"),
41485 stable(feature = "neon_intrinsics", since = "1.59.0")
41486)]
41487#[cfg_attr(
41488 target_arch = "arm",
41489 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41490)]
41491pub fn vraddhn_high_s32(a: int16x4_t, b: int32x4_t, c: int32x4_t) -> int16x8_t {
41492 let x = vraddhn_s32(b, c);
41493 unsafe { simd_shuffle!(a, x, [0, 1, 2, 3, 4, 5, 6, 7]) }
41494}
41495#[doc = "Rounding Add returning High Narrow (high half)."]
41496#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_s64)"]
41497#[inline]
41498#[target_feature(enable = "neon")]
41499#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41500#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
41501#[cfg_attr(
41502 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41503 assert_instr(raddhn2)
41504)]
41505#[cfg_attr(
41506 not(target_arch = "arm"),
41507 stable(feature = "neon_intrinsics", since = "1.59.0")
41508)]
41509#[cfg_attr(
41510 target_arch = "arm",
41511 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41512)]
41513pub fn vraddhn_high_s64(a: int32x2_t, b: int64x2_t, c: int64x2_t) -> int32x4_t {
41514 let x = vraddhn_s64(b, c);
41515 unsafe { simd_shuffle!(a, x, [0, 1, 2, 3]) }
41516}
41517#[doc = "Rounding Add returning High Narrow (high half)."]
41518#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_u16)"]
41519#[inline]
41520#[target_feature(enable = "neon")]
41521#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41522#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i16"))]
41523#[cfg_attr(
41524 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41525 assert_instr(raddhn2)
41526)]
41527#[cfg_attr(
41528 not(target_arch = "arm"),
41529 stable(feature = "neon_intrinsics", since = "1.59.0")
41530)]
41531#[cfg_attr(
41532 target_arch = "arm",
41533 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41534)]
41535pub fn vraddhn_high_u16(a: uint8x8_t, b: uint16x8_t, c: uint16x8_t) -> uint8x16_t {
41536 unsafe {
41537 let x: uint8x8_t = transmute(vraddhn_s16(transmute(b), transmute(c)));
41538 simd_shuffle!(a, x, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
41539 }
41540}
41541#[doc = "Rounding Add returning High Narrow (high half)."]
41542#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_u32)"]
41543#[inline]
41544#[target_feature(enable = "neon")]
41545#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41546#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
41547#[cfg_attr(
41548 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41549 assert_instr(raddhn2)
41550)]
41551#[cfg_attr(
41552 not(target_arch = "arm"),
41553 stable(feature = "neon_intrinsics", since = "1.59.0")
41554)]
41555#[cfg_attr(
41556 target_arch = "arm",
41557 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41558)]
41559pub fn vraddhn_high_u32(a: uint16x4_t, b: uint32x4_t, c: uint32x4_t) -> uint16x8_t {
41560 unsafe {
41561 let x: uint16x4_t = transmute(vraddhn_s32(transmute(b), transmute(c)));
41562 simd_shuffle!(a, x, [0, 1, 2, 3, 4, 5, 6, 7])
41563 }
41564}
41565#[doc = "Rounding Add returning High Narrow (high half)."]
41566#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_u64)"]
41567#[inline]
41568#[target_feature(enable = "neon")]
41569#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41570#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
41571#[cfg_attr(
41572 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41573 assert_instr(raddhn2)
41574)]
41575#[cfg_attr(
41576 not(target_arch = "arm"),
41577 stable(feature = "neon_intrinsics", since = "1.59.0")
41578)]
41579#[cfg_attr(
41580 target_arch = "arm",
41581 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41582)]
41583pub fn vraddhn_high_u64(a: uint32x2_t, b: uint64x2_t, c: uint64x2_t) -> uint32x4_t {
41584 unsafe {
41585 let x: uint32x2_t = transmute(vraddhn_s64(transmute(b), transmute(c)));
41586 simd_shuffle!(a, x, [0, 1, 2, 3])
41587 }
41588}
41589#[doc = "Rounding Add returning High Narrow."]
41590#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_s16)"]
41591#[inline]
41592#[target_feature(enable = "neon")]
41593#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41594#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i16"))]
41595#[cfg_attr(
41596 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41597 assert_instr(raddhn)
41598)]
41599#[cfg_attr(
41600 not(target_arch = "arm"),
41601 stable(feature = "neon_intrinsics", since = "1.59.0")
41602)]
41603#[cfg_attr(
41604 target_arch = "arm",
41605 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41606)]
41607pub fn vraddhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t {
41608 unsafe extern "unadjusted" {
41609 #[cfg_attr(
41610 any(target_arch = "aarch64", target_arch = "arm64ec"),
41611 link_name = "llvm.aarch64.neon.raddhn.v8i8"
41612 )]
41613 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vraddhn.v8i8")]
41614 fn _vraddhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t;
41615 }
41616 unsafe { _vraddhn_s16(a, b) }
41617}
41618#[doc = "Rounding Add returning High Narrow."]
41619#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_s32)"]
41620#[inline]
41621#[target_feature(enable = "neon")]
41622#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41623#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
41624#[cfg_attr(
41625 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41626 assert_instr(raddhn)
41627)]
41628#[cfg_attr(
41629 not(target_arch = "arm"),
41630 stable(feature = "neon_intrinsics", since = "1.59.0")
41631)]
41632#[cfg_attr(
41633 target_arch = "arm",
41634 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41635)]
41636pub fn vraddhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t {
41637 unsafe extern "unadjusted" {
41638 #[cfg_attr(
41639 any(target_arch = "aarch64", target_arch = "arm64ec"),
41640 link_name = "llvm.aarch64.neon.raddhn.v4i16"
41641 )]
41642 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vraddhn.v4i16")]
41643 fn _vraddhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t;
41644 }
41645 unsafe { _vraddhn_s32(a, b) }
41646}
41647#[doc = "Rounding Add returning High Narrow."]
41648#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_s64)"]
41649#[inline]
41650#[target_feature(enable = "neon")]
41651#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41652#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
41653#[cfg_attr(
41654 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41655 assert_instr(raddhn)
41656)]
41657#[cfg_attr(
41658 not(target_arch = "arm"),
41659 stable(feature = "neon_intrinsics", since = "1.59.0")
41660)]
41661#[cfg_attr(
41662 target_arch = "arm",
41663 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41664)]
41665pub fn vraddhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t {
41666 unsafe extern "unadjusted" {
41667 #[cfg_attr(
41668 any(target_arch = "aarch64", target_arch = "arm64ec"),
41669 link_name = "llvm.aarch64.neon.raddhn.v2i32"
41670 )]
41671 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vraddhn.v2i32")]
41672 fn _vraddhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t;
41673 }
41674 unsafe { _vraddhn_s64(a, b) }
41675}
41676#[doc = "Rounding Add returning High Narrow."]
41677#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u16)"]
41678#[inline]
41679#[cfg(target_endian = "little")]
41680#[target_feature(enable = "neon")]
41681#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41682#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i16"))]
41683#[cfg_attr(
41684 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41685 assert_instr(raddhn)
41686)]
41687#[cfg_attr(
41688 not(target_arch = "arm"),
41689 stable(feature = "neon_intrinsics", since = "1.59.0")
41690)]
41691#[cfg_attr(
41692 target_arch = "arm",
41693 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41694)]
41695pub fn vraddhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
41696 unsafe { transmute(vraddhn_s16(transmute(a), transmute(b))) }
41697}
41698#[doc = "Rounding Add returning High Narrow."]
41699#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u16)"]
41700#[inline]
41701#[cfg(target_endian = "big")]
41702#[target_feature(enable = "neon")]
41703#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41704#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i16"))]
41705#[cfg_attr(
41706 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41707 assert_instr(raddhn)
41708)]
41709#[cfg_attr(
41710 not(target_arch = "arm"),
41711 stable(feature = "neon_intrinsics", since = "1.59.0")
41712)]
41713#[cfg_attr(
41714 target_arch = "arm",
41715 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41716)]
41717pub fn vraddhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
41718 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
41719 let b: uint16x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
41720 unsafe {
41721 let ret_val: uint8x8_t = transmute(vraddhn_s16(transmute(a), transmute(b)));
41722 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
41723 }
41724}
41725#[doc = "Rounding Add returning High Narrow."]
41726#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u32)"]
41727#[inline]
41728#[cfg(target_endian = "little")]
41729#[target_feature(enable = "neon")]
41730#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41731#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
41732#[cfg_attr(
41733 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41734 assert_instr(raddhn)
41735)]
41736#[cfg_attr(
41737 not(target_arch = "arm"),
41738 stable(feature = "neon_intrinsics", since = "1.59.0")
41739)]
41740#[cfg_attr(
41741 target_arch = "arm",
41742 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41743)]
41744pub fn vraddhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
41745 unsafe { transmute(vraddhn_s32(transmute(a), transmute(b))) }
41746}
41747#[doc = "Rounding Add returning High Narrow."]
41748#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u32)"]
41749#[inline]
41750#[cfg(target_endian = "big")]
41751#[target_feature(enable = "neon")]
41752#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41753#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
41754#[cfg_attr(
41755 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41756 assert_instr(raddhn)
41757)]
41758#[cfg_attr(
41759 not(target_arch = "arm"),
41760 stable(feature = "neon_intrinsics", since = "1.59.0")
41761)]
41762#[cfg_attr(
41763 target_arch = "arm",
41764 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41765)]
41766pub fn vraddhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
41767 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
41768 let b: uint32x4_t = unsafe { simd_shuffle!(b, b, [3, 2, 1, 0]) };
41769 unsafe {
41770 let ret_val: uint16x4_t = transmute(vraddhn_s32(transmute(a), transmute(b)));
41771 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
41772 }
41773}
41774#[doc = "Rounding Add returning High Narrow."]
41775#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u64)"]
41776#[inline]
41777#[cfg(target_endian = "little")]
41778#[target_feature(enable = "neon")]
41779#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41780#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
41781#[cfg_attr(
41782 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41783 assert_instr(raddhn)
41784)]
41785#[cfg_attr(
41786 not(target_arch = "arm"),
41787 stable(feature = "neon_intrinsics", since = "1.59.0")
41788)]
41789#[cfg_attr(
41790 target_arch = "arm",
41791 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41792)]
41793pub fn vraddhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
41794 unsafe { transmute(vraddhn_s64(transmute(a), transmute(b))) }
41795}
41796#[doc = "Rounding Add returning High Narrow."]
41797#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u64)"]
41798#[inline]
41799#[cfg(target_endian = "big")]
41800#[target_feature(enable = "neon")]
41801#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41802#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
41803#[cfg_attr(
41804 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41805 assert_instr(raddhn)
41806)]
41807#[cfg_attr(
41808 not(target_arch = "arm"),
41809 stable(feature = "neon_intrinsics", since = "1.59.0")
41810)]
41811#[cfg_attr(
41812 target_arch = "arm",
41813 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41814)]
41815pub fn vraddhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
41816 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
41817 let b: uint64x2_t = unsafe { simd_shuffle!(b, b, [1, 0]) };
41818 unsafe {
41819 let ret_val: uint32x2_t = transmute(vraddhn_s64(transmute(a), transmute(b)));
41820 simd_shuffle!(ret_val, ret_val, [1, 0])
41821 }
41822}
41823#[doc = "Reciprocal estimate."]
41824#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpe_f16)"]
41825#[inline]
41826#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
41827#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
41828#[cfg_attr(
41829 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41830 assert_instr(frecpe)
41831)]
41832#[target_feature(enable = "neon,fp16")]
41833#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
41834#[cfg(not(target_arch = "arm64ec"))]
41835pub fn vrecpe_f16(a: float16x4_t) -> float16x4_t {
41836 unsafe extern "unadjusted" {
41837 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v4f16")]
41838 #[cfg_attr(
41839 any(target_arch = "aarch64", target_arch = "arm64ec"),
41840 link_name = "llvm.aarch64.neon.frecpe.v4f16"
41841 )]
41842 fn _vrecpe_f16(a: float16x4_t) -> float16x4_t;
41843 }
41844 unsafe { _vrecpe_f16(a) }
41845}
41846#[doc = "Reciprocal estimate."]
41847#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpeq_f16)"]
41848#[inline]
41849#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
41850#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
41851#[cfg_attr(
41852 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41853 assert_instr(frecpe)
41854)]
41855#[target_feature(enable = "neon,fp16")]
41856#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
41857#[cfg(not(target_arch = "arm64ec"))]
41858pub fn vrecpeq_f16(a: float16x8_t) -> float16x8_t {
41859 unsafe extern "unadjusted" {
41860 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v8f16")]
41861 #[cfg_attr(
41862 any(target_arch = "aarch64", target_arch = "arm64ec"),
41863 link_name = "llvm.aarch64.neon.frecpe.v8f16"
41864 )]
41865 fn _vrecpeq_f16(a: float16x8_t) -> float16x8_t;
41866 }
41867 unsafe { _vrecpeq_f16(a) }
41868}
41869#[doc = "Reciprocal estimate."]
41870#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpe_f32)"]
41871#[inline]
41872#[target_feature(enable = "neon")]
41873#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41874#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
41875#[cfg_attr(
41876 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41877 assert_instr(frecpe)
41878)]
41879#[cfg_attr(
41880 not(target_arch = "arm"),
41881 stable(feature = "neon_intrinsics", since = "1.59.0")
41882)]
41883#[cfg_attr(
41884 target_arch = "arm",
41885 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41886)]
41887pub fn vrecpe_f32(a: float32x2_t) -> float32x2_t {
41888 unsafe extern "unadjusted" {
41889 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v2f32")]
41890 #[cfg_attr(
41891 any(target_arch = "aarch64", target_arch = "arm64ec"),
41892 link_name = "llvm.aarch64.neon.frecpe.v2f32"
41893 )]
41894 fn _vrecpe_f32(a: float32x2_t) -> float32x2_t;
41895 }
41896 unsafe { _vrecpe_f32(a) }
41897}
41898#[doc = "Reciprocal estimate."]
41899#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpeq_f32)"]
41900#[inline]
41901#[target_feature(enable = "neon")]
41902#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41903#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
41904#[cfg_attr(
41905 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41906 assert_instr(frecpe)
41907)]
41908#[cfg_attr(
41909 not(target_arch = "arm"),
41910 stable(feature = "neon_intrinsics", since = "1.59.0")
41911)]
41912#[cfg_attr(
41913 target_arch = "arm",
41914 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41915)]
41916pub fn vrecpeq_f32(a: float32x4_t) -> float32x4_t {
41917 unsafe extern "unadjusted" {
41918 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v4f32")]
41919 #[cfg_attr(
41920 any(target_arch = "aarch64", target_arch = "arm64ec"),
41921 link_name = "llvm.aarch64.neon.frecpe.v4f32"
41922 )]
41923 fn _vrecpeq_f32(a: float32x4_t) -> float32x4_t;
41924 }
41925 unsafe { _vrecpeq_f32(a) }
41926}
41927#[doc = "Unsigned reciprocal estimate"]
41928#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpe_u32)"]
41929#[inline]
41930#[target_feature(enable = "neon")]
41931#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41932#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
41933#[cfg_attr(
41934 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41935 assert_instr(urecpe)
41936)]
41937#[cfg_attr(
41938 not(target_arch = "arm"),
41939 stable(feature = "neon_intrinsics", since = "1.59.0")
41940)]
41941#[cfg_attr(
41942 target_arch = "arm",
41943 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41944)]
41945pub fn vrecpe_u32(a: uint32x2_t) -> uint32x2_t {
41946 unsafe extern "unadjusted" {
41947 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v2i32")]
41948 #[cfg_attr(
41949 any(target_arch = "aarch64", target_arch = "arm64ec"),
41950 link_name = "llvm.aarch64.neon.urecpe.v2i32"
41951 )]
41952 fn _vrecpe_u32(a: uint32x2_t) -> uint32x2_t;
41953 }
41954 unsafe { _vrecpe_u32(a) }
41955}
41956#[doc = "Unsigned reciprocal estimate"]
41957#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpeq_u32)"]
41958#[inline]
41959#[target_feature(enable = "neon")]
41960#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41961#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
41962#[cfg_attr(
41963 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41964 assert_instr(urecpe)
41965)]
41966#[cfg_attr(
41967 not(target_arch = "arm"),
41968 stable(feature = "neon_intrinsics", since = "1.59.0")
41969)]
41970#[cfg_attr(
41971 target_arch = "arm",
41972 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41973)]
41974pub fn vrecpeq_u32(a: uint32x4_t) -> uint32x4_t {
41975 unsafe extern "unadjusted" {
41976 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v4i32")]
41977 #[cfg_attr(
41978 any(target_arch = "aarch64", target_arch = "arm64ec"),
41979 link_name = "llvm.aarch64.neon.urecpe.v4i32"
41980 )]
41981 fn _vrecpeq_u32(a: uint32x4_t) -> uint32x4_t;
41982 }
41983 unsafe { _vrecpeq_u32(a) }
41984}
41985#[doc = "Floating-point reciprocal step"]
41986#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecps_f16)"]
41987#[inline]
41988#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
41989#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecps))]
41990#[cfg_attr(
41991 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41992 assert_instr(frecps)
41993)]
41994#[target_feature(enable = "neon,fp16")]
41995#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
41996#[cfg(not(target_arch = "arm64ec"))]
41997pub fn vrecps_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
41998 unsafe extern "unadjusted" {
41999 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecps.v4f16")]
42000 #[cfg_attr(
42001 any(target_arch = "aarch64", target_arch = "arm64ec"),
42002 link_name = "llvm.aarch64.neon.frecps.v4f16"
42003 )]
42004 fn _vrecps_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
42005 }
42006 unsafe { _vrecps_f16(a, b) }
42007}
42008#[doc = "Floating-point reciprocal step"]
42009#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpsq_f16)"]
42010#[inline]
42011#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42012#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecps))]
42013#[cfg_attr(
42014 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42015 assert_instr(frecps)
42016)]
42017#[target_feature(enable = "neon,fp16")]
42018#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42019#[cfg(not(target_arch = "arm64ec"))]
42020pub fn vrecpsq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
42021 unsafe extern "unadjusted" {
42022 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecps.v8f16")]
42023 #[cfg_attr(
42024 any(target_arch = "aarch64", target_arch = "arm64ec"),
42025 link_name = "llvm.aarch64.neon.frecps.v8f16"
42026 )]
42027 fn _vrecpsq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
42028 }
42029 unsafe { _vrecpsq_f16(a, b) }
42030}
42031#[doc = "Floating-point reciprocal step"]
42032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecps_f32)"]
42033#[inline]
42034#[target_feature(enable = "neon")]
42035#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42036#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecps))]
42037#[cfg_attr(
42038 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42039 assert_instr(frecps)
42040)]
42041#[cfg_attr(
42042 not(target_arch = "arm"),
42043 stable(feature = "neon_intrinsics", since = "1.59.0")
42044)]
42045#[cfg_attr(
42046 target_arch = "arm",
42047 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42048)]
42049pub fn vrecps_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
42050 unsafe extern "unadjusted" {
42051 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecps.v2f32")]
42052 #[cfg_attr(
42053 any(target_arch = "aarch64", target_arch = "arm64ec"),
42054 link_name = "llvm.aarch64.neon.frecps.v2f32"
42055 )]
42056 fn _vrecps_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
42057 }
42058 unsafe { _vrecps_f32(a, b) }
42059}
42060#[doc = "Floating-point reciprocal step"]
42061#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpsq_f32)"]
42062#[inline]
42063#[target_feature(enable = "neon")]
42064#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42065#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecps))]
42066#[cfg_attr(
42067 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42068 assert_instr(frecps)
42069)]
42070#[cfg_attr(
42071 not(target_arch = "arm"),
42072 stable(feature = "neon_intrinsics", since = "1.59.0")
42073)]
42074#[cfg_attr(
42075 target_arch = "arm",
42076 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42077)]
42078pub fn vrecpsq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
42079 unsafe extern "unadjusted" {
42080 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecps.v4f32")]
42081 #[cfg_attr(
42082 any(target_arch = "aarch64", target_arch = "arm64ec"),
42083 link_name = "llvm.aarch64.neon.frecps.v4f32"
42084 )]
42085 fn _vrecpsq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
42086 }
42087 unsafe { _vrecpsq_f32(a, b) }
42088}
42089#[doc = "Vector reinterpret cast operation"]
42090#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_f16)"]
42091#[inline]
42092#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42093#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42094#[cfg_attr(
42095 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42096 assert_instr(nop)
42097)]
42098#[target_feature(enable = "neon,fp16")]
42099#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42100#[cfg(not(target_arch = "arm64ec"))]
42101pub fn vreinterpret_f32_f16(a: float16x4_t) -> float32x2_t {
42102 unsafe { transmute(a) }
42103}
42104#[doc = "Vector reinterpret cast operation"]
42105#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_f16)"]
42106#[inline]
42107#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42108#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42109#[cfg_attr(
42110 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42111 assert_instr(nop)
42112)]
42113#[target_feature(enable = "neon,fp16")]
42114#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42115#[cfg(not(target_arch = "arm64ec"))]
42116pub fn vreinterpret_s8_f16(a: float16x4_t) -> int8x8_t {
42117 unsafe { transmute(a) }
42118}
42119#[doc = "Vector reinterpret cast operation"]
42120#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_f16)"]
42121#[inline]
42122#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42123#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42124#[cfg_attr(
42125 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42126 assert_instr(nop)
42127)]
42128#[target_feature(enable = "neon,fp16")]
42129#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42130#[cfg(not(target_arch = "arm64ec"))]
42131pub fn vreinterpret_s16_f16(a: float16x4_t) -> int16x4_t {
42132 unsafe { transmute(a) }
42133}
42134#[doc = "Vector reinterpret cast operation"]
42135#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_f16)"]
42136#[inline]
42137#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42138#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42139#[cfg_attr(
42140 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42141 assert_instr(nop)
42142)]
42143#[target_feature(enable = "neon,fp16")]
42144#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42145#[cfg(not(target_arch = "arm64ec"))]
42146pub fn vreinterpret_s32_f16(a: float16x4_t) -> int32x2_t {
42147 unsafe { transmute(a) }
42148}
42149#[doc = "Vector reinterpret cast operation"]
42150#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_f16)"]
42151#[inline]
42152#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42153#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42154#[cfg_attr(
42155 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42156 assert_instr(nop)
42157)]
42158#[target_feature(enable = "neon,fp16")]
42159#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42160#[cfg(not(target_arch = "arm64ec"))]
42161pub fn vreinterpret_s64_f16(a: float16x4_t) -> int64x1_t {
42162 unsafe { transmute(a) }
42163}
42164#[doc = "Vector reinterpret cast operation"]
42165#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_f16)"]
42166#[inline]
42167#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42168#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42169#[cfg_attr(
42170 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42171 assert_instr(nop)
42172)]
42173#[target_feature(enable = "neon,fp16")]
42174#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42175#[cfg(not(target_arch = "arm64ec"))]
42176pub fn vreinterpret_u8_f16(a: float16x4_t) -> uint8x8_t {
42177 unsafe { transmute(a) }
42178}
42179#[doc = "Vector reinterpret cast operation"]
42180#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_f16)"]
42181#[inline]
42182#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42183#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42184#[cfg_attr(
42185 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42186 assert_instr(nop)
42187)]
42188#[target_feature(enable = "neon,fp16")]
42189#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42190#[cfg(not(target_arch = "arm64ec"))]
42191pub fn vreinterpret_u16_f16(a: float16x4_t) -> uint16x4_t {
42192 unsafe { transmute(a) }
42193}
42194#[doc = "Vector reinterpret cast operation"]
42195#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_f16)"]
42196#[inline]
42197#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42198#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42199#[cfg_attr(
42200 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42201 assert_instr(nop)
42202)]
42203#[target_feature(enable = "neon,fp16")]
42204#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42205#[cfg(not(target_arch = "arm64ec"))]
42206pub fn vreinterpret_u32_f16(a: float16x4_t) -> uint32x2_t {
42207 unsafe { transmute(a) }
42208}
42209#[doc = "Vector reinterpret cast operation"]
42210#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_f16)"]
42211#[inline]
42212#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42213#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42214#[cfg_attr(
42215 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42216 assert_instr(nop)
42217)]
42218#[target_feature(enable = "neon,fp16")]
42219#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42220#[cfg(not(target_arch = "arm64ec"))]
42221pub fn vreinterpret_u64_f16(a: float16x4_t) -> uint64x1_t {
42222 unsafe { transmute(a) }
42223}
42224#[doc = "Vector reinterpret cast operation"]
42225#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_f16)"]
42226#[inline]
42227#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42228#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42229#[cfg_attr(
42230 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42231 assert_instr(nop)
42232)]
42233#[target_feature(enable = "neon,fp16")]
42234#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42235#[cfg(not(target_arch = "arm64ec"))]
42236pub fn vreinterpret_p8_f16(a: float16x4_t) -> poly8x8_t {
42237 unsafe { transmute(a) }
42238}
42239#[doc = "Vector reinterpret cast operation"]
42240#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_f16)"]
42241#[inline]
42242#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42243#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42244#[cfg_attr(
42245 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42246 assert_instr(nop)
42247)]
42248#[target_feature(enable = "neon,fp16")]
42249#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42250#[cfg(not(target_arch = "arm64ec"))]
42251pub fn vreinterpret_p16_f16(a: float16x4_t) -> poly16x4_t {
42252 unsafe { transmute(a) }
42253}
42254#[doc = "Vector reinterpret cast operation"]
42255#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_f16)"]
42256#[inline]
42257#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42258#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42259#[cfg_attr(
42260 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42261 assert_instr(nop)
42262)]
42263#[target_feature(enable = "neon,fp16")]
42264#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42265#[cfg(not(target_arch = "arm64ec"))]
42266pub fn vreinterpretq_f32_f16(a: float16x8_t) -> float32x4_t {
42267 unsafe { transmute(a) }
42268}
42269#[doc = "Vector reinterpret cast operation"]
42270#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_f16)"]
42271#[inline]
42272#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42273#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42274#[cfg_attr(
42275 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42276 assert_instr(nop)
42277)]
42278#[target_feature(enable = "neon,fp16")]
42279#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42280#[cfg(not(target_arch = "arm64ec"))]
42281pub fn vreinterpretq_s8_f16(a: float16x8_t) -> int8x16_t {
42282 unsafe { transmute(a) }
42283}
42284#[doc = "Vector reinterpret cast operation"]
42285#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_f16)"]
42286#[inline]
42287#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42288#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42289#[cfg_attr(
42290 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42291 assert_instr(nop)
42292)]
42293#[target_feature(enable = "neon,fp16")]
42294#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42295#[cfg(not(target_arch = "arm64ec"))]
42296pub fn vreinterpretq_s16_f16(a: float16x8_t) -> int16x8_t {
42297 unsafe { transmute(a) }
42298}
42299#[doc = "Vector reinterpret cast operation"]
42300#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_f16)"]
42301#[inline]
42302#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42303#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42304#[cfg_attr(
42305 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42306 assert_instr(nop)
42307)]
42308#[target_feature(enable = "neon,fp16")]
42309#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42310#[cfg(not(target_arch = "arm64ec"))]
42311pub fn vreinterpretq_s32_f16(a: float16x8_t) -> int32x4_t {
42312 unsafe { transmute(a) }
42313}
42314#[doc = "Vector reinterpret cast operation"]
42315#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_f16)"]
42316#[inline]
42317#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42318#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42319#[cfg_attr(
42320 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42321 assert_instr(nop)
42322)]
42323#[target_feature(enable = "neon,fp16")]
42324#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42325#[cfg(not(target_arch = "arm64ec"))]
42326pub fn vreinterpretq_s64_f16(a: float16x8_t) -> int64x2_t {
42327 unsafe { transmute(a) }
42328}
42329#[doc = "Vector reinterpret cast operation"]
42330#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_f16)"]
42331#[inline]
42332#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42333#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42334#[cfg_attr(
42335 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42336 assert_instr(nop)
42337)]
42338#[target_feature(enable = "neon,fp16")]
42339#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42340#[cfg(not(target_arch = "arm64ec"))]
42341pub fn vreinterpretq_u8_f16(a: float16x8_t) -> uint8x16_t {
42342 unsafe { transmute(a) }
42343}
42344#[doc = "Vector reinterpret cast operation"]
42345#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_f16)"]
42346#[inline]
42347#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42348#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42349#[cfg_attr(
42350 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42351 assert_instr(nop)
42352)]
42353#[target_feature(enable = "neon,fp16")]
42354#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42355#[cfg(not(target_arch = "arm64ec"))]
42356pub fn vreinterpretq_u16_f16(a: float16x8_t) -> uint16x8_t {
42357 unsafe { transmute(a) }
42358}
42359#[doc = "Vector reinterpret cast operation"]
42360#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_f16)"]
42361#[inline]
42362#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42363#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42364#[cfg_attr(
42365 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42366 assert_instr(nop)
42367)]
42368#[target_feature(enable = "neon,fp16")]
42369#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42370#[cfg(not(target_arch = "arm64ec"))]
42371pub fn vreinterpretq_u32_f16(a: float16x8_t) -> uint32x4_t {
42372 unsafe { transmute(a) }
42373}
42374#[doc = "Vector reinterpret cast operation"]
42375#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_f16)"]
42376#[inline]
42377#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42378#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42379#[cfg_attr(
42380 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42381 assert_instr(nop)
42382)]
42383#[target_feature(enable = "neon,fp16")]
42384#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42385#[cfg(not(target_arch = "arm64ec"))]
42386pub fn vreinterpretq_u64_f16(a: float16x8_t) -> uint64x2_t {
42387 unsafe { transmute(a) }
42388}
42389#[doc = "Vector reinterpret cast operation"]
42390#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_f16)"]
42391#[inline]
42392#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42393#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42394#[cfg_attr(
42395 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42396 assert_instr(nop)
42397)]
42398#[target_feature(enable = "neon,fp16")]
42399#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42400#[cfg(not(target_arch = "arm64ec"))]
42401pub fn vreinterpretq_p8_f16(a: float16x8_t) -> poly8x16_t {
42402 unsafe { transmute(a) }
42403}
42404#[doc = "Vector reinterpret cast operation"]
42405#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_f16)"]
42406#[inline]
42407#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42408#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42409#[cfg_attr(
42410 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42411 assert_instr(nop)
42412)]
42413#[target_feature(enable = "neon,fp16")]
42414#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42415#[cfg(not(target_arch = "arm64ec"))]
42416pub fn vreinterpretq_p16_f16(a: float16x8_t) -> poly16x8_t {
42417 unsafe { transmute(a) }
42418}
42419#[doc = "Vector reinterpret cast operation"]
42420#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_f32)"]
42421#[inline]
42422#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42423#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42424#[cfg_attr(
42425 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42426 assert_instr(nop)
42427)]
42428#[target_feature(enable = "neon,fp16")]
42429#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42430#[cfg(not(target_arch = "arm64ec"))]
42431pub fn vreinterpret_f16_f32(a: float32x2_t) -> float16x4_t {
42432 unsafe { transmute(a) }
42433}
42434#[doc = "Vector reinterpret cast operation"]
42435#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_f32)"]
42436#[inline]
42437#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42438#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42439#[cfg_attr(
42440 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42441 assert_instr(nop)
42442)]
42443#[target_feature(enable = "neon,fp16")]
42444#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42445#[cfg(not(target_arch = "arm64ec"))]
42446pub fn vreinterpretq_f16_f32(a: float32x4_t) -> float16x8_t {
42447 unsafe { transmute(a) }
42448}
42449#[doc = "Vector reinterpret cast operation"]
42450#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s8)"]
42451#[inline]
42452#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42453#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42454#[cfg_attr(
42455 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42456 assert_instr(nop)
42457)]
42458#[target_feature(enable = "neon,fp16")]
42459#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42460#[cfg(not(target_arch = "arm64ec"))]
42461pub fn vreinterpret_f16_s8(a: int8x8_t) -> float16x4_t {
42462 unsafe { transmute(a) }
42463}
42464#[doc = "Vector reinterpret cast operation"]
42465#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s8)"]
42466#[inline]
42467#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42468#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42469#[cfg_attr(
42470 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42471 assert_instr(nop)
42472)]
42473#[target_feature(enable = "neon,fp16")]
42474#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42475#[cfg(not(target_arch = "arm64ec"))]
42476pub fn vreinterpretq_f16_s8(a: int8x16_t) -> float16x8_t {
42477 unsafe { transmute(a) }
42478}
42479#[doc = "Vector reinterpret cast operation"]
42480#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s16)"]
42481#[inline]
42482#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42483#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42484#[cfg_attr(
42485 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42486 assert_instr(nop)
42487)]
42488#[target_feature(enable = "neon,fp16")]
42489#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42490#[cfg(not(target_arch = "arm64ec"))]
42491pub fn vreinterpret_f16_s16(a: int16x4_t) -> float16x4_t {
42492 unsafe { transmute(a) }
42493}
42494#[doc = "Vector reinterpret cast operation"]
42495#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s16)"]
42496#[inline]
42497#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42498#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42499#[cfg_attr(
42500 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42501 assert_instr(nop)
42502)]
42503#[target_feature(enable = "neon,fp16")]
42504#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42505#[cfg(not(target_arch = "arm64ec"))]
42506pub fn vreinterpretq_f16_s16(a: int16x8_t) -> float16x8_t {
42507 unsafe { transmute(a) }
42508}
42509#[doc = "Vector reinterpret cast operation"]
42510#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s32)"]
42511#[inline]
42512#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42513#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42514#[cfg_attr(
42515 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42516 assert_instr(nop)
42517)]
42518#[target_feature(enable = "neon,fp16")]
42519#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42520#[cfg(not(target_arch = "arm64ec"))]
42521pub fn vreinterpret_f16_s32(a: int32x2_t) -> float16x4_t {
42522 unsafe { transmute(a) }
42523}
42524#[doc = "Vector reinterpret cast operation"]
42525#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s32)"]
42526#[inline]
42527#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42528#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42529#[cfg_attr(
42530 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42531 assert_instr(nop)
42532)]
42533#[target_feature(enable = "neon,fp16")]
42534#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42535#[cfg(not(target_arch = "arm64ec"))]
42536pub fn vreinterpretq_f16_s32(a: int32x4_t) -> float16x8_t {
42537 unsafe { transmute(a) }
42538}
42539#[doc = "Vector reinterpret cast operation"]
42540#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s64)"]
42541#[inline]
42542#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42543#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42544#[cfg_attr(
42545 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42546 assert_instr(nop)
42547)]
42548#[target_feature(enable = "neon,fp16")]
42549#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42550#[cfg(not(target_arch = "arm64ec"))]
42551pub fn vreinterpret_f16_s64(a: int64x1_t) -> float16x4_t {
42552 unsafe { transmute(a) }
42553}
42554#[doc = "Vector reinterpret cast operation"]
42555#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s64)"]
42556#[inline]
42557#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42558#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42559#[cfg_attr(
42560 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42561 assert_instr(nop)
42562)]
42563#[target_feature(enable = "neon,fp16")]
42564#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42565#[cfg(not(target_arch = "arm64ec"))]
42566pub fn vreinterpretq_f16_s64(a: int64x2_t) -> float16x8_t {
42567 unsafe { transmute(a) }
42568}
42569#[doc = "Vector reinterpret cast operation"]
42570#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u8)"]
42571#[inline]
42572#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42573#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42574#[cfg_attr(
42575 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42576 assert_instr(nop)
42577)]
42578#[target_feature(enable = "neon,fp16")]
42579#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42580#[cfg(not(target_arch = "arm64ec"))]
42581pub fn vreinterpret_f16_u8(a: uint8x8_t) -> float16x4_t {
42582 unsafe { transmute(a) }
42583}
42584#[doc = "Vector reinterpret cast operation"]
42585#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u8)"]
42586#[inline]
42587#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42588#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42589#[cfg_attr(
42590 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42591 assert_instr(nop)
42592)]
42593#[target_feature(enable = "neon,fp16")]
42594#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42595#[cfg(not(target_arch = "arm64ec"))]
42596pub fn vreinterpretq_f16_u8(a: uint8x16_t) -> float16x8_t {
42597 unsafe { transmute(a) }
42598}
42599#[doc = "Vector reinterpret cast operation"]
42600#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u16)"]
42601#[inline]
42602#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42603#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42604#[cfg_attr(
42605 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42606 assert_instr(nop)
42607)]
42608#[target_feature(enable = "neon,fp16")]
42609#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42610#[cfg(not(target_arch = "arm64ec"))]
42611pub fn vreinterpret_f16_u16(a: uint16x4_t) -> float16x4_t {
42612 unsafe { transmute(a) }
42613}
42614#[doc = "Vector reinterpret cast operation"]
42615#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u16)"]
42616#[inline]
42617#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42618#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42619#[cfg_attr(
42620 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42621 assert_instr(nop)
42622)]
42623#[target_feature(enable = "neon,fp16")]
42624#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42625#[cfg(not(target_arch = "arm64ec"))]
42626pub fn vreinterpretq_f16_u16(a: uint16x8_t) -> float16x8_t {
42627 unsafe { transmute(a) }
42628}
42629#[doc = "Vector reinterpret cast operation"]
42630#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u32)"]
42631#[inline]
42632#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42633#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42634#[cfg_attr(
42635 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42636 assert_instr(nop)
42637)]
42638#[target_feature(enable = "neon,fp16")]
42639#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42640#[cfg(not(target_arch = "arm64ec"))]
42641pub fn vreinterpret_f16_u32(a: uint32x2_t) -> float16x4_t {
42642 unsafe { transmute(a) }
42643}
42644#[doc = "Vector reinterpret cast operation"]
42645#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u32)"]
42646#[inline]
42647#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42648#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42649#[cfg_attr(
42650 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42651 assert_instr(nop)
42652)]
42653#[target_feature(enable = "neon,fp16")]
42654#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42655#[cfg(not(target_arch = "arm64ec"))]
42656pub fn vreinterpretq_f16_u32(a: uint32x4_t) -> float16x8_t {
42657 unsafe { transmute(a) }
42658}
42659#[doc = "Vector reinterpret cast operation"]
42660#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u64)"]
42661#[inline]
42662#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42663#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42664#[cfg_attr(
42665 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42666 assert_instr(nop)
42667)]
42668#[target_feature(enable = "neon,fp16")]
42669#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42670#[cfg(not(target_arch = "arm64ec"))]
42671pub fn vreinterpret_f16_u64(a: uint64x1_t) -> float16x4_t {
42672 unsafe { transmute(a) }
42673}
42674#[doc = "Vector reinterpret cast operation"]
42675#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u64)"]
42676#[inline]
42677#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42678#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42679#[cfg_attr(
42680 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42681 assert_instr(nop)
42682)]
42683#[target_feature(enable = "neon,fp16")]
42684#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42685#[cfg(not(target_arch = "arm64ec"))]
42686pub fn vreinterpretq_f16_u64(a: uint64x2_t) -> float16x8_t {
42687 unsafe { transmute(a) }
42688}
42689#[doc = "Vector reinterpret cast operation"]
42690#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p8)"]
42691#[inline]
42692#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42693#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42694#[cfg_attr(
42695 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42696 assert_instr(nop)
42697)]
42698#[target_feature(enable = "neon,fp16")]
42699#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42700#[cfg(not(target_arch = "arm64ec"))]
42701pub fn vreinterpret_f16_p8(a: poly8x8_t) -> float16x4_t {
42702 unsafe { transmute(a) }
42703}
42704#[doc = "Vector reinterpret cast operation"]
42705#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p8)"]
42706#[inline]
42707#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42708#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42709#[cfg_attr(
42710 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42711 assert_instr(nop)
42712)]
42713#[target_feature(enable = "neon,fp16")]
42714#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42715#[cfg(not(target_arch = "arm64ec"))]
42716pub fn vreinterpretq_f16_p8(a: poly8x16_t) -> float16x8_t {
42717 unsafe { transmute(a) }
42718}
42719#[doc = "Vector reinterpret cast operation"]
42720#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p16)"]
42721#[inline]
42722#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42723#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42724#[cfg_attr(
42725 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42726 assert_instr(nop)
42727)]
42728#[target_feature(enable = "neon,fp16")]
42729#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42730#[cfg(not(target_arch = "arm64ec"))]
42731pub fn vreinterpret_f16_p16(a: poly16x4_t) -> float16x4_t {
42732 unsafe { transmute(a) }
42733}
42734#[doc = "Vector reinterpret cast operation"]
42735#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p16)"]
42736#[inline]
42737#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42738#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42739#[cfg_attr(
42740 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42741 assert_instr(nop)
42742)]
42743#[target_feature(enable = "neon,fp16")]
42744#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42745#[cfg(not(target_arch = "arm64ec"))]
42746pub fn vreinterpretq_f16_p16(a: poly16x8_t) -> float16x8_t {
42747 unsafe { transmute(a) }
42748}
42749#[doc = "Vector reinterpret cast operation"]
42750#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p128)"]
42751#[inline]
42752#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42753#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42754#[cfg_attr(
42755 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42756 assert_instr(nop)
42757)]
42758#[target_feature(enable = "neon,fp16")]
42759#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42760#[cfg(not(target_arch = "arm64ec"))]
42761pub fn vreinterpretq_f16_p128(a: p128) -> float16x8_t {
42762 unsafe { transmute(a) }
42763}
42764#[doc = "Vector reinterpret cast operation"]
42765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_f16)"]
42766#[inline]
42767#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42768#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42769#[cfg_attr(
42770 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42771 assert_instr(nop)
42772)]
42773#[target_feature(enable = "neon,fp16")]
42774#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42775#[cfg(not(target_arch = "arm64ec"))]
42776pub fn vreinterpret_p64_f16(a: float16x4_t) -> poly64x1_t {
42777 unsafe { transmute(a) }
42778}
42779#[doc = "Vector reinterpret cast operation"]
42780#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_f16)"]
42781#[inline]
42782#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42783#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42784#[cfg_attr(
42785 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42786 assert_instr(nop)
42787)]
42788#[target_feature(enable = "neon,fp16")]
42789#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42790#[cfg(not(target_arch = "arm64ec"))]
42791pub fn vreinterpretq_p128_f16(a: float16x8_t) -> p128 {
42792 unsafe { transmute(a) }
42793}
42794#[doc = "Vector reinterpret cast operation"]
42795#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_f16)"]
42796#[inline]
42797#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42798#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42799#[cfg_attr(
42800 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42801 assert_instr(nop)
42802)]
42803#[target_feature(enable = "neon,fp16")]
42804#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42805#[cfg(not(target_arch = "arm64ec"))]
42806pub fn vreinterpretq_p64_f16(a: float16x8_t) -> poly64x2_t {
42807 unsafe { transmute(a) }
42808}
42809#[doc = "Vector reinterpret cast operation"]
42810#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p64)"]
42811#[inline]
42812#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42813#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42814#[cfg_attr(
42815 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42816 assert_instr(nop)
42817)]
42818#[target_feature(enable = "neon,fp16")]
42819#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42820#[cfg(not(target_arch = "arm64ec"))]
42821pub fn vreinterpret_f16_p64(a: poly64x1_t) -> float16x4_t {
42822 unsafe { transmute(a) }
42823}
42824#[doc = "Vector reinterpret cast operation"]
42825#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p64)"]
42826#[inline]
42827#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42828#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42829#[cfg_attr(
42830 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42831 assert_instr(nop)
42832)]
42833#[target_feature(enable = "neon,fp16")]
42834#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
42835#[cfg(not(target_arch = "arm64ec"))]
42836pub fn vreinterpretq_f16_p64(a: poly64x2_t) -> float16x8_t {
42837 unsafe { transmute(a) }
42838}
42839#[doc = "Vector reinterpret cast operation"]
42840#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p128)"]
42841#[inline]
42842#[target_feature(enable = "neon")]
42843#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42844#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42845#[cfg_attr(
42846 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42847 assert_instr(nop)
42848)]
42849#[cfg_attr(
42850 not(target_arch = "arm"),
42851 stable(feature = "neon_intrinsics", since = "1.59.0")
42852)]
42853#[cfg_attr(
42854 target_arch = "arm",
42855 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42856)]
42857pub fn vreinterpretq_f32_p128(a: p128) -> float32x4_t {
42858 unsafe { transmute(a) }
42859}
42860#[doc = "Vector reinterpret cast operation"]
42861#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_f32)"]
42862#[inline]
42863#[target_feature(enable = "neon")]
42864#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42865#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42866#[cfg_attr(
42867 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42868 assert_instr(nop)
42869)]
42870#[cfg_attr(
42871 not(target_arch = "arm"),
42872 stable(feature = "neon_intrinsics", since = "1.59.0")
42873)]
42874#[cfg_attr(
42875 target_arch = "arm",
42876 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42877)]
42878pub fn vreinterpret_s8_f32(a: float32x2_t) -> int8x8_t {
42879 unsafe { transmute(a) }
42880}
42881#[doc = "Vector reinterpret cast operation"]
42882#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_f32)"]
42883#[inline]
42884#[target_feature(enable = "neon")]
42885#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42886#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42887#[cfg_attr(
42888 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42889 assert_instr(nop)
42890)]
42891#[cfg_attr(
42892 not(target_arch = "arm"),
42893 stable(feature = "neon_intrinsics", since = "1.59.0")
42894)]
42895#[cfg_attr(
42896 target_arch = "arm",
42897 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42898)]
42899pub fn vreinterpret_s16_f32(a: float32x2_t) -> int16x4_t {
42900 unsafe { transmute(a) }
42901}
42902#[doc = "Vector reinterpret cast operation"]
42903#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_f32)"]
42904#[inline]
42905#[target_feature(enable = "neon")]
42906#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42907#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42908#[cfg_attr(
42909 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42910 assert_instr(nop)
42911)]
42912#[cfg_attr(
42913 not(target_arch = "arm"),
42914 stable(feature = "neon_intrinsics", since = "1.59.0")
42915)]
42916#[cfg_attr(
42917 target_arch = "arm",
42918 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42919)]
42920pub fn vreinterpret_s32_f32(a: float32x2_t) -> int32x2_t {
42921 unsafe { transmute(a) }
42922}
42923#[doc = "Vector reinterpret cast operation"]
42924#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_f32)"]
42925#[inline]
42926#[target_feature(enable = "neon")]
42927#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42928#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42929#[cfg_attr(
42930 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42931 assert_instr(nop)
42932)]
42933#[cfg_attr(
42934 not(target_arch = "arm"),
42935 stable(feature = "neon_intrinsics", since = "1.59.0")
42936)]
42937#[cfg_attr(
42938 target_arch = "arm",
42939 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42940)]
42941pub fn vreinterpret_s64_f32(a: float32x2_t) -> int64x1_t {
42942 unsafe { transmute(a) }
42943}
42944#[doc = "Vector reinterpret cast operation"]
42945#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_f32)"]
42946#[inline]
42947#[target_feature(enable = "neon")]
42948#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42949#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42950#[cfg_attr(
42951 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42952 assert_instr(nop)
42953)]
42954#[cfg_attr(
42955 not(target_arch = "arm"),
42956 stable(feature = "neon_intrinsics", since = "1.59.0")
42957)]
42958#[cfg_attr(
42959 target_arch = "arm",
42960 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42961)]
42962pub fn vreinterpret_u8_f32(a: float32x2_t) -> uint8x8_t {
42963 unsafe { transmute(a) }
42964}
42965#[doc = "Vector reinterpret cast operation"]
42966#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_f32)"]
42967#[inline]
42968#[target_feature(enable = "neon")]
42969#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42970#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42971#[cfg_attr(
42972 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42973 assert_instr(nop)
42974)]
42975#[cfg_attr(
42976 not(target_arch = "arm"),
42977 stable(feature = "neon_intrinsics", since = "1.59.0")
42978)]
42979#[cfg_attr(
42980 target_arch = "arm",
42981 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42982)]
42983pub fn vreinterpret_u16_f32(a: float32x2_t) -> uint16x4_t {
42984 unsafe { transmute(a) }
42985}
42986#[doc = "Vector reinterpret cast operation"]
42987#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_f32)"]
42988#[inline]
42989#[target_feature(enable = "neon")]
42990#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42991#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42992#[cfg_attr(
42993 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42994 assert_instr(nop)
42995)]
42996#[cfg_attr(
42997 not(target_arch = "arm"),
42998 stable(feature = "neon_intrinsics", since = "1.59.0")
42999)]
43000#[cfg_attr(
43001 target_arch = "arm",
43002 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43003)]
43004pub fn vreinterpret_u32_f32(a: float32x2_t) -> uint32x2_t {
43005 unsafe { transmute(a) }
43006}
43007#[doc = "Vector reinterpret cast operation"]
43008#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_f32)"]
43009#[inline]
43010#[target_feature(enable = "neon")]
43011#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43012#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43013#[cfg_attr(
43014 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43015 assert_instr(nop)
43016)]
43017#[cfg_attr(
43018 not(target_arch = "arm"),
43019 stable(feature = "neon_intrinsics", since = "1.59.0")
43020)]
43021#[cfg_attr(
43022 target_arch = "arm",
43023 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43024)]
43025pub fn vreinterpret_u64_f32(a: float32x2_t) -> uint64x1_t {
43026 unsafe { transmute(a) }
43027}
43028#[doc = "Vector reinterpret cast operation"]
43029#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_f32)"]
43030#[inline]
43031#[target_feature(enable = "neon")]
43032#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43033#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43034#[cfg_attr(
43035 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43036 assert_instr(nop)
43037)]
43038#[cfg_attr(
43039 not(target_arch = "arm"),
43040 stable(feature = "neon_intrinsics", since = "1.59.0")
43041)]
43042#[cfg_attr(
43043 target_arch = "arm",
43044 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43045)]
43046pub fn vreinterpret_p8_f32(a: float32x2_t) -> poly8x8_t {
43047 unsafe { transmute(a) }
43048}
43049#[doc = "Vector reinterpret cast operation"]
43050#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_f32)"]
43051#[inline]
43052#[target_feature(enable = "neon")]
43053#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43054#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43055#[cfg_attr(
43056 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43057 assert_instr(nop)
43058)]
43059#[cfg_attr(
43060 not(target_arch = "arm"),
43061 stable(feature = "neon_intrinsics", since = "1.59.0")
43062)]
43063#[cfg_attr(
43064 target_arch = "arm",
43065 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43066)]
43067pub fn vreinterpret_p16_f32(a: float32x2_t) -> poly16x4_t {
43068 unsafe { transmute(a) }
43069}
43070#[doc = "Vector reinterpret cast operation"]
43071#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_f32)"]
43072#[inline]
43073#[target_feature(enable = "neon")]
43074#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43075#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43076#[cfg_attr(
43077 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43078 assert_instr(nop)
43079)]
43080#[cfg_attr(
43081 not(target_arch = "arm"),
43082 stable(feature = "neon_intrinsics", since = "1.59.0")
43083)]
43084#[cfg_attr(
43085 target_arch = "arm",
43086 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43087)]
43088pub fn vreinterpretq_p128_f32(a: float32x4_t) -> p128 {
43089 unsafe { transmute(a) }
43090}
43091#[doc = "Vector reinterpret cast operation"]
43092#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_f32)"]
43093#[inline]
43094#[target_feature(enable = "neon")]
43095#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43096#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43097#[cfg_attr(
43098 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43099 assert_instr(nop)
43100)]
43101#[cfg_attr(
43102 not(target_arch = "arm"),
43103 stable(feature = "neon_intrinsics", since = "1.59.0")
43104)]
43105#[cfg_attr(
43106 target_arch = "arm",
43107 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43108)]
43109pub fn vreinterpretq_s8_f32(a: float32x4_t) -> int8x16_t {
43110 unsafe { transmute(a) }
43111}
43112#[doc = "Vector reinterpret cast operation"]
43113#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_f32)"]
43114#[inline]
43115#[target_feature(enable = "neon")]
43116#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43117#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43118#[cfg_attr(
43119 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43120 assert_instr(nop)
43121)]
43122#[cfg_attr(
43123 not(target_arch = "arm"),
43124 stable(feature = "neon_intrinsics", since = "1.59.0")
43125)]
43126#[cfg_attr(
43127 target_arch = "arm",
43128 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43129)]
43130pub fn vreinterpretq_s16_f32(a: float32x4_t) -> int16x8_t {
43131 unsafe { transmute(a) }
43132}
43133#[doc = "Vector reinterpret cast operation"]
43134#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_f32)"]
43135#[inline]
43136#[target_feature(enable = "neon")]
43137#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43138#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43139#[cfg_attr(
43140 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43141 assert_instr(nop)
43142)]
43143#[cfg_attr(
43144 not(target_arch = "arm"),
43145 stable(feature = "neon_intrinsics", since = "1.59.0")
43146)]
43147#[cfg_attr(
43148 target_arch = "arm",
43149 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43150)]
43151pub fn vreinterpretq_s32_f32(a: float32x4_t) -> int32x4_t {
43152 unsafe { transmute(a) }
43153}
43154#[doc = "Vector reinterpret cast operation"]
43155#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_f32)"]
43156#[inline]
43157#[target_feature(enable = "neon")]
43158#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43159#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43160#[cfg_attr(
43161 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43162 assert_instr(nop)
43163)]
43164#[cfg_attr(
43165 not(target_arch = "arm"),
43166 stable(feature = "neon_intrinsics", since = "1.59.0")
43167)]
43168#[cfg_attr(
43169 target_arch = "arm",
43170 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43171)]
43172pub fn vreinterpretq_s64_f32(a: float32x4_t) -> int64x2_t {
43173 unsafe { transmute(a) }
43174}
43175#[doc = "Vector reinterpret cast operation"]
43176#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_f32)"]
43177#[inline]
43178#[target_feature(enable = "neon")]
43179#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43180#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43181#[cfg_attr(
43182 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43183 assert_instr(nop)
43184)]
43185#[cfg_attr(
43186 not(target_arch = "arm"),
43187 stable(feature = "neon_intrinsics", since = "1.59.0")
43188)]
43189#[cfg_attr(
43190 target_arch = "arm",
43191 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43192)]
43193pub fn vreinterpretq_u8_f32(a: float32x4_t) -> uint8x16_t {
43194 unsafe { transmute(a) }
43195}
43196#[doc = "Vector reinterpret cast operation"]
43197#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_f32)"]
43198#[inline]
43199#[target_feature(enable = "neon")]
43200#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43201#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43202#[cfg_attr(
43203 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43204 assert_instr(nop)
43205)]
43206#[cfg_attr(
43207 not(target_arch = "arm"),
43208 stable(feature = "neon_intrinsics", since = "1.59.0")
43209)]
43210#[cfg_attr(
43211 target_arch = "arm",
43212 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43213)]
43214pub fn vreinterpretq_u16_f32(a: float32x4_t) -> uint16x8_t {
43215 unsafe { transmute(a) }
43216}
43217#[doc = "Vector reinterpret cast operation"]
43218#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_f32)"]
43219#[inline]
43220#[target_feature(enable = "neon")]
43221#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43222#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43223#[cfg_attr(
43224 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43225 assert_instr(nop)
43226)]
43227#[cfg_attr(
43228 not(target_arch = "arm"),
43229 stable(feature = "neon_intrinsics", since = "1.59.0")
43230)]
43231#[cfg_attr(
43232 target_arch = "arm",
43233 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43234)]
43235pub fn vreinterpretq_u32_f32(a: float32x4_t) -> uint32x4_t {
43236 unsafe { transmute(a) }
43237}
43238#[doc = "Vector reinterpret cast operation"]
43239#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_f32)"]
43240#[inline]
43241#[target_feature(enable = "neon")]
43242#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43243#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43244#[cfg_attr(
43245 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43246 assert_instr(nop)
43247)]
43248#[cfg_attr(
43249 not(target_arch = "arm"),
43250 stable(feature = "neon_intrinsics", since = "1.59.0")
43251)]
43252#[cfg_attr(
43253 target_arch = "arm",
43254 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43255)]
43256pub fn vreinterpretq_u64_f32(a: float32x4_t) -> uint64x2_t {
43257 unsafe { transmute(a) }
43258}
43259#[doc = "Vector reinterpret cast operation"]
43260#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_f32)"]
43261#[inline]
43262#[target_feature(enable = "neon")]
43263#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43264#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43265#[cfg_attr(
43266 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43267 assert_instr(nop)
43268)]
43269#[cfg_attr(
43270 not(target_arch = "arm"),
43271 stable(feature = "neon_intrinsics", since = "1.59.0")
43272)]
43273#[cfg_attr(
43274 target_arch = "arm",
43275 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43276)]
43277pub fn vreinterpretq_p8_f32(a: float32x4_t) -> poly8x16_t {
43278 unsafe { transmute(a) }
43279}
43280#[doc = "Vector reinterpret cast operation"]
43281#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_f32)"]
43282#[inline]
43283#[target_feature(enable = "neon")]
43284#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43285#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43286#[cfg_attr(
43287 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43288 assert_instr(nop)
43289)]
43290#[cfg_attr(
43291 not(target_arch = "arm"),
43292 stable(feature = "neon_intrinsics", since = "1.59.0")
43293)]
43294#[cfg_attr(
43295 target_arch = "arm",
43296 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43297)]
43298pub fn vreinterpretq_p16_f32(a: float32x4_t) -> poly16x8_t {
43299 unsafe { transmute(a) }
43300}
43301#[doc = "Vector reinterpret cast operation"]
43302#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s8)"]
43303#[inline]
43304#[target_feature(enable = "neon")]
43305#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43306#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43307#[cfg_attr(
43308 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43309 assert_instr(nop)
43310)]
43311#[cfg_attr(
43312 not(target_arch = "arm"),
43313 stable(feature = "neon_intrinsics", since = "1.59.0")
43314)]
43315#[cfg_attr(
43316 target_arch = "arm",
43317 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43318)]
43319pub fn vreinterpret_f32_s8(a: int8x8_t) -> float32x2_t {
43320 unsafe { transmute(a) }
43321}
43322#[doc = "Vector reinterpret cast operation"]
43323#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_s8)"]
43324#[inline]
43325#[target_feature(enable = "neon")]
43326#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43327#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43328#[cfg_attr(
43329 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43330 assert_instr(nop)
43331)]
43332#[cfg_attr(
43333 not(target_arch = "arm"),
43334 stable(feature = "neon_intrinsics", since = "1.59.0")
43335)]
43336#[cfg_attr(
43337 target_arch = "arm",
43338 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43339)]
43340pub fn vreinterpret_s16_s8(a: int8x8_t) -> int16x4_t {
43341 unsafe { transmute(a) }
43342}
43343#[doc = "Vector reinterpret cast operation"]
43344#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s8)"]
43345#[inline]
43346#[target_feature(enable = "neon")]
43347#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43348#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43349#[cfg_attr(
43350 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43351 assert_instr(nop)
43352)]
43353#[cfg_attr(
43354 not(target_arch = "arm"),
43355 stable(feature = "neon_intrinsics", since = "1.59.0")
43356)]
43357#[cfg_attr(
43358 target_arch = "arm",
43359 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43360)]
43361pub fn vreinterpret_s32_s8(a: int8x8_t) -> int32x2_t {
43362 unsafe { transmute(a) }
43363}
43364#[doc = "Vector reinterpret cast operation"]
43365#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_s8)"]
43366#[inline]
43367#[target_feature(enable = "neon")]
43368#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43369#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43370#[cfg_attr(
43371 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43372 assert_instr(nop)
43373)]
43374#[cfg_attr(
43375 not(target_arch = "arm"),
43376 stable(feature = "neon_intrinsics", since = "1.59.0")
43377)]
43378#[cfg_attr(
43379 target_arch = "arm",
43380 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43381)]
43382pub fn vreinterpret_s64_s8(a: int8x8_t) -> int64x1_t {
43383 unsafe { transmute(a) }
43384}
43385#[doc = "Vector reinterpret cast operation"]
43386#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s8)"]
43387#[inline]
43388#[target_feature(enable = "neon")]
43389#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43390#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43391#[cfg_attr(
43392 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43393 assert_instr(nop)
43394)]
43395#[cfg_attr(
43396 not(target_arch = "arm"),
43397 stable(feature = "neon_intrinsics", since = "1.59.0")
43398)]
43399#[cfg_attr(
43400 target_arch = "arm",
43401 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43402)]
43403pub fn vreinterpret_u8_s8(a: int8x8_t) -> uint8x8_t {
43404 unsafe { transmute(a) }
43405}
43406#[doc = "Vector reinterpret cast operation"]
43407#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s8)"]
43408#[inline]
43409#[target_feature(enable = "neon")]
43410#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43411#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43412#[cfg_attr(
43413 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43414 assert_instr(nop)
43415)]
43416#[cfg_attr(
43417 not(target_arch = "arm"),
43418 stable(feature = "neon_intrinsics", since = "1.59.0")
43419)]
43420#[cfg_attr(
43421 target_arch = "arm",
43422 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43423)]
43424pub fn vreinterpret_u16_s8(a: int8x8_t) -> uint16x4_t {
43425 unsafe { transmute(a) }
43426}
43427#[doc = "Vector reinterpret cast operation"]
43428#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s8)"]
43429#[inline]
43430#[target_feature(enable = "neon")]
43431#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43432#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43433#[cfg_attr(
43434 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43435 assert_instr(nop)
43436)]
43437#[cfg_attr(
43438 not(target_arch = "arm"),
43439 stable(feature = "neon_intrinsics", since = "1.59.0")
43440)]
43441#[cfg_attr(
43442 target_arch = "arm",
43443 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43444)]
43445pub fn vreinterpret_u32_s8(a: int8x8_t) -> uint32x2_t {
43446 unsafe { transmute(a) }
43447}
43448#[doc = "Vector reinterpret cast operation"]
43449#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s8)"]
43450#[inline]
43451#[target_feature(enable = "neon")]
43452#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43453#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43454#[cfg_attr(
43455 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43456 assert_instr(nop)
43457)]
43458#[cfg_attr(
43459 not(target_arch = "arm"),
43460 stable(feature = "neon_intrinsics", since = "1.59.0")
43461)]
43462#[cfg_attr(
43463 target_arch = "arm",
43464 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43465)]
43466pub fn vreinterpret_u64_s8(a: int8x8_t) -> uint64x1_t {
43467 unsafe { transmute(a) }
43468}
43469#[doc = "Vector reinterpret cast operation"]
43470#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s8)"]
43471#[inline]
43472#[target_feature(enable = "neon")]
43473#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43474#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43475#[cfg_attr(
43476 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43477 assert_instr(nop)
43478)]
43479#[cfg_attr(
43480 not(target_arch = "arm"),
43481 stable(feature = "neon_intrinsics", since = "1.59.0")
43482)]
43483#[cfg_attr(
43484 target_arch = "arm",
43485 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43486)]
43487pub fn vreinterpret_p8_s8(a: int8x8_t) -> poly8x8_t {
43488 unsafe { transmute(a) }
43489}
43490#[doc = "Vector reinterpret cast operation"]
43491#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s8)"]
43492#[inline]
43493#[target_feature(enable = "neon")]
43494#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43495#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43496#[cfg_attr(
43497 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43498 assert_instr(nop)
43499)]
43500#[cfg_attr(
43501 not(target_arch = "arm"),
43502 stable(feature = "neon_intrinsics", since = "1.59.0")
43503)]
43504#[cfg_attr(
43505 target_arch = "arm",
43506 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43507)]
43508pub fn vreinterpret_p16_s8(a: int8x8_t) -> poly16x4_t {
43509 unsafe { transmute(a) }
43510}
43511#[doc = "Vector reinterpret cast operation"]
43512#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s8)"]
43513#[inline]
43514#[target_feature(enable = "neon")]
43515#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43516#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43517#[cfg_attr(
43518 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43519 assert_instr(nop)
43520)]
43521#[cfg_attr(
43522 not(target_arch = "arm"),
43523 stable(feature = "neon_intrinsics", since = "1.59.0")
43524)]
43525#[cfg_attr(
43526 target_arch = "arm",
43527 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43528)]
43529pub fn vreinterpretq_f32_s8(a: int8x16_t) -> float32x4_t {
43530 unsafe { transmute(a) }
43531}
43532#[doc = "Vector reinterpret cast operation"]
43533#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s8)"]
43534#[inline]
43535#[target_feature(enable = "neon")]
43536#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43537#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43538#[cfg_attr(
43539 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43540 assert_instr(nop)
43541)]
43542#[cfg_attr(
43543 not(target_arch = "arm"),
43544 stable(feature = "neon_intrinsics", since = "1.59.0")
43545)]
43546#[cfg_attr(
43547 target_arch = "arm",
43548 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43549)]
43550pub fn vreinterpretq_s16_s8(a: int8x16_t) -> int16x8_t {
43551 unsafe { transmute(a) }
43552}
43553#[doc = "Vector reinterpret cast operation"]
43554#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s8)"]
43555#[inline]
43556#[target_feature(enable = "neon")]
43557#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43558#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43559#[cfg_attr(
43560 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43561 assert_instr(nop)
43562)]
43563#[cfg_attr(
43564 not(target_arch = "arm"),
43565 stable(feature = "neon_intrinsics", since = "1.59.0")
43566)]
43567#[cfg_attr(
43568 target_arch = "arm",
43569 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43570)]
43571pub fn vreinterpretq_s32_s8(a: int8x16_t) -> int32x4_t {
43572 unsafe { transmute(a) }
43573}
43574#[doc = "Vector reinterpret cast operation"]
43575#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s8)"]
43576#[inline]
43577#[target_feature(enable = "neon")]
43578#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43579#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43580#[cfg_attr(
43581 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43582 assert_instr(nop)
43583)]
43584#[cfg_attr(
43585 not(target_arch = "arm"),
43586 stable(feature = "neon_intrinsics", since = "1.59.0")
43587)]
43588#[cfg_attr(
43589 target_arch = "arm",
43590 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43591)]
43592pub fn vreinterpretq_s64_s8(a: int8x16_t) -> int64x2_t {
43593 unsafe { transmute(a) }
43594}
43595#[doc = "Vector reinterpret cast operation"]
43596#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s8)"]
43597#[inline]
43598#[target_feature(enable = "neon")]
43599#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43600#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43601#[cfg_attr(
43602 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43603 assert_instr(nop)
43604)]
43605#[cfg_attr(
43606 not(target_arch = "arm"),
43607 stable(feature = "neon_intrinsics", since = "1.59.0")
43608)]
43609#[cfg_attr(
43610 target_arch = "arm",
43611 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43612)]
43613pub fn vreinterpretq_u8_s8(a: int8x16_t) -> uint8x16_t {
43614 unsafe { transmute(a) }
43615}
43616#[doc = "Vector reinterpret cast operation"]
43617#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s8)"]
43618#[inline]
43619#[target_feature(enable = "neon")]
43620#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43621#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43622#[cfg_attr(
43623 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43624 assert_instr(nop)
43625)]
43626#[cfg_attr(
43627 not(target_arch = "arm"),
43628 stable(feature = "neon_intrinsics", since = "1.59.0")
43629)]
43630#[cfg_attr(
43631 target_arch = "arm",
43632 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43633)]
43634pub fn vreinterpretq_u16_s8(a: int8x16_t) -> uint16x8_t {
43635 unsafe { transmute(a) }
43636}
43637#[doc = "Vector reinterpret cast operation"]
43638#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s8)"]
43639#[inline]
43640#[target_feature(enable = "neon")]
43641#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43642#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43643#[cfg_attr(
43644 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43645 assert_instr(nop)
43646)]
43647#[cfg_attr(
43648 not(target_arch = "arm"),
43649 stable(feature = "neon_intrinsics", since = "1.59.0")
43650)]
43651#[cfg_attr(
43652 target_arch = "arm",
43653 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43654)]
43655pub fn vreinterpretq_u32_s8(a: int8x16_t) -> uint32x4_t {
43656 unsafe { transmute(a) }
43657}
43658#[doc = "Vector reinterpret cast operation"]
43659#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s8)"]
43660#[inline]
43661#[target_feature(enable = "neon")]
43662#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43663#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43664#[cfg_attr(
43665 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43666 assert_instr(nop)
43667)]
43668#[cfg_attr(
43669 not(target_arch = "arm"),
43670 stable(feature = "neon_intrinsics", since = "1.59.0")
43671)]
43672#[cfg_attr(
43673 target_arch = "arm",
43674 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43675)]
43676pub fn vreinterpretq_u64_s8(a: int8x16_t) -> uint64x2_t {
43677 unsafe { transmute(a) }
43678}
43679#[doc = "Vector reinterpret cast operation"]
43680#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s8)"]
43681#[inline]
43682#[target_feature(enable = "neon")]
43683#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43684#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43685#[cfg_attr(
43686 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43687 assert_instr(nop)
43688)]
43689#[cfg_attr(
43690 not(target_arch = "arm"),
43691 stable(feature = "neon_intrinsics", since = "1.59.0")
43692)]
43693#[cfg_attr(
43694 target_arch = "arm",
43695 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43696)]
43697pub fn vreinterpretq_p8_s8(a: int8x16_t) -> poly8x16_t {
43698 unsafe { transmute(a) }
43699}
43700#[doc = "Vector reinterpret cast operation"]
43701#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s8)"]
43702#[inline]
43703#[target_feature(enable = "neon")]
43704#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43705#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43706#[cfg_attr(
43707 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43708 assert_instr(nop)
43709)]
43710#[cfg_attr(
43711 not(target_arch = "arm"),
43712 stable(feature = "neon_intrinsics", since = "1.59.0")
43713)]
43714#[cfg_attr(
43715 target_arch = "arm",
43716 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43717)]
43718pub fn vreinterpretq_p16_s8(a: int8x16_t) -> poly16x8_t {
43719 unsafe { transmute(a) }
43720}
43721#[doc = "Vector reinterpret cast operation"]
43722#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s16)"]
43723#[inline]
43724#[target_feature(enable = "neon")]
43725#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43726#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43727#[cfg_attr(
43728 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43729 assert_instr(nop)
43730)]
43731#[cfg_attr(
43732 not(target_arch = "arm"),
43733 stable(feature = "neon_intrinsics", since = "1.59.0")
43734)]
43735#[cfg_attr(
43736 target_arch = "arm",
43737 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43738)]
43739pub fn vreinterpret_f32_s16(a: int16x4_t) -> float32x2_t {
43740 unsafe { transmute(a) }
43741}
43742#[doc = "Vector reinterpret cast operation"]
43743#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s16)"]
43744#[inline]
43745#[target_feature(enable = "neon")]
43746#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43747#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43748#[cfg_attr(
43749 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43750 assert_instr(nop)
43751)]
43752#[cfg_attr(
43753 not(target_arch = "arm"),
43754 stable(feature = "neon_intrinsics", since = "1.59.0")
43755)]
43756#[cfg_attr(
43757 target_arch = "arm",
43758 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43759)]
43760pub fn vreinterpret_s8_s16(a: int16x4_t) -> int8x8_t {
43761 unsafe { transmute(a) }
43762}
43763#[doc = "Vector reinterpret cast operation"]
43764#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s16)"]
43765#[inline]
43766#[target_feature(enable = "neon")]
43767#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43768#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43769#[cfg_attr(
43770 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43771 assert_instr(nop)
43772)]
43773#[cfg_attr(
43774 not(target_arch = "arm"),
43775 stable(feature = "neon_intrinsics", since = "1.59.0")
43776)]
43777#[cfg_attr(
43778 target_arch = "arm",
43779 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43780)]
43781pub fn vreinterpret_s32_s16(a: int16x4_t) -> int32x2_t {
43782 unsafe { transmute(a) }
43783}
43784#[doc = "Vector reinterpret cast operation"]
43785#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_s16)"]
43786#[inline]
43787#[target_feature(enable = "neon")]
43788#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43789#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43790#[cfg_attr(
43791 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43792 assert_instr(nop)
43793)]
43794#[cfg_attr(
43795 not(target_arch = "arm"),
43796 stable(feature = "neon_intrinsics", since = "1.59.0")
43797)]
43798#[cfg_attr(
43799 target_arch = "arm",
43800 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43801)]
43802pub fn vreinterpret_s64_s16(a: int16x4_t) -> int64x1_t {
43803 unsafe { transmute(a) }
43804}
43805#[doc = "Vector reinterpret cast operation"]
43806#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s16)"]
43807#[inline]
43808#[target_feature(enable = "neon")]
43809#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43810#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43811#[cfg_attr(
43812 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43813 assert_instr(nop)
43814)]
43815#[cfg_attr(
43816 not(target_arch = "arm"),
43817 stable(feature = "neon_intrinsics", since = "1.59.0")
43818)]
43819#[cfg_attr(
43820 target_arch = "arm",
43821 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43822)]
43823pub fn vreinterpret_u8_s16(a: int16x4_t) -> uint8x8_t {
43824 unsafe { transmute(a) }
43825}
43826#[doc = "Vector reinterpret cast operation"]
43827#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s16)"]
43828#[inline]
43829#[target_feature(enable = "neon")]
43830#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43831#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43832#[cfg_attr(
43833 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43834 assert_instr(nop)
43835)]
43836#[cfg_attr(
43837 not(target_arch = "arm"),
43838 stable(feature = "neon_intrinsics", since = "1.59.0")
43839)]
43840#[cfg_attr(
43841 target_arch = "arm",
43842 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43843)]
43844pub fn vreinterpret_u16_s16(a: int16x4_t) -> uint16x4_t {
43845 unsafe { transmute(a) }
43846}
43847#[doc = "Vector reinterpret cast operation"]
43848#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s16)"]
43849#[inline]
43850#[target_feature(enable = "neon")]
43851#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43852#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43853#[cfg_attr(
43854 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43855 assert_instr(nop)
43856)]
43857#[cfg_attr(
43858 not(target_arch = "arm"),
43859 stable(feature = "neon_intrinsics", since = "1.59.0")
43860)]
43861#[cfg_attr(
43862 target_arch = "arm",
43863 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43864)]
43865pub fn vreinterpret_u32_s16(a: int16x4_t) -> uint32x2_t {
43866 unsafe { transmute(a) }
43867}
43868#[doc = "Vector reinterpret cast operation"]
43869#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s16)"]
43870#[inline]
43871#[target_feature(enable = "neon")]
43872#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43873#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43874#[cfg_attr(
43875 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43876 assert_instr(nop)
43877)]
43878#[cfg_attr(
43879 not(target_arch = "arm"),
43880 stable(feature = "neon_intrinsics", since = "1.59.0")
43881)]
43882#[cfg_attr(
43883 target_arch = "arm",
43884 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43885)]
43886pub fn vreinterpret_u64_s16(a: int16x4_t) -> uint64x1_t {
43887 unsafe { transmute(a) }
43888}
43889#[doc = "Vector reinterpret cast operation"]
43890#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s16)"]
43891#[inline]
43892#[target_feature(enable = "neon")]
43893#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43894#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43895#[cfg_attr(
43896 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43897 assert_instr(nop)
43898)]
43899#[cfg_attr(
43900 not(target_arch = "arm"),
43901 stable(feature = "neon_intrinsics", since = "1.59.0")
43902)]
43903#[cfg_attr(
43904 target_arch = "arm",
43905 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43906)]
43907pub fn vreinterpret_p8_s16(a: int16x4_t) -> poly8x8_t {
43908 unsafe { transmute(a) }
43909}
43910#[doc = "Vector reinterpret cast operation"]
43911#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s16)"]
43912#[inline]
43913#[target_feature(enable = "neon")]
43914#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43915#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43916#[cfg_attr(
43917 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43918 assert_instr(nop)
43919)]
43920#[cfg_attr(
43921 not(target_arch = "arm"),
43922 stable(feature = "neon_intrinsics", since = "1.59.0")
43923)]
43924#[cfg_attr(
43925 target_arch = "arm",
43926 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43927)]
43928pub fn vreinterpret_p16_s16(a: int16x4_t) -> poly16x4_t {
43929 unsafe { transmute(a) }
43930}
43931#[doc = "Vector reinterpret cast operation"]
43932#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s16)"]
43933#[inline]
43934#[target_feature(enable = "neon")]
43935#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43936#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43937#[cfg_attr(
43938 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43939 assert_instr(nop)
43940)]
43941#[cfg_attr(
43942 not(target_arch = "arm"),
43943 stable(feature = "neon_intrinsics", since = "1.59.0")
43944)]
43945#[cfg_attr(
43946 target_arch = "arm",
43947 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43948)]
43949pub fn vreinterpretq_f32_s16(a: int16x8_t) -> float32x4_t {
43950 unsafe { transmute(a) }
43951}
43952#[doc = "Vector reinterpret cast operation"]
43953#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s16)"]
43954#[inline]
43955#[target_feature(enable = "neon")]
43956#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43957#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43958#[cfg_attr(
43959 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43960 assert_instr(nop)
43961)]
43962#[cfg_attr(
43963 not(target_arch = "arm"),
43964 stable(feature = "neon_intrinsics", since = "1.59.0")
43965)]
43966#[cfg_attr(
43967 target_arch = "arm",
43968 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43969)]
43970pub fn vreinterpretq_s8_s16(a: int16x8_t) -> int8x16_t {
43971 unsafe { transmute(a) }
43972}
43973#[doc = "Vector reinterpret cast operation"]
43974#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s16)"]
43975#[inline]
43976#[target_feature(enable = "neon")]
43977#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43978#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43979#[cfg_attr(
43980 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43981 assert_instr(nop)
43982)]
43983#[cfg_attr(
43984 not(target_arch = "arm"),
43985 stable(feature = "neon_intrinsics", since = "1.59.0")
43986)]
43987#[cfg_attr(
43988 target_arch = "arm",
43989 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43990)]
43991pub fn vreinterpretq_s32_s16(a: int16x8_t) -> int32x4_t {
43992 unsafe { transmute(a) }
43993}
43994#[doc = "Vector reinterpret cast operation"]
43995#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s16)"]
43996#[inline]
43997#[target_feature(enable = "neon")]
43998#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43999#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44000#[cfg_attr(
44001 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44002 assert_instr(nop)
44003)]
44004#[cfg_attr(
44005 not(target_arch = "arm"),
44006 stable(feature = "neon_intrinsics", since = "1.59.0")
44007)]
44008#[cfg_attr(
44009 target_arch = "arm",
44010 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44011)]
44012pub fn vreinterpretq_s64_s16(a: int16x8_t) -> int64x2_t {
44013 unsafe { transmute(a) }
44014}
44015#[doc = "Vector reinterpret cast operation"]
44016#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s16)"]
44017#[inline]
44018#[target_feature(enable = "neon")]
44019#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44020#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44021#[cfg_attr(
44022 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44023 assert_instr(nop)
44024)]
44025#[cfg_attr(
44026 not(target_arch = "arm"),
44027 stable(feature = "neon_intrinsics", since = "1.59.0")
44028)]
44029#[cfg_attr(
44030 target_arch = "arm",
44031 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44032)]
44033pub fn vreinterpretq_u8_s16(a: int16x8_t) -> uint8x16_t {
44034 unsafe { transmute(a) }
44035}
44036#[doc = "Vector reinterpret cast operation"]
44037#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s16)"]
44038#[inline]
44039#[target_feature(enable = "neon")]
44040#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44041#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44042#[cfg_attr(
44043 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44044 assert_instr(nop)
44045)]
44046#[cfg_attr(
44047 not(target_arch = "arm"),
44048 stable(feature = "neon_intrinsics", since = "1.59.0")
44049)]
44050#[cfg_attr(
44051 target_arch = "arm",
44052 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44053)]
44054pub fn vreinterpretq_u16_s16(a: int16x8_t) -> uint16x8_t {
44055 unsafe { transmute(a) }
44056}
44057#[doc = "Vector reinterpret cast operation"]
44058#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s16)"]
44059#[inline]
44060#[target_feature(enable = "neon")]
44061#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44062#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44063#[cfg_attr(
44064 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44065 assert_instr(nop)
44066)]
44067#[cfg_attr(
44068 not(target_arch = "arm"),
44069 stable(feature = "neon_intrinsics", since = "1.59.0")
44070)]
44071#[cfg_attr(
44072 target_arch = "arm",
44073 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44074)]
44075pub fn vreinterpretq_u32_s16(a: int16x8_t) -> uint32x4_t {
44076 unsafe { transmute(a) }
44077}
44078#[doc = "Vector reinterpret cast operation"]
44079#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s16)"]
44080#[inline]
44081#[target_feature(enable = "neon")]
44082#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44083#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44084#[cfg_attr(
44085 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44086 assert_instr(nop)
44087)]
44088#[cfg_attr(
44089 not(target_arch = "arm"),
44090 stable(feature = "neon_intrinsics", since = "1.59.0")
44091)]
44092#[cfg_attr(
44093 target_arch = "arm",
44094 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44095)]
44096pub fn vreinterpretq_u64_s16(a: int16x8_t) -> uint64x2_t {
44097 unsafe { transmute(a) }
44098}
44099#[doc = "Vector reinterpret cast operation"]
44100#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s16)"]
44101#[inline]
44102#[target_feature(enable = "neon")]
44103#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44104#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44105#[cfg_attr(
44106 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44107 assert_instr(nop)
44108)]
44109#[cfg_attr(
44110 not(target_arch = "arm"),
44111 stable(feature = "neon_intrinsics", since = "1.59.0")
44112)]
44113#[cfg_attr(
44114 target_arch = "arm",
44115 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44116)]
44117pub fn vreinterpretq_p8_s16(a: int16x8_t) -> poly8x16_t {
44118 unsafe { transmute(a) }
44119}
44120#[doc = "Vector reinterpret cast operation"]
44121#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s16)"]
44122#[inline]
44123#[target_feature(enable = "neon")]
44124#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44125#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44126#[cfg_attr(
44127 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44128 assert_instr(nop)
44129)]
44130#[cfg_attr(
44131 not(target_arch = "arm"),
44132 stable(feature = "neon_intrinsics", since = "1.59.0")
44133)]
44134#[cfg_attr(
44135 target_arch = "arm",
44136 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44137)]
44138pub fn vreinterpretq_p16_s16(a: int16x8_t) -> poly16x8_t {
44139 unsafe { transmute(a) }
44140}
44141#[doc = "Vector reinterpret cast operation"]
44142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s32)"]
44143#[inline]
44144#[target_feature(enable = "neon")]
44145#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44146#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44147#[cfg_attr(
44148 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44149 assert_instr(nop)
44150)]
44151#[cfg_attr(
44152 not(target_arch = "arm"),
44153 stable(feature = "neon_intrinsics", since = "1.59.0")
44154)]
44155#[cfg_attr(
44156 target_arch = "arm",
44157 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44158)]
44159pub fn vreinterpret_f32_s32(a: int32x2_t) -> float32x2_t {
44160 unsafe { transmute(a) }
44161}
44162#[doc = "Vector reinterpret cast operation"]
44163#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s32)"]
44164#[inline]
44165#[target_feature(enable = "neon")]
44166#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44167#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44168#[cfg_attr(
44169 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44170 assert_instr(nop)
44171)]
44172#[cfg_attr(
44173 not(target_arch = "arm"),
44174 stable(feature = "neon_intrinsics", since = "1.59.0")
44175)]
44176#[cfg_attr(
44177 target_arch = "arm",
44178 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44179)]
44180pub fn vreinterpret_s8_s32(a: int32x2_t) -> int8x8_t {
44181 unsafe { transmute(a) }
44182}
44183#[doc = "Vector reinterpret cast operation"]
44184#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_s32)"]
44185#[inline]
44186#[target_feature(enable = "neon")]
44187#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44188#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44189#[cfg_attr(
44190 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44191 assert_instr(nop)
44192)]
44193#[cfg_attr(
44194 not(target_arch = "arm"),
44195 stable(feature = "neon_intrinsics", since = "1.59.0")
44196)]
44197#[cfg_attr(
44198 target_arch = "arm",
44199 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44200)]
44201pub fn vreinterpret_s16_s32(a: int32x2_t) -> int16x4_t {
44202 unsafe { transmute(a) }
44203}
44204#[doc = "Vector reinterpret cast operation"]
44205#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_s32)"]
44206#[inline]
44207#[target_feature(enable = "neon")]
44208#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44209#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44210#[cfg_attr(
44211 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44212 assert_instr(nop)
44213)]
44214#[cfg_attr(
44215 not(target_arch = "arm"),
44216 stable(feature = "neon_intrinsics", since = "1.59.0")
44217)]
44218#[cfg_attr(
44219 target_arch = "arm",
44220 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44221)]
44222pub fn vreinterpret_s64_s32(a: int32x2_t) -> int64x1_t {
44223 unsafe { transmute(a) }
44224}
44225#[doc = "Vector reinterpret cast operation"]
44226#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s32)"]
44227#[inline]
44228#[target_feature(enable = "neon")]
44229#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44230#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44231#[cfg_attr(
44232 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44233 assert_instr(nop)
44234)]
44235#[cfg_attr(
44236 not(target_arch = "arm"),
44237 stable(feature = "neon_intrinsics", since = "1.59.0")
44238)]
44239#[cfg_attr(
44240 target_arch = "arm",
44241 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44242)]
44243pub fn vreinterpret_u8_s32(a: int32x2_t) -> uint8x8_t {
44244 unsafe { transmute(a) }
44245}
44246#[doc = "Vector reinterpret cast operation"]
44247#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s32)"]
44248#[inline]
44249#[target_feature(enable = "neon")]
44250#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44251#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44252#[cfg_attr(
44253 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44254 assert_instr(nop)
44255)]
44256#[cfg_attr(
44257 not(target_arch = "arm"),
44258 stable(feature = "neon_intrinsics", since = "1.59.0")
44259)]
44260#[cfg_attr(
44261 target_arch = "arm",
44262 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44263)]
44264pub fn vreinterpret_u16_s32(a: int32x2_t) -> uint16x4_t {
44265 unsafe { transmute(a) }
44266}
44267#[doc = "Vector reinterpret cast operation"]
44268#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s32)"]
44269#[inline]
44270#[target_feature(enable = "neon")]
44271#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44272#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44273#[cfg_attr(
44274 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44275 assert_instr(nop)
44276)]
44277#[cfg_attr(
44278 not(target_arch = "arm"),
44279 stable(feature = "neon_intrinsics", since = "1.59.0")
44280)]
44281#[cfg_attr(
44282 target_arch = "arm",
44283 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44284)]
44285pub fn vreinterpret_u32_s32(a: int32x2_t) -> uint32x2_t {
44286 unsafe { transmute(a) }
44287}
44288#[doc = "Vector reinterpret cast operation"]
44289#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s32)"]
44290#[inline]
44291#[target_feature(enable = "neon")]
44292#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44293#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44294#[cfg_attr(
44295 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44296 assert_instr(nop)
44297)]
44298#[cfg_attr(
44299 not(target_arch = "arm"),
44300 stable(feature = "neon_intrinsics", since = "1.59.0")
44301)]
44302#[cfg_attr(
44303 target_arch = "arm",
44304 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44305)]
44306pub fn vreinterpret_u64_s32(a: int32x2_t) -> uint64x1_t {
44307 unsafe { transmute(a) }
44308}
44309#[doc = "Vector reinterpret cast operation"]
44310#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s32)"]
44311#[inline]
44312#[target_feature(enable = "neon")]
44313#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44314#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44315#[cfg_attr(
44316 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44317 assert_instr(nop)
44318)]
44319#[cfg_attr(
44320 not(target_arch = "arm"),
44321 stable(feature = "neon_intrinsics", since = "1.59.0")
44322)]
44323#[cfg_attr(
44324 target_arch = "arm",
44325 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44326)]
44327pub fn vreinterpret_p8_s32(a: int32x2_t) -> poly8x8_t {
44328 unsafe { transmute(a) }
44329}
44330#[doc = "Vector reinterpret cast operation"]
44331#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s32)"]
44332#[inline]
44333#[target_feature(enable = "neon")]
44334#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44335#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44336#[cfg_attr(
44337 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44338 assert_instr(nop)
44339)]
44340#[cfg_attr(
44341 not(target_arch = "arm"),
44342 stable(feature = "neon_intrinsics", since = "1.59.0")
44343)]
44344#[cfg_attr(
44345 target_arch = "arm",
44346 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44347)]
44348pub fn vreinterpret_p16_s32(a: int32x2_t) -> poly16x4_t {
44349 unsafe { transmute(a) }
44350}
44351#[doc = "Vector reinterpret cast operation"]
44352#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s32)"]
44353#[inline]
44354#[target_feature(enable = "neon")]
44355#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44356#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44357#[cfg_attr(
44358 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44359 assert_instr(nop)
44360)]
44361#[cfg_attr(
44362 not(target_arch = "arm"),
44363 stable(feature = "neon_intrinsics", since = "1.59.0")
44364)]
44365#[cfg_attr(
44366 target_arch = "arm",
44367 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44368)]
44369pub fn vreinterpretq_f32_s32(a: int32x4_t) -> float32x4_t {
44370 unsafe { transmute(a) }
44371}
44372#[doc = "Vector reinterpret cast operation"]
44373#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s32)"]
44374#[inline]
44375#[target_feature(enable = "neon")]
44376#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44377#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44378#[cfg_attr(
44379 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44380 assert_instr(nop)
44381)]
44382#[cfg_attr(
44383 not(target_arch = "arm"),
44384 stable(feature = "neon_intrinsics", since = "1.59.0")
44385)]
44386#[cfg_attr(
44387 target_arch = "arm",
44388 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44389)]
44390pub fn vreinterpretq_s8_s32(a: int32x4_t) -> int8x16_t {
44391 unsafe { transmute(a) }
44392}
44393#[doc = "Vector reinterpret cast operation"]
44394#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s32)"]
44395#[inline]
44396#[target_feature(enable = "neon")]
44397#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44398#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44399#[cfg_attr(
44400 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44401 assert_instr(nop)
44402)]
44403#[cfg_attr(
44404 not(target_arch = "arm"),
44405 stable(feature = "neon_intrinsics", since = "1.59.0")
44406)]
44407#[cfg_attr(
44408 target_arch = "arm",
44409 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44410)]
44411pub fn vreinterpretq_s16_s32(a: int32x4_t) -> int16x8_t {
44412 unsafe { transmute(a) }
44413}
44414#[doc = "Vector reinterpret cast operation"]
44415#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s32)"]
44416#[inline]
44417#[target_feature(enable = "neon")]
44418#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44419#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44420#[cfg_attr(
44421 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44422 assert_instr(nop)
44423)]
44424#[cfg_attr(
44425 not(target_arch = "arm"),
44426 stable(feature = "neon_intrinsics", since = "1.59.0")
44427)]
44428#[cfg_attr(
44429 target_arch = "arm",
44430 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44431)]
44432pub fn vreinterpretq_s64_s32(a: int32x4_t) -> int64x2_t {
44433 unsafe { transmute(a) }
44434}
44435#[doc = "Vector reinterpret cast operation"]
44436#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s32)"]
44437#[inline]
44438#[target_feature(enable = "neon")]
44439#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44440#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44441#[cfg_attr(
44442 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44443 assert_instr(nop)
44444)]
44445#[cfg_attr(
44446 not(target_arch = "arm"),
44447 stable(feature = "neon_intrinsics", since = "1.59.0")
44448)]
44449#[cfg_attr(
44450 target_arch = "arm",
44451 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44452)]
44453pub fn vreinterpretq_u8_s32(a: int32x4_t) -> uint8x16_t {
44454 unsafe { transmute(a) }
44455}
44456#[doc = "Vector reinterpret cast operation"]
44457#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s32)"]
44458#[inline]
44459#[target_feature(enable = "neon")]
44460#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44461#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44462#[cfg_attr(
44463 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44464 assert_instr(nop)
44465)]
44466#[cfg_attr(
44467 not(target_arch = "arm"),
44468 stable(feature = "neon_intrinsics", since = "1.59.0")
44469)]
44470#[cfg_attr(
44471 target_arch = "arm",
44472 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44473)]
44474pub fn vreinterpretq_u16_s32(a: int32x4_t) -> uint16x8_t {
44475 unsafe { transmute(a) }
44476}
44477#[doc = "Vector reinterpret cast operation"]
44478#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s32)"]
44479#[inline]
44480#[target_feature(enable = "neon")]
44481#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44482#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44483#[cfg_attr(
44484 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44485 assert_instr(nop)
44486)]
44487#[cfg_attr(
44488 not(target_arch = "arm"),
44489 stable(feature = "neon_intrinsics", since = "1.59.0")
44490)]
44491#[cfg_attr(
44492 target_arch = "arm",
44493 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44494)]
44495pub fn vreinterpretq_u32_s32(a: int32x4_t) -> uint32x4_t {
44496 unsafe { transmute(a) }
44497}
44498#[doc = "Vector reinterpret cast operation"]
44499#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s32)"]
44500#[inline]
44501#[target_feature(enable = "neon")]
44502#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44503#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44504#[cfg_attr(
44505 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44506 assert_instr(nop)
44507)]
44508#[cfg_attr(
44509 not(target_arch = "arm"),
44510 stable(feature = "neon_intrinsics", since = "1.59.0")
44511)]
44512#[cfg_attr(
44513 target_arch = "arm",
44514 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44515)]
44516pub fn vreinterpretq_u64_s32(a: int32x4_t) -> uint64x2_t {
44517 unsafe { transmute(a) }
44518}
44519#[doc = "Vector reinterpret cast operation"]
44520#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s32)"]
44521#[inline]
44522#[target_feature(enable = "neon")]
44523#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44524#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44525#[cfg_attr(
44526 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44527 assert_instr(nop)
44528)]
44529#[cfg_attr(
44530 not(target_arch = "arm"),
44531 stable(feature = "neon_intrinsics", since = "1.59.0")
44532)]
44533#[cfg_attr(
44534 target_arch = "arm",
44535 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44536)]
44537pub fn vreinterpretq_p8_s32(a: int32x4_t) -> poly8x16_t {
44538 unsafe { transmute(a) }
44539}
44540#[doc = "Vector reinterpret cast operation"]
44541#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s32)"]
44542#[inline]
44543#[target_feature(enable = "neon")]
44544#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44545#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44546#[cfg_attr(
44547 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44548 assert_instr(nop)
44549)]
44550#[cfg_attr(
44551 not(target_arch = "arm"),
44552 stable(feature = "neon_intrinsics", since = "1.59.0")
44553)]
44554#[cfg_attr(
44555 target_arch = "arm",
44556 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44557)]
44558pub fn vreinterpretq_p16_s32(a: int32x4_t) -> poly16x8_t {
44559 unsafe { transmute(a) }
44560}
44561#[doc = "Vector reinterpret cast operation"]
44562#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s64)"]
44563#[inline]
44564#[target_feature(enable = "neon")]
44565#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44566#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44567#[cfg_attr(
44568 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44569 assert_instr(nop)
44570)]
44571#[cfg_attr(
44572 not(target_arch = "arm"),
44573 stable(feature = "neon_intrinsics", since = "1.59.0")
44574)]
44575#[cfg_attr(
44576 target_arch = "arm",
44577 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44578)]
44579pub fn vreinterpret_f32_s64(a: int64x1_t) -> float32x2_t {
44580 unsafe { transmute(a) }
44581}
44582#[doc = "Vector reinterpret cast operation"]
44583#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s64)"]
44584#[inline]
44585#[target_feature(enable = "neon")]
44586#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44587#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44588#[cfg_attr(
44589 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44590 assert_instr(nop)
44591)]
44592#[cfg_attr(
44593 not(target_arch = "arm"),
44594 stable(feature = "neon_intrinsics", since = "1.59.0")
44595)]
44596#[cfg_attr(
44597 target_arch = "arm",
44598 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44599)]
44600pub fn vreinterpret_s8_s64(a: int64x1_t) -> int8x8_t {
44601 unsafe { transmute(a) }
44602}
44603#[doc = "Vector reinterpret cast operation"]
44604#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_s64)"]
44605#[inline]
44606#[target_feature(enable = "neon")]
44607#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44608#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44609#[cfg_attr(
44610 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44611 assert_instr(nop)
44612)]
44613#[cfg_attr(
44614 not(target_arch = "arm"),
44615 stable(feature = "neon_intrinsics", since = "1.59.0")
44616)]
44617#[cfg_attr(
44618 target_arch = "arm",
44619 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44620)]
44621pub fn vreinterpret_s16_s64(a: int64x1_t) -> int16x4_t {
44622 unsafe { transmute(a) }
44623}
44624#[doc = "Vector reinterpret cast operation"]
44625#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s64)"]
44626#[inline]
44627#[target_feature(enable = "neon")]
44628#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44629#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44630#[cfg_attr(
44631 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44632 assert_instr(nop)
44633)]
44634#[cfg_attr(
44635 not(target_arch = "arm"),
44636 stable(feature = "neon_intrinsics", since = "1.59.0")
44637)]
44638#[cfg_attr(
44639 target_arch = "arm",
44640 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44641)]
44642pub fn vreinterpret_s32_s64(a: int64x1_t) -> int32x2_t {
44643 unsafe { transmute(a) }
44644}
44645#[doc = "Vector reinterpret cast operation"]
44646#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s64)"]
44647#[inline]
44648#[target_feature(enable = "neon")]
44649#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44650#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44651#[cfg_attr(
44652 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44653 assert_instr(nop)
44654)]
44655#[cfg_attr(
44656 not(target_arch = "arm"),
44657 stable(feature = "neon_intrinsics", since = "1.59.0")
44658)]
44659#[cfg_attr(
44660 target_arch = "arm",
44661 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44662)]
44663pub fn vreinterpret_u8_s64(a: int64x1_t) -> uint8x8_t {
44664 unsafe { transmute(a) }
44665}
44666#[doc = "Vector reinterpret cast operation"]
44667#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s64)"]
44668#[inline]
44669#[target_feature(enable = "neon")]
44670#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44671#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44672#[cfg_attr(
44673 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44674 assert_instr(nop)
44675)]
44676#[cfg_attr(
44677 not(target_arch = "arm"),
44678 stable(feature = "neon_intrinsics", since = "1.59.0")
44679)]
44680#[cfg_attr(
44681 target_arch = "arm",
44682 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44683)]
44684pub fn vreinterpret_u16_s64(a: int64x1_t) -> uint16x4_t {
44685 unsafe { transmute(a) }
44686}
44687#[doc = "Vector reinterpret cast operation"]
44688#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s64)"]
44689#[inline]
44690#[target_feature(enable = "neon")]
44691#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44692#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44693#[cfg_attr(
44694 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44695 assert_instr(nop)
44696)]
44697#[cfg_attr(
44698 not(target_arch = "arm"),
44699 stable(feature = "neon_intrinsics", since = "1.59.0")
44700)]
44701#[cfg_attr(
44702 target_arch = "arm",
44703 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44704)]
44705pub fn vreinterpret_u32_s64(a: int64x1_t) -> uint32x2_t {
44706 unsafe { transmute(a) }
44707}
44708#[doc = "Vector reinterpret cast operation"]
44709#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s64)"]
44710#[inline]
44711#[target_feature(enable = "neon")]
44712#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44713#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44714#[cfg_attr(
44715 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44716 assert_instr(nop)
44717)]
44718#[cfg_attr(
44719 not(target_arch = "arm"),
44720 stable(feature = "neon_intrinsics", since = "1.59.0")
44721)]
44722#[cfg_attr(
44723 target_arch = "arm",
44724 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44725)]
44726pub fn vreinterpret_u64_s64(a: int64x1_t) -> uint64x1_t {
44727 unsafe { transmute(a) }
44728}
44729#[doc = "Vector reinterpret cast operation"]
44730#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s64)"]
44731#[inline]
44732#[target_feature(enable = "neon")]
44733#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44734#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44735#[cfg_attr(
44736 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44737 assert_instr(nop)
44738)]
44739#[cfg_attr(
44740 not(target_arch = "arm"),
44741 stable(feature = "neon_intrinsics", since = "1.59.0")
44742)]
44743#[cfg_attr(
44744 target_arch = "arm",
44745 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44746)]
44747pub fn vreinterpret_p8_s64(a: int64x1_t) -> poly8x8_t {
44748 unsafe { transmute(a) }
44749}
44750#[doc = "Vector reinterpret cast operation"]
44751#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s64)"]
44752#[inline]
44753#[target_feature(enable = "neon")]
44754#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44755#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44756#[cfg_attr(
44757 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44758 assert_instr(nop)
44759)]
44760#[cfg_attr(
44761 not(target_arch = "arm"),
44762 stable(feature = "neon_intrinsics", since = "1.59.0")
44763)]
44764#[cfg_attr(
44765 target_arch = "arm",
44766 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44767)]
44768pub fn vreinterpret_p16_s64(a: int64x1_t) -> poly16x4_t {
44769 unsafe { transmute(a) }
44770}
44771#[doc = "Vector reinterpret cast operation"]
44772#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s64)"]
44773#[inline]
44774#[target_feature(enable = "neon")]
44775#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44776#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44777#[cfg_attr(
44778 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44779 assert_instr(nop)
44780)]
44781#[cfg_attr(
44782 not(target_arch = "arm"),
44783 stable(feature = "neon_intrinsics", since = "1.59.0")
44784)]
44785#[cfg_attr(
44786 target_arch = "arm",
44787 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44788)]
44789pub fn vreinterpretq_f32_s64(a: int64x2_t) -> float32x4_t {
44790 unsafe { transmute(a) }
44791}
44792#[doc = "Vector reinterpret cast operation"]
44793#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s64)"]
44794#[inline]
44795#[target_feature(enable = "neon")]
44796#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44797#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44798#[cfg_attr(
44799 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44800 assert_instr(nop)
44801)]
44802#[cfg_attr(
44803 not(target_arch = "arm"),
44804 stable(feature = "neon_intrinsics", since = "1.59.0")
44805)]
44806#[cfg_attr(
44807 target_arch = "arm",
44808 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44809)]
44810pub fn vreinterpretq_s8_s64(a: int64x2_t) -> int8x16_t {
44811 unsafe { transmute(a) }
44812}
44813#[doc = "Vector reinterpret cast operation"]
44814#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s64)"]
44815#[inline]
44816#[target_feature(enable = "neon")]
44817#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44818#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44819#[cfg_attr(
44820 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44821 assert_instr(nop)
44822)]
44823#[cfg_attr(
44824 not(target_arch = "arm"),
44825 stable(feature = "neon_intrinsics", since = "1.59.0")
44826)]
44827#[cfg_attr(
44828 target_arch = "arm",
44829 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44830)]
44831pub fn vreinterpretq_s16_s64(a: int64x2_t) -> int16x8_t {
44832 unsafe { transmute(a) }
44833}
44834#[doc = "Vector reinterpret cast operation"]
44835#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s64)"]
44836#[inline]
44837#[target_feature(enable = "neon")]
44838#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44839#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44840#[cfg_attr(
44841 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44842 assert_instr(nop)
44843)]
44844#[cfg_attr(
44845 not(target_arch = "arm"),
44846 stable(feature = "neon_intrinsics", since = "1.59.0")
44847)]
44848#[cfg_attr(
44849 target_arch = "arm",
44850 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44851)]
44852pub fn vreinterpretq_s32_s64(a: int64x2_t) -> int32x4_t {
44853 unsafe { transmute(a) }
44854}
44855#[doc = "Vector reinterpret cast operation"]
44856#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s64)"]
44857#[inline]
44858#[target_feature(enable = "neon")]
44859#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44860#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44861#[cfg_attr(
44862 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44863 assert_instr(nop)
44864)]
44865#[cfg_attr(
44866 not(target_arch = "arm"),
44867 stable(feature = "neon_intrinsics", since = "1.59.0")
44868)]
44869#[cfg_attr(
44870 target_arch = "arm",
44871 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44872)]
44873pub fn vreinterpretq_u8_s64(a: int64x2_t) -> uint8x16_t {
44874 unsafe { transmute(a) }
44875}
44876#[doc = "Vector reinterpret cast operation"]
44877#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s64)"]
44878#[inline]
44879#[target_feature(enable = "neon")]
44880#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44881#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44882#[cfg_attr(
44883 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44884 assert_instr(nop)
44885)]
44886#[cfg_attr(
44887 not(target_arch = "arm"),
44888 stable(feature = "neon_intrinsics", since = "1.59.0")
44889)]
44890#[cfg_attr(
44891 target_arch = "arm",
44892 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44893)]
44894pub fn vreinterpretq_u16_s64(a: int64x2_t) -> uint16x8_t {
44895 unsafe { transmute(a) }
44896}
44897#[doc = "Vector reinterpret cast operation"]
44898#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s64)"]
44899#[inline]
44900#[target_feature(enable = "neon")]
44901#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44902#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44903#[cfg_attr(
44904 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44905 assert_instr(nop)
44906)]
44907#[cfg_attr(
44908 not(target_arch = "arm"),
44909 stable(feature = "neon_intrinsics", since = "1.59.0")
44910)]
44911#[cfg_attr(
44912 target_arch = "arm",
44913 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44914)]
44915pub fn vreinterpretq_u32_s64(a: int64x2_t) -> uint32x4_t {
44916 unsafe { transmute(a) }
44917}
44918#[doc = "Vector reinterpret cast operation"]
44919#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s64)"]
44920#[inline]
44921#[target_feature(enable = "neon")]
44922#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44923#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44924#[cfg_attr(
44925 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44926 assert_instr(nop)
44927)]
44928#[cfg_attr(
44929 not(target_arch = "arm"),
44930 stable(feature = "neon_intrinsics", since = "1.59.0")
44931)]
44932#[cfg_attr(
44933 target_arch = "arm",
44934 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44935)]
44936pub fn vreinterpretq_u64_s64(a: int64x2_t) -> uint64x2_t {
44937 unsafe { transmute(a) }
44938}
44939#[doc = "Vector reinterpret cast operation"]
44940#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s64)"]
44941#[inline]
44942#[target_feature(enable = "neon")]
44943#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44944#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44945#[cfg_attr(
44946 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44947 assert_instr(nop)
44948)]
44949#[cfg_attr(
44950 not(target_arch = "arm"),
44951 stable(feature = "neon_intrinsics", since = "1.59.0")
44952)]
44953#[cfg_attr(
44954 target_arch = "arm",
44955 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44956)]
44957pub fn vreinterpretq_p8_s64(a: int64x2_t) -> poly8x16_t {
44958 unsafe { transmute(a) }
44959}
44960#[doc = "Vector reinterpret cast operation"]
44961#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s64)"]
44962#[inline]
44963#[target_feature(enable = "neon")]
44964#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44965#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44966#[cfg_attr(
44967 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44968 assert_instr(nop)
44969)]
44970#[cfg_attr(
44971 not(target_arch = "arm"),
44972 stable(feature = "neon_intrinsics", since = "1.59.0")
44973)]
44974#[cfg_attr(
44975 target_arch = "arm",
44976 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44977)]
44978pub fn vreinterpretq_p16_s64(a: int64x2_t) -> poly16x8_t {
44979 unsafe { transmute(a) }
44980}
44981#[doc = "Vector reinterpret cast operation"]
44982#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u8)"]
44983#[inline]
44984#[target_feature(enable = "neon")]
44985#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44986#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44987#[cfg_attr(
44988 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44989 assert_instr(nop)
44990)]
44991#[cfg_attr(
44992 not(target_arch = "arm"),
44993 stable(feature = "neon_intrinsics", since = "1.59.0")
44994)]
44995#[cfg_attr(
44996 target_arch = "arm",
44997 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44998)]
44999pub fn vreinterpret_f32_u8(a: uint8x8_t) -> float32x2_t {
45000 unsafe { transmute(a) }
45001}
45002#[doc = "Vector reinterpret cast operation"]
45003#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u8)"]
45004#[inline]
45005#[target_feature(enable = "neon")]
45006#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45007#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45008#[cfg_attr(
45009 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45010 assert_instr(nop)
45011)]
45012#[cfg_attr(
45013 not(target_arch = "arm"),
45014 stable(feature = "neon_intrinsics", since = "1.59.0")
45015)]
45016#[cfg_attr(
45017 target_arch = "arm",
45018 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45019)]
45020pub fn vreinterpret_s8_u8(a: uint8x8_t) -> int8x8_t {
45021 unsafe { transmute(a) }
45022}
45023#[doc = "Vector reinterpret cast operation"]
45024#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u8)"]
45025#[inline]
45026#[target_feature(enable = "neon")]
45027#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45028#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45029#[cfg_attr(
45030 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45031 assert_instr(nop)
45032)]
45033#[cfg_attr(
45034 not(target_arch = "arm"),
45035 stable(feature = "neon_intrinsics", since = "1.59.0")
45036)]
45037#[cfg_attr(
45038 target_arch = "arm",
45039 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45040)]
45041pub fn vreinterpret_s16_u8(a: uint8x8_t) -> int16x4_t {
45042 unsafe { transmute(a) }
45043}
45044#[doc = "Vector reinterpret cast operation"]
45045#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u8)"]
45046#[inline]
45047#[target_feature(enable = "neon")]
45048#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45049#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45050#[cfg_attr(
45051 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45052 assert_instr(nop)
45053)]
45054#[cfg_attr(
45055 not(target_arch = "arm"),
45056 stable(feature = "neon_intrinsics", since = "1.59.0")
45057)]
45058#[cfg_attr(
45059 target_arch = "arm",
45060 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45061)]
45062pub fn vreinterpret_s32_u8(a: uint8x8_t) -> int32x2_t {
45063 unsafe { transmute(a) }
45064}
45065#[doc = "Vector reinterpret cast operation"]
45066#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u8)"]
45067#[inline]
45068#[target_feature(enable = "neon")]
45069#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45070#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45071#[cfg_attr(
45072 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45073 assert_instr(nop)
45074)]
45075#[cfg_attr(
45076 not(target_arch = "arm"),
45077 stable(feature = "neon_intrinsics", since = "1.59.0")
45078)]
45079#[cfg_attr(
45080 target_arch = "arm",
45081 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45082)]
45083pub fn vreinterpret_s64_u8(a: uint8x8_t) -> int64x1_t {
45084 unsafe { transmute(a) }
45085}
45086#[doc = "Vector reinterpret cast operation"]
45087#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u8)"]
45088#[inline]
45089#[target_feature(enable = "neon")]
45090#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45091#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45092#[cfg_attr(
45093 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45094 assert_instr(nop)
45095)]
45096#[cfg_attr(
45097 not(target_arch = "arm"),
45098 stable(feature = "neon_intrinsics", since = "1.59.0")
45099)]
45100#[cfg_attr(
45101 target_arch = "arm",
45102 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45103)]
45104pub fn vreinterpret_u16_u8(a: uint8x8_t) -> uint16x4_t {
45105 unsafe { transmute(a) }
45106}
45107#[doc = "Vector reinterpret cast operation"]
45108#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u8)"]
45109#[inline]
45110#[target_feature(enable = "neon")]
45111#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45112#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45113#[cfg_attr(
45114 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45115 assert_instr(nop)
45116)]
45117#[cfg_attr(
45118 not(target_arch = "arm"),
45119 stable(feature = "neon_intrinsics", since = "1.59.0")
45120)]
45121#[cfg_attr(
45122 target_arch = "arm",
45123 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45124)]
45125pub fn vreinterpret_u32_u8(a: uint8x8_t) -> uint32x2_t {
45126 unsafe { transmute(a) }
45127}
45128#[doc = "Vector reinterpret cast operation"]
45129#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u8)"]
45130#[inline]
45131#[target_feature(enable = "neon")]
45132#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45133#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45134#[cfg_attr(
45135 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45136 assert_instr(nop)
45137)]
45138#[cfg_attr(
45139 not(target_arch = "arm"),
45140 stable(feature = "neon_intrinsics", since = "1.59.0")
45141)]
45142#[cfg_attr(
45143 target_arch = "arm",
45144 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45145)]
45146pub fn vreinterpret_u64_u8(a: uint8x8_t) -> uint64x1_t {
45147 unsafe { transmute(a) }
45148}
45149#[doc = "Vector reinterpret cast operation"]
45150#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u8)"]
45151#[inline]
45152#[target_feature(enable = "neon")]
45153#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45154#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45155#[cfg_attr(
45156 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45157 assert_instr(nop)
45158)]
45159#[cfg_attr(
45160 not(target_arch = "arm"),
45161 stable(feature = "neon_intrinsics", since = "1.59.0")
45162)]
45163#[cfg_attr(
45164 target_arch = "arm",
45165 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45166)]
45167pub fn vreinterpret_p8_u8(a: uint8x8_t) -> poly8x8_t {
45168 unsafe { transmute(a) }
45169}
45170#[doc = "Vector reinterpret cast operation"]
45171#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u8)"]
45172#[inline]
45173#[target_feature(enable = "neon")]
45174#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45175#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45176#[cfg_attr(
45177 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45178 assert_instr(nop)
45179)]
45180#[cfg_attr(
45181 not(target_arch = "arm"),
45182 stable(feature = "neon_intrinsics", since = "1.59.0")
45183)]
45184#[cfg_attr(
45185 target_arch = "arm",
45186 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45187)]
45188pub fn vreinterpret_p16_u8(a: uint8x8_t) -> poly16x4_t {
45189 unsafe { transmute(a) }
45190}
45191#[doc = "Vector reinterpret cast operation"]
45192#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u8)"]
45193#[inline]
45194#[target_feature(enable = "neon")]
45195#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45196#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45197#[cfg_attr(
45198 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45199 assert_instr(nop)
45200)]
45201#[cfg_attr(
45202 not(target_arch = "arm"),
45203 stable(feature = "neon_intrinsics", since = "1.59.0")
45204)]
45205#[cfg_attr(
45206 target_arch = "arm",
45207 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45208)]
45209pub fn vreinterpretq_f32_u8(a: uint8x16_t) -> float32x4_t {
45210 unsafe { transmute(a) }
45211}
45212#[doc = "Vector reinterpret cast operation"]
45213#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u8)"]
45214#[inline]
45215#[target_feature(enable = "neon")]
45216#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45217#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45218#[cfg_attr(
45219 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45220 assert_instr(nop)
45221)]
45222#[cfg_attr(
45223 not(target_arch = "arm"),
45224 stable(feature = "neon_intrinsics", since = "1.59.0")
45225)]
45226#[cfg_attr(
45227 target_arch = "arm",
45228 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45229)]
45230pub fn vreinterpretq_s8_u8(a: uint8x16_t) -> int8x16_t {
45231 unsafe { transmute(a) }
45232}
45233#[doc = "Vector reinterpret cast operation"]
45234#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u8)"]
45235#[inline]
45236#[target_feature(enable = "neon")]
45237#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45238#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45239#[cfg_attr(
45240 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45241 assert_instr(nop)
45242)]
45243#[cfg_attr(
45244 not(target_arch = "arm"),
45245 stable(feature = "neon_intrinsics", since = "1.59.0")
45246)]
45247#[cfg_attr(
45248 target_arch = "arm",
45249 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45250)]
45251pub fn vreinterpretq_s16_u8(a: uint8x16_t) -> int16x8_t {
45252 unsafe { transmute(a) }
45253}
45254#[doc = "Vector reinterpret cast operation"]
45255#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u8)"]
45256#[inline]
45257#[target_feature(enable = "neon")]
45258#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45259#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45260#[cfg_attr(
45261 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45262 assert_instr(nop)
45263)]
45264#[cfg_attr(
45265 not(target_arch = "arm"),
45266 stable(feature = "neon_intrinsics", since = "1.59.0")
45267)]
45268#[cfg_attr(
45269 target_arch = "arm",
45270 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45271)]
45272pub fn vreinterpretq_s32_u8(a: uint8x16_t) -> int32x4_t {
45273 unsafe { transmute(a) }
45274}
45275#[doc = "Vector reinterpret cast operation"]
45276#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u8)"]
45277#[inline]
45278#[target_feature(enable = "neon")]
45279#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45280#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45281#[cfg_attr(
45282 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45283 assert_instr(nop)
45284)]
45285#[cfg_attr(
45286 not(target_arch = "arm"),
45287 stable(feature = "neon_intrinsics", since = "1.59.0")
45288)]
45289#[cfg_attr(
45290 target_arch = "arm",
45291 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45292)]
45293pub fn vreinterpretq_s64_u8(a: uint8x16_t) -> int64x2_t {
45294 unsafe { transmute(a) }
45295}
45296#[doc = "Vector reinterpret cast operation"]
45297#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u8)"]
45298#[inline]
45299#[target_feature(enable = "neon")]
45300#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45301#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45302#[cfg_attr(
45303 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45304 assert_instr(nop)
45305)]
45306#[cfg_attr(
45307 not(target_arch = "arm"),
45308 stable(feature = "neon_intrinsics", since = "1.59.0")
45309)]
45310#[cfg_attr(
45311 target_arch = "arm",
45312 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45313)]
45314pub fn vreinterpretq_u16_u8(a: uint8x16_t) -> uint16x8_t {
45315 unsafe { transmute(a) }
45316}
45317#[doc = "Vector reinterpret cast operation"]
45318#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u8)"]
45319#[inline]
45320#[target_feature(enable = "neon")]
45321#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45322#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45323#[cfg_attr(
45324 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45325 assert_instr(nop)
45326)]
45327#[cfg_attr(
45328 not(target_arch = "arm"),
45329 stable(feature = "neon_intrinsics", since = "1.59.0")
45330)]
45331#[cfg_attr(
45332 target_arch = "arm",
45333 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45334)]
45335pub fn vreinterpretq_u32_u8(a: uint8x16_t) -> uint32x4_t {
45336 unsafe { transmute(a) }
45337}
45338#[doc = "Vector reinterpret cast operation"]
45339#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u8)"]
45340#[inline]
45341#[target_feature(enable = "neon")]
45342#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45343#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45344#[cfg_attr(
45345 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45346 assert_instr(nop)
45347)]
45348#[cfg_attr(
45349 not(target_arch = "arm"),
45350 stable(feature = "neon_intrinsics", since = "1.59.0")
45351)]
45352#[cfg_attr(
45353 target_arch = "arm",
45354 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45355)]
45356pub fn vreinterpretq_u64_u8(a: uint8x16_t) -> uint64x2_t {
45357 unsafe { transmute(a) }
45358}
45359#[doc = "Vector reinterpret cast operation"]
45360#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u8)"]
45361#[inline]
45362#[target_feature(enable = "neon")]
45363#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45364#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45365#[cfg_attr(
45366 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45367 assert_instr(nop)
45368)]
45369#[cfg_attr(
45370 not(target_arch = "arm"),
45371 stable(feature = "neon_intrinsics", since = "1.59.0")
45372)]
45373#[cfg_attr(
45374 target_arch = "arm",
45375 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45376)]
45377pub fn vreinterpretq_p8_u8(a: uint8x16_t) -> poly8x16_t {
45378 unsafe { transmute(a) }
45379}
45380#[doc = "Vector reinterpret cast operation"]
45381#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u8)"]
45382#[inline]
45383#[target_feature(enable = "neon")]
45384#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45385#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45386#[cfg_attr(
45387 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45388 assert_instr(nop)
45389)]
45390#[cfg_attr(
45391 not(target_arch = "arm"),
45392 stable(feature = "neon_intrinsics", since = "1.59.0")
45393)]
45394#[cfg_attr(
45395 target_arch = "arm",
45396 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45397)]
45398pub fn vreinterpretq_p16_u8(a: uint8x16_t) -> poly16x8_t {
45399 unsafe { transmute(a) }
45400}
45401#[doc = "Vector reinterpret cast operation"]
45402#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u16)"]
45403#[inline]
45404#[target_feature(enable = "neon")]
45405#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45406#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45407#[cfg_attr(
45408 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45409 assert_instr(nop)
45410)]
45411#[cfg_attr(
45412 not(target_arch = "arm"),
45413 stable(feature = "neon_intrinsics", since = "1.59.0")
45414)]
45415#[cfg_attr(
45416 target_arch = "arm",
45417 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45418)]
45419pub fn vreinterpret_f32_u16(a: uint16x4_t) -> float32x2_t {
45420 unsafe { transmute(a) }
45421}
45422#[doc = "Vector reinterpret cast operation"]
45423#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u16)"]
45424#[inline]
45425#[target_feature(enable = "neon")]
45426#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45427#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45428#[cfg_attr(
45429 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45430 assert_instr(nop)
45431)]
45432#[cfg_attr(
45433 not(target_arch = "arm"),
45434 stable(feature = "neon_intrinsics", since = "1.59.0")
45435)]
45436#[cfg_attr(
45437 target_arch = "arm",
45438 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45439)]
45440pub fn vreinterpret_s8_u16(a: uint16x4_t) -> int8x8_t {
45441 unsafe { transmute(a) }
45442}
45443#[doc = "Vector reinterpret cast operation"]
45444#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u16)"]
45445#[inline]
45446#[target_feature(enable = "neon")]
45447#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45448#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45449#[cfg_attr(
45450 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45451 assert_instr(nop)
45452)]
45453#[cfg_attr(
45454 not(target_arch = "arm"),
45455 stable(feature = "neon_intrinsics", since = "1.59.0")
45456)]
45457#[cfg_attr(
45458 target_arch = "arm",
45459 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45460)]
45461pub fn vreinterpret_s16_u16(a: uint16x4_t) -> int16x4_t {
45462 unsafe { transmute(a) }
45463}
45464#[doc = "Vector reinterpret cast operation"]
45465#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u16)"]
45466#[inline]
45467#[target_feature(enable = "neon")]
45468#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45469#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45470#[cfg_attr(
45471 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45472 assert_instr(nop)
45473)]
45474#[cfg_attr(
45475 not(target_arch = "arm"),
45476 stable(feature = "neon_intrinsics", since = "1.59.0")
45477)]
45478#[cfg_attr(
45479 target_arch = "arm",
45480 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45481)]
45482pub fn vreinterpret_s32_u16(a: uint16x4_t) -> int32x2_t {
45483 unsafe { transmute(a) }
45484}
45485#[doc = "Vector reinterpret cast operation"]
45486#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u16)"]
45487#[inline]
45488#[target_feature(enable = "neon")]
45489#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45490#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45491#[cfg_attr(
45492 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45493 assert_instr(nop)
45494)]
45495#[cfg_attr(
45496 not(target_arch = "arm"),
45497 stable(feature = "neon_intrinsics", since = "1.59.0")
45498)]
45499#[cfg_attr(
45500 target_arch = "arm",
45501 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45502)]
45503pub fn vreinterpret_s64_u16(a: uint16x4_t) -> int64x1_t {
45504 unsafe { transmute(a) }
45505}
45506#[doc = "Vector reinterpret cast operation"]
45507#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u16)"]
45508#[inline]
45509#[target_feature(enable = "neon")]
45510#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45511#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45512#[cfg_attr(
45513 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45514 assert_instr(nop)
45515)]
45516#[cfg_attr(
45517 not(target_arch = "arm"),
45518 stable(feature = "neon_intrinsics", since = "1.59.0")
45519)]
45520#[cfg_attr(
45521 target_arch = "arm",
45522 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45523)]
45524pub fn vreinterpret_u8_u16(a: uint16x4_t) -> uint8x8_t {
45525 unsafe { transmute(a) }
45526}
45527#[doc = "Vector reinterpret cast operation"]
45528#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u16)"]
45529#[inline]
45530#[target_feature(enable = "neon")]
45531#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45532#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45533#[cfg_attr(
45534 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45535 assert_instr(nop)
45536)]
45537#[cfg_attr(
45538 not(target_arch = "arm"),
45539 stable(feature = "neon_intrinsics", since = "1.59.0")
45540)]
45541#[cfg_attr(
45542 target_arch = "arm",
45543 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45544)]
45545pub fn vreinterpret_u32_u16(a: uint16x4_t) -> uint32x2_t {
45546 unsafe { transmute(a) }
45547}
45548#[doc = "Vector reinterpret cast operation"]
45549#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u16)"]
45550#[inline]
45551#[target_feature(enable = "neon")]
45552#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45553#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45554#[cfg_attr(
45555 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45556 assert_instr(nop)
45557)]
45558#[cfg_attr(
45559 not(target_arch = "arm"),
45560 stable(feature = "neon_intrinsics", since = "1.59.0")
45561)]
45562#[cfg_attr(
45563 target_arch = "arm",
45564 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45565)]
45566pub fn vreinterpret_u64_u16(a: uint16x4_t) -> uint64x1_t {
45567 unsafe { transmute(a) }
45568}
45569#[doc = "Vector reinterpret cast operation"]
45570#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u16)"]
45571#[inline]
45572#[target_feature(enable = "neon")]
45573#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45574#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45575#[cfg_attr(
45576 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45577 assert_instr(nop)
45578)]
45579#[cfg_attr(
45580 not(target_arch = "arm"),
45581 stable(feature = "neon_intrinsics", since = "1.59.0")
45582)]
45583#[cfg_attr(
45584 target_arch = "arm",
45585 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45586)]
45587pub fn vreinterpret_p8_u16(a: uint16x4_t) -> poly8x8_t {
45588 unsafe { transmute(a) }
45589}
45590#[doc = "Vector reinterpret cast operation"]
45591#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u16)"]
45592#[inline]
45593#[target_feature(enable = "neon")]
45594#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45595#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45596#[cfg_attr(
45597 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45598 assert_instr(nop)
45599)]
45600#[cfg_attr(
45601 not(target_arch = "arm"),
45602 stable(feature = "neon_intrinsics", since = "1.59.0")
45603)]
45604#[cfg_attr(
45605 target_arch = "arm",
45606 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45607)]
45608pub fn vreinterpret_p16_u16(a: uint16x4_t) -> poly16x4_t {
45609 unsafe { transmute(a) }
45610}
45611#[doc = "Vector reinterpret cast operation"]
45612#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u16)"]
45613#[inline]
45614#[target_feature(enable = "neon")]
45615#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45616#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45617#[cfg_attr(
45618 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45619 assert_instr(nop)
45620)]
45621#[cfg_attr(
45622 not(target_arch = "arm"),
45623 stable(feature = "neon_intrinsics", since = "1.59.0")
45624)]
45625#[cfg_attr(
45626 target_arch = "arm",
45627 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45628)]
45629pub fn vreinterpretq_f32_u16(a: uint16x8_t) -> float32x4_t {
45630 unsafe { transmute(a) }
45631}
45632#[doc = "Vector reinterpret cast operation"]
45633#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u16)"]
45634#[inline]
45635#[target_feature(enable = "neon")]
45636#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45637#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45638#[cfg_attr(
45639 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45640 assert_instr(nop)
45641)]
45642#[cfg_attr(
45643 not(target_arch = "arm"),
45644 stable(feature = "neon_intrinsics", since = "1.59.0")
45645)]
45646#[cfg_attr(
45647 target_arch = "arm",
45648 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45649)]
45650pub fn vreinterpretq_s8_u16(a: uint16x8_t) -> int8x16_t {
45651 unsafe { transmute(a) }
45652}
45653#[doc = "Vector reinterpret cast operation"]
45654#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u16)"]
45655#[inline]
45656#[target_feature(enable = "neon")]
45657#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45658#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45659#[cfg_attr(
45660 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45661 assert_instr(nop)
45662)]
45663#[cfg_attr(
45664 not(target_arch = "arm"),
45665 stable(feature = "neon_intrinsics", since = "1.59.0")
45666)]
45667#[cfg_attr(
45668 target_arch = "arm",
45669 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45670)]
45671pub fn vreinterpretq_s16_u16(a: uint16x8_t) -> int16x8_t {
45672 unsafe { transmute(a) }
45673}
45674#[doc = "Vector reinterpret cast operation"]
45675#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u16)"]
45676#[inline]
45677#[target_feature(enable = "neon")]
45678#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45679#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45680#[cfg_attr(
45681 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45682 assert_instr(nop)
45683)]
45684#[cfg_attr(
45685 not(target_arch = "arm"),
45686 stable(feature = "neon_intrinsics", since = "1.59.0")
45687)]
45688#[cfg_attr(
45689 target_arch = "arm",
45690 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45691)]
45692pub fn vreinterpretq_s32_u16(a: uint16x8_t) -> int32x4_t {
45693 unsafe { transmute(a) }
45694}
45695#[doc = "Vector reinterpret cast operation"]
45696#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u16)"]
45697#[inline]
45698#[target_feature(enable = "neon")]
45699#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45700#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45701#[cfg_attr(
45702 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45703 assert_instr(nop)
45704)]
45705#[cfg_attr(
45706 not(target_arch = "arm"),
45707 stable(feature = "neon_intrinsics", since = "1.59.0")
45708)]
45709#[cfg_attr(
45710 target_arch = "arm",
45711 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45712)]
45713pub fn vreinterpretq_s64_u16(a: uint16x8_t) -> int64x2_t {
45714 unsafe { transmute(a) }
45715}
45716#[doc = "Vector reinterpret cast operation"]
45717#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u16)"]
45718#[inline]
45719#[target_feature(enable = "neon")]
45720#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45721#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45722#[cfg_attr(
45723 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45724 assert_instr(nop)
45725)]
45726#[cfg_attr(
45727 not(target_arch = "arm"),
45728 stable(feature = "neon_intrinsics", since = "1.59.0")
45729)]
45730#[cfg_attr(
45731 target_arch = "arm",
45732 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45733)]
45734pub fn vreinterpretq_u8_u16(a: uint16x8_t) -> uint8x16_t {
45735 unsafe { transmute(a) }
45736}
45737#[doc = "Vector reinterpret cast operation"]
45738#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u16)"]
45739#[inline]
45740#[target_feature(enable = "neon")]
45741#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45742#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45743#[cfg_attr(
45744 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45745 assert_instr(nop)
45746)]
45747#[cfg_attr(
45748 not(target_arch = "arm"),
45749 stable(feature = "neon_intrinsics", since = "1.59.0")
45750)]
45751#[cfg_attr(
45752 target_arch = "arm",
45753 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45754)]
45755pub fn vreinterpretq_u32_u16(a: uint16x8_t) -> uint32x4_t {
45756 unsafe { transmute(a) }
45757}
45758#[doc = "Vector reinterpret cast operation"]
45759#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u16)"]
45760#[inline]
45761#[target_feature(enable = "neon")]
45762#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45763#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45764#[cfg_attr(
45765 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45766 assert_instr(nop)
45767)]
45768#[cfg_attr(
45769 not(target_arch = "arm"),
45770 stable(feature = "neon_intrinsics", since = "1.59.0")
45771)]
45772#[cfg_attr(
45773 target_arch = "arm",
45774 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45775)]
45776pub fn vreinterpretq_u64_u16(a: uint16x8_t) -> uint64x2_t {
45777 unsafe { transmute(a) }
45778}
45779#[doc = "Vector reinterpret cast operation"]
45780#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u16)"]
45781#[inline]
45782#[target_feature(enable = "neon")]
45783#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45784#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45785#[cfg_attr(
45786 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45787 assert_instr(nop)
45788)]
45789#[cfg_attr(
45790 not(target_arch = "arm"),
45791 stable(feature = "neon_intrinsics", since = "1.59.0")
45792)]
45793#[cfg_attr(
45794 target_arch = "arm",
45795 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45796)]
45797pub fn vreinterpretq_p8_u16(a: uint16x8_t) -> poly8x16_t {
45798 unsafe { transmute(a) }
45799}
45800#[doc = "Vector reinterpret cast operation"]
45801#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u16)"]
45802#[inline]
45803#[target_feature(enable = "neon")]
45804#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45805#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45806#[cfg_attr(
45807 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45808 assert_instr(nop)
45809)]
45810#[cfg_attr(
45811 not(target_arch = "arm"),
45812 stable(feature = "neon_intrinsics", since = "1.59.0")
45813)]
45814#[cfg_attr(
45815 target_arch = "arm",
45816 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45817)]
45818pub fn vreinterpretq_p16_u16(a: uint16x8_t) -> poly16x8_t {
45819 unsafe { transmute(a) }
45820}
45821#[doc = "Vector reinterpret cast operation"]
45822#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u32)"]
45823#[inline]
45824#[target_feature(enable = "neon")]
45825#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45826#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45827#[cfg_attr(
45828 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45829 assert_instr(nop)
45830)]
45831#[cfg_attr(
45832 not(target_arch = "arm"),
45833 stable(feature = "neon_intrinsics", since = "1.59.0")
45834)]
45835#[cfg_attr(
45836 target_arch = "arm",
45837 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45838)]
45839pub fn vreinterpret_f32_u32(a: uint32x2_t) -> float32x2_t {
45840 unsafe { transmute(a) }
45841}
45842#[doc = "Vector reinterpret cast operation"]
45843#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u32)"]
45844#[inline]
45845#[target_feature(enable = "neon")]
45846#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45847#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45848#[cfg_attr(
45849 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45850 assert_instr(nop)
45851)]
45852#[cfg_attr(
45853 not(target_arch = "arm"),
45854 stable(feature = "neon_intrinsics", since = "1.59.0")
45855)]
45856#[cfg_attr(
45857 target_arch = "arm",
45858 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45859)]
45860pub fn vreinterpret_s8_u32(a: uint32x2_t) -> int8x8_t {
45861 unsafe { transmute(a) }
45862}
45863#[doc = "Vector reinterpret cast operation"]
45864#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u32)"]
45865#[inline]
45866#[target_feature(enable = "neon")]
45867#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45868#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45869#[cfg_attr(
45870 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45871 assert_instr(nop)
45872)]
45873#[cfg_attr(
45874 not(target_arch = "arm"),
45875 stable(feature = "neon_intrinsics", since = "1.59.0")
45876)]
45877#[cfg_attr(
45878 target_arch = "arm",
45879 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45880)]
45881pub fn vreinterpret_s16_u32(a: uint32x2_t) -> int16x4_t {
45882 unsafe { transmute(a) }
45883}
45884#[doc = "Vector reinterpret cast operation"]
45885#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u32)"]
45886#[inline]
45887#[target_feature(enable = "neon")]
45888#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45889#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45890#[cfg_attr(
45891 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45892 assert_instr(nop)
45893)]
45894#[cfg_attr(
45895 not(target_arch = "arm"),
45896 stable(feature = "neon_intrinsics", since = "1.59.0")
45897)]
45898#[cfg_attr(
45899 target_arch = "arm",
45900 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45901)]
45902pub fn vreinterpret_s32_u32(a: uint32x2_t) -> int32x2_t {
45903 unsafe { transmute(a) }
45904}
45905#[doc = "Vector reinterpret cast operation"]
45906#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u32)"]
45907#[inline]
45908#[target_feature(enable = "neon")]
45909#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45910#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45911#[cfg_attr(
45912 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45913 assert_instr(nop)
45914)]
45915#[cfg_attr(
45916 not(target_arch = "arm"),
45917 stable(feature = "neon_intrinsics", since = "1.59.0")
45918)]
45919#[cfg_attr(
45920 target_arch = "arm",
45921 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45922)]
45923pub fn vreinterpret_s64_u32(a: uint32x2_t) -> int64x1_t {
45924 unsafe { transmute(a) }
45925}
45926#[doc = "Vector reinterpret cast operation"]
45927#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u32)"]
45928#[inline]
45929#[target_feature(enable = "neon")]
45930#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45931#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45932#[cfg_attr(
45933 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45934 assert_instr(nop)
45935)]
45936#[cfg_attr(
45937 not(target_arch = "arm"),
45938 stable(feature = "neon_intrinsics", since = "1.59.0")
45939)]
45940#[cfg_attr(
45941 target_arch = "arm",
45942 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45943)]
45944pub fn vreinterpret_u8_u32(a: uint32x2_t) -> uint8x8_t {
45945 unsafe { transmute(a) }
45946}
45947#[doc = "Vector reinterpret cast operation"]
45948#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u32)"]
45949#[inline]
45950#[target_feature(enable = "neon")]
45951#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45952#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45953#[cfg_attr(
45954 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45955 assert_instr(nop)
45956)]
45957#[cfg_attr(
45958 not(target_arch = "arm"),
45959 stable(feature = "neon_intrinsics", since = "1.59.0")
45960)]
45961#[cfg_attr(
45962 target_arch = "arm",
45963 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45964)]
45965pub fn vreinterpret_u16_u32(a: uint32x2_t) -> uint16x4_t {
45966 unsafe { transmute(a) }
45967}
45968#[doc = "Vector reinterpret cast operation"]
45969#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u32)"]
45970#[inline]
45971#[target_feature(enable = "neon")]
45972#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45973#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45974#[cfg_attr(
45975 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45976 assert_instr(nop)
45977)]
45978#[cfg_attr(
45979 not(target_arch = "arm"),
45980 stable(feature = "neon_intrinsics", since = "1.59.0")
45981)]
45982#[cfg_attr(
45983 target_arch = "arm",
45984 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45985)]
45986pub fn vreinterpret_u64_u32(a: uint32x2_t) -> uint64x1_t {
45987 unsafe { transmute(a) }
45988}
45989#[doc = "Vector reinterpret cast operation"]
45990#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u32)"]
45991#[inline]
45992#[target_feature(enable = "neon")]
45993#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45994#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45995#[cfg_attr(
45996 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45997 assert_instr(nop)
45998)]
45999#[cfg_attr(
46000 not(target_arch = "arm"),
46001 stable(feature = "neon_intrinsics", since = "1.59.0")
46002)]
46003#[cfg_attr(
46004 target_arch = "arm",
46005 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46006)]
46007pub fn vreinterpret_p8_u32(a: uint32x2_t) -> poly8x8_t {
46008 unsafe { transmute(a) }
46009}
46010#[doc = "Vector reinterpret cast operation"]
46011#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u32)"]
46012#[inline]
46013#[target_feature(enable = "neon")]
46014#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46015#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46016#[cfg_attr(
46017 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46018 assert_instr(nop)
46019)]
46020#[cfg_attr(
46021 not(target_arch = "arm"),
46022 stable(feature = "neon_intrinsics", since = "1.59.0")
46023)]
46024#[cfg_attr(
46025 target_arch = "arm",
46026 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46027)]
46028pub fn vreinterpret_p16_u32(a: uint32x2_t) -> poly16x4_t {
46029 unsafe { transmute(a) }
46030}
46031#[doc = "Vector reinterpret cast operation"]
46032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u32)"]
46033#[inline]
46034#[target_feature(enable = "neon")]
46035#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46036#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46037#[cfg_attr(
46038 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46039 assert_instr(nop)
46040)]
46041#[cfg_attr(
46042 not(target_arch = "arm"),
46043 stable(feature = "neon_intrinsics", since = "1.59.0")
46044)]
46045#[cfg_attr(
46046 target_arch = "arm",
46047 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46048)]
46049pub fn vreinterpretq_f32_u32(a: uint32x4_t) -> float32x4_t {
46050 unsafe { transmute(a) }
46051}
46052#[doc = "Vector reinterpret cast operation"]
46053#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u32)"]
46054#[inline]
46055#[target_feature(enable = "neon")]
46056#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46057#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46058#[cfg_attr(
46059 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46060 assert_instr(nop)
46061)]
46062#[cfg_attr(
46063 not(target_arch = "arm"),
46064 stable(feature = "neon_intrinsics", since = "1.59.0")
46065)]
46066#[cfg_attr(
46067 target_arch = "arm",
46068 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46069)]
46070pub fn vreinterpretq_s8_u32(a: uint32x4_t) -> int8x16_t {
46071 unsafe { transmute(a) }
46072}
46073#[doc = "Vector reinterpret cast operation"]
46074#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u32)"]
46075#[inline]
46076#[target_feature(enable = "neon")]
46077#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46078#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46079#[cfg_attr(
46080 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46081 assert_instr(nop)
46082)]
46083#[cfg_attr(
46084 not(target_arch = "arm"),
46085 stable(feature = "neon_intrinsics", since = "1.59.0")
46086)]
46087#[cfg_attr(
46088 target_arch = "arm",
46089 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46090)]
46091pub fn vreinterpretq_s16_u32(a: uint32x4_t) -> int16x8_t {
46092 unsafe { transmute(a) }
46093}
46094#[doc = "Vector reinterpret cast operation"]
46095#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u32)"]
46096#[inline]
46097#[target_feature(enable = "neon")]
46098#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46099#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46100#[cfg_attr(
46101 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46102 assert_instr(nop)
46103)]
46104#[cfg_attr(
46105 not(target_arch = "arm"),
46106 stable(feature = "neon_intrinsics", since = "1.59.0")
46107)]
46108#[cfg_attr(
46109 target_arch = "arm",
46110 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46111)]
46112pub fn vreinterpretq_s32_u32(a: uint32x4_t) -> int32x4_t {
46113 unsafe { transmute(a) }
46114}
46115#[doc = "Vector reinterpret cast operation"]
46116#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u32)"]
46117#[inline]
46118#[target_feature(enable = "neon")]
46119#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46120#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46121#[cfg_attr(
46122 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46123 assert_instr(nop)
46124)]
46125#[cfg_attr(
46126 not(target_arch = "arm"),
46127 stable(feature = "neon_intrinsics", since = "1.59.0")
46128)]
46129#[cfg_attr(
46130 target_arch = "arm",
46131 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46132)]
46133pub fn vreinterpretq_s64_u32(a: uint32x4_t) -> int64x2_t {
46134 unsafe { transmute(a) }
46135}
46136#[doc = "Vector reinterpret cast operation"]
46137#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u32)"]
46138#[inline]
46139#[target_feature(enable = "neon")]
46140#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46141#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46142#[cfg_attr(
46143 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46144 assert_instr(nop)
46145)]
46146#[cfg_attr(
46147 not(target_arch = "arm"),
46148 stable(feature = "neon_intrinsics", since = "1.59.0")
46149)]
46150#[cfg_attr(
46151 target_arch = "arm",
46152 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46153)]
46154pub fn vreinterpretq_u8_u32(a: uint32x4_t) -> uint8x16_t {
46155 unsafe { transmute(a) }
46156}
46157#[doc = "Vector reinterpret cast operation"]
46158#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u32)"]
46159#[inline]
46160#[target_feature(enable = "neon")]
46161#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46162#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46163#[cfg_attr(
46164 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46165 assert_instr(nop)
46166)]
46167#[cfg_attr(
46168 not(target_arch = "arm"),
46169 stable(feature = "neon_intrinsics", since = "1.59.0")
46170)]
46171#[cfg_attr(
46172 target_arch = "arm",
46173 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46174)]
46175pub fn vreinterpretq_u16_u32(a: uint32x4_t) -> uint16x8_t {
46176 unsafe { transmute(a) }
46177}
46178#[doc = "Vector reinterpret cast operation"]
46179#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u32)"]
46180#[inline]
46181#[target_feature(enable = "neon")]
46182#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46183#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46184#[cfg_attr(
46185 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46186 assert_instr(nop)
46187)]
46188#[cfg_attr(
46189 not(target_arch = "arm"),
46190 stable(feature = "neon_intrinsics", since = "1.59.0")
46191)]
46192#[cfg_attr(
46193 target_arch = "arm",
46194 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46195)]
46196pub fn vreinterpretq_u64_u32(a: uint32x4_t) -> uint64x2_t {
46197 unsafe { transmute(a) }
46198}
46199#[doc = "Vector reinterpret cast operation"]
46200#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u32)"]
46201#[inline]
46202#[target_feature(enable = "neon")]
46203#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46204#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46205#[cfg_attr(
46206 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46207 assert_instr(nop)
46208)]
46209#[cfg_attr(
46210 not(target_arch = "arm"),
46211 stable(feature = "neon_intrinsics", since = "1.59.0")
46212)]
46213#[cfg_attr(
46214 target_arch = "arm",
46215 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46216)]
46217pub fn vreinterpretq_p8_u32(a: uint32x4_t) -> poly8x16_t {
46218 unsafe { transmute(a) }
46219}
46220#[doc = "Vector reinterpret cast operation"]
46221#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u32)"]
46222#[inline]
46223#[target_feature(enable = "neon")]
46224#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46225#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46226#[cfg_attr(
46227 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46228 assert_instr(nop)
46229)]
46230#[cfg_attr(
46231 not(target_arch = "arm"),
46232 stable(feature = "neon_intrinsics", since = "1.59.0")
46233)]
46234#[cfg_attr(
46235 target_arch = "arm",
46236 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46237)]
46238pub fn vreinterpretq_p16_u32(a: uint32x4_t) -> poly16x8_t {
46239 unsafe { transmute(a) }
46240}
46241#[doc = "Vector reinterpret cast operation"]
46242#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u64)"]
46243#[inline]
46244#[target_feature(enable = "neon")]
46245#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46246#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46247#[cfg_attr(
46248 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46249 assert_instr(nop)
46250)]
46251#[cfg_attr(
46252 not(target_arch = "arm"),
46253 stable(feature = "neon_intrinsics", since = "1.59.0")
46254)]
46255#[cfg_attr(
46256 target_arch = "arm",
46257 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46258)]
46259pub fn vreinterpret_f32_u64(a: uint64x1_t) -> float32x2_t {
46260 unsafe { transmute(a) }
46261}
46262#[doc = "Vector reinterpret cast operation"]
46263#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u64)"]
46264#[inline]
46265#[target_feature(enable = "neon")]
46266#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46267#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46268#[cfg_attr(
46269 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46270 assert_instr(nop)
46271)]
46272#[cfg_attr(
46273 not(target_arch = "arm"),
46274 stable(feature = "neon_intrinsics", since = "1.59.0")
46275)]
46276#[cfg_attr(
46277 target_arch = "arm",
46278 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46279)]
46280pub fn vreinterpret_s8_u64(a: uint64x1_t) -> int8x8_t {
46281 unsafe { transmute(a) }
46282}
46283#[doc = "Vector reinterpret cast operation"]
46284#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u64)"]
46285#[inline]
46286#[target_feature(enable = "neon")]
46287#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46288#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46289#[cfg_attr(
46290 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46291 assert_instr(nop)
46292)]
46293#[cfg_attr(
46294 not(target_arch = "arm"),
46295 stable(feature = "neon_intrinsics", since = "1.59.0")
46296)]
46297#[cfg_attr(
46298 target_arch = "arm",
46299 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46300)]
46301pub fn vreinterpret_s16_u64(a: uint64x1_t) -> int16x4_t {
46302 unsafe { transmute(a) }
46303}
46304#[doc = "Vector reinterpret cast operation"]
46305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u64)"]
46306#[inline]
46307#[target_feature(enable = "neon")]
46308#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46309#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46310#[cfg_attr(
46311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46312 assert_instr(nop)
46313)]
46314#[cfg_attr(
46315 not(target_arch = "arm"),
46316 stable(feature = "neon_intrinsics", since = "1.59.0")
46317)]
46318#[cfg_attr(
46319 target_arch = "arm",
46320 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46321)]
46322pub fn vreinterpret_s32_u64(a: uint64x1_t) -> int32x2_t {
46323 unsafe { transmute(a) }
46324}
46325#[doc = "Vector reinterpret cast operation"]
46326#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u64)"]
46327#[inline]
46328#[target_feature(enable = "neon")]
46329#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46330#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46331#[cfg_attr(
46332 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46333 assert_instr(nop)
46334)]
46335#[cfg_attr(
46336 not(target_arch = "arm"),
46337 stable(feature = "neon_intrinsics", since = "1.59.0")
46338)]
46339#[cfg_attr(
46340 target_arch = "arm",
46341 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46342)]
46343pub fn vreinterpret_s64_u64(a: uint64x1_t) -> int64x1_t {
46344 unsafe { transmute(a) }
46345}
46346#[doc = "Vector reinterpret cast operation"]
46347#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u64)"]
46348#[inline]
46349#[target_feature(enable = "neon")]
46350#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46351#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46352#[cfg_attr(
46353 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46354 assert_instr(nop)
46355)]
46356#[cfg_attr(
46357 not(target_arch = "arm"),
46358 stable(feature = "neon_intrinsics", since = "1.59.0")
46359)]
46360#[cfg_attr(
46361 target_arch = "arm",
46362 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46363)]
46364pub fn vreinterpret_u8_u64(a: uint64x1_t) -> uint8x8_t {
46365 unsafe { transmute(a) }
46366}
46367#[doc = "Vector reinterpret cast operation"]
46368#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u64)"]
46369#[inline]
46370#[target_feature(enable = "neon")]
46371#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46372#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46373#[cfg_attr(
46374 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46375 assert_instr(nop)
46376)]
46377#[cfg_attr(
46378 not(target_arch = "arm"),
46379 stable(feature = "neon_intrinsics", since = "1.59.0")
46380)]
46381#[cfg_attr(
46382 target_arch = "arm",
46383 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46384)]
46385pub fn vreinterpret_u16_u64(a: uint64x1_t) -> uint16x4_t {
46386 unsafe { transmute(a) }
46387}
46388#[doc = "Vector reinterpret cast operation"]
46389#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u64)"]
46390#[inline]
46391#[target_feature(enable = "neon")]
46392#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46393#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46394#[cfg_attr(
46395 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46396 assert_instr(nop)
46397)]
46398#[cfg_attr(
46399 not(target_arch = "arm"),
46400 stable(feature = "neon_intrinsics", since = "1.59.0")
46401)]
46402#[cfg_attr(
46403 target_arch = "arm",
46404 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46405)]
46406pub fn vreinterpret_u32_u64(a: uint64x1_t) -> uint32x2_t {
46407 unsafe { transmute(a) }
46408}
46409#[doc = "Vector reinterpret cast operation"]
46410#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u64)"]
46411#[inline]
46412#[target_feature(enable = "neon")]
46413#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46414#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46415#[cfg_attr(
46416 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46417 assert_instr(nop)
46418)]
46419#[cfg_attr(
46420 not(target_arch = "arm"),
46421 stable(feature = "neon_intrinsics", since = "1.59.0")
46422)]
46423#[cfg_attr(
46424 target_arch = "arm",
46425 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46426)]
46427pub fn vreinterpret_p8_u64(a: uint64x1_t) -> poly8x8_t {
46428 unsafe { transmute(a) }
46429}
46430#[doc = "Vector reinterpret cast operation"]
46431#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u64)"]
46432#[inline]
46433#[target_feature(enable = "neon")]
46434#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46435#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46436#[cfg_attr(
46437 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46438 assert_instr(nop)
46439)]
46440#[cfg_attr(
46441 not(target_arch = "arm"),
46442 stable(feature = "neon_intrinsics", since = "1.59.0")
46443)]
46444#[cfg_attr(
46445 target_arch = "arm",
46446 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46447)]
46448pub fn vreinterpret_p16_u64(a: uint64x1_t) -> poly16x4_t {
46449 unsafe { transmute(a) }
46450}
46451#[doc = "Vector reinterpret cast operation"]
46452#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u64)"]
46453#[inline]
46454#[target_feature(enable = "neon")]
46455#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46456#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46457#[cfg_attr(
46458 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46459 assert_instr(nop)
46460)]
46461#[cfg_attr(
46462 not(target_arch = "arm"),
46463 stable(feature = "neon_intrinsics", since = "1.59.0")
46464)]
46465#[cfg_attr(
46466 target_arch = "arm",
46467 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46468)]
46469pub fn vreinterpretq_f32_u64(a: uint64x2_t) -> float32x4_t {
46470 unsafe { transmute(a) }
46471}
46472#[doc = "Vector reinterpret cast operation"]
46473#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u64)"]
46474#[inline]
46475#[target_feature(enable = "neon")]
46476#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46477#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46478#[cfg_attr(
46479 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46480 assert_instr(nop)
46481)]
46482#[cfg_attr(
46483 not(target_arch = "arm"),
46484 stable(feature = "neon_intrinsics", since = "1.59.0")
46485)]
46486#[cfg_attr(
46487 target_arch = "arm",
46488 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46489)]
46490pub fn vreinterpretq_s8_u64(a: uint64x2_t) -> int8x16_t {
46491 unsafe { transmute(a) }
46492}
46493#[doc = "Vector reinterpret cast operation"]
46494#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u64)"]
46495#[inline]
46496#[target_feature(enable = "neon")]
46497#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46498#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46499#[cfg_attr(
46500 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46501 assert_instr(nop)
46502)]
46503#[cfg_attr(
46504 not(target_arch = "arm"),
46505 stable(feature = "neon_intrinsics", since = "1.59.0")
46506)]
46507#[cfg_attr(
46508 target_arch = "arm",
46509 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46510)]
46511pub fn vreinterpretq_s16_u64(a: uint64x2_t) -> int16x8_t {
46512 unsafe { transmute(a) }
46513}
46514#[doc = "Vector reinterpret cast operation"]
46515#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u64)"]
46516#[inline]
46517#[target_feature(enable = "neon")]
46518#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46519#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46520#[cfg_attr(
46521 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46522 assert_instr(nop)
46523)]
46524#[cfg_attr(
46525 not(target_arch = "arm"),
46526 stable(feature = "neon_intrinsics", since = "1.59.0")
46527)]
46528#[cfg_attr(
46529 target_arch = "arm",
46530 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46531)]
46532pub fn vreinterpretq_s32_u64(a: uint64x2_t) -> int32x4_t {
46533 unsafe { transmute(a) }
46534}
46535#[doc = "Vector reinterpret cast operation"]
46536#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u64)"]
46537#[inline]
46538#[target_feature(enable = "neon")]
46539#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46540#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46541#[cfg_attr(
46542 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46543 assert_instr(nop)
46544)]
46545#[cfg_attr(
46546 not(target_arch = "arm"),
46547 stable(feature = "neon_intrinsics", since = "1.59.0")
46548)]
46549#[cfg_attr(
46550 target_arch = "arm",
46551 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46552)]
46553pub fn vreinterpretq_s64_u64(a: uint64x2_t) -> int64x2_t {
46554 unsafe { transmute(a) }
46555}
46556#[doc = "Vector reinterpret cast operation"]
46557#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u64)"]
46558#[inline]
46559#[target_feature(enable = "neon")]
46560#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46561#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46562#[cfg_attr(
46563 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46564 assert_instr(nop)
46565)]
46566#[cfg_attr(
46567 not(target_arch = "arm"),
46568 stable(feature = "neon_intrinsics", since = "1.59.0")
46569)]
46570#[cfg_attr(
46571 target_arch = "arm",
46572 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46573)]
46574pub fn vreinterpretq_u8_u64(a: uint64x2_t) -> uint8x16_t {
46575 unsafe { transmute(a) }
46576}
46577#[doc = "Vector reinterpret cast operation"]
46578#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u64)"]
46579#[inline]
46580#[target_feature(enable = "neon")]
46581#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46582#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46583#[cfg_attr(
46584 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46585 assert_instr(nop)
46586)]
46587#[cfg_attr(
46588 not(target_arch = "arm"),
46589 stable(feature = "neon_intrinsics", since = "1.59.0")
46590)]
46591#[cfg_attr(
46592 target_arch = "arm",
46593 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46594)]
46595pub fn vreinterpretq_u16_u64(a: uint64x2_t) -> uint16x8_t {
46596 unsafe { transmute(a) }
46597}
46598#[doc = "Vector reinterpret cast operation"]
46599#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u64)"]
46600#[inline]
46601#[target_feature(enable = "neon")]
46602#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46603#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46604#[cfg_attr(
46605 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46606 assert_instr(nop)
46607)]
46608#[cfg_attr(
46609 not(target_arch = "arm"),
46610 stable(feature = "neon_intrinsics", since = "1.59.0")
46611)]
46612#[cfg_attr(
46613 target_arch = "arm",
46614 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46615)]
46616pub fn vreinterpretq_u32_u64(a: uint64x2_t) -> uint32x4_t {
46617 unsafe { transmute(a) }
46618}
46619#[doc = "Vector reinterpret cast operation"]
46620#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u64)"]
46621#[inline]
46622#[target_feature(enable = "neon")]
46623#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46624#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46625#[cfg_attr(
46626 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46627 assert_instr(nop)
46628)]
46629#[cfg_attr(
46630 not(target_arch = "arm"),
46631 stable(feature = "neon_intrinsics", since = "1.59.0")
46632)]
46633#[cfg_attr(
46634 target_arch = "arm",
46635 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46636)]
46637pub fn vreinterpretq_p8_u64(a: uint64x2_t) -> poly8x16_t {
46638 unsafe { transmute(a) }
46639}
46640#[doc = "Vector reinterpret cast operation"]
46641#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u64)"]
46642#[inline]
46643#[target_feature(enable = "neon")]
46644#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46645#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46646#[cfg_attr(
46647 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46648 assert_instr(nop)
46649)]
46650#[cfg_attr(
46651 not(target_arch = "arm"),
46652 stable(feature = "neon_intrinsics", since = "1.59.0")
46653)]
46654#[cfg_attr(
46655 target_arch = "arm",
46656 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46657)]
46658pub fn vreinterpretq_p16_u64(a: uint64x2_t) -> poly16x8_t {
46659 unsafe { transmute(a) }
46660}
46661#[doc = "Vector reinterpret cast operation"]
46662#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_p8)"]
46663#[inline]
46664#[target_feature(enable = "neon")]
46665#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46666#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46667#[cfg_attr(
46668 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46669 assert_instr(nop)
46670)]
46671#[cfg_attr(
46672 not(target_arch = "arm"),
46673 stable(feature = "neon_intrinsics", since = "1.59.0")
46674)]
46675#[cfg_attr(
46676 target_arch = "arm",
46677 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46678)]
46679pub fn vreinterpret_f32_p8(a: poly8x8_t) -> float32x2_t {
46680 unsafe { transmute(a) }
46681}
46682#[doc = "Vector reinterpret cast operation"]
46683#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p8)"]
46684#[inline]
46685#[target_feature(enable = "neon")]
46686#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46687#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46688#[cfg_attr(
46689 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46690 assert_instr(nop)
46691)]
46692#[cfg_attr(
46693 not(target_arch = "arm"),
46694 stable(feature = "neon_intrinsics", since = "1.59.0")
46695)]
46696#[cfg_attr(
46697 target_arch = "arm",
46698 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46699)]
46700pub fn vreinterpret_s8_p8(a: poly8x8_t) -> int8x8_t {
46701 unsafe { transmute(a) }
46702}
46703#[doc = "Vector reinterpret cast operation"]
46704#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p8)"]
46705#[inline]
46706#[target_feature(enable = "neon")]
46707#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46708#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46709#[cfg_attr(
46710 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46711 assert_instr(nop)
46712)]
46713#[cfg_attr(
46714 not(target_arch = "arm"),
46715 stable(feature = "neon_intrinsics", since = "1.59.0")
46716)]
46717#[cfg_attr(
46718 target_arch = "arm",
46719 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46720)]
46721pub fn vreinterpret_s16_p8(a: poly8x8_t) -> int16x4_t {
46722 unsafe { transmute(a) }
46723}
46724#[doc = "Vector reinterpret cast operation"]
46725#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p8)"]
46726#[inline]
46727#[target_feature(enable = "neon")]
46728#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46729#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46730#[cfg_attr(
46731 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46732 assert_instr(nop)
46733)]
46734#[cfg_attr(
46735 not(target_arch = "arm"),
46736 stable(feature = "neon_intrinsics", since = "1.59.0")
46737)]
46738#[cfg_attr(
46739 target_arch = "arm",
46740 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46741)]
46742pub fn vreinterpret_s32_p8(a: poly8x8_t) -> int32x2_t {
46743 unsafe { transmute(a) }
46744}
46745#[doc = "Vector reinterpret cast operation"]
46746#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_p8)"]
46747#[inline]
46748#[target_feature(enable = "neon")]
46749#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46750#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46751#[cfg_attr(
46752 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46753 assert_instr(nop)
46754)]
46755#[cfg_attr(
46756 not(target_arch = "arm"),
46757 stable(feature = "neon_intrinsics", since = "1.59.0")
46758)]
46759#[cfg_attr(
46760 target_arch = "arm",
46761 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46762)]
46763pub fn vreinterpret_s64_p8(a: poly8x8_t) -> int64x1_t {
46764 unsafe { transmute(a) }
46765}
46766#[doc = "Vector reinterpret cast operation"]
46767#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p8)"]
46768#[inline]
46769#[target_feature(enable = "neon")]
46770#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46771#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46772#[cfg_attr(
46773 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46774 assert_instr(nop)
46775)]
46776#[cfg_attr(
46777 not(target_arch = "arm"),
46778 stable(feature = "neon_intrinsics", since = "1.59.0")
46779)]
46780#[cfg_attr(
46781 target_arch = "arm",
46782 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46783)]
46784pub fn vreinterpret_u8_p8(a: poly8x8_t) -> uint8x8_t {
46785 unsafe { transmute(a) }
46786}
46787#[doc = "Vector reinterpret cast operation"]
46788#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p8)"]
46789#[inline]
46790#[target_feature(enable = "neon")]
46791#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46792#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46793#[cfg_attr(
46794 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46795 assert_instr(nop)
46796)]
46797#[cfg_attr(
46798 not(target_arch = "arm"),
46799 stable(feature = "neon_intrinsics", since = "1.59.0")
46800)]
46801#[cfg_attr(
46802 target_arch = "arm",
46803 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46804)]
46805pub fn vreinterpret_u16_p8(a: poly8x8_t) -> uint16x4_t {
46806 unsafe { transmute(a) }
46807}
46808#[doc = "Vector reinterpret cast operation"]
46809#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p8)"]
46810#[inline]
46811#[target_feature(enable = "neon")]
46812#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46813#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46814#[cfg_attr(
46815 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46816 assert_instr(nop)
46817)]
46818#[cfg_attr(
46819 not(target_arch = "arm"),
46820 stable(feature = "neon_intrinsics", since = "1.59.0")
46821)]
46822#[cfg_attr(
46823 target_arch = "arm",
46824 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46825)]
46826pub fn vreinterpret_u32_p8(a: poly8x8_t) -> uint32x2_t {
46827 unsafe { transmute(a) }
46828}
46829#[doc = "Vector reinterpret cast operation"]
46830#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_p8)"]
46831#[inline]
46832#[target_feature(enable = "neon")]
46833#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46834#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46835#[cfg_attr(
46836 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46837 assert_instr(nop)
46838)]
46839#[cfg_attr(
46840 not(target_arch = "arm"),
46841 stable(feature = "neon_intrinsics", since = "1.59.0")
46842)]
46843#[cfg_attr(
46844 target_arch = "arm",
46845 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46846)]
46847pub fn vreinterpret_u64_p8(a: poly8x8_t) -> uint64x1_t {
46848 unsafe { transmute(a) }
46849}
46850#[doc = "Vector reinterpret cast operation"]
46851#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_p8)"]
46852#[inline]
46853#[target_feature(enable = "neon")]
46854#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46855#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46856#[cfg_attr(
46857 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46858 assert_instr(nop)
46859)]
46860#[cfg_attr(
46861 not(target_arch = "arm"),
46862 stable(feature = "neon_intrinsics", since = "1.59.0")
46863)]
46864#[cfg_attr(
46865 target_arch = "arm",
46866 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46867)]
46868pub fn vreinterpret_p16_p8(a: poly8x8_t) -> poly16x4_t {
46869 unsafe { transmute(a) }
46870}
46871#[doc = "Vector reinterpret cast operation"]
46872#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p8)"]
46873#[inline]
46874#[target_feature(enable = "neon")]
46875#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46876#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46877#[cfg_attr(
46878 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46879 assert_instr(nop)
46880)]
46881#[cfg_attr(
46882 not(target_arch = "arm"),
46883 stable(feature = "neon_intrinsics", since = "1.59.0")
46884)]
46885#[cfg_attr(
46886 target_arch = "arm",
46887 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46888)]
46889pub fn vreinterpretq_f32_p8(a: poly8x16_t) -> float32x4_t {
46890 unsafe { transmute(a) }
46891}
46892#[doc = "Vector reinterpret cast operation"]
46893#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p8)"]
46894#[inline]
46895#[target_feature(enable = "neon")]
46896#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46897#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46898#[cfg_attr(
46899 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46900 assert_instr(nop)
46901)]
46902#[cfg_attr(
46903 not(target_arch = "arm"),
46904 stable(feature = "neon_intrinsics", since = "1.59.0")
46905)]
46906#[cfg_attr(
46907 target_arch = "arm",
46908 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46909)]
46910pub fn vreinterpretq_s8_p8(a: poly8x16_t) -> int8x16_t {
46911 unsafe { transmute(a) }
46912}
46913#[doc = "Vector reinterpret cast operation"]
46914#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p8)"]
46915#[inline]
46916#[target_feature(enable = "neon")]
46917#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46918#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46919#[cfg_attr(
46920 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46921 assert_instr(nop)
46922)]
46923#[cfg_attr(
46924 not(target_arch = "arm"),
46925 stable(feature = "neon_intrinsics", since = "1.59.0")
46926)]
46927#[cfg_attr(
46928 target_arch = "arm",
46929 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46930)]
46931pub fn vreinterpretq_s16_p8(a: poly8x16_t) -> int16x8_t {
46932 unsafe { transmute(a) }
46933}
46934#[doc = "Vector reinterpret cast operation"]
46935#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p8)"]
46936#[inline]
46937#[target_feature(enable = "neon")]
46938#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46939#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46940#[cfg_attr(
46941 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46942 assert_instr(nop)
46943)]
46944#[cfg_attr(
46945 not(target_arch = "arm"),
46946 stable(feature = "neon_intrinsics", since = "1.59.0")
46947)]
46948#[cfg_attr(
46949 target_arch = "arm",
46950 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46951)]
46952pub fn vreinterpretq_s32_p8(a: poly8x16_t) -> int32x4_t {
46953 unsafe { transmute(a) }
46954}
46955#[doc = "Vector reinterpret cast operation"]
46956#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p8)"]
46957#[inline]
46958#[target_feature(enable = "neon")]
46959#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46960#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46961#[cfg_attr(
46962 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46963 assert_instr(nop)
46964)]
46965#[cfg_attr(
46966 not(target_arch = "arm"),
46967 stable(feature = "neon_intrinsics", since = "1.59.0")
46968)]
46969#[cfg_attr(
46970 target_arch = "arm",
46971 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46972)]
46973pub fn vreinterpretq_s64_p8(a: poly8x16_t) -> int64x2_t {
46974 unsafe { transmute(a) }
46975}
46976#[doc = "Vector reinterpret cast operation"]
46977#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p8)"]
46978#[inline]
46979#[target_feature(enable = "neon")]
46980#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46981#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46982#[cfg_attr(
46983 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46984 assert_instr(nop)
46985)]
46986#[cfg_attr(
46987 not(target_arch = "arm"),
46988 stable(feature = "neon_intrinsics", since = "1.59.0")
46989)]
46990#[cfg_attr(
46991 target_arch = "arm",
46992 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46993)]
46994pub fn vreinterpretq_u8_p8(a: poly8x16_t) -> uint8x16_t {
46995 unsafe { transmute(a) }
46996}
46997#[doc = "Vector reinterpret cast operation"]
46998#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p8)"]
46999#[inline]
47000#[target_feature(enable = "neon")]
47001#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47002#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47003#[cfg_attr(
47004 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47005 assert_instr(nop)
47006)]
47007#[cfg_attr(
47008 not(target_arch = "arm"),
47009 stable(feature = "neon_intrinsics", since = "1.59.0")
47010)]
47011#[cfg_attr(
47012 target_arch = "arm",
47013 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47014)]
47015pub fn vreinterpretq_u16_p8(a: poly8x16_t) -> uint16x8_t {
47016 unsafe { transmute(a) }
47017}
47018#[doc = "Vector reinterpret cast operation"]
47019#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p8)"]
47020#[inline]
47021#[target_feature(enable = "neon")]
47022#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47023#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47024#[cfg_attr(
47025 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47026 assert_instr(nop)
47027)]
47028#[cfg_attr(
47029 not(target_arch = "arm"),
47030 stable(feature = "neon_intrinsics", since = "1.59.0")
47031)]
47032#[cfg_attr(
47033 target_arch = "arm",
47034 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47035)]
47036pub fn vreinterpretq_u32_p8(a: poly8x16_t) -> uint32x4_t {
47037 unsafe { transmute(a) }
47038}
47039#[doc = "Vector reinterpret cast operation"]
47040#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p8)"]
47041#[inline]
47042#[target_feature(enable = "neon")]
47043#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47044#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47045#[cfg_attr(
47046 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47047 assert_instr(nop)
47048)]
47049#[cfg_attr(
47050 not(target_arch = "arm"),
47051 stable(feature = "neon_intrinsics", since = "1.59.0")
47052)]
47053#[cfg_attr(
47054 target_arch = "arm",
47055 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47056)]
47057pub fn vreinterpretq_u64_p8(a: poly8x16_t) -> uint64x2_t {
47058 unsafe { transmute(a) }
47059}
47060#[doc = "Vector reinterpret cast operation"]
47061#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p8)"]
47062#[inline]
47063#[target_feature(enable = "neon")]
47064#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47065#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47066#[cfg_attr(
47067 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47068 assert_instr(nop)
47069)]
47070#[cfg_attr(
47071 not(target_arch = "arm"),
47072 stable(feature = "neon_intrinsics", since = "1.59.0")
47073)]
47074#[cfg_attr(
47075 target_arch = "arm",
47076 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47077)]
47078pub fn vreinterpretq_p16_p8(a: poly8x16_t) -> poly16x8_t {
47079 unsafe { transmute(a) }
47080}
47081#[doc = "Vector reinterpret cast operation"]
47082#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_p16)"]
47083#[inline]
47084#[target_feature(enable = "neon")]
47085#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47086#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47087#[cfg_attr(
47088 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47089 assert_instr(nop)
47090)]
47091#[cfg_attr(
47092 not(target_arch = "arm"),
47093 stable(feature = "neon_intrinsics", since = "1.59.0")
47094)]
47095#[cfg_attr(
47096 target_arch = "arm",
47097 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47098)]
47099pub fn vreinterpret_f32_p16(a: poly16x4_t) -> float32x2_t {
47100 unsafe { transmute(a) }
47101}
47102#[doc = "Vector reinterpret cast operation"]
47103#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p16)"]
47104#[inline]
47105#[target_feature(enable = "neon")]
47106#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47107#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47108#[cfg_attr(
47109 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47110 assert_instr(nop)
47111)]
47112#[cfg_attr(
47113 not(target_arch = "arm"),
47114 stable(feature = "neon_intrinsics", since = "1.59.0")
47115)]
47116#[cfg_attr(
47117 target_arch = "arm",
47118 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47119)]
47120pub fn vreinterpret_s8_p16(a: poly16x4_t) -> int8x8_t {
47121 unsafe { transmute(a) }
47122}
47123#[doc = "Vector reinterpret cast operation"]
47124#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p16)"]
47125#[inline]
47126#[target_feature(enable = "neon")]
47127#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47128#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47129#[cfg_attr(
47130 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47131 assert_instr(nop)
47132)]
47133#[cfg_attr(
47134 not(target_arch = "arm"),
47135 stable(feature = "neon_intrinsics", since = "1.59.0")
47136)]
47137#[cfg_attr(
47138 target_arch = "arm",
47139 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47140)]
47141pub fn vreinterpret_s16_p16(a: poly16x4_t) -> int16x4_t {
47142 unsafe { transmute(a) }
47143}
47144#[doc = "Vector reinterpret cast operation"]
47145#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p16)"]
47146#[inline]
47147#[target_feature(enable = "neon")]
47148#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47149#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47150#[cfg_attr(
47151 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47152 assert_instr(nop)
47153)]
47154#[cfg_attr(
47155 not(target_arch = "arm"),
47156 stable(feature = "neon_intrinsics", since = "1.59.0")
47157)]
47158#[cfg_attr(
47159 target_arch = "arm",
47160 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47161)]
47162pub fn vreinterpret_s32_p16(a: poly16x4_t) -> int32x2_t {
47163 unsafe { transmute(a) }
47164}
47165#[doc = "Vector reinterpret cast operation"]
47166#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_p16)"]
47167#[inline]
47168#[target_feature(enable = "neon")]
47169#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47170#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47171#[cfg_attr(
47172 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47173 assert_instr(nop)
47174)]
47175#[cfg_attr(
47176 not(target_arch = "arm"),
47177 stable(feature = "neon_intrinsics", since = "1.59.0")
47178)]
47179#[cfg_attr(
47180 target_arch = "arm",
47181 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47182)]
47183pub fn vreinterpret_s64_p16(a: poly16x4_t) -> int64x1_t {
47184 unsafe { transmute(a) }
47185}
47186#[doc = "Vector reinterpret cast operation"]
47187#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p16)"]
47188#[inline]
47189#[target_feature(enable = "neon")]
47190#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47191#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47192#[cfg_attr(
47193 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47194 assert_instr(nop)
47195)]
47196#[cfg_attr(
47197 not(target_arch = "arm"),
47198 stable(feature = "neon_intrinsics", since = "1.59.0")
47199)]
47200#[cfg_attr(
47201 target_arch = "arm",
47202 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47203)]
47204pub fn vreinterpret_u8_p16(a: poly16x4_t) -> uint8x8_t {
47205 unsafe { transmute(a) }
47206}
47207#[doc = "Vector reinterpret cast operation"]
47208#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p16)"]
47209#[inline]
47210#[target_feature(enable = "neon")]
47211#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47212#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47213#[cfg_attr(
47214 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47215 assert_instr(nop)
47216)]
47217#[cfg_attr(
47218 not(target_arch = "arm"),
47219 stable(feature = "neon_intrinsics", since = "1.59.0")
47220)]
47221#[cfg_attr(
47222 target_arch = "arm",
47223 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47224)]
47225pub fn vreinterpret_u16_p16(a: poly16x4_t) -> uint16x4_t {
47226 unsafe { transmute(a) }
47227}
47228#[doc = "Vector reinterpret cast operation"]
47229#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p16)"]
47230#[inline]
47231#[target_feature(enable = "neon")]
47232#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47233#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47234#[cfg_attr(
47235 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47236 assert_instr(nop)
47237)]
47238#[cfg_attr(
47239 not(target_arch = "arm"),
47240 stable(feature = "neon_intrinsics", since = "1.59.0")
47241)]
47242#[cfg_attr(
47243 target_arch = "arm",
47244 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47245)]
47246pub fn vreinterpret_u32_p16(a: poly16x4_t) -> uint32x2_t {
47247 unsafe { transmute(a) }
47248}
47249#[doc = "Vector reinterpret cast operation"]
47250#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_p16)"]
47251#[inline]
47252#[target_feature(enable = "neon")]
47253#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47254#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47255#[cfg_attr(
47256 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47257 assert_instr(nop)
47258)]
47259#[cfg_attr(
47260 not(target_arch = "arm"),
47261 stable(feature = "neon_intrinsics", since = "1.59.0")
47262)]
47263#[cfg_attr(
47264 target_arch = "arm",
47265 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47266)]
47267pub fn vreinterpret_u64_p16(a: poly16x4_t) -> uint64x1_t {
47268 unsafe { transmute(a) }
47269}
47270#[doc = "Vector reinterpret cast operation"]
47271#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_p16)"]
47272#[inline]
47273#[target_feature(enable = "neon")]
47274#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47275#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47276#[cfg_attr(
47277 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47278 assert_instr(nop)
47279)]
47280#[cfg_attr(
47281 not(target_arch = "arm"),
47282 stable(feature = "neon_intrinsics", since = "1.59.0")
47283)]
47284#[cfg_attr(
47285 target_arch = "arm",
47286 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47287)]
47288pub fn vreinterpret_p8_p16(a: poly16x4_t) -> poly8x8_t {
47289 unsafe { transmute(a) }
47290}
47291#[doc = "Vector reinterpret cast operation"]
47292#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p16)"]
47293#[inline]
47294#[target_feature(enable = "neon")]
47295#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47296#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47297#[cfg_attr(
47298 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47299 assert_instr(nop)
47300)]
47301#[cfg_attr(
47302 not(target_arch = "arm"),
47303 stable(feature = "neon_intrinsics", since = "1.59.0")
47304)]
47305#[cfg_attr(
47306 target_arch = "arm",
47307 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47308)]
47309pub fn vreinterpretq_f32_p16(a: poly16x8_t) -> float32x4_t {
47310 unsafe { transmute(a) }
47311}
47312#[doc = "Vector reinterpret cast operation"]
47313#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p16)"]
47314#[inline]
47315#[target_feature(enable = "neon")]
47316#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47317#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47318#[cfg_attr(
47319 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47320 assert_instr(nop)
47321)]
47322#[cfg_attr(
47323 not(target_arch = "arm"),
47324 stable(feature = "neon_intrinsics", since = "1.59.0")
47325)]
47326#[cfg_attr(
47327 target_arch = "arm",
47328 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47329)]
47330pub fn vreinterpretq_s8_p16(a: poly16x8_t) -> int8x16_t {
47331 unsafe { transmute(a) }
47332}
47333#[doc = "Vector reinterpret cast operation"]
47334#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p16)"]
47335#[inline]
47336#[target_feature(enable = "neon")]
47337#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47338#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47339#[cfg_attr(
47340 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47341 assert_instr(nop)
47342)]
47343#[cfg_attr(
47344 not(target_arch = "arm"),
47345 stable(feature = "neon_intrinsics", since = "1.59.0")
47346)]
47347#[cfg_attr(
47348 target_arch = "arm",
47349 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47350)]
47351pub fn vreinterpretq_s16_p16(a: poly16x8_t) -> int16x8_t {
47352 unsafe { transmute(a) }
47353}
47354#[doc = "Vector reinterpret cast operation"]
47355#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p16)"]
47356#[inline]
47357#[target_feature(enable = "neon")]
47358#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47359#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47360#[cfg_attr(
47361 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47362 assert_instr(nop)
47363)]
47364#[cfg_attr(
47365 not(target_arch = "arm"),
47366 stable(feature = "neon_intrinsics", since = "1.59.0")
47367)]
47368#[cfg_attr(
47369 target_arch = "arm",
47370 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47371)]
47372pub fn vreinterpretq_s32_p16(a: poly16x8_t) -> int32x4_t {
47373 unsafe { transmute(a) }
47374}
47375#[doc = "Vector reinterpret cast operation"]
47376#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p16)"]
47377#[inline]
47378#[target_feature(enable = "neon")]
47379#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47380#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47381#[cfg_attr(
47382 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47383 assert_instr(nop)
47384)]
47385#[cfg_attr(
47386 not(target_arch = "arm"),
47387 stable(feature = "neon_intrinsics", since = "1.59.0")
47388)]
47389#[cfg_attr(
47390 target_arch = "arm",
47391 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47392)]
47393pub fn vreinterpretq_s64_p16(a: poly16x8_t) -> int64x2_t {
47394 unsafe { transmute(a) }
47395}
47396#[doc = "Vector reinterpret cast operation"]
47397#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p16)"]
47398#[inline]
47399#[target_feature(enable = "neon")]
47400#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47401#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47402#[cfg_attr(
47403 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47404 assert_instr(nop)
47405)]
47406#[cfg_attr(
47407 not(target_arch = "arm"),
47408 stable(feature = "neon_intrinsics", since = "1.59.0")
47409)]
47410#[cfg_attr(
47411 target_arch = "arm",
47412 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47413)]
47414pub fn vreinterpretq_u8_p16(a: poly16x8_t) -> uint8x16_t {
47415 unsafe { transmute(a) }
47416}
47417#[doc = "Vector reinterpret cast operation"]
47418#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p16)"]
47419#[inline]
47420#[target_feature(enable = "neon")]
47421#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47422#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47423#[cfg_attr(
47424 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47425 assert_instr(nop)
47426)]
47427#[cfg_attr(
47428 not(target_arch = "arm"),
47429 stable(feature = "neon_intrinsics", since = "1.59.0")
47430)]
47431#[cfg_attr(
47432 target_arch = "arm",
47433 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47434)]
47435pub fn vreinterpretq_u16_p16(a: poly16x8_t) -> uint16x8_t {
47436 unsafe { transmute(a) }
47437}
47438#[doc = "Vector reinterpret cast operation"]
47439#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p16)"]
47440#[inline]
47441#[target_feature(enable = "neon")]
47442#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47443#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47444#[cfg_attr(
47445 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47446 assert_instr(nop)
47447)]
47448#[cfg_attr(
47449 not(target_arch = "arm"),
47450 stable(feature = "neon_intrinsics", since = "1.59.0")
47451)]
47452#[cfg_attr(
47453 target_arch = "arm",
47454 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47455)]
47456pub fn vreinterpretq_u32_p16(a: poly16x8_t) -> uint32x4_t {
47457 unsafe { transmute(a) }
47458}
47459#[doc = "Vector reinterpret cast operation"]
47460#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p16)"]
47461#[inline]
47462#[target_feature(enable = "neon")]
47463#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47464#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47465#[cfg_attr(
47466 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47467 assert_instr(nop)
47468)]
47469#[cfg_attr(
47470 not(target_arch = "arm"),
47471 stable(feature = "neon_intrinsics", since = "1.59.0")
47472)]
47473#[cfg_attr(
47474 target_arch = "arm",
47475 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47476)]
47477pub fn vreinterpretq_u64_p16(a: poly16x8_t) -> uint64x2_t {
47478 unsafe { transmute(a) }
47479}
47480#[doc = "Vector reinterpret cast operation"]
47481#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p16)"]
47482#[inline]
47483#[target_feature(enable = "neon")]
47484#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47485#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47486#[cfg_attr(
47487 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47488 assert_instr(nop)
47489)]
47490#[cfg_attr(
47491 not(target_arch = "arm"),
47492 stable(feature = "neon_intrinsics", since = "1.59.0")
47493)]
47494#[cfg_attr(
47495 target_arch = "arm",
47496 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47497)]
47498pub fn vreinterpretq_p8_p16(a: poly16x8_t) -> poly8x16_t {
47499 unsafe { transmute(a) }
47500}
47501#[doc = "Vector reinterpret cast operation"]
47502#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p128)"]
47503#[inline]
47504#[target_feature(enable = "neon,aes")]
47505#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47506#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47507#[cfg_attr(
47508 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47509 assert_instr(nop)
47510)]
47511#[cfg_attr(
47512 not(target_arch = "arm"),
47513 stable(feature = "neon_intrinsics", since = "1.59.0")
47514)]
47515#[cfg_attr(
47516 target_arch = "arm",
47517 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47518)]
47519pub fn vreinterpretq_s8_p128(a: p128) -> int8x16_t {
47520 unsafe { transmute(a) }
47521}
47522#[doc = "Vector reinterpret cast operation"]
47523#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p128)"]
47524#[inline]
47525#[target_feature(enable = "neon,aes")]
47526#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47527#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47528#[cfg_attr(
47529 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47530 assert_instr(nop)
47531)]
47532#[cfg_attr(
47533 not(target_arch = "arm"),
47534 stable(feature = "neon_intrinsics", since = "1.59.0")
47535)]
47536#[cfg_attr(
47537 target_arch = "arm",
47538 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47539)]
47540pub fn vreinterpretq_s16_p128(a: p128) -> int16x8_t {
47541 unsafe { transmute(a) }
47542}
47543#[doc = "Vector reinterpret cast operation"]
47544#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p128)"]
47545#[inline]
47546#[target_feature(enable = "neon,aes")]
47547#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47548#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47549#[cfg_attr(
47550 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47551 assert_instr(nop)
47552)]
47553#[cfg_attr(
47554 not(target_arch = "arm"),
47555 stable(feature = "neon_intrinsics", since = "1.59.0")
47556)]
47557#[cfg_attr(
47558 target_arch = "arm",
47559 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47560)]
47561pub fn vreinterpretq_s32_p128(a: p128) -> int32x4_t {
47562 unsafe { transmute(a) }
47563}
47564#[doc = "Vector reinterpret cast operation"]
47565#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p128)"]
47566#[inline]
47567#[target_feature(enable = "neon,aes")]
47568#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47569#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47570#[cfg_attr(
47571 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47572 assert_instr(nop)
47573)]
47574#[cfg_attr(
47575 not(target_arch = "arm"),
47576 stable(feature = "neon_intrinsics", since = "1.59.0")
47577)]
47578#[cfg_attr(
47579 target_arch = "arm",
47580 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47581)]
47582pub fn vreinterpretq_s64_p128(a: p128) -> int64x2_t {
47583 unsafe { transmute(a) }
47584}
47585#[doc = "Vector reinterpret cast operation"]
47586#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p128)"]
47587#[inline]
47588#[target_feature(enable = "neon,aes")]
47589#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47590#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47591#[cfg_attr(
47592 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47593 assert_instr(nop)
47594)]
47595#[cfg_attr(
47596 not(target_arch = "arm"),
47597 stable(feature = "neon_intrinsics", since = "1.59.0")
47598)]
47599#[cfg_attr(
47600 target_arch = "arm",
47601 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47602)]
47603pub fn vreinterpretq_u8_p128(a: p128) -> uint8x16_t {
47604 unsafe { transmute(a) }
47605}
47606#[doc = "Vector reinterpret cast operation"]
47607#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p128)"]
47608#[inline]
47609#[target_feature(enable = "neon,aes")]
47610#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47611#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47612#[cfg_attr(
47613 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47614 assert_instr(nop)
47615)]
47616#[cfg_attr(
47617 not(target_arch = "arm"),
47618 stable(feature = "neon_intrinsics", since = "1.59.0")
47619)]
47620#[cfg_attr(
47621 target_arch = "arm",
47622 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47623)]
47624pub fn vreinterpretq_u16_p128(a: p128) -> uint16x8_t {
47625 unsafe { transmute(a) }
47626}
47627#[doc = "Vector reinterpret cast operation"]
47628#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p128)"]
47629#[inline]
47630#[target_feature(enable = "neon,aes")]
47631#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47632#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47633#[cfg_attr(
47634 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47635 assert_instr(nop)
47636)]
47637#[cfg_attr(
47638 not(target_arch = "arm"),
47639 stable(feature = "neon_intrinsics", since = "1.59.0")
47640)]
47641#[cfg_attr(
47642 target_arch = "arm",
47643 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47644)]
47645pub fn vreinterpretq_u32_p128(a: p128) -> uint32x4_t {
47646 unsafe { transmute(a) }
47647}
47648#[doc = "Vector reinterpret cast operation"]
47649#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p128)"]
47650#[inline]
47651#[target_feature(enable = "neon,aes")]
47652#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47653#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47654#[cfg_attr(
47655 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47656 assert_instr(nop)
47657)]
47658#[cfg_attr(
47659 not(target_arch = "arm"),
47660 stable(feature = "neon_intrinsics", since = "1.59.0")
47661)]
47662#[cfg_attr(
47663 target_arch = "arm",
47664 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47665)]
47666pub fn vreinterpretq_u64_p128(a: p128) -> uint64x2_t {
47667 unsafe { transmute(a) }
47668}
47669#[doc = "Vector reinterpret cast operation"]
47670#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p128)"]
47671#[inline]
47672#[target_feature(enable = "neon,aes")]
47673#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47674#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47675#[cfg_attr(
47676 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47677 assert_instr(nop)
47678)]
47679#[cfg_attr(
47680 not(target_arch = "arm"),
47681 stable(feature = "neon_intrinsics", since = "1.59.0")
47682)]
47683#[cfg_attr(
47684 target_arch = "arm",
47685 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47686)]
47687pub fn vreinterpretq_p8_p128(a: p128) -> poly8x16_t {
47688 unsafe { transmute(a) }
47689}
47690#[doc = "Vector reinterpret cast operation"]
47691#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p128)"]
47692#[inline]
47693#[target_feature(enable = "neon,aes")]
47694#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47695#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47696#[cfg_attr(
47697 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47698 assert_instr(nop)
47699)]
47700#[cfg_attr(
47701 not(target_arch = "arm"),
47702 stable(feature = "neon_intrinsics", since = "1.59.0")
47703)]
47704#[cfg_attr(
47705 target_arch = "arm",
47706 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47707)]
47708pub fn vreinterpretq_p16_p128(a: p128) -> poly16x8_t {
47709 unsafe { transmute(a) }
47710}
47711#[doc = "Vector reinterpret cast operation"]
47712#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p128)"]
47713#[inline]
47714#[target_feature(enable = "neon,aes")]
47715#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47716#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47717#[cfg_attr(
47718 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47719 assert_instr(nop)
47720)]
47721#[cfg_attr(
47722 not(target_arch = "arm"),
47723 stable(feature = "neon_intrinsics", since = "1.59.0")
47724)]
47725#[cfg_attr(
47726 target_arch = "arm",
47727 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47728)]
47729pub fn vreinterpretq_p64_p128(a: p128) -> poly64x2_t {
47730 unsafe { transmute(a) }
47731}
47732#[doc = "Vector reinterpret cast operation"]
47733#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s8)"]
47734#[inline]
47735#[target_feature(enable = "neon,aes")]
47736#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47737#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47738#[cfg_attr(
47739 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47740 assert_instr(nop)
47741)]
47742#[cfg_attr(
47743 not(target_arch = "arm"),
47744 stable(feature = "neon_intrinsics", since = "1.59.0")
47745)]
47746#[cfg_attr(
47747 target_arch = "arm",
47748 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47749)]
47750pub fn vreinterpret_p64_s8(a: int8x8_t) -> poly64x1_t {
47751 unsafe { transmute(a) }
47752}
47753#[doc = "Vector reinterpret cast operation"]
47754#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s8)"]
47755#[inline]
47756#[target_feature(enable = "neon,aes")]
47757#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47758#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47759#[cfg_attr(
47760 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47761 assert_instr(nop)
47762)]
47763#[cfg_attr(
47764 not(target_arch = "arm"),
47765 stable(feature = "neon_intrinsics", since = "1.59.0")
47766)]
47767#[cfg_attr(
47768 target_arch = "arm",
47769 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47770)]
47771pub fn vreinterpretq_p128_s8(a: int8x16_t) -> p128 {
47772 unsafe { transmute(a) }
47773}
47774#[doc = "Vector reinterpret cast operation"]
47775#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s8)"]
47776#[inline]
47777#[target_feature(enable = "neon,aes")]
47778#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47779#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47780#[cfg_attr(
47781 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47782 assert_instr(nop)
47783)]
47784#[cfg_attr(
47785 not(target_arch = "arm"),
47786 stable(feature = "neon_intrinsics", since = "1.59.0")
47787)]
47788#[cfg_attr(
47789 target_arch = "arm",
47790 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47791)]
47792pub fn vreinterpretq_p64_s8(a: int8x16_t) -> poly64x2_t {
47793 unsafe { transmute(a) }
47794}
47795#[doc = "Vector reinterpret cast operation"]
47796#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s16)"]
47797#[inline]
47798#[target_feature(enable = "neon,aes")]
47799#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47800#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47801#[cfg_attr(
47802 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47803 assert_instr(nop)
47804)]
47805#[cfg_attr(
47806 not(target_arch = "arm"),
47807 stable(feature = "neon_intrinsics", since = "1.59.0")
47808)]
47809#[cfg_attr(
47810 target_arch = "arm",
47811 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47812)]
47813pub fn vreinterpret_p64_s16(a: int16x4_t) -> poly64x1_t {
47814 unsafe { transmute(a) }
47815}
47816#[doc = "Vector reinterpret cast operation"]
47817#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s16)"]
47818#[inline]
47819#[target_feature(enable = "neon,aes")]
47820#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47821#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47822#[cfg_attr(
47823 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47824 assert_instr(nop)
47825)]
47826#[cfg_attr(
47827 not(target_arch = "arm"),
47828 stable(feature = "neon_intrinsics", since = "1.59.0")
47829)]
47830#[cfg_attr(
47831 target_arch = "arm",
47832 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47833)]
47834pub fn vreinterpretq_p128_s16(a: int16x8_t) -> p128 {
47835 unsafe { transmute(a) }
47836}
47837#[doc = "Vector reinterpret cast operation"]
47838#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s16)"]
47839#[inline]
47840#[target_feature(enable = "neon,aes")]
47841#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47842#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47843#[cfg_attr(
47844 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47845 assert_instr(nop)
47846)]
47847#[cfg_attr(
47848 not(target_arch = "arm"),
47849 stable(feature = "neon_intrinsics", since = "1.59.0")
47850)]
47851#[cfg_attr(
47852 target_arch = "arm",
47853 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47854)]
47855pub fn vreinterpretq_p64_s16(a: int16x8_t) -> poly64x2_t {
47856 unsafe { transmute(a) }
47857}
47858#[doc = "Vector reinterpret cast operation"]
47859#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s32)"]
47860#[inline]
47861#[target_feature(enable = "neon,aes")]
47862#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47863#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47864#[cfg_attr(
47865 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47866 assert_instr(nop)
47867)]
47868#[cfg_attr(
47869 not(target_arch = "arm"),
47870 stable(feature = "neon_intrinsics", since = "1.59.0")
47871)]
47872#[cfg_attr(
47873 target_arch = "arm",
47874 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47875)]
47876pub fn vreinterpret_p64_s32(a: int32x2_t) -> poly64x1_t {
47877 unsafe { transmute(a) }
47878}
47879#[doc = "Vector reinterpret cast operation"]
47880#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s32)"]
47881#[inline]
47882#[target_feature(enable = "neon,aes")]
47883#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47884#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47885#[cfg_attr(
47886 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47887 assert_instr(nop)
47888)]
47889#[cfg_attr(
47890 not(target_arch = "arm"),
47891 stable(feature = "neon_intrinsics", since = "1.59.0")
47892)]
47893#[cfg_attr(
47894 target_arch = "arm",
47895 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47896)]
47897pub fn vreinterpretq_p128_s32(a: int32x4_t) -> p128 {
47898 unsafe { transmute(a) }
47899}
47900#[doc = "Vector reinterpret cast operation"]
47901#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s32)"]
47902#[inline]
47903#[target_feature(enable = "neon,aes")]
47904#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47905#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47906#[cfg_attr(
47907 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47908 assert_instr(nop)
47909)]
47910#[cfg_attr(
47911 not(target_arch = "arm"),
47912 stable(feature = "neon_intrinsics", since = "1.59.0")
47913)]
47914#[cfg_attr(
47915 target_arch = "arm",
47916 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47917)]
47918pub fn vreinterpretq_p64_s32(a: int32x4_t) -> poly64x2_t {
47919 unsafe { transmute(a) }
47920}
47921#[doc = "Vector reinterpret cast operation"]
47922#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s64)"]
47923#[inline]
47924#[target_feature(enable = "neon,aes")]
47925#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47926#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47927#[cfg_attr(
47928 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47929 assert_instr(nop)
47930)]
47931#[cfg_attr(
47932 not(target_arch = "arm"),
47933 stable(feature = "neon_intrinsics", since = "1.59.0")
47934)]
47935#[cfg_attr(
47936 target_arch = "arm",
47937 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47938)]
47939pub fn vreinterpretq_p128_s64(a: int64x2_t) -> p128 {
47940 unsafe { transmute(a) }
47941}
47942#[doc = "Vector reinterpret cast operation"]
47943#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u8)"]
47944#[inline]
47945#[target_feature(enable = "neon,aes")]
47946#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47947#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47948#[cfg_attr(
47949 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47950 assert_instr(nop)
47951)]
47952#[cfg_attr(
47953 not(target_arch = "arm"),
47954 stable(feature = "neon_intrinsics", since = "1.59.0")
47955)]
47956#[cfg_attr(
47957 target_arch = "arm",
47958 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47959)]
47960pub fn vreinterpret_p64_u8(a: uint8x8_t) -> poly64x1_t {
47961 unsafe { transmute(a) }
47962}
47963#[doc = "Vector reinterpret cast operation"]
47964#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u8)"]
47965#[inline]
47966#[target_feature(enable = "neon,aes")]
47967#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47968#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47969#[cfg_attr(
47970 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47971 assert_instr(nop)
47972)]
47973#[cfg_attr(
47974 not(target_arch = "arm"),
47975 stable(feature = "neon_intrinsics", since = "1.59.0")
47976)]
47977#[cfg_attr(
47978 target_arch = "arm",
47979 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47980)]
47981pub fn vreinterpretq_p128_u8(a: uint8x16_t) -> p128 {
47982 unsafe { transmute(a) }
47983}
47984#[doc = "Vector reinterpret cast operation"]
47985#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u8)"]
47986#[inline]
47987#[target_feature(enable = "neon,aes")]
47988#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
47989#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47990#[cfg_attr(
47991 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47992 assert_instr(nop)
47993)]
47994#[cfg_attr(
47995 not(target_arch = "arm"),
47996 stable(feature = "neon_intrinsics", since = "1.59.0")
47997)]
47998#[cfg_attr(
47999 target_arch = "arm",
48000 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48001)]
48002pub fn vreinterpretq_p64_u8(a: uint8x16_t) -> poly64x2_t {
48003 unsafe { transmute(a) }
48004}
48005#[doc = "Vector reinterpret cast operation"]
48006#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u16)"]
48007#[inline]
48008#[target_feature(enable = "neon,aes")]
48009#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48010#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48011#[cfg_attr(
48012 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48013 assert_instr(nop)
48014)]
48015#[cfg_attr(
48016 not(target_arch = "arm"),
48017 stable(feature = "neon_intrinsics", since = "1.59.0")
48018)]
48019#[cfg_attr(
48020 target_arch = "arm",
48021 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48022)]
48023pub fn vreinterpret_p64_u16(a: uint16x4_t) -> poly64x1_t {
48024 unsafe { transmute(a) }
48025}
48026#[doc = "Vector reinterpret cast operation"]
48027#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u16)"]
48028#[inline]
48029#[target_feature(enable = "neon,aes")]
48030#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48031#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48032#[cfg_attr(
48033 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48034 assert_instr(nop)
48035)]
48036#[cfg_attr(
48037 not(target_arch = "arm"),
48038 stable(feature = "neon_intrinsics", since = "1.59.0")
48039)]
48040#[cfg_attr(
48041 target_arch = "arm",
48042 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48043)]
48044pub fn vreinterpretq_p128_u16(a: uint16x8_t) -> p128 {
48045 unsafe { transmute(a) }
48046}
48047#[doc = "Vector reinterpret cast operation"]
48048#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u16)"]
48049#[inline]
48050#[target_feature(enable = "neon,aes")]
48051#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48052#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48053#[cfg_attr(
48054 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48055 assert_instr(nop)
48056)]
48057#[cfg_attr(
48058 not(target_arch = "arm"),
48059 stable(feature = "neon_intrinsics", since = "1.59.0")
48060)]
48061#[cfg_attr(
48062 target_arch = "arm",
48063 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48064)]
48065pub fn vreinterpretq_p64_u16(a: uint16x8_t) -> poly64x2_t {
48066 unsafe { transmute(a) }
48067}
48068#[doc = "Vector reinterpret cast operation"]
48069#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u32)"]
48070#[inline]
48071#[target_feature(enable = "neon,aes")]
48072#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48073#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48074#[cfg_attr(
48075 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48076 assert_instr(nop)
48077)]
48078#[cfg_attr(
48079 not(target_arch = "arm"),
48080 stable(feature = "neon_intrinsics", since = "1.59.0")
48081)]
48082#[cfg_attr(
48083 target_arch = "arm",
48084 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48085)]
48086pub fn vreinterpret_p64_u32(a: uint32x2_t) -> poly64x1_t {
48087 unsafe { transmute(a) }
48088}
48089#[doc = "Vector reinterpret cast operation"]
48090#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u32)"]
48091#[inline]
48092#[target_feature(enable = "neon,aes")]
48093#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48094#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48095#[cfg_attr(
48096 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48097 assert_instr(nop)
48098)]
48099#[cfg_attr(
48100 not(target_arch = "arm"),
48101 stable(feature = "neon_intrinsics", since = "1.59.0")
48102)]
48103#[cfg_attr(
48104 target_arch = "arm",
48105 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48106)]
48107pub fn vreinterpretq_p128_u32(a: uint32x4_t) -> p128 {
48108 unsafe { transmute(a) }
48109}
48110#[doc = "Vector reinterpret cast operation"]
48111#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u32)"]
48112#[inline]
48113#[target_feature(enable = "neon,aes")]
48114#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48115#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48116#[cfg_attr(
48117 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48118 assert_instr(nop)
48119)]
48120#[cfg_attr(
48121 not(target_arch = "arm"),
48122 stable(feature = "neon_intrinsics", since = "1.59.0")
48123)]
48124#[cfg_attr(
48125 target_arch = "arm",
48126 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48127)]
48128pub fn vreinterpretq_p64_u32(a: uint32x4_t) -> poly64x2_t {
48129 unsafe { transmute(a) }
48130}
48131#[doc = "Vector reinterpret cast operation"]
48132#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u64)"]
48133#[inline]
48134#[target_feature(enable = "neon,aes")]
48135#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48136#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48137#[cfg_attr(
48138 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48139 assert_instr(nop)
48140)]
48141#[cfg_attr(
48142 not(target_arch = "arm"),
48143 stable(feature = "neon_intrinsics", since = "1.59.0")
48144)]
48145#[cfg_attr(
48146 target_arch = "arm",
48147 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48148)]
48149pub fn vreinterpretq_p128_u64(a: uint64x2_t) -> p128 {
48150 unsafe { transmute(a) }
48151}
48152#[doc = "Vector reinterpret cast operation"]
48153#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_p8)"]
48154#[inline]
48155#[target_feature(enable = "neon,aes")]
48156#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48157#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48158#[cfg_attr(
48159 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48160 assert_instr(nop)
48161)]
48162#[cfg_attr(
48163 not(target_arch = "arm"),
48164 stable(feature = "neon_intrinsics", since = "1.59.0")
48165)]
48166#[cfg_attr(
48167 target_arch = "arm",
48168 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48169)]
48170pub fn vreinterpret_p64_p8(a: poly8x8_t) -> poly64x1_t {
48171 unsafe { transmute(a) }
48172}
48173#[doc = "Vector reinterpret cast operation"]
48174#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p8)"]
48175#[inline]
48176#[target_feature(enable = "neon,aes")]
48177#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48178#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48179#[cfg_attr(
48180 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48181 assert_instr(nop)
48182)]
48183#[cfg_attr(
48184 not(target_arch = "arm"),
48185 stable(feature = "neon_intrinsics", since = "1.59.0")
48186)]
48187#[cfg_attr(
48188 target_arch = "arm",
48189 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48190)]
48191pub fn vreinterpretq_p128_p8(a: poly8x16_t) -> p128 {
48192 unsafe { transmute(a) }
48193}
48194#[doc = "Vector reinterpret cast operation"]
48195#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p8)"]
48196#[inline]
48197#[target_feature(enable = "neon,aes")]
48198#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48199#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48200#[cfg_attr(
48201 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48202 assert_instr(nop)
48203)]
48204#[cfg_attr(
48205 not(target_arch = "arm"),
48206 stable(feature = "neon_intrinsics", since = "1.59.0")
48207)]
48208#[cfg_attr(
48209 target_arch = "arm",
48210 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48211)]
48212pub fn vreinterpretq_p64_p8(a: poly8x16_t) -> poly64x2_t {
48213 unsafe { transmute(a) }
48214}
48215#[doc = "Vector reinterpret cast operation"]
48216#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_p16)"]
48217#[inline]
48218#[target_feature(enable = "neon,aes")]
48219#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48220#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48221#[cfg_attr(
48222 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48223 assert_instr(nop)
48224)]
48225#[cfg_attr(
48226 not(target_arch = "arm"),
48227 stable(feature = "neon_intrinsics", since = "1.59.0")
48228)]
48229#[cfg_attr(
48230 target_arch = "arm",
48231 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48232)]
48233pub fn vreinterpret_p64_p16(a: poly16x4_t) -> poly64x1_t {
48234 unsafe { transmute(a) }
48235}
48236#[doc = "Vector reinterpret cast operation"]
48237#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p16)"]
48238#[inline]
48239#[target_feature(enable = "neon,aes")]
48240#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48241#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48242#[cfg_attr(
48243 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48244 assert_instr(nop)
48245)]
48246#[cfg_attr(
48247 not(target_arch = "arm"),
48248 stable(feature = "neon_intrinsics", since = "1.59.0")
48249)]
48250#[cfg_attr(
48251 target_arch = "arm",
48252 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48253)]
48254pub fn vreinterpretq_p128_p16(a: poly16x8_t) -> p128 {
48255 unsafe { transmute(a) }
48256}
48257#[doc = "Vector reinterpret cast operation"]
48258#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p16)"]
48259#[inline]
48260#[target_feature(enable = "neon,aes")]
48261#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48262#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48263#[cfg_attr(
48264 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48265 assert_instr(nop)
48266)]
48267#[cfg_attr(
48268 not(target_arch = "arm"),
48269 stable(feature = "neon_intrinsics", since = "1.59.0")
48270)]
48271#[cfg_attr(
48272 target_arch = "arm",
48273 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48274)]
48275pub fn vreinterpretq_p64_p16(a: poly16x8_t) -> poly64x2_t {
48276 unsafe { transmute(a) }
48277}
48278#[doc = "Vector reinterpret cast operation"]
48279#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p64)"]
48280#[inline]
48281#[target_feature(enable = "neon,aes")]
48282#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48283#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48284#[cfg_attr(
48285 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48286 assert_instr(nop)
48287)]
48288#[cfg_attr(
48289 not(target_arch = "arm"),
48290 stable(feature = "neon_intrinsics", since = "1.59.0")
48291)]
48292#[cfg_attr(
48293 target_arch = "arm",
48294 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48295)]
48296pub fn vreinterpret_s8_p64(a: poly64x1_t) -> int8x8_t {
48297 unsafe { transmute(a) }
48298}
48299#[doc = "Vector reinterpret cast operation"]
48300#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p64)"]
48301#[inline]
48302#[target_feature(enable = "neon,aes")]
48303#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48304#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48305#[cfg_attr(
48306 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48307 assert_instr(nop)
48308)]
48309#[cfg_attr(
48310 not(target_arch = "arm"),
48311 stable(feature = "neon_intrinsics", since = "1.59.0")
48312)]
48313#[cfg_attr(
48314 target_arch = "arm",
48315 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48316)]
48317pub fn vreinterpret_s16_p64(a: poly64x1_t) -> int16x4_t {
48318 unsafe { transmute(a) }
48319}
48320#[doc = "Vector reinterpret cast operation"]
48321#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p64)"]
48322#[inline]
48323#[target_feature(enable = "neon,aes")]
48324#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48325#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48326#[cfg_attr(
48327 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48328 assert_instr(nop)
48329)]
48330#[cfg_attr(
48331 not(target_arch = "arm"),
48332 stable(feature = "neon_intrinsics", since = "1.59.0")
48333)]
48334#[cfg_attr(
48335 target_arch = "arm",
48336 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48337)]
48338pub fn vreinterpret_s32_p64(a: poly64x1_t) -> int32x2_t {
48339 unsafe { transmute(a) }
48340}
48341#[doc = "Vector reinterpret cast operation"]
48342#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p64)"]
48343#[inline]
48344#[target_feature(enable = "neon,aes")]
48345#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48346#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48347#[cfg_attr(
48348 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48349 assert_instr(nop)
48350)]
48351#[cfg_attr(
48352 not(target_arch = "arm"),
48353 stable(feature = "neon_intrinsics", since = "1.59.0")
48354)]
48355#[cfg_attr(
48356 target_arch = "arm",
48357 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48358)]
48359pub fn vreinterpret_u8_p64(a: poly64x1_t) -> uint8x8_t {
48360 unsafe { transmute(a) }
48361}
48362#[doc = "Vector reinterpret cast operation"]
48363#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p64)"]
48364#[inline]
48365#[target_feature(enable = "neon,aes")]
48366#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48367#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48368#[cfg_attr(
48369 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48370 assert_instr(nop)
48371)]
48372#[cfg_attr(
48373 not(target_arch = "arm"),
48374 stable(feature = "neon_intrinsics", since = "1.59.0")
48375)]
48376#[cfg_attr(
48377 target_arch = "arm",
48378 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48379)]
48380pub fn vreinterpret_u16_p64(a: poly64x1_t) -> uint16x4_t {
48381 unsafe { transmute(a) }
48382}
48383#[doc = "Vector reinterpret cast operation"]
48384#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p64)"]
48385#[inline]
48386#[target_feature(enable = "neon,aes")]
48387#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48388#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48389#[cfg_attr(
48390 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48391 assert_instr(nop)
48392)]
48393#[cfg_attr(
48394 not(target_arch = "arm"),
48395 stable(feature = "neon_intrinsics", since = "1.59.0")
48396)]
48397#[cfg_attr(
48398 target_arch = "arm",
48399 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48400)]
48401pub fn vreinterpret_u32_p64(a: poly64x1_t) -> uint32x2_t {
48402 unsafe { transmute(a) }
48403}
48404#[doc = "Vector reinterpret cast operation"]
48405#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_p64)"]
48406#[inline]
48407#[target_feature(enable = "neon,aes")]
48408#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48409#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48410#[cfg_attr(
48411 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48412 assert_instr(nop)
48413)]
48414#[cfg_attr(
48415 not(target_arch = "arm"),
48416 stable(feature = "neon_intrinsics", since = "1.59.0")
48417)]
48418#[cfg_attr(
48419 target_arch = "arm",
48420 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48421)]
48422pub fn vreinterpret_p8_p64(a: poly64x1_t) -> poly8x8_t {
48423 unsafe { transmute(a) }
48424}
48425#[doc = "Vector reinterpret cast operation"]
48426#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_p64)"]
48427#[inline]
48428#[target_feature(enable = "neon,aes")]
48429#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48430#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48431#[cfg_attr(
48432 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48433 assert_instr(nop)
48434)]
48435#[cfg_attr(
48436 not(target_arch = "arm"),
48437 stable(feature = "neon_intrinsics", since = "1.59.0")
48438)]
48439#[cfg_attr(
48440 target_arch = "arm",
48441 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48442)]
48443pub fn vreinterpret_p16_p64(a: poly64x1_t) -> poly16x4_t {
48444 unsafe { transmute(a) }
48445}
48446#[doc = "Vector reinterpret cast operation"]
48447#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p64)"]
48448#[inline]
48449#[target_feature(enable = "neon,aes")]
48450#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48451#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48452#[cfg_attr(
48453 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48454 assert_instr(nop)
48455)]
48456#[cfg_attr(
48457 not(target_arch = "arm"),
48458 stable(feature = "neon_intrinsics", since = "1.59.0")
48459)]
48460#[cfg_attr(
48461 target_arch = "arm",
48462 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48463)]
48464pub fn vreinterpretq_p128_p64(a: poly64x2_t) -> p128 {
48465 unsafe { transmute(a) }
48466}
48467#[doc = "Vector reinterpret cast operation"]
48468#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p64)"]
48469#[inline]
48470#[target_feature(enable = "neon,aes")]
48471#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48472#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48473#[cfg_attr(
48474 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48475 assert_instr(nop)
48476)]
48477#[cfg_attr(
48478 not(target_arch = "arm"),
48479 stable(feature = "neon_intrinsics", since = "1.59.0")
48480)]
48481#[cfg_attr(
48482 target_arch = "arm",
48483 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48484)]
48485pub fn vreinterpretq_s8_p64(a: poly64x2_t) -> int8x16_t {
48486 unsafe { transmute(a) }
48487}
48488#[doc = "Vector reinterpret cast operation"]
48489#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p64)"]
48490#[inline]
48491#[target_feature(enable = "neon,aes")]
48492#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48493#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48494#[cfg_attr(
48495 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48496 assert_instr(nop)
48497)]
48498#[cfg_attr(
48499 not(target_arch = "arm"),
48500 stable(feature = "neon_intrinsics", since = "1.59.0")
48501)]
48502#[cfg_attr(
48503 target_arch = "arm",
48504 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48505)]
48506pub fn vreinterpretq_s16_p64(a: poly64x2_t) -> int16x8_t {
48507 unsafe { transmute(a) }
48508}
48509#[doc = "Vector reinterpret cast operation"]
48510#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p64)"]
48511#[inline]
48512#[target_feature(enable = "neon,aes")]
48513#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48514#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48515#[cfg_attr(
48516 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48517 assert_instr(nop)
48518)]
48519#[cfg_attr(
48520 not(target_arch = "arm"),
48521 stable(feature = "neon_intrinsics", since = "1.59.0")
48522)]
48523#[cfg_attr(
48524 target_arch = "arm",
48525 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48526)]
48527pub fn vreinterpretq_s32_p64(a: poly64x2_t) -> int32x4_t {
48528 unsafe { transmute(a) }
48529}
48530#[doc = "Vector reinterpret cast operation"]
48531#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p64)"]
48532#[inline]
48533#[target_feature(enable = "neon,aes")]
48534#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48535#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48536#[cfg_attr(
48537 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48538 assert_instr(nop)
48539)]
48540#[cfg_attr(
48541 not(target_arch = "arm"),
48542 stable(feature = "neon_intrinsics", since = "1.59.0")
48543)]
48544#[cfg_attr(
48545 target_arch = "arm",
48546 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48547)]
48548pub fn vreinterpretq_u8_p64(a: poly64x2_t) -> uint8x16_t {
48549 unsafe { transmute(a) }
48550}
48551#[doc = "Vector reinterpret cast operation"]
48552#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p64)"]
48553#[inline]
48554#[target_feature(enable = "neon,aes")]
48555#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48556#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48557#[cfg_attr(
48558 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48559 assert_instr(nop)
48560)]
48561#[cfg_attr(
48562 not(target_arch = "arm"),
48563 stable(feature = "neon_intrinsics", since = "1.59.0")
48564)]
48565#[cfg_attr(
48566 target_arch = "arm",
48567 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48568)]
48569pub fn vreinterpretq_u16_p64(a: poly64x2_t) -> uint16x8_t {
48570 unsafe { transmute(a) }
48571}
48572#[doc = "Vector reinterpret cast operation"]
48573#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p64)"]
48574#[inline]
48575#[target_feature(enable = "neon,aes")]
48576#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48577#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48578#[cfg_attr(
48579 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48580 assert_instr(nop)
48581)]
48582#[cfg_attr(
48583 not(target_arch = "arm"),
48584 stable(feature = "neon_intrinsics", since = "1.59.0")
48585)]
48586#[cfg_attr(
48587 target_arch = "arm",
48588 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48589)]
48590pub fn vreinterpretq_u32_p64(a: poly64x2_t) -> uint32x4_t {
48591 unsafe { transmute(a) }
48592}
48593#[doc = "Vector reinterpret cast operation"]
48594#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p64)"]
48595#[inline]
48596#[target_feature(enable = "neon,aes")]
48597#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48598#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48599#[cfg_attr(
48600 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48601 assert_instr(nop)
48602)]
48603#[cfg_attr(
48604 not(target_arch = "arm"),
48605 stable(feature = "neon_intrinsics", since = "1.59.0")
48606)]
48607#[cfg_attr(
48608 target_arch = "arm",
48609 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48610)]
48611pub fn vreinterpretq_p8_p64(a: poly64x2_t) -> poly8x16_t {
48612 unsafe { transmute(a) }
48613}
48614#[doc = "Vector reinterpret cast operation"]
48615#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p64)"]
48616#[inline]
48617#[target_feature(enable = "neon,aes")]
48618#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
48619#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48620#[cfg_attr(
48621 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48622 assert_instr(nop)
48623)]
48624#[cfg_attr(
48625 not(target_arch = "arm"),
48626 stable(feature = "neon_intrinsics", since = "1.59.0")
48627)]
48628#[cfg_attr(
48629 target_arch = "arm",
48630 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48631)]
48632pub fn vreinterpretq_p16_p64(a: poly64x2_t) -> poly16x8_t {
48633 unsafe { transmute(a) }
48634}
48635#[doc = "Reversing vector elements (swap endianness)"]
48636#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16_p8)"]
48637#[inline]
48638#[target_feature(enable = "neon")]
48639#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48640#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
48641#[cfg_attr(
48642 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48643 assert_instr(rev16)
48644)]
48645#[cfg_attr(
48646 not(target_arch = "arm"),
48647 stable(feature = "neon_intrinsics", since = "1.59.0")
48648)]
48649#[cfg_attr(
48650 target_arch = "arm",
48651 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48652)]
48653pub fn vrev16_p8(a: poly8x8_t) -> poly8x8_t {
48654 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
48655}
48656#[doc = "Reversing vector elements (swap endianness)"]
48657#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16_s8)"]
48658#[inline]
48659#[target_feature(enable = "neon")]
48660#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48661#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
48662#[cfg_attr(
48663 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48664 assert_instr(rev16)
48665)]
48666#[cfg_attr(
48667 not(target_arch = "arm"),
48668 stable(feature = "neon_intrinsics", since = "1.59.0")
48669)]
48670#[cfg_attr(
48671 target_arch = "arm",
48672 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48673)]
48674pub fn vrev16_s8(a: int8x8_t) -> int8x8_t {
48675 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
48676}
48677#[doc = "Reversing vector elements (swap endianness)"]
48678#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16_u8)"]
48679#[inline]
48680#[target_feature(enable = "neon")]
48681#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48682#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
48683#[cfg_attr(
48684 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48685 assert_instr(rev16)
48686)]
48687#[cfg_attr(
48688 not(target_arch = "arm"),
48689 stable(feature = "neon_intrinsics", since = "1.59.0")
48690)]
48691#[cfg_attr(
48692 target_arch = "arm",
48693 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48694)]
48695pub fn vrev16_u8(a: uint8x8_t) -> uint8x8_t {
48696 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
48697}
48698#[doc = "Reversing vector elements (swap endianness)"]
48699#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16q_p8)"]
48700#[inline]
48701#[target_feature(enable = "neon")]
48702#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48703#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
48704#[cfg_attr(
48705 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48706 assert_instr(rev16)
48707)]
48708#[cfg_attr(
48709 not(target_arch = "arm"),
48710 stable(feature = "neon_intrinsics", since = "1.59.0")
48711)]
48712#[cfg_attr(
48713 target_arch = "arm",
48714 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48715)]
48716pub fn vrev16q_p8(a: poly8x16_t) -> poly8x16_t {
48717 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14]) }
48718}
48719#[doc = "Reversing vector elements (swap endianness)"]
48720#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16q_s8)"]
48721#[inline]
48722#[target_feature(enable = "neon")]
48723#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48724#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
48725#[cfg_attr(
48726 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48727 assert_instr(rev16)
48728)]
48729#[cfg_attr(
48730 not(target_arch = "arm"),
48731 stable(feature = "neon_intrinsics", since = "1.59.0")
48732)]
48733#[cfg_attr(
48734 target_arch = "arm",
48735 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48736)]
48737pub fn vrev16q_s8(a: int8x16_t) -> int8x16_t {
48738 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14]) }
48739}
48740#[doc = "Reversing vector elements (swap endianness)"]
48741#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16q_u8)"]
48742#[inline]
48743#[target_feature(enable = "neon")]
48744#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48745#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
48746#[cfg_attr(
48747 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48748 assert_instr(rev16)
48749)]
48750#[cfg_attr(
48751 not(target_arch = "arm"),
48752 stable(feature = "neon_intrinsics", since = "1.59.0")
48753)]
48754#[cfg_attr(
48755 target_arch = "arm",
48756 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48757)]
48758pub fn vrev16q_u8(a: uint8x16_t) -> uint8x16_t {
48759 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14]) }
48760}
48761#[doc = "Reversing vector elements (swap endianness)"]
48762#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_p16)"]
48763#[inline]
48764#[target_feature(enable = "neon")]
48765#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48766#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
48767#[cfg_attr(
48768 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48769 assert_instr(rev32)
48770)]
48771#[cfg_attr(
48772 not(target_arch = "arm"),
48773 stable(feature = "neon_intrinsics", since = "1.59.0")
48774)]
48775#[cfg_attr(
48776 target_arch = "arm",
48777 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48778)]
48779pub fn vrev32_p16(a: poly16x4_t) -> poly16x4_t {
48780 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
48781}
48782#[doc = "Reversing vector elements (swap endianness)"]
48783#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_p8)"]
48784#[inline]
48785#[target_feature(enable = "neon")]
48786#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48787#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
48788#[cfg_attr(
48789 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48790 assert_instr(rev32)
48791)]
48792#[cfg_attr(
48793 not(target_arch = "arm"),
48794 stable(feature = "neon_intrinsics", since = "1.59.0")
48795)]
48796#[cfg_attr(
48797 target_arch = "arm",
48798 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48799)]
48800pub fn vrev32_p8(a: poly8x8_t) -> poly8x8_t {
48801 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
48802}
48803#[doc = "Reversing vector elements (swap endianness)"]
48804#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_s16)"]
48805#[inline]
48806#[target_feature(enable = "neon")]
48807#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48808#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
48809#[cfg_attr(
48810 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48811 assert_instr(rev32)
48812)]
48813#[cfg_attr(
48814 not(target_arch = "arm"),
48815 stable(feature = "neon_intrinsics", since = "1.59.0")
48816)]
48817#[cfg_attr(
48818 target_arch = "arm",
48819 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48820)]
48821pub fn vrev32_s16(a: int16x4_t) -> int16x4_t {
48822 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
48823}
48824#[doc = "Reversing vector elements (swap endianness)"]
48825#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_s8)"]
48826#[inline]
48827#[target_feature(enable = "neon")]
48828#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48829#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
48830#[cfg_attr(
48831 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48832 assert_instr(rev32)
48833)]
48834#[cfg_attr(
48835 not(target_arch = "arm"),
48836 stable(feature = "neon_intrinsics", since = "1.59.0")
48837)]
48838#[cfg_attr(
48839 target_arch = "arm",
48840 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48841)]
48842pub fn vrev32_s8(a: int8x8_t) -> int8x8_t {
48843 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
48844}
48845#[doc = "Reversing vector elements (swap endianness)"]
48846#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_u16)"]
48847#[inline]
48848#[target_feature(enable = "neon")]
48849#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48850#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
48851#[cfg_attr(
48852 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48853 assert_instr(rev32)
48854)]
48855#[cfg_attr(
48856 not(target_arch = "arm"),
48857 stable(feature = "neon_intrinsics", since = "1.59.0")
48858)]
48859#[cfg_attr(
48860 target_arch = "arm",
48861 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48862)]
48863pub fn vrev32_u16(a: uint16x4_t) -> uint16x4_t {
48864 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
48865}
48866#[doc = "Reversing vector elements (swap endianness)"]
48867#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_u8)"]
48868#[inline]
48869#[target_feature(enable = "neon")]
48870#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48871#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
48872#[cfg_attr(
48873 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48874 assert_instr(rev32)
48875)]
48876#[cfg_attr(
48877 not(target_arch = "arm"),
48878 stable(feature = "neon_intrinsics", since = "1.59.0")
48879)]
48880#[cfg_attr(
48881 target_arch = "arm",
48882 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48883)]
48884pub fn vrev32_u8(a: uint8x8_t) -> uint8x8_t {
48885 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
48886}
48887#[doc = "Reversing vector elements (swap endianness)"]
48888#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_p16)"]
48889#[inline]
48890#[target_feature(enable = "neon")]
48891#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48892#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
48893#[cfg_attr(
48894 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48895 assert_instr(rev32)
48896)]
48897#[cfg_attr(
48898 not(target_arch = "arm"),
48899 stable(feature = "neon_intrinsics", since = "1.59.0")
48900)]
48901#[cfg_attr(
48902 target_arch = "arm",
48903 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48904)]
48905pub fn vrev32q_p16(a: poly16x8_t) -> poly16x8_t {
48906 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
48907}
48908#[doc = "Reversing vector elements (swap endianness)"]
48909#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_p8)"]
48910#[inline]
48911#[target_feature(enable = "neon")]
48912#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48913#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
48914#[cfg_attr(
48915 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48916 assert_instr(rev32)
48917)]
48918#[cfg_attr(
48919 not(target_arch = "arm"),
48920 stable(feature = "neon_intrinsics", since = "1.59.0")
48921)]
48922#[cfg_attr(
48923 target_arch = "arm",
48924 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48925)]
48926pub fn vrev32q_p8(a: poly8x16_t) -> poly8x16_t {
48927 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12]) }
48928}
48929#[doc = "Reversing vector elements (swap endianness)"]
48930#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_s16)"]
48931#[inline]
48932#[target_feature(enable = "neon")]
48933#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48934#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
48935#[cfg_attr(
48936 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48937 assert_instr(rev32)
48938)]
48939#[cfg_attr(
48940 not(target_arch = "arm"),
48941 stable(feature = "neon_intrinsics", since = "1.59.0")
48942)]
48943#[cfg_attr(
48944 target_arch = "arm",
48945 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48946)]
48947pub fn vrev32q_s16(a: int16x8_t) -> int16x8_t {
48948 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
48949}
48950#[doc = "Reversing vector elements (swap endianness)"]
48951#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_s8)"]
48952#[inline]
48953#[target_feature(enable = "neon")]
48954#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48955#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
48956#[cfg_attr(
48957 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48958 assert_instr(rev32)
48959)]
48960#[cfg_attr(
48961 not(target_arch = "arm"),
48962 stable(feature = "neon_intrinsics", since = "1.59.0")
48963)]
48964#[cfg_attr(
48965 target_arch = "arm",
48966 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48967)]
48968pub fn vrev32q_s8(a: int8x16_t) -> int8x16_t {
48969 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12]) }
48970}
48971#[doc = "Reversing vector elements (swap endianness)"]
48972#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_u16)"]
48973#[inline]
48974#[target_feature(enable = "neon")]
48975#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48976#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
48977#[cfg_attr(
48978 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48979 assert_instr(rev32)
48980)]
48981#[cfg_attr(
48982 not(target_arch = "arm"),
48983 stable(feature = "neon_intrinsics", since = "1.59.0")
48984)]
48985#[cfg_attr(
48986 target_arch = "arm",
48987 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48988)]
48989pub fn vrev32q_u16(a: uint16x8_t) -> uint16x8_t {
48990 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
48991}
48992#[doc = "Reversing vector elements (swap endianness)"]
48993#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_u8)"]
48994#[inline]
48995#[target_feature(enable = "neon")]
48996#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48997#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
48998#[cfg_attr(
48999 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49000 assert_instr(rev32)
49001)]
49002#[cfg_attr(
49003 not(target_arch = "arm"),
49004 stable(feature = "neon_intrinsics", since = "1.59.0")
49005)]
49006#[cfg_attr(
49007 target_arch = "arm",
49008 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49009)]
49010pub fn vrev32q_u8(a: uint8x16_t) -> uint8x16_t {
49011 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12]) }
49012}
49013#[doc = "Reversing vector elements (swap endianness)"]
49014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_f32)"]
49015#[inline]
49016#[target_feature(enable = "neon")]
49017#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49018#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
49019#[cfg_attr(
49020 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49021 assert_instr(rev64)
49022)]
49023#[cfg_attr(
49024 not(target_arch = "arm"),
49025 stable(feature = "neon_intrinsics", since = "1.59.0")
49026)]
49027#[cfg_attr(
49028 target_arch = "arm",
49029 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49030)]
49031pub fn vrev64_f32(a: float32x2_t) -> float32x2_t {
49032 unsafe { simd_shuffle!(a, a, [1, 0]) }
49033}
49034#[doc = "Reversing vector elements (swap endianness)"]
49035#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_p16)"]
49036#[inline]
49037#[target_feature(enable = "neon")]
49038#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49039#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
49040#[cfg_attr(
49041 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49042 assert_instr(rev64)
49043)]
49044#[cfg_attr(
49045 not(target_arch = "arm"),
49046 stable(feature = "neon_intrinsics", since = "1.59.0")
49047)]
49048#[cfg_attr(
49049 target_arch = "arm",
49050 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49051)]
49052pub fn vrev64_p16(a: poly16x4_t) -> poly16x4_t {
49053 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) }
49054}
49055#[doc = "Reversing vector elements (swap endianness)"]
49056#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_p8)"]
49057#[inline]
49058#[target_feature(enable = "neon")]
49059#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49060#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
49061#[cfg_attr(
49062 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49063 assert_instr(rev64)
49064)]
49065#[cfg_attr(
49066 not(target_arch = "arm"),
49067 stable(feature = "neon_intrinsics", since = "1.59.0")
49068)]
49069#[cfg_attr(
49070 target_arch = "arm",
49071 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49072)]
49073pub fn vrev64_p8(a: poly8x8_t) -> poly8x8_t {
49074 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) }
49075}
49076#[doc = "Reversing vector elements (swap endianness)"]
49077#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_s16)"]
49078#[inline]
49079#[target_feature(enable = "neon")]
49080#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49081#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
49082#[cfg_attr(
49083 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49084 assert_instr(rev64)
49085)]
49086#[cfg_attr(
49087 not(target_arch = "arm"),
49088 stable(feature = "neon_intrinsics", since = "1.59.0")
49089)]
49090#[cfg_attr(
49091 target_arch = "arm",
49092 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49093)]
49094pub fn vrev64_s16(a: int16x4_t) -> int16x4_t {
49095 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) }
49096}
49097#[doc = "Reversing vector elements (swap endianness)"]
49098#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_s32)"]
49099#[inline]
49100#[target_feature(enable = "neon")]
49101#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49102#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
49103#[cfg_attr(
49104 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49105 assert_instr(rev64)
49106)]
49107#[cfg_attr(
49108 not(target_arch = "arm"),
49109 stable(feature = "neon_intrinsics", since = "1.59.0")
49110)]
49111#[cfg_attr(
49112 target_arch = "arm",
49113 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49114)]
49115pub fn vrev64_s32(a: int32x2_t) -> int32x2_t {
49116 unsafe { simd_shuffle!(a, a, [1, 0]) }
49117}
49118#[doc = "Reversing vector elements (swap endianness)"]
49119#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_s8)"]
49120#[inline]
49121#[target_feature(enable = "neon")]
49122#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49123#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
49124#[cfg_attr(
49125 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49126 assert_instr(rev64)
49127)]
49128#[cfg_attr(
49129 not(target_arch = "arm"),
49130 stable(feature = "neon_intrinsics", since = "1.59.0")
49131)]
49132#[cfg_attr(
49133 target_arch = "arm",
49134 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49135)]
49136pub fn vrev64_s8(a: int8x8_t) -> int8x8_t {
49137 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) }
49138}
49139#[doc = "Reversing vector elements (swap endianness)"]
49140#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_u16)"]
49141#[inline]
49142#[target_feature(enable = "neon")]
49143#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49144#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
49145#[cfg_attr(
49146 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49147 assert_instr(rev64)
49148)]
49149#[cfg_attr(
49150 not(target_arch = "arm"),
49151 stable(feature = "neon_intrinsics", since = "1.59.0")
49152)]
49153#[cfg_attr(
49154 target_arch = "arm",
49155 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49156)]
49157pub fn vrev64_u16(a: uint16x4_t) -> uint16x4_t {
49158 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) }
49159}
49160#[doc = "Reversing vector elements (swap endianness)"]
49161#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_u32)"]
49162#[inline]
49163#[target_feature(enable = "neon")]
49164#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49165#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
49166#[cfg_attr(
49167 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49168 assert_instr(rev64)
49169)]
49170#[cfg_attr(
49171 not(target_arch = "arm"),
49172 stable(feature = "neon_intrinsics", since = "1.59.0")
49173)]
49174#[cfg_attr(
49175 target_arch = "arm",
49176 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49177)]
49178pub fn vrev64_u32(a: uint32x2_t) -> uint32x2_t {
49179 unsafe { simd_shuffle!(a, a, [1, 0]) }
49180}
49181#[doc = "Reversing vector elements (swap endianness)"]
49182#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_u8)"]
49183#[inline]
49184#[target_feature(enable = "neon")]
49185#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49186#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
49187#[cfg_attr(
49188 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49189 assert_instr(rev64)
49190)]
49191#[cfg_attr(
49192 not(target_arch = "arm"),
49193 stable(feature = "neon_intrinsics", since = "1.59.0")
49194)]
49195#[cfg_attr(
49196 target_arch = "arm",
49197 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49198)]
49199pub fn vrev64_u8(a: uint8x8_t) -> uint8x8_t {
49200 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) }
49201}
49202#[doc = "Reversing vector elements (swap endianness)"]
49203#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_f32)"]
49204#[inline]
49205#[target_feature(enable = "neon")]
49206#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49207#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
49208#[cfg_attr(
49209 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49210 assert_instr(rev64)
49211)]
49212#[cfg_attr(
49213 not(target_arch = "arm"),
49214 stable(feature = "neon_intrinsics", since = "1.59.0")
49215)]
49216#[cfg_attr(
49217 target_arch = "arm",
49218 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49219)]
49220pub fn vrev64q_f32(a: float32x4_t) -> float32x4_t {
49221 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
49222}
49223#[doc = "Reversing vector elements (swap endianness)"]
49224#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_p16)"]
49225#[inline]
49226#[target_feature(enable = "neon")]
49227#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49228#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
49229#[cfg_attr(
49230 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49231 assert_instr(rev64)
49232)]
49233#[cfg_attr(
49234 not(target_arch = "arm"),
49235 stable(feature = "neon_intrinsics", since = "1.59.0")
49236)]
49237#[cfg_attr(
49238 target_arch = "arm",
49239 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49240)]
49241pub fn vrev64q_p16(a: poly16x8_t) -> poly16x8_t {
49242 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
49243}
49244#[doc = "Reversing vector elements (swap endianness)"]
49245#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_p8)"]
49246#[inline]
49247#[target_feature(enable = "neon")]
49248#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49249#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
49250#[cfg_attr(
49251 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49252 assert_instr(rev64)
49253)]
49254#[cfg_attr(
49255 not(target_arch = "arm"),
49256 stable(feature = "neon_intrinsics", since = "1.59.0")
49257)]
49258#[cfg_attr(
49259 target_arch = "arm",
49260 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49261)]
49262pub fn vrev64q_p8(a: poly8x16_t) -> poly8x16_t {
49263 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8]) }
49264}
49265#[doc = "Reversing vector elements (swap endianness)"]
49266#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_s16)"]
49267#[inline]
49268#[target_feature(enable = "neon")]
49269#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49270#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
49271#[cfg_attr(
49272 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49273 assert_instr(rev64)
49274)]
49275#[cfg_attr(
49276 not(target_arch = "arm"),
49277 stable(feature = "neon_intrinsics", since = "1.59.0")
49278)]
49279#[cfg_attr(
49280 target_arch = "arm",
49281 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49282)]
49283pub fn vrev64q_s16(a: int16x8_t) -> int16x8_t {
49284 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
49285}
49286#[doc = "Reversing vector elements (swap endianness)"]
49287#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_s32)"]
49288#[inline]
49289#[target_feature(enable = "neon")]
49290#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49291#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
49292#[cfg_attr(
49293 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49294 assert_instr(rev64)
49295)]
49296#[cfg_attr(
49297 not(target_arch = "arm"),
49298 stable(feature = "neon_intrinsics", since = "1.59.0")
49299)]
49300#[cfg_attr(
49301 target_arch = "arm",
49302 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49303)]
49304pub fn vrev64q_s32(a: int32x4_t) -> int32x4_t {
49305 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
49306}
49307#[doc = "Reversing vector elements (swap endianness)"]
49308#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_s8)"]
49309#[inline]
49310#[target_feature(enable = "neon")]
49311#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49312#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
49313#[cfg_attr(
49314 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49315 assert_instr(rev64)
49316)]
49317#[cfg_attr(
49318 not(target_arch = "arm"),
49319 stable(feature = "neon_intrinsics", since = "1.59.0")
49320)]
49321#[cfg_attr(
49322 target_arch = "arm",
49323 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49324)]
49325pub fn vrev64q_s8(a: int8x16_t) -> int8x16_t {
49326 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8]) }
49327}
49328#[doc = "Reversing vector elements (swap endianness)"]
49329#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_u16)"]
49330#[inline]
49331#[target_feature(enable = "neon")]
49332#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49333#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
49334#[cfg_attr(
49335 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49336 assert_instr(rev64)
49337)]
49338#[cfg_attr(
49339 not(target_arch = "arm"),
49340 stable(feature = "neon_intrinsics", since = "1.59.0")
49341)]
49342#[cfg_attr(
49343 target_arch = "arm",
49344 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49345)]
49346pub fn vrev64q_u16(a: uint16x8_t) -> uint16x8_t {
49347 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
49348}
49349#[doc = "Reversing vector elements (swap endianness)"]
49350#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_u32)"]
49351#[inline]
49352#[target_feature(enable = "neon")]
49353#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49354#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
49355#[cfg_attr(
49356 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49357 assert_instr(rev64)
49358)]
49359#[cfg_attr(
49360 not(target_arch = "arm"),
49361 stable(feature = "neon_intrinsics", since = "1.59.0")
49362)]
49363#[cfg_attr(
49364 target_arch = "arm",
49365 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49366)]
49367pub fn vrev64q_u32(a: uint32x4_t) -> uint32x4_t {
49368 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
49369}
49370#[doc = "Reversing vector elements (swap endianness)"]
49371#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_u8)"]
49372#[inline]
49373#[target_feature(enable = "neon")]
49374#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49375#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
49376#[cfg_attr(
49377 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49378 assert_instr(rev64)
49379)]
49380#[cfg_attr(
49381 not(target_arch = "arm"),
49382 stable(feature = "neon_intrinsics", since = "1.59.0")
49383)]
49384#[cfg_attr(
49385 target_arch = "arm",
49386 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49387)]
49388pub fn vrev64q_u8(a: uint8x16_t) -> uint8x16_t {
49389 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8]) }
49390}
49391#[doc = "Reverse elements in 64-bit doublewords"]
49392#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_f16)"]
49393#[inline]
49394#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49395#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrev64))]
49396#[cfg_attr(
49397 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49398 assert_instr(rev64)
49399)]
49400#[target_feature(enable = "neon,fp16")]
49401#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
49402#[cfg(not(target_arch = "arm64ec"))]
49403pub fn vrev64_f16(a: float16x4_t) -> float16x4_t {
49404 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) }
49405}
49406#[doc = "Reverse elements in 64-bit doublewords"]
49407#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_f16)"]
49408#[inline]
49409#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49410#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrev64))]
49411#[cfg_attr(
49412 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49413 assert_instr(rev64)
49414)]
49415#[target_feature(enable = "neon,fp16")]
49416#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
49417#[cfg(not(target_arch = "arm64ec"))]
49418pub fn vrev64q_f16(a: float16x8_t) -> float16x8_t {
49419 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
49420}
49421#[doc = "Rounding halving add"]
49422#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_s8)"]
49423#[inline]
49424#[target_feature(enable = "neon")]
49425#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49426#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s8"))]
49427#[cfg_attr(
49428 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49429 assert_instr(srhadd)
49430)]
49431#[cfg_attr(
49432 not(target_arch = "arm"),
49433 stable(feature = "neon_intrinsics", since = "1.59.0")
49434)]
49435#[cfg_attr(
49436 target_arch = "arm",
49437 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49438)]
49439pub fn vrhadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
49440 unsafe extern "unadjusted" {
49441 #[cfg_attr(
49442 any(target_arch = "aarch64", target_arch = "arm64ec"),
49443 link_name = "llvm.aarch64.neon.srhadd.v8i8"
49444 )]
49445 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v8i8")]
49446 fn _vrhadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
49447 }
49448 unsafe { _vrhadd_s8(a, b) }
49449}
49450#[doc = "Rounding halving add"]
49451#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_s8)"]
49452#[inline]
49453#[target_feature(enable = "neon")]
49454#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49455#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s8"))]
49456#[cfg_attr(
49457 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49458 assert_instr(srhadd)
49459)]
49460#[cfg_attr(
49461 not(target_arch = "arm"),
49462 stable(feature = "neon_intrinsics", since = "1.59.0")
49463)]
49464#[cfg_attr(
49465 target_arch = "arm",
49466 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49467)]
49468pub fn vrhaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
49469 unsafe extern "unadjusted" {
49470 #[cfg_attr(
49471 any(target_arch = "aarch64", target_arch = "arm64ec"),
49472 link_name = "llvm.aarch64.neon.srhadd.v16i8"
49473 )]
49474 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v16i8")]
49475 fn _vrhaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
49476 }
49477 unsafe { _vrhaddq_s8(a, b) }
49478}
49479#[doc = "Rounding halving add"]
49480#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_s16)"]
49481#[inline]
49482#[target_feature(enable = "neon")]
49483#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49484#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s16"))]
49485#[cfg_attr(
49486 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49487 assert_instr(srhadd)
49488)]
49489#[cfg_attr(
49490 not(target_arch = "arm"),
49491 stable(feature = "neon_intrinsics", since = "1.59.0")
49492)]
49493#[cfg_attr(
49494 target_arch = "arm",
49495 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49496)]
49497pub fn vrhadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
49498 unsafe extern "unadjusted" {
49499 #[cfg_attr(
49500 any(target_arch = "aarch64", target_arch = "arm64ec"),
49501 link_name = "llvm.aarch64.neon.srhadd.v4i16"
49502 )]
49503 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v4i16")]
49504 fn _vrhadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
49505 }
49506 unsafe { _vrhadd_s16(a, b) }
49507}
49508#[doc = "Rounding halving add"]
49509#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_s16)"]
49510#[inline]
49511#[target_feature(enable = "neon")]
49512#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49513#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s16"))]
49514#[cfg_attr(
49515 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49516 assert_instr(srhadd)
49517)]
49518#[cfg_attr(
49519 not(target_arch = "arm"),
49520 stable(feature = "neon_intrinsics", since = "1.59.0")
49521)]
49522#[cfg_attr(
49523 target_arch = "arm",
49524 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49525)]
49526pub fn vrhaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
49527 unsafe extern "unadjusted" {
49528 #[cfg_attr(
49529 any(target_arch = "aarch64", target_arch = "arm64ec"),
49530 link_name = "llvm.aarch64.neon.srhadd.v8i16"
49531 )]
49532 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v8i16")]
49533 fn _vrhaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
49534 }
49535 unsafe { _vrhaddq_s16(a, b) }
49536}
49537#[doc = "Rounding halving add"]
49538#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_s32)"]
49539#[inline]
49540#[target_feature(enable = "neon")]
49541#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49542#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s32"))]
49543#[cfg_attr(
49544 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49545 assert_instr(srhadd)
49546)]
49547#[cfg_attr(
49548 not(target_arch = "arm"),
49549 stable(feature = "neon_intrinsics", since = "1.59.0")
49550)]
49551#[cfg_attr(
49552 target_arch = "arm",
49553 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49554)]
49555pub fn vrhadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
49556 unsafe extern "unadjusted" {
49557 #[cfg_attr(
49558 any(target_arch = "aarch64", target_arch = "arm64ec"),
49559 link_name = "llvm.aarch64.neon.srhadd.v2i32"
49560 )]
49561 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v2i32")]
49562 fn _vrhadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
49563 }
49564 unsafe { _vrhadd_s32(a, b) }
49565}
49566#[doc = "Rounding halving add"]
49567#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_s32)"]
49568#[inline]
49569#[target_feature(enable = "neon")]
49570#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49571#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s32"))]
49572#[cfg_attr(
49573 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49574 assert_instr(srhadd)
49575)]
49576#[cfg_attr(
49577 not(target_arch = "arm"),
49578 stable(feature = "neon_intrinsics", since = "1.59.0")
49579)]
49580#[cfg_attr(
49581 target_arch = "arm",
49582 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49583)]
49584pub fn vrhaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
49585 unsafe extern "unadjusted" {
49586 #[cfg_attr(
49587 any(target_arch = "aarch64", target_arch = "arm64ec"),
49588 link_name = "llvm.aarch64.neon.srhadd.v4i32"
49589 )]
49590 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v4i32")]
49591 fn _vrhaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
49592 }
49593 unsafe { _vrhaddq_s32(a, b) }
49594}
49595#[doc = "Rounding halving add"]
49596#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_u8)"]
49597#[inline]
49598#[target_feature(enable = "neon")]
49599#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49600#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u8"))]
49601#[cfg_attr(
49602 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49603 assert_instr(urhadd)
49604)]
49605#[cfg_attr(
49606 not(target_arch = "arm"),
49607 stable(feature = "neon_intrinsics", since = "1.59.0")
49608)]
49609#[cfg_attr(
49610 target_arch = "arm",
49611 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49612)]
49613pub fn vrhadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
49614 unsafe extern "unadjusted" {
49615 #[cfg_attr(
49616 any(target_arch = "aarch64", target_arch = "arm64ec"),
49617 link_name = "llvm.aarch64.neon.urhadd.v8i8"
49618 )]
49619 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v8i8")]
49620 fn _vrhadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
49621 }
49622 unsafe { _vrhadd_u8(a, b) }
49623}
49624#[doc = "Rounding halving add"]
49625#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_u8)"]
49626#[inline]
49627#[target_feature(enable = "neon")]
49628#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49629#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u8"))]
49630#[cfg_attr(
49631 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49632 assert_instr(urhadd)
49633)]
49634#[cfg_attr(
49635 not(target_arch = "arm"),
49636 stable(feature = "neon_intrinsics", since = "1.59.0")
49637)]
49638#[cfg_attr(
49639 target_arch = "arm",
49640 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49641)]
49642pub fn vrhaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
49643 unsafe extern "unadjusted" {
49644 #[cfg_attr(
49645 any(target_arch = "aarch64", target_arch = "arm64ec"),
49646 link_name = "llvm.aarch64.neon.urhadd.v16i8"
49647 )]
49648 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v16i8")]
49649 fn _vrhaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
49650 }
49651 unsafe { _vrhaddq_u8(a, b) }
49652}
49653#[doc = "Rounding halving add"]
49654#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_u16)"]
49655#[inline]
49656#[target_feature(enable = "neon")]
49657#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49658#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u16"))]
49659#[cfg_attr(
49660 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49661 assert_instr(urhadd)
49662)]
49663#[cfg_attr(
49664 not(target_arch = "arm"),
49665 stable(feature = "neon_intrinsics", since = "1.59.0")
49666)]
49667#[cfg_attr(
49668 target_arch = "arm",
49669 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49670)]
49671pub fn vrhadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
49672 unsafe extern "unadjusted" {
49673 #[cfg_attr(
49674 any(target_arch = "aarch64", target_arch = "arm64ec"),
49675 link_name = "llvm.aarch64.neon.urhadd.v4i16"
49676 )]
49677 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v4i16")]
49678 fn _vrhadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
49679 }
49680 unsafe { _vrhadd_u16(a, b) }
49681}
49682#[doc = "Rounding halving add"]
49683#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_u16)"]
49684#[inline]
49685#[target_feature(enable = "neon")]
49686#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49687#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u16"))]
49688#[cfg_attr(
49689 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49690 assert_instr(urhadd)
49691)]
49692#[cfg_attr(
49693 not(target_arch = "arm"),
49694 stable(feature = "neon_intrinsics", since = "1.59.0")
49695)]
49696#[cfg_attr(
49697 target_arch = "arm",
49698 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49699)]
49700pub fn vrhaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
49701 unsafe extern "unadjusted" {
49702 #[cfg_attr(
49703 any(target_arch = "aarch64", target_arch = "arm64ec"),
49704 link_name = "llvm.aarch64.neon.urhadd.v8i16"
49705 )]
49706 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v8i16")]
49707 fn _vrhaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
49708 }
49709 unsafe { _vrhaddq_u16(a, b) }
49710}
49711#[doc = "Rounding halving add"]
49712#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_u32)"]
49713#[inline]
49714#[target_feature(enable = "neon")]
49715#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49716#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u32"))]
49717#[cfg_attr(
49718 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49719 assert_instr(urhadd)
49720)]
49721#[cfg_attr(
49722 not(target_arch = "arm"),
49723 stable(feature = "neon_intrinsics", since = "1.59.0")
49724)]
49725#[cfg_attr(
49726 target_arch = "arm",
49727 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49728)]
49729pub fn vrhadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
49730 unsafe extern "unadjusted" {
49731 #[cfg_attr(
49732 any(target_arch = "aarch64", target_arch = "arm64ec"),
49733 link_name = "llvm.aarch64.neon.urhadd.v2i32"
49734 )]
49735 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v2i32")]
49736 fn _vrhadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
49737 }
49738 unsafe { _vrhadd_u32(a, b) }
49739}
49740#[doc = "Rounding halving add"]
49741#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_u32)"]
49742#[inline]
49743#[target_feature(enable = "neon")]
49744#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49745#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u32"))]
49746#[cfg_attr(
49747 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49748 assert_instr(urhadd)
49749)]
49750#[cfg_attr(
49751 not(target_arch = "arm"),
49752 stable(feature = "neon_intrinsics", since = "1.59.0")
49753)]
49754#[cfg_attr(
49755 target_arch = "arm",
49756 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49757)]
49758pub fn vrhaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
49759 unsafe extern "unadjusted" {
49760 #[cfg_attr(
49761 any(target_arch = "aarch64", target_arch = "arm64ec"),
49762 link_name = "llvm.aarch64.neon.urhadd.v4i32"
49763 )]
49764 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v4i32")]
49765 fn _vrhaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
49766 }
49767 unsafe { _vrhaddq_u32(a, b) }
49768}
49769#[doc = "Floating-point round to integral, to nearest with ties to even"]
49770#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrndn_f16)"]
49771#[inline]
49772#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
49773#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrintn))]
49774#[cfg_attr(
49775 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49776 assert_instr(frintn)
49777)]
49778#[target_feature(enable = "neon,fp16")]
49779#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
49780#[cfg(not(target_arch = "arm64ec"))]
49781pub fn vrndn_f16(a: float16x4_t) -> float16x4_t {
49782 unsafe extern "unadjusted" {
49783 #[cfg_attr(
49784 any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "arm"),
49785 link_name = "llvm.roundeven.v4f16"
49786 )]
49787 fn _vrndn_f16(a: float16x4_t) -> float16x4_t;
49788 }
49789 unsafe { _vrndn_f16(a) }
49790}
49791#[doc = "Floating-point round to integral, to nearest with ties to even"]
49792#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrndnq_f16)"]
49793#[inline]
49794#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
49795#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrintn))]
49796#[cfg_attr(
49797 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49798 assert_instr(frintn)
49799)]
49800#[target_feature(enable = "neon,fp16")]
49801#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
49802#[cfg(not(target_arch = "arm64ec"))]
49803pub fn vrndnq_f16(a: float16x8_t) -> float16x8_t {
49804 unsafe extern "unadjusted" {
49805 #[cfg_attr(
49806 any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "arm"),
49807 link_name = "llvm.roundeven.v8f16"
49808 )]
49809 fn _vrndnq_f16(a: float16x8_t) -> float16x8_t;
49810 }
49811 unsafe { _vrndnq_f16(a) }
49812}
49813#[doc = "Floating-point round to integral, to nearest with ties to even"]
49814#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrndn_f32)"]
49815#[inline]
49816#[target_feature(enable = "neon")]
49817#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
49818#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrintn))]
49819#[cfg_attr(
49820 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49821 assert_instr(frintn)
49822)]
49823#[cfg_attr(
49824 not(target_arch = "arm"),
49825 stable(feature = "neon_intrinsics", since = "1.59.0")
49826)]
49827#[cfg_attr(
49828 target_arch = "arm",
49829 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49830)]
49831pub fn vrndn_f32(a: float32x2_t) -> float32x2_t {
49832 unsafe extern "unadjusted" {
49833 #[cfg_attr(
49834 any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "arm"),
49835 link_name = "llvm.roundeven.v2f32"
49836 )]
49837 fn _vrndn_f32(a: float32x2_t) -> float32x2_t;
49838 }
49839 unsafe { _vrndn_f32(a) }
49840}
49841#[doc = "Floating-point round to integral, to nearest with ties to even"]
49842#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrndnq_f32)"]
49843#[inline]
49844#[target_feature(enable = "neon")]
49845#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
49846#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrintn))]
49847#[cfg_attr(
49848 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49849 assert_instr(frintn)
49850)]
49851#[cfg_attr(
49852 not(target_arch = "arm"),
49853 stable(feature = "neon_intrinsics", since = "1.59.0")
49854)]
49855#[cfg_attr(
49856 target_arch = "arm",
49857 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49858)]
49859pub fn vrndnq_f32(a: float32x4_t) -> float32x4_t {
49860 unsafe extern "unadjusted" {
49861 #[cfg_attr(
49862 any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "arm"),
49863 link_name = "llvm.roundeven.v4f32"
49864 )]
49865 fn _vrndnq_f32(a: float32x4_t) -> float32x4_t;
49866 }
49867 unsafe { _vrndnq_f32(a) }
49868}
49869#[doc = "Signed rounding shift left"]
49870#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_s8)"]
49871#[inline]
49872#[target_feature(enable = "neon")]
49873#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49874#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
49875#[cfg_attr(
49876 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49877 assert_instr(srshl)
49878)]
49879#[cfg_attr(
49880 not(target_arch = "arm"),
49881 stable(feature = "neon_intrinsics", since = "1.59.0")
49882)]
49883#[cfg_attr(
49884 target_arch = "arm",
49885 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49886)]
49887pub fn vrshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
49888 unsafe extern "unadjusted" {
49889 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v8i8")]
49890 #[cfg_attr(
49891 any(target_arch = "aarch64", target_arch = "arm64ec"),
49892 link_name = "llvm.aarch64.neon.srshl.v8i8"
49893 )]
49894 fn _vrshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
49895 }
49896 unsafe { _vrshl_s8(a, b) }
49897}
49898#[doc = "Signed rounding shift left"]
49899#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_s8)"]
49900#[inline]
49901#[target_feature(enable = "neon")]
49902#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49903#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
49904#[cfg_attr(
49905 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49906 assert_instr(srshl)
49907)]
49908#[cfg_attr(
49909 not(target_arch = "arm"),
49910 stable(feature = "neon_intrinsics", since = "1.59.0")
49911)]
49912#[cfg_attr(
49913 target_arch = "arm",
49914 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49915)]
49916pub fn vrshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
49917 unsafe extern "unadjusted" {
49918 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v16i8")]
49919 #[cfg_attr(
49920 any(target_arch = "aarch64", target_arch = "arm64ec"),
49921 link_name = "llvm.aarch64.neon.srshl.v16i8"
49922 )]
49923 fn _vrshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
49924 }
49925 unsafe { _vrshlq_s8(a, b) }
49926}
49927#[doc = "Signed rounding shift left"]
49928#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_s16)"]
49929#[inline]
49930#[target_feature(enable = "neon")]
49931#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49932#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
49933#[cfg_attr(
49934 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49935 assert_instr(srshl)
49936)]
49937#[cfg_attr(
49938 not(target_arch = "arm"),
49939 stable(feature = "neon_intrinsics", since = "1.59.0")
49940)]
49941#[cfg_attr(
49942 target_arch = "arm",
49943 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49944)]
49945pub fn vrshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
49946 unsafe extern "unadjusted" {
49947 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v4i16")]
49948 #[cfg_attr(
49949 any(target_arch = "aarch64", target_arch = "arm64ec"),
49950 link_name = "llvm.aarch64.neon.srshl.v4i16"
49951 )]
49952 fn _vrshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
49953 }
49954 unsafe { _vrshl_s16(a, b) }
49955}
49956#[doc = "Signed rounding shift left"]
49957#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_s16)"]
49958#[inline]
49959#[target_feature(enable = "neon")]
49960#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49961#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
49962#[cfg_attr(
49963 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49964 assert_instr(srshl)
49965)]
49966#[cfg_attr(
49967 not(target_arch = "arm"),
49968 stable(feature = "neon_intrinsics", since = "1.59.0")
49969)]
49970#[cfg_attr(
49971 target_arch = "arm",
49972 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49973)]
49974pub fn vrshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
49975 unsafe extern "unadjusted" {
49976 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v8i16")]
49977 #[cfg_attr(
49978 any(target_arch = "aarch64", target_arch = "arm64ec"),
49979 link_name = "llvm.aarch64.neon.srshl.v8i16"
49980 )]
49981 fn _vrshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
49982 }
49983 unsafe { _vrshlq_s16(a, b) }
49984}
49985#[doc = "Signed rounding shift left"]
49986#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_s32)"]
49987#[inline]
49988#[target_feature(enable = "neon")]
49989#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49990#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
49991#[cfg_attr(
49992 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49993 assert_instr(srshl)
49994)]
49995#[cfg_attr(
49996 not(target_arch = "arm"),
49997 stable(feature = "neon_intrinsics", since = "1.59.0")
49998)]
49999#[cfg_attr(
50000 target_arch = "arm",
50001 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50002)]
50003pub fn vrshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
50004 unsafe extern "unadjusted" {
50005 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v2i32")]
50006 #[cfg_attr(
50007 any(target_arch = "aarch64", target_arch = "arm64ec"),
50008 link_name = "llvm.aarch64.neon.srshl.v2i32"
50009 )]
50010 fn _vrshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
50011 }
50012 unsafe { _vrshl_s32(a, b) }
50013}
50014#[doc = "Signed rounding shift left"]
50015#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_s32)"]
50016#[inline]
50017#[target_feature(enable = "neon")]
50018#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50019#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
50020#[cfg_attr(
50021 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50022 assert_instr(srshl)
50023)]
50024#[cfg_attr(
50025 not(target_arch = "arm"),
50026 stable(feature = "neon_intrinsics", since = "1.59.0")
50027)]
50028#[cfg_attr(
50029 target_arch = "arm",
50030 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50031)]
50032pub fn vrshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
50033 unsafe extern "unadjusted" {
50034 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v4i32")]
50035 #[cfg_attr(
50036 any(target_arch = "aarch64", target_arch = "arm64ec"),
50037 link_name = "llvm.aarch64.neon.srshl.v4i32"
50038 )]
50039 fn _vrshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
50040 }
50041 unsafe { _vrshlq_s32(a, b) }
50042}
50043#[doc = "Signed rounding shift left"]
50044#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_s64)"]
50045#[inline]
50046#[target_feature(enable = "neon")]
50047#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50048#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
50049#[cfg_attr(
50050 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50051 assert_instr(srshl)
50052)]
50053#[cfg_attr(
50054 not(target_arch = "arm"),
50055 stable(feature = "neon_intrinsics", since = "1.59.0")
50056)]
50057#[cfg_attr(
50058 target_arch = "arm",
50059 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50060)]
50061pub fn vrshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
50062 unsafe extern "unadjusted" {
50063 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v1i64")]
50064 #[cfg_attr(
50065 any(target_arch = "aarch64", target_arch = "arm64ec"),
50066 link_name = "llvm.aarch64.neon.srshl.v1i64"
50067 )]
50068 fn _vrshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t;
50069 }
50070 unsafe { _vrshl_s64(a, b) }
50071}
50072#[doc = "Signed rounding shift left"]
50073#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_s64)"]
50074#[inline]
50075#[target_feature(enable = "neon")]
50076#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50077#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
50078#[cfg_attr(
50079 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50080 assert_instr(srshl)
50081)]
50082#[cfg_attr(
50083 not(target_arch = "arm"),
50084 stable(feature = "neon_intrinsics", since = "1.59.0")
50085)]
50086#[cfg_attr(
50087 target_arch = "arm",
50088 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50089)]
50090pub fn vrshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
50091 unsafe extern "unadjusted" {
50092 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v2i64")]
50093 #[cfg_attr(
50094 any(target_arch = "aarch64", target_arch = "arm64ec"),
50095 link_name = "llvm.aarch64.neon.srshl.v2i64"
50096 )]
50097 fn _vrshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t;
50098 }
50099 unsafe { _vrshlq_s64(a, b) }
50100}
50101#[doc = "Unsigned rounding shift left"]
50102#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_u8)"]
50103#[inline]
50104#[target_feature(enable = "neon")]
50105#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50106#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
50107#[cfg_attr(
50108 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50109 assert_instr(urshl)
50110)]
50111#[cfg_attr(
50112 not(target_arch = "arm"),
50113 stable(feature = "neon_intrinsics", since = "1.59.0")
50114)]
50115#[cfg_attr(
50116 target_arch = "arm",
50117 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50118)]
50119pub fn vrshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t {
50120 unsafe extern "unadjusted" {
50121 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v8i8")]
50122 #[cfg_attr(
50123 any(target_arch = "aarch64", target_arch = "arm64ec"),
50124 link_name = "llvm.aarch64.neon.urshl.v8i8"
50125 )]
50126 fn _vrshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t;
50127 }
50128 unsafe { _vrshl_u8(a, b) }
50129}
50130#[doc = "Unsigned rounding shift left"]
50131#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_u8)"]
50132#[inline]
50133#[target_feature(enable = "neon")]
50134#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50135#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
50136#[cfg_attr(
50137 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50138 assert_instr(urshl)
50139)]
50140#[cfg_attr(
50141 not(target_arch = "arm"),
50142 stable(feature = "neon_intrinsics", since = "1.59.0")
50143)]
50144#[cfg_attr(
50145 target_arch = "arm",
50146 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50147)]
50148pub fn vrshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t {
50149 unsafe extern "unadjusted" {
50150 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v16i8")]
50151 #[cfg_attr(
50152 any(target_arch = "aarch64", target_arch = "arm64ec"),
50153 link_name = "llvm.aarch64.neon.urshl.v16i8"
50154 )]
50155 fn _vrshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t;
50156 }
50157 unsafe { _vrshlq_u8(a, b) }
50158}
50159#[doc = "Unsigned rounding shift left"]
50160#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_u16)"]
50161#[inline]
50162#[target_feature(enable = "neon")]
50163#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50164#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
50165#[cfg_attr(
50166 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50167 assert_instr(urshl)
50168)]
50169#[cfg_attr(
50170 not(target_arch = "arm"),
50171 stable(feature = "neon_intrinsics", since = "1.59.0")
50172)]
50173#[cfg_attr(
50174 target_arch = "arm",
50175 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50176)]
50177pub fn vrshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t {
50178 unsafe extern "unadjusted" {
50179 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v4i16")]
50180 #[cfg_attr(
50181 any(target_arch = "aarch64", target_arch = "arm64ec"),
50182 link_name = "llvm.aarch64.neon.urshl.v4i16"
50183 )]
50184 fn _vrshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t;
50185 }
50186 unsafe { _vrshl_u16(a, b) }
50187}
50188#[doc = "Unsigned rounding shift left"]
50189#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_u16)"]
50190#[inline]
50191#[target_feature(enable = "neon")]
50192#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50193#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
50194#[cfg_attr(
50195 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50196 assert_instr(urshl)
50197)]
50198#[cfg_attr(
50199 not(target_arch = "arm"),
50200 stable(feature = "neon_intrinsics", since = "1.59.0")
50201)]
50202#[cfg_attr(
50203 target_arch = "arm",
50204 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50205)]
50206pub fn vrshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t {
50207 unsafe extern "unadjusted" {
50208 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v8i16")]
50209 #[cfg_attr(
50210 any(target_arch = "aarch64", target_arch = "arm64ec"),
50211 link_name = "llvm.aarch64.neon.urshl.v8i16"
50212 )]
50213 fn _vrshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t;
50214 }
50215 unsafe { _vrshlq_u16(a, b) }
50216}
50217#[doc = "Unsigned rounding shift left"]
50218#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_u32)"]
50219#[inline]
50220#[target_feature(enable = "neon")]
50221#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50222#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
50223#[cfg_attr(
50224 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50225 assert_instr(urshl)
50226)]
50227#[cfg_attr(
50228 not(target_arch = "arm"),
50229 stable(feature = "neon_intrinsics", since = "1.59.0")
50230)]
50231#[cfg_attr(
50232 target_arch = "arm",
50233 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50234)]
50235pub fn vrshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t {
50236 unsafe extern "unadjusted" {
50237 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v2i32")]
50238 #[cfg_attr(
50239 any(target_arch = "aarch64", target_arch = "arm64ec"),
50240 link_name = "llvm.aarch64.neon.urshl.v2i32"
50241 )]
50242 fn _vrshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t;
50243 }
50244 unsafe { _vrshl_u32(a, b) }
50245}
50246#[doc = "Unsigned rounding shift left"]
50247#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_u32)"]
50248#[inline]
50249#[target_feature(enable = "neon")]
50250#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50251#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
50252#[cfg_attr(
50253 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50254 assert_instr(urshl)
50255)]
50256#[cfg_attr(
50257 not(target_arch = "arm"),
50258 stable(feature = "neon_intrinsics", since = "1.59.0")
50259)]
50260#[cfg_attr(
50261 target_arch = "arm",
50262 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50263)]
50264pub fn vrshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t {
50265 unsafe extern "unadjusted" {
50266 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v4i32")]
50267 #[cfg_attr(
50268 any(target_arch = "aarch64", target_arch = "arm64ec"),
50269 link_name = "llvm.aarch64.neon.urshl.v4i32"
50270 )]
50271 fn _vrshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t;
50272 }
50273 unsafe { _vrshlq_u32(a, b) }
50274}
50275#[doc = "Unsigned rounding shift left"]
50276#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_u64)"]
50277#[inline]
50278#[target_feature(enable = "neon")]
50279#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50280#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
50281#[cfg_attr(
50282 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50283 assert_instr(urshl)
50284)]
50285#[cfg_attr(
50286 not(target_arch = "arm"),
50287 stable(feature = "neon_intrinsics", since = "1.59.0")
50288)]
50289#[cfg_attr(
50290 target_arch = "arm",
50291 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50292)]
50293pub fn vrshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t {
50294 unsafe extern "unadjusted" {
50295 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v1i64")]
50296 #[cfg_attr(
50297 any(target_arch = "aarch64", target_arch = "arm64ec"),
50298 link_name = "llvm.aarch64.neon.urshl.v1i64"
50299 )]
50300 fn _vrshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t;
50301 }
50302 unsafe { _vrshl_u64(a, b) }
50303}
50304#[doc = "Unsigned rounding shift left"]
50305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_u64)"]
50306#[inline]
50307#[target_feature(enable = "neon")]
50308#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50309#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
50310#[cfg_attr(
50311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50312 assert_instr(urshl)
50313)]
50314#[cfg_attr(
50315 not(target_arch = "arm"),
50316 stable(feature = "neon_intrinsics", since = "1.59.0")
50317)]
50318#[cfg_attr(
50319 target_arch = "arm",
50320 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50321)]
50322pub fn vrshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t {
50323 unsafe extern "unadjusted" {
50324 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v2i64")]
50325 #[cfg_attr(
50326 any(target_arch = "aarch64", target_arch = "arm64ec"),
50327 link_name = "llvm.aarch64.neon.urshl.v2i64"
50328 )]
50329 fn _vrshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t;
50330 }
50331 unsafe { _vrshlq_u64(a, b) }
50332}
50333#[doc = "Signed rounding shift right"]
50334#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_s8)"]
50335#[inline]
50336#[target_feature(enable = "neon")]
50337#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50338#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
50339#[cfg_attr(
50340 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50341 assert_instr(srshr, N = 2)
50342)]
50343#[rustc_legacy_const_generics(1)]
50344#[cfg_attr(
50345 not(target_arch = "arm"),
50346 stable(feature = "neon_intrinsics", since = "1.59.0")
50347)]
50348#[cfg_attr(
50349 target_arch = "arm",
50350 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50351)]
50352pub fn vrshr_n_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
50353 static_assert!(N >= 1 && N <= 8);
50354 vrshl_s8(a, vdup_n_s8(-N as _))
50355}
50356#[doc = "Signed rounding shift right"]
50357#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_s8)"]
50358#[inline]
50359#[target_feature(enable = "neon")]
50360#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50361#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
50362#[cfg_attr(
50363 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50364 assert_instr(srshr, N = 2)
50365)]
50366#[rustc_legacy_const_generics(1)]
50367#[cfg_attr(
50368 not(target_arch = "arm"),
50369 stable(feature = "neon_intrinsics", since = "1.59.0")
50370)]
50371#[cfg_attr(
50372 target_arch = "arm",
50373 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50374)]
50375pub fn vrshrq_n_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
50376 static_assert!(N >= 1 && N <= 8);
50377 vrshlq_s8(a, vdupq_n_s8(-N as _))
50378}
50379#[doc = "Signed rounding shift right"]
50380#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_s16)"]
50381#[inline]
50382#[target_feature(enable = "neon")]
50383#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50384#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
50385#[cfg_attr(
50386 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50387 assert_instr(srshr, N = 2)
50388)]
50389#[rustc_legacy_const_generics(1)]
50390#[cfg_attr(
50391 not(target_arch = "arm"),
50392 stable(feature = "neon_intrinsics", since = "1.59.0")
50393)]
50394#[cfg_attr(
50395 target_arch = "arm",
50396 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50397)]
50398pub fn vrshr_n_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
50399 static_assert!(N >= 1 && N <= 16);
50400 vrshl_s16(a, vdup_n_s16(-N as _))
50401}
50402#[doc = "Signed rounding shift right"]
50403#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_s16)"]
50404#[inline]
50405#[target_feature(enable = "neon")]
50406#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50407#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
50408#[cfg_attr(
50409 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50410 assert_instr(srshr, N = 2)
50411)]
50412#[rustc_legacy_const_generics(1)]
50413#[cfg_attr(
50414 not(target_arch = "arm"),
50415 stable(feature = "neon_intrinsics", since = "1.59.0")
50416)]
50417#[cfg_attr(
50418 target_arch = "arm",
50419 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50420)]
50421pub fn vrshrq_n_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
50422 static_assert!(N >= 1 && N <= 16);
50423 vrshlq_s16(a, vdupq_n_s16(-N as _))
50424}
50425#[doc = "Signed rounding shift right"]
50426#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_s32)"]
50427#[inline]
50428#[target_feature(enable = "neon")]
50429#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50430#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
50431#[cfg_attr(
50432 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50433 assert_instr(srshr, N = 2)
50434)]
50435#[rustc_legacy_const_generics(1)]
50436#[cfg_attr(
50437 not(target_arch = "arm"),
50438 stable(feature = "neon_intrinsics", since = "1.59.0")
50439)]
50440#[cfg_attr(
50441 target_arch = "arm",
50442 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50443)]
50444pub fn vrshr_n_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
50445 static_assert!(N >= 1 && N <= 32);
50446 vrshl_s32(a, vdup_n_s32(-N as _))
50447}
50448#[doc = "Signed rounding shift right"]
50449#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_s32)"]
50450#[inline]
50451#[target_feature(enable = "neon")]
50452#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50453#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
50454#[cfg_attr(
50455 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50456 assert_instr(srshr, N = 2)
50457)]
50458#[rustc_legacy_const_generics(1)]
50459#[cfg_attr(
50460 not(target_arch = "arm"),
50461 stable(feature = "neon_intrinsics", since = "1.59.0")
50462)]
50463#[cfg_attr(
50464 target_arch = "arm",
50465 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50466)]
50467pub fn vrshrq_n_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
50468 static_assert!(N >= 1 && N <= 32);
50469 vrshlq_s32(a, vdupq_n_s32(-N as _))
50470}
50471#[doc = "Signed rounding shift right"]
50472#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_s64)"]
50473#[inline]
50474#[target_feature(enable = "neon")]
50475#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50476#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
50477#[cfg_attr(
50478 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50479 assert_instr(srshr, N = 2)
50480)]
50481#[rustc_legacy_const_generics(1)]
50482#[cfg_attr(
50483 not(target_arch = "arm"),
50484 stable(feature = "neon_intrinsics", since = "1.59.0")
50485)]
50486#[cfg_attr(
50487 target_arch = "arm",
50488 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50489)]
50490pub fn vrshr_n_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
50491 static_assert!(N >= 1 && N <= 64);
50492 vrshl_s64(a, vdup_n_s64(-N as _))
50493}
50494#[doc = "Signed rounding shift right"]
50495#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_s64)"]
50496#[inline]
50497#[target_feature(enable = "neon")]
50498#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50499#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
50500#[cfg_attr(
50501 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50502 assert_instr(srshr, N = 2)
50503)]
50504#[rustc_legacy_const_generics(1)]
50505#[cfg_attr(
50506 not(target_arch = "arm"),
50507 stable(feature = "neon_intrinsics", since = "1.59.0")
50508)]
50509#[cfg_attr(
50510 target_arch = "arm",
50511 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50512)]
50513pub fn vrshrq_n_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
50514 static_assert!(N >= 1 && N <= 64);
50515 vrshlq_s64(a, vdupq_n_s64(-N as _))
50516}
50517#[doc = "Unsigned rounding shift right"]
50518#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_u8)"]
50519#[inline]
50520#[target_feature(enable = "neon")]
50521#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50522#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
50523#[cfg_attr(
50524 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50525 assert_instr(urshr, N = 2)
50526)]
50527#[rustc_legacy_const_generics(1)]
50528#[cfg_attr(
50529 not(target_arch = "arm"),
50530 stable(feature = "neon_intrinsics", since = "1.59.0")
50531)]
50532#[cfg_attr(
50533 target_arch = "arm",
50534 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50535)]
50536pub fn vrshr_n_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
50537 static_assert!(N >= 1 && N <= 8);
50538 vrshl_u8(a, vdup_n_s8(-N as _))
50539}
50540#[doc = "Unsigned rounding shift right"]
50541#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_u8)"]
50542#[inline]
50543#[target_feature(enable = "neon")]
50544#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50545#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
50546#[cfg_attr(
50547 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50548 assert_instr(urshr, N = 2)
50549)]
50550#[rustc_legacy_const_generics(1)]
50551#[cfg_attr(
50552 not(target_arch = "arm"),
50553 stable(feature = "neon_intrinsics", since = "1.59.0")
50554)]
50555#[cfg_attr(
50556 target_arch = "arm",
50557 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50558)]
50559pub fn vrshrq_n_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
50560 static_assert!(N >= 1 && N <= 8);
50561 vrshlq_u8(a, vdupq_n_s8(-N as _))
50562}
50563#[doc = "Unsigned rounding shift right"]
50564#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_u16)"]
50565#[inline]
50566#[target_feature(enable = "neon")]
50567#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50568#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
50569#[cfg_attr(
50570 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50571 assert_instr(urshr, N = 2)
50572)]
50573#[rustc_legacy_const_generics(1)]
50574#[cfg_attr(
50575 not(target_arch = "arm"),
50576 stable(feature = "neon_intrinsics", since = "1.59.0")
50577)]
50578#[cfg_attr(
50579 target_arch = "arm",
50580 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50581)]
50582pub fn vrshr_n_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
50583 static_assert!(N >= 1 && N <= 16);
50584 vrshl_u16(a, vdup_n_s16(-N as _))
50585}
50586#[doc = "Unsigned rounding shift right"]
50587#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_u16)"]
50588#[inline]
50589#[target_feature(enable = "neon")]
50590#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50591#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
50592#[cfg_attr(
50593 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50594 assert_instr(urshr, N = 2)
50595)]
50596#[rustc_legacy_const_generics(1)]
50597#[cfg_attr(
50598 not(target_arch = "arm"),
50599 stable(feature = "neon_intrinsics", since = "1.59.0")
50600)]
50601#[cfg_attr(
50602 target_arch = "arm",
50603 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50604)]
50605pub fn vrshrq_n_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
50606 static_assert!(N >= 1 && N <= 16);
50607 vrshlq_u16(a, vdupq_n_s16(-N as _))
50608}
50609#[doc = "Unsigned rounding shift right"]
50610#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_u32)"]
50611#[inline]
50612#[target_feature(enable = "neon")]
50613#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50614#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
50615#[cfg_attr(
50616 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50617 assert_instr(urshr, N = 2)
50618)]
50619#[rustc_legacy_const_generics(1)]
50620#[cfg_attr(
50621 not(target_arch = "arm"),
50622 stable(feature = "neon_intrinsics", since = "1.59.0")
50623)]
50624#[cfg_attr(
50625 target_arch = "arm",
50626 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50627)]
50628pub fn vrshr_n_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
50629 static_assert!(N >= 1 && N <= 32);
50630 vrshl_u32(a, vdup_n_s32(-N as _))
50631}
50632#[doc = "Unsigned rounding shift right"]
50633#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_u32)"]
50634#[inline]
50635#[target_feature(enable = "neon")]
50636#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50637#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
50638#[cfg_attr(
50639 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50640 assert_instr(urshr, N = 2)
50641)]
50642#[rustc_legacy_const_generics(1)]
50643#[cfg_attr(
50644 not(target_arch = "arm"),
50645 stable(feature = "neon_intrinsics", since = "1.59.0")
50646)]
50647#[cfg_attr(
50648 target_arch = "arm",
50649 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50650)]
50651pub fn vrshrq_n_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
50652 static_assert!(N >= 1 && N <= 32);
50653 vrshlq_u32(a, vdupq_n_s32(-N as _))
50654}
50655#[doc = "Unsigned rounding shift right"]
50656#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_u64)"]
50657#[inline]
50658#[target_feature(enable = "neon")]
50659#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50660#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
50661#[cfg_attr(
50662 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50663 assert_instr(urshr, N = 2)
50664)]
50665#[rustc_legacy_const_generics(1)]
50666#[cfg_attr(
50667 not(target_arch = "arm"),
50668 stable(feature = "neon_intrinsics", since = "1.59.0")
50669)]
50670#[cfg_attr(
50671 target_arch = "arm",
50672 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50673)]
50674pub fn vrshr_n_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
50675 static_assert!(N >= 1 && N <= 64);
50676 vrshl_u64(a, vdup_n_s64(-N as _))
50677}
50678#[doc = "Unsigned rounding shift right"]
50679#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_u64)"]
50680#[inline]
50681#[target_feature(enable = "neon")]
50682#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50683#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
50684#[cfg_attr(
50685 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50686 assert_instr(urshr, N = 2)
50687)]
50688#[rustc_legacy_const_generics(1)]
50689#[cfg_attr(
50690 not(target_arch = "arm"),
50691 stable(feature = "neon_intrinsics", since = "1.59.0")
50692)]
50693#[cfg_attr(
50694 target_arch = "arm",
50695 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50696)]
50697pub fn vrshrq_n_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
50698 static_assert!(N >= 1 && N <= 64);
50699 vrshlq_u64(a, vdupq_n_s64(-N as _))
50700}
50701#[doc = "Rounding shift right narrow"]
50702#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s16)"]
50703#[inline]
50704#[cfg(target_arch = "arm")]
50705#[target_feature(enable = "neon,v7")]
50706#[cfg_attr(test, assert_instr(vrshrn, N = 2))]
50707#[rustc_legacy_const_generics(1)]
50708#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
50709pub fn vrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
50710 static_assert!(N >= 1 && N <= 8);
50711 unsafe extern "unadjusted" {
50712 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v8i8")]
50713 fn _vrshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;
50714 }
50715 unsafe { _vrshrn_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
50716}
50717#[doc = "Rounding shift right narrow"]
50718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s32)"]
50719#[inline]
50720#[cfg(target_arch = "arm")]
50721#[target_feature(enable = "neon,v7")]
50722#[cfg_attr(test, assert_instr(vrshrn, N = 2))]
50723#[rustc_legacy_const_generics(1)]
50724#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
50725pub fn vrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
50726 static_assert!(N >= 1 && N <= 16);
50727 unsafe extern "unadjusted" {
50728 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v4i16")]
50729 fn _vrshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;
50730 }
50731 unsafe { _vrshrn_n_s32(a, const { int32x4_t([-N; 4]) }) }
50732}
50733#[doc = "Rounding shift right narrow"]
50734#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s64)"]
50735#[inline]
50736#[cfg(target_arch = "arm")]
50737#[target_feature(enable = "neon,v7")]
50738#[cfg_attr(test, assert_instr(vrshrn, N = 2))]
50739#[rustc_legacy_const_generics(1)]
50740#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
50741pub fn vrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
50742 static_assert!(N >= 1 && N <= 32);
50743 unsafe extern "unadjusted" {
50744 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v2i32")]
50745 fn _vrshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;
50746 }
50747 unsafe { _vrshrn_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
50748}
50749#[doc = "Rounding shift right narrow"]
50750#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s16)"]
50751#[inline]
50752#[target_feature(enable = "neon")]
50753#[cfg(not(target_arch = "arm"))]
50754#[cfg_attr(test, assert_instr(rshrn, N = 2))]
50755#[rustc_legacy_const_generics(1)]
50756#[stable(feature = "neon_intrinsics", since = "1.59.0")]
50757pub fn vrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
50758 static_assert!(N >= 1 && N <= 8);
50759 unsafe extern "unadjusted" {
50760 #[cfg_attr(
50761 any(target_arch = "aarch64", target_arch = "arm64ec"),
50762 link_name = "llvm.aarch64.neon.rshrn.v8i8"
50763 )]
50764 fn _vrshrn_n_s16(a: int16x8_t, n: i32) -> int8x8_t;
50765 }
50766 unsafe { _vrshrn_n_s16(a, N) }
50767}
50768#[doc = "Rounding shift right narrow"]
50769#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s32)"]
50770#[inline]
50771#[target_feature(enable = "neon")]
50772#[cfg(not(target_arch = "arm"))]
50773#[cfg_attr(test, assert_instr(rshrn, N = 2))]
50774#[rustc_legacy_const_generics(1)]
50775#[stable(feature = "neon_intrinsics", since = "1.59.0")]
50776pub fn vrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
50777 static_assert!(N >= 1 && N <= 16);
50778 unsafe extern "unadjusted" {
50779 #[cfg_attr(
50780 any(target_arch = "aarch64", target_arch = "arm64ec"),
50781 link_name = "llvm.aarch64.neon.rshrn.v4i16"
50782 )]
50783 fn _vrshrn_n_s32(a: int32x4_t, n: i32) -> int16x4_t;
50784 }
50785 unsafe { _vrshrn_n_s32(a, N) }
50786}
50787#[doc = "Rounding shift right narrow"]
50788#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s64)"]
50789#[inline]
50790#[target_feature(enable = "neon")]
50791#[cfg(not(target_arch = "arm"))]
50792#[cfg_attr(test, assert_instr(rshrn, N = 2))]
50793#[rustc_legacy_const_generics(1)]
50794#[stable(feature = "neon_intrinsics", since = "1.59.0")]
50795pub fn vrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
50796 static_assert!(N >= 1 && N <= 32);
50797 unsafe extern "unadjusted" {
50798 #[cfg_attr(
50799 any(target_arch = "aarch64", target_arch = "arm64ec"),
50800 link_name = "llvm.aarch64.neon.rshrn.v2i32"
50801 )]
50802 fn _vrshrn_n_s64(a: int64x2_t, n: i32) -> int32x2_t;
50803 }
50804 unsafe { _vrshrn_n_s64(a, N) }
50805}
50806#[doc = "Rounding shift right narrow"]
50807#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_u16)"]
50808#[inline]
50809#[target_feature(enable = "neon")]
50810#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50811#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshrn, N = 2))]
50812#[cfg_attr(
50813 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50814 assert_instr(rshrn, N = 2)
50815)]
50816#[rustc_legacy_const_generics(1)]
50817#[cfg_attr(
50818 not(target_arch = "arm"),
50819 stable(feature = "neon_intrinsics", since = "1.59.0")
50820)]
50821#[cfg_attr(
50822 target_arch = "arm",
50823 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50824)]
50825pub fn vrshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
50826 static_assert!(N >= 1 && N <= 8);
50827 unsafe { transmute(vrshrn_n_s16::<N>(transmute(a))) }
50828}
50829#[doc = "Rounding shift right narrow"]
50830#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_u32)"]
50831#[inline]
50832#[target_feature(enable = "neon")]
50833#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50834#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshrn, N = 2))]
50835#[cfg_attr(
50836 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50837 assert_instr(rshrn, N = 2)
50838)]
50839#[rustc_legacy_const_generics(1)]
50840#[cfg_attr(
50841 not(target_arch = "arm"),
50842 stable(feature = "neon_intrinsics", since = "1.59.0")
50843)]
50844#[cfg_attr(
50845 target_arch = "arm",
50846 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50847)]
50848pub fn vrshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
50849 static_assert!(N >= 1 && N <= 16);
50850 unsafe { transmute(vrshrn_n_s32::<N>(transmute(a))) }
50851}
50852#[doc = "Rounding shift right narrow"]
50853#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_u64)"]
50854#[inline]
50855#[target_feature(enable = "neon")]
50856#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50857#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshrn, N = 2))]
50858#[cfg_attr(
50859 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50860 assert_instr(rshrn, N = 2)
50861)]
50862#[rustc_legacy_const_generics(1)]
50863#[cfg_attr(
50864 not(target_arch = "arm"),
50865 stable(feature = "neon_intrinsics", since = "1.59.0")
50866)]
50867#[cfg_attr(
50868 target_arch = "arm",
50869 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50870)]
50871pub fn vrshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
50872 static_assert!(N >= 1 && N <= 32);
50873 unsafe { transmute(vrshrn_n_s64::<N>(transmute(a))) }
50874}
50875#[doc = "Reciprocal square-root estimate."]
50876#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrte_f16)"]
50877#[inline]
50878#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
50879#[target_feature(enable = "neon,fp16")]
50880#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
50881#[cfg_attr(
50882 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50883 assert_instr(frsqrte)
50884)]
50885#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
50886#[cfg(not(target_arch = "arm64ec"))]
50887pub fn vrsqrte_f16(a: float16x4_t) -> float16x4_t {
50888 unsafe extern "unadjusted" {
50889 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v4f16")]
50890 #[cfg_attr(
50891 any(target_arch = "aarch64", target_arch = "arm64ec"),
50892 link_name = "llvm.aarch64.neon.frsqrte.v4f16"
50893 )]
50894 fn _vrsqrte_f16(a: float16x4_t) -> float16x4_t;
50895 }
50896 unsafe { _vrsqrte_f16(a) }
50897}
50898#[doc = "Reciprocal square-root estimate."]
50899#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrteq_f16)"]
50900#[inline]
50901#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
50902#[target_feature(enable = "neon,fp16")]
50903#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
50904#[cfg_attr(
50905 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50906 assert_instr(frsqrte)
50907)]
50908#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
50909#[cfg(not(target_arch = "arm64ec"))]
50910pub fn vrsqrteq_f16(a: float16x8_t) -> float16x8_t {
50911 unsafe extern "unadjusted" {
50912 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v8f16")]
50913 #[cfg_attr(
50914 any(target_arch = "aarch64", target_arch = "arm64ec"),
50915 link_name = "llvm.aarch64.neon.frsqrte.v8f16"
50916 )]
50917 fn _vrsqrteq_f16(a: float16x8_t) -> float16x8_t;
50918 }
50919 unsafe { _vrsqrteq_f16(a) }
50920}
50921#[doc = "Reciprocal square-root estimate."]
50922#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrte_f32)"]
50923#[inline]
50924#[target_feature(enable = "neon")]
50925#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50926#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
50927#[cfg_attr(
50928 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50929 assert_instr(frsqrte)
50930)]
50931#[cfg_attr(
50932 not(target_arch = "arm"),
50933 stable(feature = "neon_intrinsics", since = "1.59.0")
50934)]
50935#[cfg_attr(
50936 target_arch = "arm",
50937 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50938)]
50939pub fn vrsqrte_f32(a: float32x2_t) -> float32x2_t {
50940 unsafe extern "unadjusted" {
50941 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v2f32")]
50942 #[cfg_attr(
50943 any(target_arch = "aarch64", target_arch = "arm64ec"),
50944 link_name = "llvm.aarch64.neon.frsqrte.v2f32"
50945 )]
50946 fn _vrsqrte_f32(a: float32x2_t) -> float32x2_t;
50947 }
50948 unsafe { _vrsqrte_f32(a) }
50949}
50950#[doc = "Reciprocal square-root estimate."]
50951#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrteq_f32)"]
50952#[inline]
50953#[target_feature(enable = "neon")]
50954#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50955#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
50956#[cfg_attr(
50957 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50958 assert_instr(frsqrte)
50959)]
50960#[cfg_attr(
50961 not(target_arch = "arm"),
50962 stable(feature = "neon_intrinsics", since = "1.59.0")
50963)]
50964#[cfg_attr(
50965 target_arch = "arm",
50966 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50967)]
50968pub fn vrsqrteq_f32(a: float32x4_t) -> float32x4_t {
50969 unsafe extern "unadjusted" {
50970 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v4f32")]
50971 #[cfg_attr(
50972 any(target_arch = "aarch64", target_arch = "arm64ec"),
50973 link_name = "llvm.aarch64.neon.frsqrte.v4f32"
50974 )]
50975 fn _vrsqrteq_f32(a: float32x4_t) -> float32x4_t;
50976 }
50977 unsafe { _vrsqrteq_f32(a) }
50978}
50979#[doc = "Unsigned reciprocal square root estimate"]
50980#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrte_u32)"]
50981#[inline]
50982#[target_feature(enable = "neon")]
50983#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50984#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
50985#[cfg_attr(
50986 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50987 assert_instr(ursqrte)
50988)]
50989#[cfg_attr(
50990 not(target_arch = "arm"),
50991 stable(feature = "neon_intrinsics", since = "1.59.0")
50992)]
50993#[cfg_attr(
50994 target_arch = "arm",
50995 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50996)]
50997pub fn vrsqrte_u32(a: uint32x2_t) -> uint32x2_t {
50998 unsafe extern "unadjusted" {
50999 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v2i32")]
51000 #[cfg_attr(
51001 any(target_arch = "aarch64", target_arch = "arm64ec"),
51002 link_name = "llvm.aarch64.neon.ursqrte.v2i32"
51003 )]
51004 fn _vrsqrte_u32(a: uint32x2_t) -> uint32x2_t;
51005 }
51006 unsafe { _vrsqrte_u32(a) }
51007}
51008#[doc = "Unsigned reciprocal square root estimate"]
51009#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrteq_u32)"]
51010#[inline]
51011#[target_feature(enable = "neon")]
51012#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51013#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
51014#[cfg_attr(
51015 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51016 assert_instr(ursqrte)
51017)]
51018#[cfg_attr(
51019 not(target_arch = "arm"),
51020 stable(feature = "neon_intrinsics", since = "1.59.0")
51021)]
51022#[cfg_attr(
51023 target_arch = "arm",
51024 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51025)]
51026pub fn vrsqrteq_u32(a: uint32x4_t) -> uint32x4_t {
51027 unsafe extern "unadjusted" {
51028 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v4i32")]
51029 #[cfg_attr(
51030 any(target_arch = "aarch64", target_arch = "arm64ec"),
51031 link_name = "llvm.aarch64.neon.ursqrte.v4i32"
51032 )]
51033 fn _vrsqrteq_u32(a: uint32x4_t) -> uint32x4_t;
51034 }
51035 unsafe { _vrsqrteq_u32(a) }
51036}
51037#[doc = "Floating-point reciprocal square root step"]
51038#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrts_f16)"]
51039#[inline]
51040#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
51041#[target_feature(enable = "neon,fp16")]
51042#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrts))]
51043#[cfg_attr(
51044 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51045 assert_instr(frsqrts)
51046)]
51047#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
51048#[cfg(not(target_arch = "arm64ec"))]
51049pub fn vrsqrts_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
51050 unsafe extern "unadjusted" {
51051 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrts.v4f16")]
51052 #[cfg_attr(
51053 any(target_arch = "aarch64", target_arch = "arm64ec"),
51054 link_name = "llvm.aarch64.neon.frsqrts.v4f16"
51055 )]
51056 fn _vrsqrts_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
51057 }
51058 unsafe { _vrsqrts_f16(a, b) }
51059}
51060#[doc = "Floating-point reciprocal square root step"]
51061#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrtsq_f16)"]
51062#[inline]
51063#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
51064#[target_feature(enable = "neon,fp16")]
51065#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrts))]
51066#[cfg_attr(
51067 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51068 assert_instr(frsqrts)
51069)]
51070#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
51071#[cfg(not(target_arch = "arm64ec"))]
51072pub fn vrsqrtsq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
51073 unsafe extern "unadjusted" {
51074 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrts.v8f16")]
51075 #[cfg_attr(
51076 any(target_arch = "aarch64", target_arch = "arm64ec"),
51077 link_name = "llvm.aarch64.neon.frsqrts.v8f16"
51078 )]
51079 fn _vrsqrtsq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
51080 }
51081 unsafe { _vrsqrtsq_f16(a, b) }
51082}
51083#[doc = "Floating-point reciprocal square root step"]
51084#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrts_f32)"]
51085#[inline]
51086#[target_feature(enable = "neon")]
51087#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51088#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrts))]
51089#[cfg_attr(
51090 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51091 assert_instr(frsqrts)
51092)]
51093#[cfg_attr(
51094 not(target_arch = "arm"),
51095 stable(feature = "neon_intrinsics", since = "1.59.0")
51096)]
51097#[cfg_attr(
51098 target_arch = "arm",
51099 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51100)]
51101pub fn vrsqrts_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
51102 unsafe extern "unadjusted" {
51103 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrts.v2f32")]
51104 #[cfg_attr(
51105 any(target_arch = "aarch64", target_arch = "arm64ec"),
51106 link_name = "llvm.aarch64.neon.frsqrts.v2f32"
51107 )]
51108 fn _vrsqrts_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
51109 }
51110 unsafe { _vrsqrts_f32(a, b) }
51111}
51112#[doc = "Floating-point reciprocal square root step"]
51113#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrtsq_f32)"]
51114#[inline]
51115#[target_feature(enable = "neon")]
51116#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51117#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrts))]
51118#[cfg_attr(
51119 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51120 assert_instr(frsqrts)
51121)]
51122#[cfg_attr(
51123 not(target_arch = "arm"),
51124 stable(feature = "neon_intrinsics", since = "1.59.0")
51125)]
51126#[cfg_attr(
51127 target_arch = "arm",
51128 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51129)]
51130pub fn vrsqrtsq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
51131 unsafe extern "unadjusted" {
51132 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrts.v4f32")]
51133 #[cfg_attr(
51134 any(target_arch = "aarch64", target_arch = "arm64ec"),
51135 link_name = "llvm.aarch64.neon.frsqrts.v4f32"
51136 )]
51137 fn _vrsqrtsq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
51138 }
51139 unsafe { _vrsqrtsq_f32(a, b) }
51140}
51141#[doc = "Signed rounding shift right and accumulate"]
51142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_s8)"]
51143#[inline]
51144#[target_feature(enable = "neon")]
51145#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51146#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
51147#[cfg_attr(
51148 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51149 assert_instr(srsra, N = 2)
51150)]
51151#[rustc_legacy_const_generics(2)]
51152#[cfg_attr(
51153 not(target_arch = "arm"),
51154 stable(feature = "neon_intrinsics", since = "1.59.0")
51155)]
51156#[cfg_attr(
51157 target_arch = "arm",
51158 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51159)]
51160pub fn vrsra_n_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
51161 static_assert!(N >= 1 && N <= 8);
51162 unsafe { simd_add(a, vrshr_n_s8::<N>(b)) }
51163}
51164#[doc = "Signed rounding shift right and accumulate"]
51165#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_s8)"]
51166#[inline]
51167#[target_feature(enable = "neon")]
51168#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51169#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
51170#[cfg_attr(
51171 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51172 assert_instr(srsra, N = 2)
51173)]
51174#[rustc_legacy_const_generics(2)]
51175#[cfg_attr(
51176 not(target_arch = "arm"),
51177 stable(feature = "neon_intrinsics", since = "1.59.0")
51178)]
51179#[cfg_attr(
51180 target_arch = "arm",
51181 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51182)]
51183pub fn vrsraq_n_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
51184 static_assert!(N >= 1 && N <= 8);
51185 unsafe { simd_add(a, vrshrq_n_s8::<N>(b)) }
51186}
51187#[doc = "Signed rounding shift right and accumulate"]
51188#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_s16)"]
51189#[inline]
51190#[target_feature(enable = "neon")]
51191#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51192#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
51193#[cfg_attr(
51194 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51195 assert_instr(srsra, N = 2)
51196)]
51197#[rustc_legacy_const_generics(2)]
51198#[cfg_attr(
51199 not(target_arch = "arm"),
51200 stable(feature = "neon_intrinsics", since = "1.59.0")
51201)]
51202#[cfg_attr(
51203 target_arch = "arm",
51204 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51205)]
51206pub fn vrsra_n_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
51207 static_assert!(N >= 1 && N <= 16);
51208 unsafe { simd_add(a, vrshr_n_s16::<N>(b)) }
51209}
51210#[doc = "Signed rounding shift right and accumulate"]
51211#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_s16)"]
51212#[inline]
51213#[target_feature(enable = "neon")]
51214#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51215#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
51216#[cfg_attr(
51217 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51218 assert_instr(srsra, N = 2)
51219)]
51220#[rustc_legacy_const_generics(2)]
51221#[cfg_attr(
51222 not(target_arch = "arm"),
51223 stable(feature = "neon_intrinsics", since = "1.59.0")
51224)]
51225#[cfg_attr(
51226 target_arch = "arm",
51227 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51228)]
51229pub fn vrsraq_n_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
51230 static_assert!(N >= 1 && N <= 16);
51231 unsafe { simd_add(a, vrshrq_n_s16::<N>(b)) }
51232}
51233#[doc = "Signed rounding shift right and accumulate"]
51234#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_s32)"]
51235#[inline]
51236#[target_feature(enable = "neon")]
51237#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51238#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
51239#[cfg_attr(
51240 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51241 assert_instr(srsra, N = 2)
51242)]
51243#[rustc_legacy_const_generics(2)]
51244#[cfg_attr(
51245 not(target_arch = "arm"),
51246 stable(feature = "neon_intrinsics", since = "1.59.0")
51247)]
51248#[cfg_attr(
51249 target_arch = "arm",
51250 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51251)]
51252pub fn vrsra_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
51253 static_assert!(N >= 1 && N <= 32);
51254 unsafe { simd_add(a, vrshr_n_s32::<N>(b)) }
51255}
51256#[doc = "Signed rounding shift right and accumulate"]
51257#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_s32)"]
51258#[inline]
51259#[target_feature(enable = "neon")]
51260#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51261#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
51262#[cfg_attr(
51263 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51264 assert_instr(srsra, N = 2)
51265)]
51266#[rustc_legacy_const_generics(2)]
51267#[cfg_attr(
51268 not(target_arch = "arm"),
51269 stable(feature = "neon_intrinsics", since = "1.59.0")
51270)]
51271#[cfg_attr(
51272 target_arch = "arm",
51273 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51274)]
51275pub fn vrsraq_n_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
51276 static_assert!(N >= 1 && N <= 32);
51277 unsafe { simd_add(a, vrshrq_n_s32::<N>(b)) }
51278}
51279#[doc = "Signed rounding shift right and accumulate"]
51280#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_s64)"]
51281#[inline]
51282#[target_feature(enable = "neon")]
51283#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51284#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
51285#[cfg_attr(
51286 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51287 assert_instr(srsra, N = 2)
51288)]
51289#[rustc_legacy_const_generics(2)]
51290#[cfg_attr(
51291 not(target_arch = "arm"),
51292 stable(feature = "neon_intrinsics", since = "1.59.0")
51293)]
51294#[cfg_attr(
51295 target_arch = "arm",
51296 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51297)]
51298pub fn vrsra_n_s64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
51299 static_assert!(N >= 1 && N <= 64);
51300 unsafe { simd_add(a, vrshr_n_s64::<N>(b)) }
51301}
51302#[doc = "Signed rounding shift right and accumulate"]
51303#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_s64)"]
51304#[inline]
51305#[target_feature(enable = "neon")]
51306#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51307#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
51308#[cfg_attr(
51309 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51310 assert_instr(srsra, N = 2)
51311)]
51312#[rustc_legacy_const_generics(2)]
51313#[cfg_attr(
51314 not(target_arch = "arm"),
51315 stable(feature = "neon_intrinsics", since = "1.59.0")
51316)]
51317#[cfg_attr(
51318 target_arch = "arm",
51319 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51320)]
51321pub fn vrsraq_n_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
51322 static_assert!(N >= 1 && N <= 64);
51323 unsafe { simd_add(a, vrshrq_n_s64::<N>(b)) }
51324}
51325#[doc = "Unsigned rounding shift right and accumulate"]
51326#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_u8)"]
51327#[inline]
51328#[target_feature(enable = "neon")]
51329#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51330#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
51331#[cfg_attr(
51332 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51333 assert_instr(ursra, N = 2)
51334)]
51335#[rustc_legacy_const_generics(2)]
51336#[cfg_attr(
51337 not(target_arch = "arm"),
51338 stable(feature = "neon_intrinsics", since = "1.59.0")
51339)]
51340#[cfg_attr(
51341 target_arch = "arm",
51342 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51343)]
51344pub fn vrsra_n_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
51345 static_assert!(N >= 1 && N <= 8);
51346 unsafe { simd_add(a, vrshr_n_u8::<N>(b)) }
51347}
51348#[doc = "Unsigned rounding shift right and accumulate"]
51349#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_u8)"]
51350#[inline]
51351#[target_feature(enable = "neon")]
51352#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51353#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
51354#[cfg_attr(
51355 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51356 assert_instr(ursra, N = 2)
51357)]
51358#[rustc_legacy_const_generics(2)]
51359#[cfg_attr(
51360 not(target_arch = "arm"),
51361 stable(feature = "neon_intrinsics", since = "1.59.0")
51362)]
51363#[cfg_attr(
51364 target_arch = "arm",
51365 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51366)]
51367pub fn vrsraq_n_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
51368 static_assert!(N >= 1 && N <= 8);
51369 unsafe { simd_add(a, vrshrq_n_u8::<N>(b)) }
51370}
51371#[doc = "Unsigned rounding shift right and accumulate"]
51372#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_u16)"]
51373#[inline]
51374#[target_feature(enable = "neon")]
51375#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51376#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
51377#[cfg_attr(
51378 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51379 assert_instr(ursra, N = 2)
51380)]
51381#[rustc_legacy_const_generics(2)]
51382#[cfg_attr(
51383 not(target_arch = "arm"),
51384 stable(feature = "neon_intrinsics", since = "1.59.0")
51385)]
51386#[cfg_attr(
51387 target_arch = "arm",
51388 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51389)]
51390pub fn vrsra_n_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
51391 static_assert!(N >= 1 && N <= 16);
51392 unsafe { simd_add(a, vrshr_n_u16::<N>(b)) }
51393}
51394#[doc = "Unsigned rounding shift right and accumulate"]
51395#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_u16)"]
51396#[inline]
51397#[target_feature(enable = "neon")]
51398#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51399#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
51400#[cfg_attr(
51401 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51402 assert_instr(ursra, N = 2)
51403)]
51404#[rustc_legacy_const_generics(2)]
51405#[cfg_attr(
51406 not(target_arch = "arm"),
51407 stable(feature = "neon_intrinsics", since = "1.59.0")
51408)]
51409#[cfg_attr(
51410 target_arch = "arm",
51411 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51412)]
51413pub fn vrsraq_n_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
51414 static_assert!(N >= 1 && N <= 16);
51415 unsafe { simd_add(a, vrshrq_n_u16::<N>(b)) }
51416}
51417#[doc = "Unsigned rounding shift right and accumulate"]
51418#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_u32)"]
51419#[inline]
51420#[target_feature(enable = "neon")]
51421#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51422#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
51423#[cfg_attr(
51424 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51425 assert_instr(ursra, N = 2)
51426)]
51427#[rustc_legacy_const_generics(2)]
51428#[cfg_attr(
51429 not(target_arch = "arm"),
51430 stable(feature = "neon_intrinsics", since = "1.59.0")
51431)]
51432#[cfg_attr(
51433 target_arch = "arm",
51434 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51435)]
51436pub fn vrsra_n_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
51437 static_assert!(N >= 1 && N <= 32);
51438 unsafe { simd_add(a, vrshr_n_u32::<N>(b)) }
51439}
51440#[doc = "Unsigned rounding shift right and accumulate"]
51441#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_u32)"]
51442#[inline]
51443#[target_feature(enable = "neon")]
51444#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51445#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
51446#[cfg_attr(
51447 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51448 assert_instr(ursra, N = 2)
51449)]
51450#[rustc_legacy_const_generics(2)]
51451#[cfg_attr(
51452 not(target_arch = "arm"),
51453 stable(feature = "neon_intrinsics", since = "1.59.0")
51454)]
51455#[cfg_attr(
51456 target_arch = "arm",
51457 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51458)]
51459pub fn vrsraq_n_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
51460 static_assert!(N >= 1 && N <= 32);
51461 unsafe { simd_add(a, vrshrq_n_u32::<N>(b)) }
51462}
51463#[doc = "Unsigned rounding shift right and accumulate"]
51464#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_u64)"]
51465#[inline]
51466#[target_feature(enable = "neon")]
51467#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51468#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
51469#[cfg_attr(
51470 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51471 assert_instr(ursra, N = 2)
51472)]
51473#[rustc_legacy_const_generics(2)]
51474#[cfg_attr(
51475 not(target_arch = "arm"),
51476 stable(feature = "neon_intrinsics", since = "1.59.0")
51477)]
51478#[cfg_attr(
51479 target_arch = "arm",
51480 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51481)]
51482pub fn vrsra_n_u64<const N: i32>(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
51483 static_assert!(N >= 1 && N <= 64);
51484 unsafe { simd_add(a, vrshr_n_u64::<N>(b)) }
51485}
51486#[doc = "Unsigned rounding shift right and accumulate"]
51487#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_u64)"]
51488#[inline]
51489#[target_feature(enable = "neon")]
51490#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51491#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
51492#[cfg_attr(
51493 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51494 assert_instr(ursra, N = 2)
51495)]
51496#[rustc_legacy_const_generics(2)]
51497#[cfg_attr(
51498 not(target_arch = "arm"),
51499 stable(feature = "neon_intrinsics", since = "1.59.0")
51500)]
51501#[cfg_attr(
51502 target_arch = "arm",
51503 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51504)]
51505pub fn vrsraq_n_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
51506 static_assert!(N >= 1 && N <= 64);
51507 unsafe { simd_add(a, vrshrq_n_u64::<N>(b)) }
51508}
51509#[doc = "Rounding subtract returning high narrow"]
51510#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_s16)"]
51511#[inline]
51512#[target_feature(enable = "neon")]
51513#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51514#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
51515#[cfg_attr(
51516 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51517 assert_instr(rsubhn)
51518)]
51519#[cfg_attr(
51520 not(target_arch = "arm"),
51521 stable(feature = "neon_intrinsics", since = "1.59.0")
51522)]
51523#[cfg_attr(
51524 target_arch = "arm",
51525 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51526)]
51527pub fn vrsubhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t {
51528 unsafe extern "unadjusted" {
51529 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsubhn.v8i8")]
51530 #[cfg_attr(
51531 any(target_arch = "aarch64", target_arch = "arm64ec"),
51532 link_name = "llvm.aarch64.neon.rsubhn.v8i8"
51533 )]
51534 fn _vrsubhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t;
51535 }
51536 unsafe { _vrsubhn_s16(a, b) }
51537}
51538#[doc = "Rounding subtract returning high narrow"]
51539#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_s32)"]
51540#[inline]
51541#[target_feature(enable = "neon")]
51542#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51543#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
51544#[cfg_attr(
51545 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51546 assert_instr(rsubhn)
51547)]
51548#[cfg_attr(
51549 not(target_arch = "arm"),
51550 stable(feature = "neon_intrinsics", since = "1.59.0")
51551)]
51552#[cfg_attr(
51553 target_arch = "arm",
51554 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51555)]
51556pub fn vrsubhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t {
51557 unsafe extern "unadjusted" {
51558 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsubhn.v4i16")]
51559 #[cfg_attr(
51560 any(target_arch = "aarch64", target_arch = "arm64ec"),
51561 link_name = "llvm.aarch64.neon.rsubhn.v4i16"
51562 )]
51563 fn _vrsubhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t;
51564 }
51565 unsafe { _vrsubhn_s32(a, b) }
51566}
51567#[doc = "Rounding subtract returning high narrow"]
51568#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_s64)"]
51569#[inline]
51570#[target_feature(enable = "neon")]
51571#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51572#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
51573#[cfg_attr(
51574 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51575 assert_instr(rsubhn)
51576)]
51577#[cfg_attr(
51578 not(target_arch = "arm"),
51579 stable(feature = "neon_intrinsics", since = "1.59.0")
51580)]
51581#[cfg_attr(
51582 target_arch = "arm",
51583 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51584)]
51585pub fn vrsubhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t {
51586 unsafe extern "unadjusted" {
51587 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsubhn.v2i32")]
51588 #[cfg_attr(
51589 any(target_arch = "aarch64", target_arch = "arm64ec"),
51590 link_name = "llvm.aarch64.neon.rsubhn.v2i32"
51591 )]
51592 fn _vrsubhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t;
51593 }
51594 unsafe { _vrsubhn_s64(a, b) }
51595}
51596#[doc = "Rounding subtract returning high narrow"]
51597#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u16)"]
51598#[inline]
51599#[cfg(target_endian = "little")]
51600#[target_feature(enable = "neon")]
51601#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51602#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
51603#[cfg_attr(
51604 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51605 assert_instr(rsubhn)
51606)]
51607#[cfg_attr(
51608 not(target_arch = "arm"),
51609 stable(feature = "neon_intrinsics", since = "1.59.0")
51610)]
51611#[cfg_attr(
51612 target_arch = "arm",
51613 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51614)]
51615pub fn vrsubhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
51616 unsafe { transmute(vrsubhn_s16(transmute(a), transmute(b))) }
51617}
51618#[doc = "Rounding subtract returning high narrow"]
51619#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u16)"]
51620#[inline]
51621#[cfg(target_endian = "big")]
51622#[target_feature(enable = "neon")]
51623#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51624#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
51625#[cfg_attr(
51626 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51627 assert_instr(rsubhn)
51628)]
51629#[cfg_attr(
51630 not(target_arch = "arm"),
51631 stable(feature = "neon_intrinsics", since = "1.59.0")
51632)]
51633#[cfg_attr(
51634 target_arch = "arm",
51635 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51636)]
51637pub fn vrsubhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
51638 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51639 let b: uint16x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
51640 unsafe {
51641 let ret_val: uint8x8_t = transmute(vrsubhn_s16(transmute(a), transmute(b)));
51642 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
51643 }
51644}
51645#[doc = "Rounding subtract returning high narrow"]
51646#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u32)"]
51647#[inline]
51648#[cfg(target_endian = "little")]
51649#[target_feature(enable = "neon")]
51650#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51651#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
51652#[cfg_attr(
51653 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51654 assert_instr(rsubhn)
51655)]
51656#[cfg_attr(
51657 not(target_arch = "arm"),
51658 stable(feature = "neon_intrinsics", since = "1.59.0")
51659)]
51660#[cfg_attr(
51661 target_arch = "arm",
51662 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51663)]
51664pub fn vrsubhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
51665 unsafe { transmute(vrsubhn_s32(transmute(a), transmute(b))) }
51666}
51667#[doc = "Rounding subtract returning high narrow"]
51668#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u32)"]
51669#[inline]
51670#[cfg(target_endian = "big")]
51671#[target_feature(enable = "neon")]
51672#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51673#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
51674#[cfg_attr(
51675 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51676 assert_instr(rsubhn)
51677)]
51678#[cfg_attr(
51679 not(target_arch = "arm"),
51680 stable(feature = "neon_intrinsics", since = "1.59.0")
51681)]
51682#[cfg_attr(
51683 target_arch = "arm",
51684 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51685)]
51686pub fn vrsubhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
51687 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
51688 let b: uint32x4_t = unsafe { simd_shuffle!(b, b, [3, 2, 1, 0]) };
51689 unsafe {
51690 let ret_val: uint16x4_t = transmute(vrsubhn_s32(transmute(a), transmute(b)));
51691 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
51692 }
51693}
51694#[doc = "Rounding subtract returning high narrow"]
51695#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u64)"]
51696#[inline]
51697#[cfg(target_endian = "little")]
51698#[target_feature(enable = "neon")]
51699#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51700#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
51701#[cfg_attr(
51702 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51703 assert_instr(rsubhn)
51704)]
51705#[cfg_attr(
51706 not(target_arch = "arm"),
51707 stable(feature = "neon_intrinsics", since = "1.59.0")
51708)]
51709#[cfg_attr(
51710 target_arch = "arm",
51711 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51712)]
51713pub fn vrsubhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
51714 unsafe { transmute(vrsubhn_s64(transmute(a), transmute(b))) }
51715}
51716#[doc = "Rounding subtract returning high narrow"]
51717#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u64)"]
51718#[inline]
51719#[cfg(target_endian = "big")]
51720#[target_feature(enable = "neon")]
51721#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51722#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
51723#[cfg_attr(
51724 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51725 assert_instr(rsubhn)
51726)]
51727#[cfg_attr(
51728 not(target_arch = "arm"),
51729 stable(feature = "neon_intrinsics", since = "1.59.0")
51730)]
51731#[cfg_attr(
51732 target_arch = "arm",
51733 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51734)]
51735pub fn vrsubhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
51736 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
51737 let b: uint64x2_t = unsafe { simd_shuffle!(b, b, [1, 0]) };
51738 unsafe {
51739 let ret_val: uint32x2_t = transmute(vrsubhn_s64(transmute(a), transmute(b)));
51740 simd_shuffle!(ret_val, ret_val, [1, 0])
51741 }
51742}
51743#[doc = "Insert vector element from another vector element"]
51744#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_f16)"]
51745#[inline]
51746#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
51747#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
51748#[cfg_attr(
51749 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51750 assert_instr(nop, LANE = 0)
51751)]
51752#[rustc_legacy_const_generics(2)]
51753#[target_feature(enable = "neon,fp16")]
51754#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
51755#[cfg(not(target_arch = "arm64ec"))]
51756pub fn vset_lane_f16<const LANE: i32>(a: f16, b: float16x4_t) -> float16x4_t {
51757 static_assert_uimm_bits!(LANE, 2);
51758 unsafe { simd_insert!(b, LANE as u32, a) }
51759}
51760#[doc = "Insert vector element from another vector element"]
51761#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_f16)"]
51762#[inline]
51763#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
51764#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
51765#[cfg_attr(
51766 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51767 assert_instr(nop, LANE = 0)
51768)]
51769#[rustc_legacy_const_generics(2)]
51770#[target_feature(enable = "neon,fp16")]
51771#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
51772#[cfg(not(target_arch = "arm64ec"))]
51773pub fn vsetq_lane_f16<const LANE: i32>(a: f16, b: float16x8_t) -> float16x8_t {
51774 static_assert_uimm_bits!(LANE, 3);
51775 unsafe { simd_insert!(b, LANE as u32, a) }
51776}
51777#[doc = "Insert vector element from another vector element"]
51778#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_f32)"]
51779#[inline]
51780#[target_feature(enable = "neon")]
51781#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51782#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
51783#[cfg_attr(
51784 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51785 assert_instr(nop, LANE = 0)
51786)]
51787#[rustc_legacy_const_generics(2)]
51788#[cfg_attr(
51789 not(target_arch = "arm"),
51790 stable(feature = "neon_intrinsics", since = "1.59.0")
51791)]
51792#[cfg_attr(
51793 target_arch = "arm",
51794 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51795)]
51796pub fn vset_lane_f32<const LANE: i32>(a: f32, b: float32x2_t) -> float32x2_t {
51797 static_assert_uimm_bits!(LANE, 1);
51798 unsafe { simd_insert!(b, LANE as u32, a) }
51799}
51800#[doc = "Insert vector element from another vector element"]
51801#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_f32)"]
51802#[inline]
51803#[target_feature(enable = "neon")]
51804#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51805#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
51806#[cfg_attr(
51807 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51808 assert_instr(nop, LANE = 0)
51809)]
51810#[rustc_legacy_const_generics(2)]
51811#[cfg_attr(
51812 not(target_arch = "arm"),
51813 stable(feature = "neon_intrinsics", since = "1.59.0")
51814)]
51815#[cfg_attr(
51816 target_arch = "arm",
51817 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51818)]
51819pub fn vsetq_lane_f32<const LANE: i32>(a: f32, b: float32x4_t) -> float32x4_t {
51820 static_assert_uimm_bits!(LANE, 2);
51821 unsafe { simd_insert!(b, LANE as u32, a) }
51822}
51823#[doc = "Insert vector element from another vector element"]
51824#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_s8)"]
51825#[inline]
51826#[target_feature(enable = "neon")]
51827#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51828#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
51829#[cfg_attr(
51830 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51831 assert_instr(nop, LANE = 0)
51832)]
51833#[rustc_legacy_const_generics(2)]
51834#[cfg_attr(
51835 not(target_arch = "arm"),
51836 stable(feature = "neon_intrinsics", since = "1.59.0")
51837)]
51838#[cfg_attr(
51839 target_arch = "arm",
51840 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51841)]
51842pub fn vset_lane_s8<const LANE: i32>(a: i8, b: int8x8_t) -> int8x8_t {
51843 static_assert_uimm_bits!(LANE, 3);
51844 unsafe { simd_insert!(b, LANE as u32, a) }
51845}
51846#[doc = "Insert vector element from another vector element"]
51847#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_s8)"]
51848#[inline]
51849#[target_feature(enable = "neon")]
51850#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51851#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
51852#[cfg_attr(
51853 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51854 assert_instr(nop, LANE = 0)
51855)]
51856#[rustc_legacy_const_generics(2)]
51857#[cfg_attr(
51858 not(target_arch = "arm"),
51859 stable(feature = "neon_intrinsics", since = "1.59.0")
51860)]
51861#[cfg_attr(
51862 target_arch = "arm",
51863 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51864)]
51865pub fn vsetq_lane_s8<const LANE: i32>(a: i8, b: int8x16_t) -> int8x16_t {
51866 static_assert_uimm_bits!(LANE, 4);
51867 unsafe { simd_insert!(b, LANE as u32, a) }
51868}
51869#[doc = "Insert vector element from another vector element"]
51870#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_s16)"]
51871#[inline]
51872#[target_feature(enable = "neon")]
51873#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51874#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
51875#[cfg_attr(
51876 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51877 assert_instr(nop, LANE = 0)
51878)]
51879#[rustc_legacy_const_generics(2)]
51880#[cfg_attr(
51881 not(target_arch = "arm"),
51882 stable(feature = "neon_intrinsics", since = "1.59.0")
51883)]
51884#[cfg_attr(
51885 target_arch = "arm",
51886 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51887)]
51888pub fn vset_lane_s16<const LANE: i32>(a: i16, b: int16x4_t) -> int16x4_t {
51889 static_assert_uimm_bits!(LANE, 2);
51890 unsafe { simd_insert!(b, LANE as u32, a) }
51891}
51892#[doc = "Insert vector element from another vector element"]
51893#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_s16)"]
51894#[inline]
51895#[target_feature(enable = "neon")]
51896#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51897#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
51898#[cfg_attr(
51899 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51900 assert_instr(nop, LANE = 0)
51901)]
51902#[rustc_legacy_const_generics(2)]
51903#[cfg_attr(
51904 not(target_arch = "arm"),
51905 stable(feature = "neon_intrinsics", since = "1.59.0")
51906)]
51907#[cfg_attr(
51908 target_arch = "arm",
51909 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51910)]
51911pub fn vsetq_lane_s16<const LANE: i32>(a: i16, b: int16x8_t) -> int16x8_t {
51912 static_assert_uimm_bits!(LANE, 3);
51913 unsafe { simd_insert!(b, LANE as u32, a) }
51914}
51915#[doc = "Insert vector element from another vector element"]
51916#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_s32)"]
51917#[inline]
51918#[target_feature(enable = "neon")]
51919#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51920#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
51921#[cfg_attr(
51922 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51923 assert_instr(nop, LANE = 0)
51924)]
51925#[rustc_legacy_const_generics(2)]
51926#[cfg_attr(
51927 not(target_arch = "arm"),
51928 stable(feature = "neon_intrinsics", since = "1.59.0")
51929)]
51930#[cfg_attr(
51931 target_arch = "arm",
51932 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51933)]
51934pub fn vset_lane_s32<const LANE: i32>(a: i32, b: int32x2_t) -> int32x2_t {
51935 static_assert_uimm_bits!(LANE, 1);
51936 unsafe { simd_insert!(b, LANE as u32, a) }
51937}
51938#[doc = "Insert vector element from another vector element"]
51939#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_s32)"]
51940#[inline]
51941#[target_feature(enable = "neon")]
51942#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51943#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
51944#[cfg_attr(
51945 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51946 assert_instr(nop, LANE = 0)
51947)]
51948#[rustc_legacy_const_generics(2)]
51949#[cfg_attr(
51950 not(target_arch = "arm"),
51951 stable(feature = "neon_intrinsics", since = "1.59.0")
51952)]
51953#[cfg_attr(
51954 target_arch = "arm",
51955 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51956)]
51957pub fn vsetq_lane_s32<const LANE: i32>(a: i32, b: int32x4_t) -> int32x4_t {
51958 static_assert_uimm_bits!(LANE, 2);
51959 unsafe { simd_insert!(b, LANE as u32, a) }
51960}
51961#[doc = "Insert vector element from another vector element"]
51962#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_s64)"]
51963#[inline]
51964#[target_feature(enable = "neon")]
51965#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51966#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
51967#[cfg_attr(
51968 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51969 assert_instr(nop, LANE = 0)
51970)]
51971#[rustc_legacy_const_generics(2)]
51972#[cfg_attr(
51973 not(target_arch = "arm"),
51974 stable(feature = "neon_intrinsics", since = "1.59.0")
51975)]
51976#[cfg_attr(
51977 target_arch = "arm",
51978 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51979)]
51980pub fn vsetq_lane_s64<const LANE: i32>(a: i64, b: int64x2_t) -> int64x2_t {
51981 static_assert_uimm_bits!(LANE, 1);
51982 unsafe { simd_insert!(b, LANE as u32, a) }
51983}
51984#[doc = "Insert vector element from another vector element"]
51985#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_u8)"]
51986#[inline]
51987#[target_feature(enable = "neon")]
51988#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51989#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
51990#[cfg_attr(
51991 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51992 assert_instr(nop, LANE = 0)
51993)]
51994#[rustc_legacy_const_generics(2)]
51995#[cfg_attr(
51996 not(target_arch = "arm"),
51997 stable(feature = "neon_intrinsics", since = "1.59.0")
51998)]
51999#[cfg_attr(
52000 target_arch = "arm",
52001 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52002)]
52003pub fn vset_lane_u8<const LANE: i32>(a: u8, b: uint8x8_t) -> uint8x8_t {
52004 static_assert_uimm_bits!(LANE, 3);
52005 unsafe { simd_insert!(b, LANE as u32, a) }
52006}
52007#[doc = "Insert vector element from another vector element"]
52008#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_u8)"]
52009#[inline]
52010#[target_feature(enable = "neon")]
52011#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52012#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
52013#[cfg_attr(
52014 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52015 assert_instr(nop, LANE = 0)
52016)]
52017#[rustc_legacy_const_generics(2)]
52018#[cfg_attr(
52019 not(target_arch = "arm"),
52020 stable(feature = "neon_intrinsics", since = "1.59.0")
52021)]
52022#[cfg_attr(
52023 target_arch = "arm",
52024 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52025)]
52026pub fn vsetq_lane_u8<const LANE: i32>(a: u8, b: uint8x16_t) -> uint8x16_t {
52027 static_assert_uimm_bits!(LANE, 4);
52028 unsafe { simd_insert!(b, LANE as u32, a) }
52029}
52030#[doc = "Insert vector element from another vector element"]
52031#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_u16)"]
52032#[inline]
52033#[target_feature(enable = "neon")]
52034#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52035#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
52036#[cfg_attr(
52037 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52038 assert_instr(nop, LANE = 0)
52039)]
52040#[rustc_legacy_const_generics(2)]
52041#[cfg_attr(
52042 not(target_arch = "arm"),
52043 stable(feature = "neon_intrinsics", since = "1.59.0")
52044)]
52045#[cfg_attr(
52046 target_arch = "arm",
52047 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52048)]
52049pub fn vset_lane_u16<const LANE: i32>(a: u16, b: uint16x4_t) -> uint16x4_t {
52050 static_assert_uimm_bits!(LANE, 2);
52051 unsafe { simd_insert!(b, LANE as u32, a) }
52052}
52053#[doc = "Insert vector element from another vector element"]
52054#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_u16)"]
52055#[inline]
52056#[target_feature(enable = "neon")]
52057#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52058#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
52059#[cfg_attr(
52060 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52061 assert_instr(nop, LANE = 0)
52062)]
52063#[rustc_legacy_const_generics(2)]
52064#[cfg_attr(
52065 not(target_arch = "arm"),
52066 stable(feature = "neon_intrinsics", since = "1.59.0")
52067)]
52068#[cfg_attr(
52069 target_arch = "arm",
52070 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52071)]
52072pub fn vsetq_lane_u16<const LANE: i32>(a: u16, b: uint16x8_t) -> uint16x8_t {
52073 static_assert_uimm_bits!(LANE, 3);
52074 unsafe { simd_insert!(b, LANE as u32, a) }
52075}
52076#[doc = "Insert vector element from another vector element"]
52077#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_u32)"]
52078#[inline]
52079#[target_feature(enable = "neon")]
52080#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52081#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
52082#[cfg_attr(
52083 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52084 assert_instr(nop, LANE = 0)
52085)]
52086#[rustc_legacy_const_generics(2)]
52087#[cfg_attr(
52088 not(target_arch = "arm"),
52089 stable(feature = "neon_intrinsics", since = "1.59.0")
52090)]
52091#[cfg_attr(
52092 target_arch = "arm",
52093 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52094)]
52095pub fn vset_lane_u32<const LANE: i32>(a: u32, b: uint32x2_t) -> uint32x2_t {
52096 static_assert_uimm_bits!(LANE, 1);
52097 unsafe { simd_insert!(b, LANE as u32, a) }
52098}
52099#[doc = "Insert vector element from another vector element"]
52100#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_u32)"]
52101#[inline]
52102#[target_feature(enable = "neon")]
52103#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52104#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
52105#[cfg_attr(
52106 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52107 assert_instr(nop, LANE = 0)
52108)]
52109#[rustc_legacy_const_generics(2)]
52110#[cfg_attr(
52111 not(target_arch = "arm"),
52112 stable(feature = "neon_intrinsics", since = "1.59.0")
52113)]
52114#[cfg_attr(
52115 target_arch = "arm",
52116 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52117)]
52118pub fn vsetq_lane_u32<const LANE: i32>(a: u32, b: uint32x4_t) -> uint32x4_t {
52119 static_assert_uimm_bits!(LANE, 2);
52120 unsafe { simd_insert!(b, LANE as u32, a) }
52121}
52122#[doc = "Insert vector element from another vector element"]
52123#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_u64)"]
52124#[inline]
52125#[target_feature(enable = "neon")]
52126#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52127#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
52128#[cfg_attr(
52129 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52130 assert_instr(nop, LANE = 0)
52131)]
52132#[rustc_legacy_const_generics(2)]
52133#[cfg_attr(
52134 not(target_arch = "arm"),
52135 stable(feature = "neon_intrinsics", since = "1.59.0")
52136)]
52137#[cfg_attr(
52138 target_arch = "arm",
52139 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52140)]
52141pub fn vsetq_lane_u64<const LANE: i32>(a: u64, b: uint64x2_t) -> uint64x2_t {
52142 static_assert_uimm_bits!(LANE, 1);
52143 unsafe { simd_insert!(b, LANE as u32, a) }
52144}
52145#[doc = "Insert vector element from another vector element"]
52146#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_p8)"]
52147#[inline]
52148#[target_feature(enable = "neon")]
52149#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52150#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
52151#[cfg_attr(
52152 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52153 assert_instr(nop, LANE = 0)
52154)]
52155#[rustc_legacy_const_generics(2)]
52156#[cfg_attr(
52157 not(target_arch = "arm"),
52158 stable(feature = "neon_intrinsics", since = "1.59.0")
52159)]
52160#[cfg_attr(
52161 target_arch = "arm",
52162 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52163)]
52164pub fn vset_lane_p8<const LANE: i32>(a: p8, b: poly8x8_t) -> poly8x8_t {
52165 static_assert_uimm_bits!(LANE, 3);
52166 unsafe { simd_insert!(b, LANE as u32, a) }
52167}
52168#[doc = "Insert vector element from another vector element"]
52169#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_p8)"]
52170#[inline]
52171#[target_feature(enable = "neon")]
52172#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52173#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
52174#[cfg_attr(
52175 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52176 assert_instr(nop, LANE = 0)
52177)]
52178#[rustc_legacy_const_generics(2)]
52179#[cfg_attr(
52180 not(target_arch = "arm"),
52181 stable(feature = "neon_intrinsics", since = "1.59.0")
52182)]
52183#[cfg_attr(
52184 target_arch = "arm",
52185 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52186)]
52187pub fn vsetq_lane_p8<const LANE: i32>(a: p8, b: poly8x16_t) -> poly8x16_t {
52188 static_assert_uimm_bits!(LANE, 4);
52189 unsafe { simd_insert!(b, LANE as u32, a) }
52190}
52191#[doc = "Insert vector element from another vector element"]
52192#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_p16)"]
52193#[inline]
52194#[target_feature(enable = "neon")]
52195#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52196#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
52197#[cfg_attr(
52198 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52199 assert_instr(nop, LANE = 0)
52200)]
52201#[rustc_legacy_const_generics(2)]
52202#[cfg_attr(
52203 not(target_arch = "arm"),
52204 stable(feature = "neon_intrinsics", since = "1.59.0")
52205)]
52206#[cfg_attr(
52207 target_arch = "arm",
52208 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52209)]
52210pub fn vset_lane_p16<const LANE: i32>(a: p16, b: poly16x4_t) -> poly16x4_t {
52211 static_assert_uimm_bits!(LANE, 2);
52212 unsafe { simd_insert!(b, LANE as u32, a) }
52213}
52214#[doc = "Insert vector element from another vector element"]
52215#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_p16)"]
52216#[inline]
52217#[target_feature(enable = "neon")]
52218#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52219#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
52220#[cfg_attr(
52221 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52222 assert_instr(nop, LANE = 0)
52223)]
52224#[rustc_legacy_const_generics(2)]
52225#[cfg_attr(
52226 not(target_arch = "arm"),
52227 stable(feature = "neon_intrinsics", since = "1.59.0")
52228)]
52229#[cfg_attr(
52230 target_arch = "arm",
52231 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52232)]
52233pub fn vsetq_lane_p16<const LANE: i32>(a: p16, b: poly16x8_t) -> poly16x8_t {
52234 static_assert_uimm_bits!(LANE, 3);
52235 unsafe { simd_insert!(b, LANE as u32, a) }
52236}
52237#[doc = "Insert vector element from another vector element"]
52238#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_p64)"]
52239#[inline]
52240#[target_feature(enable = "neon,aes")]
52241#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
52242#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
52243#[cfg_attr(
52244 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52245 assert_instr(nop, LANE = 0)
52246)]
52247#[rustc_legacy_const_generics(2)]
52248#[cfg_attr(
52249 not(target_arch = "arm"),
52250 stable(feature = "neon_intrinsics", since = "1.59.0")
52251)]
52252#[cfg_attr(
52253 target_arch = "arm",
52254 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52255)]
52256pub fn vset_lane_p64<const LANE: i32>(a: p64, b: poly64x1_t) -> poly64x1_t {
52257 static_assert!(LANE == 0);
52258 unsafe { simd_insert!(b, LANE as u32, a) }
52259}
52260#[doc = "Insert vector element from another vector element"]
52261#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_s64)"]
52262#[inline]
52263#[target_feature(enable = "neon")]
52264#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52265#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
52266#[cfg_attr(
52267 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52268 assert_instr(nop, LANE = 0)
52269)]
52270#[rustc_legacy_const_generics(2)]
52271#[cfg_attr(
52272 not(target_arch = "arm"),
52273 stable(feature = "neon_intrinsics", since = "1.59.0")
52274)]
52275#[cfg_attr(
52276 target_arch = "arm",
52277 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52278)]
52279pub fn vset_lane_s64<const LANE: i32>(a: i64, b: int64x1_t) -> int64x1_t {
52280 static_assert!(LANE == 0);
52281 unsafe { simd_insert!(b, LANE as u32, a) }
52282}
52283#[doc = "Insert vector element from another vector element"]
52284#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_u64)"]
52285#[inline]
52286#[target_feature(enable = "neon")]
52287#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52288#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
52289#[cfg_attr(
52290 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52291 assert_instr(nop, LANE = 0)
52292)]
52293#[rustc_legacy_const_generics(2)]
52294#[cfg_attr(
52295 not(target_arch = "arm"),
52296 stable(feature = "neon_intrinsics", since = "1.59.0")
52297)]
52298#[cfg_attr(
52299 target_arch = "arm",
52300 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52301)]
52302pub fn vset_lane_u64<const LANE: i32>(a: u64, b: uint64x1_t) -> uint64x1_t {
52303 static_assert!(LANE == 0);
52304 unsafe { simd_insert!(b, LANE as u32, a) }
52305}
52306#[doc = "Insert vector element from another vector element"]
52307#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_p64)"]
52308#[inline]
52309#[target_feature(enable = "neon,aes")]
52310#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
52311#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
52312#[cfg_attr(
52313 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52314 assert_instr(nop, LANE = 0)
52315)]
52316#[rustc_legacy_const_generics(2)]
52317#[cfg_attr(
52318 not(target_arch = "arm"),
52319 stable(feature = "neon_intrinsics", since = "1.59.0")
52320)]
52321#[cfg_attr(
52322 target_arch = "arm",
52323 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52324)]
52325pub fn vsetq_lane_p64<const LANE: i32>(a: p64, b: poly64x2_t) -> poly64x2_t {
52326 static_assert_uimm_bits!(LANE, 1);
52327 unsafe { simd_insert!(b, LANE as u32, a) }
52328}
52329#[doc = "SHA1 hash update accelerator, choose."]
52330#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1cq_u32)"]
52331#[inline]
52332#[target_feature(enable = "sha2")]
52333#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
52334#[cfg_attr(test, assert_instr(sha1c))]
52335#[cfg_attr(
52336 target_arch = "arm",
52337 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52338)]
52339#[cfg_attr(
52340 not(target_arch = "arm"),
52341 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
52342)]
52343pub fn vsha1cq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t {
52344 unsafe extern "unadjusted" {
52345 #[cfg_attr(
52346 any(target_arch = "aarch64", target_arch = "arm64ec"),
52347 link_name = "llvm.aarch64.crypto.sha1c"
52348 )]
52349 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1c")]
52350 fn _vsha1cq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t;
52351 }
52352 unsafe { _vsha1cq_u32(hash_abcd, hash_e, wk) }
52353}
52354#[doc = "SHA1 fixed rotate."]
52355#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1h_u32)"]
52356#[inline]
52357#[target_feature(enable = "sha2")]
52358#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
52359#[cfg_attr(test, assert_instr(sha1h))]
52360#[cfg_attr(
52361 target_arch = "arm",
52362 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52363)]
52364#[cfg_attr(
52365 not(target_arch = "arm"),
52366 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
52367)]
52368pub fn vsha1h_u32(hash_e: u32) -> u32 {
52369 unsafe extern "unadjusted" {
52370 #[cfg_attr(
52371 any(target_arch = "aarch64", target_arch = "arm64ec"),
52372 link_name = "llvm.aarch64.crypto.sha1h"
52373 )]
52374 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1h")]
52375 fn _vsha1h_u32(hash_e: u32) -> u32;
52376 }
52377 unsafe { _vsha1h_u32(hash_e) }
52378}
52379#[doc = "SHA1 hash update accelerator, majority"]
52380#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1mq_u32)"]
52381#[inline]
52382#[target_feature(enable = "sha2")]
52383#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
52384#[cfg_attr(test, assert_instr(sha1m))]
52385#[cfg_attr(
52386 target_arch = "arm",
52387 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52388)]
52389#[cfg_attr(
52390 not(target_arch = "arm"),
52391 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
52392)]
52393pub fn vsha1mq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t {
52394 unsafe extern "unadjusted" {
52395 #[cfg_attr(
52396 any(target_arch = "aarch64", target_arch = "arm64ec"),
52397 link_name = "llvm.aarch64.crypto.sha1m"
52398 )]
52399 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1m")]
52400 fn _vsha1mq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t;
52401 }
52402 unsafe { _vsha1mq_u32(hash_abcd, hash_e, wk) }
52403}
52404#[doc = "SHA1 hash update accelerator, parity"]
52405#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1pq_u32)"]
52406#[inline]
52407#[target_feature(enable = "sha2")]
52408#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
52409#[cfg_attr(test, assert_instr(sha1p))]
52410#[cfg_attr(
52411 target_arch = "arm",
52412 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52413)]
52414#[cfg_attr(
52415 not(target_arch = "arm"),
52416 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
52417)]
52418pub fn vsha1pq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t {
52419 unsafe extern "unadjusted" {
52420 #[cfg_attr(
52421 any(target_arch = "aarch64", target_arch = "arm64ec"),
52422 link_name = "llvm.aarch64.crypto.sha1p"
52423 )]
52424 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1p")]
52425 fn _vsha1pq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t;
52426 }
52427 unsafe { _vsha1pq_u32(hash_abcd, hash_e, wk) }
52428}
52429#[doc = "SHA1 schedule update accelerator, first part."]
52430#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1su0q_u32)"]
52431#[inline]
52432#[target_feature(enable = "sha2")]
52433#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
52434#[cfg_attr(test, assert_instr(sha1su0))]
52435#[cfg_attr(
52436 target_arch = "arm",
52437 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52438)]
52439#[cfg_attr(
52440 not(target_arch = "arm"),
52441 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
52442)]
52443pub fn vsha1su0q_u32(w0_3: uint32x4_t, w4_7: uint32x4_t, w8_11: uint32x4_t) -> uint32x4_t {
52444 unsafe extern "unadjusted" {
52445 #[cfg_attr(
52446 any(target_arch = "aarch64", target_arch = "arm64ec"),
52447 link_name = "llvm.aarch64.crypto.sha1su0"
52448 )]
52449 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1su0")]
52450 fn _vsha1su0q_u32(w0_3: uint32x4_t, w4_7: uint32x4_t, w8_11: uint32x4_t) -> uint32x4_t;
52451 }
52452 unsafe { _vsha1su0q_u32(w0_3, w4_7, w8_11) }
52453}
52454#[doc = "SHA1 schedule update accelerator, second part."]
52455#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1su1q_u32)"]
52456#[inline]
52457#[target_feature(enable = "sha2")]
52458#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
52459#[cfg_attr(test, assert_instr(sha1su1))]
52460#[cfg_attr(
52461 target_arch = "arm",
52462 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52463)]
52464#[cfg_attr(
52465 not(target_arch = "arm"),
52466 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
52467)]
52468pub fn vsha1su1q_u32(tw0_3: uint32x4_t, w12_15: uint32x4_t) -> uint32x4_t {
52469 unsafe extern "unadjusted" {
52470 #[cfg_attr(
52471 any(target_arch = "aarch64", target_arch = "arm64ec"),
52472 link_name = "llvm.aarch64.crypto.sha1su1"
52473 )]
52474 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1su1")]
52475 fn _vsha1su1q_u32(tw0_3: uint32x4_t, w12_15: uint32x4_t) -> uint32x4_t;
52476 }
52477 unsafe { _vsha1su1q_u32(tw0_3, w12_15) }
52478}
52479#[doc = "SHA1 schedule update accelerator, upper part."]
52480#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha256h2q_u32)"]
52481#[inline]
52482#[target_feature(enable = "sha2")]
52483#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
52484#[cfg_attr(test, assert_instr(sha256h2))]
52485#[cfg_attr(
52486 target_arch = "arm",
52487 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52488)]
52489#[cfg_attr(
52490 not(target_arch = "arm"),
52491 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
52492)]
52493pub fn vsha256h2q_u32(hash_abcd: uint32x4_t, hash_efgh: uint32x4_t, wk: uint32x4_t) -> uint32x4_t {
52494 unsafe extern "unadjusted" {
52495 #[cfg_attr(
52496 any(target_arch = "aarch64", target_arch = "arm64ec"),
52497 link_name = "llvm.aarch64.crypto.sha256h2"
52498 )]
52499 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha256h2")]
52500 fn _vsha256h2q_u32(
52501 hash_abcd: uint32x4_t,
52502 hash_efgh: uint32x4_t,
52503 wk: uint32x4_t,
52504 ) -> uint32x4_t;
52505 }
52506 unsafe { _vsha256h2q_u32(hash_abcd, hash_efgh, wk) }
52507}
52508#[doc = "SHA1 schedule update accelerator, first part."]
52509#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha256hq_u32)"]
52510#[inline]
52511#[target_feature(enable = "sha2")]
52512#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
52513#[cfg_attr(test, assert_instr(sha256h))]
52514#[cfg_attr(
52515 target_arch = "arm",
52516 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52517)]
52518#[cfg_attr(
52519 not(target_arch = "arm"),
52520 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
52521)]
52522pub fn vsha256hq_u32(hash_abcd: uint32x4_t, hash_efgh: uint32x4_t, wk: uint32x4_t) -> uint32x4_t {
52523 unsafe extern "unadjusted" {
52524 #[cfg_attr(
52525 any(target_arch = "aarch64", target_arch = "arm64ec"),
52526 link_name = "llvm.aarch64.crypto.sha256h"
52527 )]
52528 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha256h")]
52529 fn _vsha256hq_u32(
52530 hash_abcd: uint32x4_t,
52531 hash_efgh: uint32x4_t,
52532 wk: uint32x4_t,
52533 ) -> uint32x4_t;
52534 }
52535 unsafe { _vsha256hq_u32(hash_abcd, hash_efgh, wk) }
52536}
52537#[doc = "SHA256 schedule update accelerator, first part."]
52538#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha256su0q_u32)"]
52539#[inline]
52540#[target_feature(enable = "sha2")]
52541#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
52542#[cfg_attr(test, assert_instr(sha256su0))]
52543#[cfg_attr(
52544 target_arch = "arm",
52545 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52546)]
52547#[cfg_attr(
52548 not(target_arch = "arm"),
52549 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
52550)]
52551pub fn vsha256su0q_u32(w0_3: uint32x4_t, w4_7: uint32x4_t) -> uint32x4_t {
52552 unsafe extern "unadjusted" {
52553 #[cfg_attr(
52554 any(target_arch = "aarch64", target_arch = "arm64ec"),
52555 link_name = "llvm.aarch64.crypto.sha256su0"
52556 )]
52557 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha256su0")]
52558 fn _vsha256su0q_u32(w0_3: uint32x4_t, w4_7: uint32x4_t) -> uint32x4_t;
52559 }
52560 unsafe { _vsha256su0q_u32(w0_3, w4_7) }
52561}
52562#[doc = "SHA256 schedule update accelerator, second part."]
52563#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha256su1q_u32)"]
52564#[inline]
52565#[target_feature(enable = "sha2")]
52566#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
52567#[cfg_attr(test, assert_instr(sha256su1))]
52568#[cfg_attr(
52569 target_arch = "arm",
52570 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52571)]
52572#[cfg_attr(
52573 not(target_arch = "arm"),
52574 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
52575)]
52576pub fn vsha256su1q_u32(tw0_3: uint32x4_t, w8_11: uint32x4_t, w12_15: uint32x4_t) -> uint32x4_t {
52577 unsafe extern "unadjusted" {
52578 #[cfg_attr(
52579 any(target_arch = "aarch64", target_arch = "arm64ec"),
52580 link_name = "llvm.aarch64.crypto.sha256su1"
52581 )]
52582 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha256su1")]
52583 fn _vsha256su1q_u32(tw0_3: uint32x4_t, w8_11: uint32x4_t, w12_15: uint32x4_t)
52584 -> uint32x4_t;
52585 }
52586 unsafe { _vsha256su1q_u32(tw0_3, w8_11, w12_15) }
52587}
52588#[doc = "Shift Right and Insert (immediate)"]
52589#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftins_v16i8)"]
52590#[inline]
52591#[target_feature(enable = "neon")]
52592#[cfg(target_arch = "arm")]
52593#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52594#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
52595fn vshiftins_v16i8(a: int8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t {
52596 unsafe extern "unadjusted" {
52597 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v16i8")]
52598 fn _vshiftins_v16i8(a: int8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t;
52599 }
52600 unsafe { _vshiftins_v16i8(a, b, c) }
52601}
52602#[doc = "Shift Right and Insert (immediate)"]
52603#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftins_v1i64)"]
52604#[inline]
52605#[target_feature(enable = "neon")]
52606#[cfg(target_arch = "arm")]
52607#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52608#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
52609fn vshiftins_v1i64(a: int64x1_t, b: int64x1_t, c: int64x1_t) -> int64x1_t {
52610 unsafe extern "unadjusted" {
52611 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v1i64")]
52612 fn _vshiftins_v1i64(a: int64x1_t, b: int64x1_t, c: int64x1_t) -> int64x1_t;
52613 }
52614 unsafe { _vshiftins_v1i64(a, b, c) }
52615}
52616#[doc = "Shift Right and Insert (immediate)"]
52617#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftins_v2i32)"]
52618#[inline]
52619#[target_feature(enable = "neon")]
52620#[cfg(target_arch = "arm")]
52621#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52622#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
52623fn vshiftins_v2i32(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
52624 unsafe extern "unadjusted" {
52625 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v2i32")]
52626 fn _vshiftins_v2i32(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t;
52627 }
52628 unsafe { _vshiftins_v2i32(a, b, c) }
52629}
52630#[doc = "Shift Right and Insert (immediate)"]
52631#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftins_v2i64)"]
52632#[inline]
52633#[target_feature(enable = "neon")]
52634#[cfg(target_arch = "arm")]
52635#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52636#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
52637fn vshiftins_v2i64(a: int64x2_t, b: int64x2_t, c: int64x2_t) -> int64x2_t {
52638 unsafe extern "unadjusted" {
52639 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v2i64")]
52640 fn _vshiftins_v2i64(a: int64x2_t, b: int64x2_t, c: int64x2_t) -> int64x2_t;
52641 }
52642 unsafe { _vshiftins_v2i64(a, b, c) }
52643}
52644#[doc = "Shift Right and Insert (immediate)"]
52645#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftins_v4i16)"]
52646#[inline]
52647#[target_feature(enable = "neon")]
52648#[cfg(target_arch = "arm")]
52649#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52650#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
52651fn vshiftins_v4i16(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
52652 unsafe extern "unadjusted" {
52653 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v4i16")]
52654 fn _vshiftins_v4i16(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t;
52655 }
52656 unsafe { _vshiftins_v4i16(a, b, c) }
52657}
52658#[doc = "Shift Right and Insert (immediate)"]
52659#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftins_v4i32)"]
52660#[inline]
52661#[target_feature(enable = "neon")]
52662#[cfg(target_arch = "arm")]
52663#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52664#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
52665fn vshiftins_v4i32(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
52666 unsafe extern "unadjusted" {
52667 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v4i32")]
52668 fn _vshiftins_v4i32(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t;
52669 }
52670 unsafe { _vshiftins_v4i32(a, b, c) }
52671}
52672#[doc = "Shift Right and Insert (immediate)"]
52673#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftins_v8i16)"]
52674#[inline]
52675#[target_feature(enable = "neon")]
52676#[cfg(target_arch = "arm")]
52677#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52678#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
52679fn vshiftins_v8i16(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
52680 unsafe extern "unadjusted" {
52681 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v8i16")]
52682 fn _vshiftins_v8i16(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t;
52683 }
52684 unsafe { _vshiftins_v8i16(a, b, c) }
52685}
52686#[doc = "Shift Right and Insert (immediate)"]
52687#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftins_v8i8)"]
52688#[inline]
52689#[target_feature(enable = "neon")]
52690#[cfg(target_arch = "arm")]
52691#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52692#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
52693fn vshiftins_v8i8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
52694 unsafe extern "unadjusted" {
52695 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v8i8")]
52696 fn _vshiftins_v8i8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t;
52697 }
52698 unsafe { _vshiftins_v8i8(a, b, c) }
52699}
52700#[doc = "Shift left"]
52701#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_s8)"]
52702#[inline]
52703#[target_feature(enable = "neon")]
52704#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52705#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
52706#[cfg_attr(
52707 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52708 assert_instr(shl, N = 2)
52709)]
52710#[rustc_legacy_const_generics(1)]
52711#[cfg_attr(
52712 not(target_arch = "arm"),
52713 stable(feature = "neon_intrinsics", since = "1.59.0")
52714)]
52715#[cfg_attr(
52716 target_arch = "arm",
52717 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52718)]
52719pub fn vshl_n_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
52720 static_assert_uimm_bits!(N, 3);
52721 unsafe { simd_shl(a, vdup_n_s8(N as _)) }
52722}
52723#[doc = "Shift left"]
52724#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_s8)"]
52725#[inline]
52726#[target_feature(enable = "neon")]
52727#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52728#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
52729#[cfg_attr(
52730 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52731 assert_instr(shl, N = 2)
52732)]
52733#[rustc_legacy_const_generics(1)]
52734#[cfg_attr(
52735 not(target_arch = "arm"),
52736 stable(feature = "neon_intrinsics", since = "1.59.0")
52737)]
52738#[cfg_attr(
52739 target_arch = "arm",
52740 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52741)]
52742pub fn vshlq_n_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
52743 static_assert_uimm_bits!(N, 3);
52744 unsafe { simd_shl(a, vdupq_n_s8(N as _)) }
52745}
52746#[doc = "Shift left"]
52747#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_s16)"]
52748#[inline]
52749#[target_feature(enable = "neon")]
52750#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52751#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
52752#[cfg_attr(
52753 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52754 assert_instr(shl, N = 2)
52755)]
52756#[rustc_legacy_const_generics(1)]
52757#[cfg_attr(
52758 not(target_arch = "arm"),
52759 stable(feature = "neon_intrinsics", since = "1.59.0")
52760)]
52761#[cfg_attr(
52762 target_arch = "arm",
52763 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52764)]
52765pub fn vshl_n_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
52766 static_assert_uimm_bits!(N, 4);
52767 unsafe { simd_shl(a, vdup_n_s16(N as _)) }
52768}
52769#[doc = "Shift left"]
52770#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_s16)"]
52771#[inline]
52772#[target_feature(enable = "neon")]
52773#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52774#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
52775#[cfg_attr(
52776 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52777 assert_instr(shl, N = 2)
52778)]
52779#[rustc_legacy_const_generics(1)]
52780#[cfg_attr(
52781 not(target_arch = "arm"),
52782 stable(feature = "neon_intrinsics", since = "1.59.0")
52783)]
52784#[cfg_attr(
52785 target_arch = "arm",
52786 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52787)]
52788pub fn vshlq_n_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
52789 static_assert_uimm_bits!(N, 4);
52790 unsafe { simd_shl(a, vdupq_n_s16(N as _)) }
52791}
52792#[doc = "Shift left"]
52793#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_s32)"]
52794#[inline]
52795#[target_feature(enable = "neon")]
52796#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52797#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
52798#[cfg_attr(
52799 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52800 assert_instr(shl, N = 2)
52801)]
52802#[rustc_legacy_const_generics(1)]
52803#[cfg_attr(
52804 not(target_arch = "arm"),
52805 stable(feature = "neon_intrinsics", since = "1.59.0")
52806)]
52807#[cfg_attr(
52808 target_arch = "arm",
52809 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52810)]
52811pub fn vshl_n_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
52812 static_assert_uimm_bits!(N, 5);
52813 unsafe { simd_shl(a, vdup_n_s32(N as _)) }
52814}
52815#[doc = "Shift left"]
52816#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_s32)"]
52817#[inline]
52818#[target_feature(enable = "neon")]
52819#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52820#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
52821#[cfg_attr(
52822 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52823 assert_instr(shl, N = 2)
52824)]
52825#[rustc_legacy_const_generics(1)]
52826#[cfg_attr(
52827 not(target_arch = "arm"),
52828 stable(feature = "neon_intrinsics", since = "1.59.0")
52829)]
52830#[cfg_attr(
52831 target_arch = "arm",
52832 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52833)]
52834pub fn vshlq_n_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
52835 static_assert_uimm_bits!(N, 5);
52836 unsafe { simd_shl(a, vdupq_n_s32(N as _)) }
52837}
52838#[doc = "Shift left"]
52839#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_s64)"]
52840#[inline]
52841#[target_feature(enable = "neon")]
52842#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52843#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
52844#[cfg_attr(
52845 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52846 assert_instr(shl, N = 2)
52847)]
52848#[rustc_legacy_const_generics(1)]
52849#[cfg_attr(
52850 not(target_arch = "arm"),
52851 stable(feature = "neon_intrinsics", since = "1.59.0")
52852)]
52853#[cfg_attr(
52854 target_arch = "arm",
52855 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52856)]
52857pub fn vshl_n_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
52858 static_assert_uimm_bits!(N, 6);
52859 unsafe { simd_shl(a, vdup_n_s64(N as _)) }
52860}
52861#[doc = "Shift left"]
52862#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_s64)"]
52863#[inline]
52864#[target_feature(enable = "neon")]
52865#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52866#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
52867#[cfg_attr(
52868 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52869 assert_instr(shl, N = 2)
52870)]
52871#[rustc_legacy_const_generics(1)]
52872#[cfg_attr(
52873 not(target_arch = "arm"),
52874 stable(feature = "neon_intrinsics", since = "1.59.0")
52875)]
52876#[cfg_attr(
52877 target_arch = "arm",
52878 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52879)]
52880pub fn vshlq_n_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
52881 static_assert_uimm_bits!(N, 6);
52882 unsafe { simd_shl(a, vdupq_n_s64(N as _)) }
52883}
52884#[doc = "Shift left"]
52885#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_u8)"]
52886#[inline]
52887#[target_feature(enable = "neon")]
52888#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52889#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
52890#[cfg_attr(
52891 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52892 assert_instr(shl, N = 2)
52893)]
52894#[rustc_legacy_const_generics(1)]
52895#[cfg_attr(
52896 not(target_arch = "arm"),
52897 stable(feature = "neon_intrinsics", since = "1.59.0")
52898)]
52899#[cfg_attr(
52900 target_arch = "arm",
52901 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52902)]
52903pub fn vshl_n_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
52904 static_assert_uimm_bits!(N, 3);
52905 unsafe { simd_shl(a, vdup_n_u8(N as _)) }
52906}
52907#[doc = "Shift left"]
52908#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_u8)"]
52909#[inline]
52910#[target_feature(enable = "neon")]
52911#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52912#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
52913#[cfg_attr(
52914 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52915 assert_instr(shl, N = 2)
52916)]
52917#[rustc_legacy_const_generics(1)]
52918#[cfg_attr(
52919 not(target_arch = "arm"),
52920 stable(feature = "neon_intrinsics", since = "1.59.0")
52921)]
52922#[cfg_attr(
52923 target_arch = "arm",
52924 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52925)]
52926pub fn vshlq_n_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
52927 static_assert_uimm_bits!(N, 3);
52928 unsafe { simd_shl(a, vdupq_n_u8(N as _)) }
52929}
52930#[doc = "Shift left"]
52931#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_u16)"]
52932#[inline]
52933#[target_feature(enable = "neon")]
52934#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52935#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
52936#[cfg_attr(
52937 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52938 assert_instr(shl, N = 2)
52939)]
52940#[rustc_legacy_const_generics(1)]
52941#[cfg_attr(
52942 not(target_arch = "arm"),
52943 stable(feature = "neon_intrinsics", since = "1.59.0")
52944)]
52945#[cfg_attr(
52946 target_arch = "arm",
52947 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52948)]
52949pub fn vshl_n_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
52950 static_assert_uimm_bits!(N, 4);
52951 unsafe { simd_shl(a, vdup_n_u16(N as _)) }
52952}
52953#[doc = "Shift left"]
52954#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_u16)"]
52955#[inline]
52956#[target_feature(enable = "neon")]
52957#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52958#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
52959#[cfg_attr(
52960 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52961 assert_instr(shl, N = 2)
52962)]
52963#[rustc_legacy_const_generics(1)]
52964#[cfg_attr(
52965 not(target_arch = "arm"),
52966 stable(feature = "neon_intrinsics", since = "1.59.0")
52967)]
52968#[cfg_attr(
52969 target_arch = "arm",
52970 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52971)]
52972pub fn vshlq_n_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
52973 static_assert_uimm_bits!(N, 4);
52974 unsafe { simd_shl(a, vdupq_n_u16(N as _)) }
52975}
52976#[doc = "Shift left"]
52977#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_u32)"]
52978#[inline]
52979#[target_feature(enable = "neon")]
52980#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52981#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
52982#[cfg_attr(
52983 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52984 assert_instr(shl, N = 2)
52985)]
52986#[rustc_legacy_const_generics(1)]
52987#[cfg_attr(
52988 not(target_arch = "arm"),
52989 stable(feature = "neon_intrinsics", since = "1.59.0")
52990)]
52991#[cfg_attr(
52992 target_arch = "arm",
52993 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52994)]
52995pub fn vshl_n_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
52996 static_assert_uimm_bits!(N, 5);
52997 unsafe { simd_shl(a, vdup_n_u32(N as _)) }
52998}
52999#[doc = "Shift left"]
53000#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_u32)"]
53001#[inline]
53002#[target_feature(enable = "neon")]
53003#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53004#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
53005#[cfg_attr(
53006 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53007 assert_instr(shl, N = 2)
53008)]
53009#[rustc_legacy_const_generics(1)]
53010#[cfg_attr(
53011 not(target_arch = "arm"),
53012 stable(feature = "neon_intrinsics", since = "1.59.0")
53013)]
53014#[cfg_attr(
53015 target_arch = "arm",
53016 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53017)]
53018pub fn vshlq_n_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
53019 static_assert_uimm_bits!(N, 5);
53020 unsafe { simd_shl(a, vdupq_n_u32(N as _)) }
53021}
53022#[doc = "Shift left"]
53023#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_u64)"]
53024#[inline]
53025#[target_feature(enable = "neon")]
53026#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53027#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
53028#[cfg_attr(
53029 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53030 assert_instr(shl, N = 2)
53031)]
53032#[rustc_legacy_const_generics(1)]
53033#[cfg_attr(
53034 not(target_arch = "arm"),
53035 stable(feature = "neon_intrinsics", since = "1.59.0")
53036)]
53037#[cfg_attr(
53038 target_arch = "arm",
53039 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53040)]
53041pub fn vshl_n_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
53042 static_assert_uimm_bits!(N, 6);
53043 unsafe { simd_shl(a, vdup_n_u64(N as _)) }
53044}
53045#[doc = "Shift left"]
53046#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_u64)"]
53047#[inline]
53048#[target_feature(enable = "neon")]
53049#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53050#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
53051#[cfg_attr(
53052 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53053 assert_instr(shl, N = 2)
53054)]
53055#[rustc_legacy_const_generics(1)]
53056#[cfg_attr(
53057 not(target_arch = "arm"),
53058 stable(feature = "neon_intrinsics", since = "1.59.0")
53059)]
53060#[cfg_attr(
53061 target_arch = "arm",
53062 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53063)]
53064pub fn vshlq_n_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
53065 static_assert_uimm_bits!(N, 6);
53066 unsafe { simd_shl(a, vdupq_n_u64(N as _)) }
53067}
53068#[doc = "Signed Shift left"]
53069#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_s8)"]
53070#[inline]
53071#[target_feature(enable = "neon")]
53072#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53073#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
53074#[cfg_attr(
53075 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53076 assert_instr(sshl)
53077)]
53078#[cfg_attr(
53079 not(target_arch = "arm"),
53080 stable(feature = "neon_intrinsics", since = "1.59.0")
53081)]
53082#[cfg_attr(
53083 target_arch = "arm",
53084 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53085)]
53086pub fn vshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
53087 unsafe extern "unadjusted" {
53088 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v8i8")]
53089 #[cfg_attr(
53090 any(target_arch = "aarch64", target_arch = "arm64ec"),
53091 link_name = "llvm.aarch64.neon.sshl.v8i8"
53092 )]
53093 fn _vshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
53094 }
53095 unsafe { _vshl_s8(a, b) }
53096}
53097#[doc = "Signed Shift left"]
53098#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_s8)"]
53099#[inline]
53100#[target_feature(enable = "neon")]
53101#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53102#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
53103#[cfg_attr(
53104 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53105 assert_instr(sshl)
53106)]
53107#[cfg_attr(
53108 not(target_arch = "arm"),
53109 stable(feature = "neon_intrinsics", since = "1.59.0")
53110)]
53111#[cfg_attr(
53112 target_arch = "arm",
53113 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53114)]
53115pub fn vshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
53116 unsafe extern "unadjusted" {
53117 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v16i8")]
53118 #[cfg_attr(
53119 any(target_arch = "aarch64", target_arch = "arm64ec"),
53120 link_name = "llvm.aarch64.neon.sshl.v16i8"
53121 )]
53122 fn _vshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
53123 }
53124 unsafe { _vshlq_s8(a, b) }
53125}
53126#[doc = "Signed Shift left"]
53127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_s16)"]
53128#[inline]
53129#[target_feature(enable = "neon")]
53130#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53131#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
53132#[cfg_attr(
53133 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53134 assert_instr(sshl)
53135)]
53136#[cfg_attr(
53137 not(target_arch = "arm"),
53138 stable(feature = "neon_intrinsics", since = "1.59.0")
53139)]
53140#[cfg_attr(
53141 target_arch = "arm",
53142 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53143)]
53144pub fn vshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
53145 unsafe extern "unadjusted" {
53146 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v4i16")]
53147 #[cfg_attr(
53148 any(target_arch = "aarch64", target_arch = "arm64ec"),
53149 link_name = "llvm.aarch64.neon.sshl.v4i16"
53150 )]
53151 fn _vshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
53152 }
53153 unsafe { _vshl_s16(a, b) }
53154}
53155#[doc = "Signed Shift left"]
53156#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_s16)"]
53157#[inline]
53158#[target_feature(enable = "neon")]
53159#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53160#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
53161#[cfg_attr(
53162 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53163 assert_instr(sshl)
53164)]
53165#[cfg_attr(
53166 not(target_arch = "arm"),
53167 stable(feature = "neon_intrinsics", since = "1.59.0")
53168)]
53169#[cfg_attr(
53170 target_arch = "arm",
53171 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53172)]
53173pub fn vshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
53174 unsafe extern "unadjusted" {
53175 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v8i16")]
53176 #[cfg_attr(
53177 any(target_arch = "aarch64", target_arch = "arm64ec"),
53178 link_name = "llvm.aarch64.neon.sshl.v8i16"
53179 )]
53180 fn _vshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
53181 }
53182 unsafe { _vshlq_s16(a, b) }
53183}
53184#[doc = "Signed Shift left"]
53185#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_s32)"]
53186#[inline]
53187#[target_feature(enable = "neon")]
53188#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53189#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
53190#[cfg_attr(
53191 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53192 assert_instr(sshl)
53193)]
53194#[cfg_attr(
53195 not(target_arch = "arm"),
53196 stable(feature = "neon_intrinsics", since = "1.59.0")
53197)]
53198#[cfg_attr(
53199 target_arch = "arm",
53200 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53201)]
53202pub fn vshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
53203 unsafe extern "unadjusted" {
53204 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v2i32")]
53205 #[cfg_attr(
53206 any(target_arch = "aarch64", target_arch = "arm64ec"),
53207 link_name = "llvm.aarch64.neon.sshl.v2i32"
53208 )]
53209 fn _vshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
53210 }
53211 unsafe { _vshl_s32(a, b) }
53212}
53213#[doc = "Signed Shift left"]
53214#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_s32)"]
53215#[inline]
53216#[target_feature(enable = "neon")]
53217#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53218#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
53219#[cfg_attr(
53220 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53221 assert_instr(sshl)
53222)]
53223#[cfg_attr(
53224 not(target_arch = "arm"),
53225 stable(feature = "neon_intrinsics", since = "1.59.0")
53226)]
53227#[cfg_attr(
53228 target_arch = "arm",
53229 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53230)]
53231pub fn vshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
53232 unsafe extern "unadjusted" {
53233 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v4i32")]
53234 #[cfg_attr(
53235 any(target_arch = "aarch64", target_arch = "arm64ec"),
53236 link_name = "llvm.aarch64.neon.sshl.v4i32"
53237 )]
53238 fn _vshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
53239 }
53240 unsafe { _vshlq_s32(a, b) }
53241}
53242#[doc = "Signed Shift left"]
53243#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_s64)"]
53244#[inline]
53245#[target_feature(enable = "neon")]
53246#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53247#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
53248#[cfg_attr(
53249 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53250 assert_instr(sshl)
53251)]
53252#[cfg_attr(
53253 not(target_arch = "arm"),
53254 stable(feature = "neon_intrinsics", since = "1.59.0")
53255)]
53256#[cfg_attr(
53257 target_arch = "arm",
53258 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53259)]
53260pub fn vshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
53261 unsafe extern "unadjusted" {
53262 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v1i64")]
53263 #[cfg_attr(
53264 any(target_arch = "aarch64", target_arch = "arm64ec"),
53265 link_name = "llvm.aarch64.neon.sshl.v1i64"
53266 )]
53267 fn _vshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t;
53268 }
53269 unsafe { _vshl_s64(a, b) }
53270}
53271#[doc = "Signed Shift left"]
53272#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_s64)"]
53273#[inline]
53274#[target_feature(enable = "neon")]
53275#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53276#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
53277#[cfg_attr(
53278 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53279 assert_instr(sshl)
53280)]
53281#[cfg_attr(
53282 not(target_arch = "arm"),
53283 stable(feature = "neon_intrinsics", since = "1.59.0")
53284)]
53285#[cfg_attr(
53286 target_arch = "arm",
53287 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53288)]
53289pub fn vshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
53290 unsafe extern "unadjusted" {
53291 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v2i64")]
53292 #[cfg_attr(
53293 any(target_arch = "aarch64", target_arch = "arm64ec"),
53294 link_name = "llvm.aarch64.neon.sshl.v2i64"
53295 )]
53296 fn _vshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t;
53297 }
53298 unsafe { _vshlq_s64(a, b) }
53299}
53300#[doc = "Unsigned Shift left"]
53301#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_u8)"]
53302#[inline]
53303#[target_feature(enable = "neon")]
53304#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53305#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
53306#[cfg_attr(
53307 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53308 assert_instr(ushl)
53309)]
53310#[cfg_attr(
53311 not(target_arch = "arm"),
53312 stable(feature = "neon_intrinsics", since = "1.59.0")
53313)]
53314#[cfg_attr(
53315 target_arch = "arm",
53316 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53317)]
53318pub fn vshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t {
53319 unsafe extern "unadjusted" {
53320 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v8i8")]
53321 #[cfg_attr(
53322 any(target_arch = "aarch64", target_arch = "arm64ec"),
53323 link_name = "llvm.aarch64.neon.ushl.v8i8"
53324 )]
53325 fn _vshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t;
53326 }
53327 unsafe { _vshl_u8(a, b) }
53328}
53329#[doc = "Unsigned Shift left"]
53330#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_u8)"]
53331#[inline]
53332#[target_feature(enable = "neon")]
53333#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53334#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
53335#[cfg_attr(
53336 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53337 assert_instr(ushl)
53338)]
53339#[cfg_attr(
53340 not(target_arch = "arm"),
53341 stable(feature = "neon_intrinsics", since = "1.59.0")
53342)]
53343#[cfg_attr(
53344 target_arch = "arm",
53345 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53346)]
53347pub fn vshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t {
53348 unsafe extern "unadjusted" {
53349 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v16i8")]
53350 #[cfg_attr(
53351 any(target_arch = "aarch64", target_arch = "arm64ec"),
53352 link_name = "llvm.aarch64.neon.ushl.v16i8"
53353 )]
53354 fn _vshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t;
53355 }
53356 unsafe { _vshlq_u8(a, b) }
53357}
53358#[doc = "Unsigned Shift left"]
53359#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_u16)"]
53360#[inline]
53361#[target_feature(enable = "neon")]
53362#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53363#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
53364#[cfg_attr(
53365 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53366 assert_instr(ushl)
53367)]
53368#[cfg_attr(
53369 not(target_arch = "arm"),
53370 stable(feature = "neon_intrinsics", since = "1.59.0")
53371)]
53372#[cfg_attr(
53373 target_arch = "arm",
53374 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53375)]
53376pub fn vshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t {
53377 unsafe extern "unadjusted" {
53378 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v4i16")]
53379 #[cfg_attr(
53380 any(target_arch = "aarch64", target_arch = "arm64ec"),
53381 link_name = "llvm.aarch64.neon.ushl.v4i16"
53382 )]
53383 fn _vshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t;
53384 }
53385 unsafe { _vshl_u16(a, b) }
53386}
53387#[doc = "Unsigned Shift left"]
53388#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_u16)"]
53389#[inline]
53390#[target_feature(enable = "neon")]
53391#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53392#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
53393#[cfg_attr(
53394 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53395 assert_instr(ushl)
53396)]
53397#[cfg_attr(
53398 not(target_arch = "arm"),
53399 stable(feature = "neon_intrinsics", since = "1.59.0")
53400)]
53401#[cfg_attr(
53402 target_arch = "arm",
53403 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53404)]
53405pub fn vshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t {
53406 unsafe extern "unadjusted" {
53407 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v8i16")]
53408 #[cfg_attr(
53409 any(target_arch = "aarch64", target_arch = "arm64ec"),
53410 link_name = "llvm.aarch64.neon.ushl.v8i16"
53411 )]
53412 fn _vshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t;
53413 }
53414 unsafe { _vshlq_u16(a, b) }
53415}
53416#[doc = "Unsigned Shift left"]
53417#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_u32)"]
53418#[inline]
53419#[target_feature(enable = "neon")]
53420#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53421#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
53422#[cfg_attr(
53423 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53424 assert_instr(ushl)
53425)]
53426#[cfg_attr(
53427 not(target_arch = "arm"),
53428 stable(feature = "neon_intrinsics", since = "1.59.0")
53429)]
53430#[cfg_attr(
53431 target_arch = "arm",
53432 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53433)]
53434pub fn vshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t {
53435 unsafe extern "unadjusted" {
53436 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v2i32")]
53437 #[cfg_attr(
53438 any(target_arch = "aarch64", target_arch = "arm64ec"),
53439 link_name = "llvm.aarch64.neon.ushl.v2i32"
53440 )]
53441 fn _vshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t;
53442 }
53443 unsafe { _vshl_u32(a, b) }
53444}
53445#[doc = "Unsigned Shift left"]
53446#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_u32)"]
53447#[inline]
53448#[target_feature(enable = "neon")]
53449#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53450#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
53451#[cfg_attr(
53452 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53453 assert_instr(ushl)
53454)]
53455#[cfg_attr(
53456 not(target_arch = "arm"),
53457 stable(feature = "neon_intrinsics", since = "1.59.0")
53458)]
53459#[cfg_attr(
53460 target_arch = "arm",
53461 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53462)]
53463pub fn vshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t {
53464 unsafe extern "unadjusted" {
53465 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v4i32")]
53466 #[cfg_attr(
53467 any(target_arch = "aarch64", target_arch = "arm64ec"),
53468 link_name = "llvm.aarch64.neon.ushl.v4i32"
53469 )]
53470 fn _vshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t;
53471 }
53472 unsafe { _vshlq_u32(a, b) }
53473}
53474#[doc = "Unsigned Shift left"]
53475#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_u64)"]
53476#[inline]
53477#[target_feature(enable = "neon")]
53478#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53479#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
53480#[cfg_attr(
53481 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53482 assert_instr(ushl)
53483)]
53484#[cfg_attr(
53485 not(target_arch = "arm"),
53486 stable(feature = "neon_intrinsics", since = "1.59.0")
53487)]
53488#[cfg_attr(
53489 target_arch = "arm",
53490 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53491)]
53492pub fn vshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t {
53493 unsafe extern "unadjusted" {
53494 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v1i64")]
53495 #[cfg_attr(
53496 any(target_arch = "aarch64", target_arch = "arm64ec"),
53497 link_name = "llvm.aarch64.neon.ushl.v1i64"
53498 )]
53499 fn _vshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t;
53500 }
53501 unsafe { _vshl_u64(a, b) }
53502}
53503#[doc = "Unsigned Shift left"]
53504#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_u64)"]
53505#[inline]
53506#[target_feature(enable = "neon")]
53507#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53508#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
53509#[cfg_attr(
53510 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53511 assert_instr(ushl)
53512)]
53513#[cfg_attr(
53514 not(target_arch = "arm"),
53515 stable(feature = "neon_intrinsics", since = "1.59.0")
53516)]
53517#[cfg_attr(
53518 target_arch = "arm",
53519 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53520)]
53521pub fn vshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t {
53522 unsafe extern "unadjusted" {
53523 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v2i64")]
53524 #[cfg_attr(
53525 any(target_arch = "aarch64", target_arch = "arm64ec"),
53526 link_name = "llvm.aarch64.neon.ushl.v2i64"
53527 )]
53528 fn _vshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t;
53529 }
53530 unsafe { _vshlq_u64(a, b) }
53531}
53532#[doc = "Signed shift left long"]
53533#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_s16)"]
53534#[inline]
53535#[target_feature(enable = "neon")]
53536#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53537#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.s16", N = 2))]
53538#[cfg_attr(
53539 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53540 assert_instr(sshll, N = 2)
53541)]
53542#[rustc_legacy_const_generics(1)]
53543#[cfg_attr(
53544 not(target_arch = "arm"),
53545 stable(feature = "neon_intrinsics", since = "1.59.0")
53546)]
53547#[cfg_attr(
53548 target_arch = "arm",
53549 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53550)]
53551pub fn vshll_n_s16<const N: i32>(a: int16x4_t) -> int32x4_t {
53552 static_assert!(N >= 0 && N <= 16);
53553 unsafe { simd_shl(simd_cast(a), vdupq_n_s32(N as _)) }
53554}
53555#[doc = "Signed shift left long"]
53556#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_s32)"]
53557#[inline]
53558#[target_feature(enable = "neon")]
53559#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53560#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.s32", N = 2))]
53561#[cfg_attr(
53562 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53563 assert_instr(sshll, N = 2)
53564)]
53565#[rustc_legacy_const_generics(1)]
53566#[cfg_attr(
53567 not(target_arch = "arm"),
53568 stable(feature = "neon_intrinsics", since = "1.59.0")
53569)]
53570#[cfg_attr(
53571 target_arch = "arm",
53572 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53573)]
53574pub fn vshll_n_s32<const N: i32>(a: int32x2_t) -> int64x2_t {
53575 static_assert!(N >= 0 && N <= 32);
53576 unsafe { simd_shl(simd_cast(a), vdupq_n_s64(N as _)) }
53577}
53578#[doc = "Signed shift left long"]
53579#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_s8)"]
53580#[inline]
53581#[target_feature(enable = "neon")]
53582#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53583#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.s8", N = 2))]
53584#[cfg_attr(
53585 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53586 assert_instr(sshll, N = 2)
53587)]
53588#[rustc_legacy_const_generics(1)]
53589#[cfg_attr(
53590 not(target_arch = "arm"),
53591 stable(feature = "neon_intrinsics", since = "1.59.0")
53592)]
53593#[cfg_attr(
53594 target_arch = "arm",
53595 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53596)]
53597pub fn vshll_n_s8<const N: i32>(a: int8x8_t) -> int16x8_t {
53598 static_assert!(N >= 0 && N <= 8);
53599 unsafe { simd_shl(simd_cast(a), vdupq_n_s16(N as _)) }
53600}
53601#[doc = "Signed shift left long"]
53602#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_u16)"]
53603#[inline]
53604#[target_feature(enable = "neon")]
53605#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53606#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.u16", N = 2))]
53607#[cfg_attr(
53608 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53609 assert_instr(ushll, N = 2)
53610)]
53611#[rustc_legacy_const_generics(1)]
53612#[cfg_attr(
53613 not(target_arch = "arm"),
53614 stable(feature = "neon_intrinsics", since = "1.59.0")
53615)]
53616#[cfg_attr(
53617 target_arch = "arm",
53618 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53619)]
53620pub fn vshll_n_u16<const N: i32>(a: uint16x4_t) -> uint32x4_t {
53621 static_assert!(N >= 0 && N <= 16);
53622 unsafe { simd_shl(simd_cast(a), vdupq_n_u32(N as _)) }
53623}
53624#[doc = "Signed shift left long"]
53625#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_u32)"]
53626#[inline]
53627#[target_feature(enable = "neon")]
53628#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53629#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.u32", N = 2))]
53630#[cfg_attr(
53631 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53632 assert_instr(ushll, N = 2)
53633)]
53634#[rustc_legacy_const_generics(1)]
53635#[cfg_attr(
53636 not(target_arch = "arm"),
53637 stable(feature = "neon_intrinsics", since = "1.59.0")
53638)]
53639#[cfg_attr(
53640 target_arch = "arm",
53641 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53642)]
53643pub fn vshll_n_u32<const N: i32>(a: uint32x2_t) -> uint64x2_t {
53644 static_assert!(N >= 0 && N <= 32);
53645 unsafe { simd_shl(simd_cast(a), vdupq_n_u64(N as _)) }
53646}
53647#[doc = "Signed shift left long"]
53648#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_u8)"]
53649#[inline]
53650#[target_feature(enable = "neon")]
53651#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53652#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.u8", N = 2))]
53653#[cfg_attr(
53654 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53655 assert_instr(ushll, N = 2)
53656)]
53657#[rustc_legacy_const_generics(1)]
53658#[cfg_attr(
53659 not(target_arch = "arm"),
53660 stable(feature = "neon_intrinsics", since = "1.59.0")
53661)]
53662#[cfg_attr(
53663 target_arch = "arm",
53664 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53665)]
53666pub fn vshll_n_u8<const N: i32>(a: uint8x8_t) -> uint16x8_t {
53667 static_assert!(N >= 0 && N <= 8);
53668 unsafe { simd_shl(simd_cast(a), vdupq_n_u16(N as _)) }
53669}
53670#[doc = "Shift right"]
53671#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_s8)"]
53672#[inline]
53673#[target_feature(enable = "neon")]
53674#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53675#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s8", N = 2))]
53676#[cfg_attr(
53677 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53678 assert_instr(sshr, N = 2)
53679)]
53680#[rustc_legacy_const_generics(1)]
53681#[cfg_attr(
53682 not(target_arch = "arm"),
53683 stable(feature = "neon_intrinsics", since = "1.59.0")
53684)]
53685#[cfg_attr(
53686 target_arch = "arm",
53687 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53688)]
53689pub fn vshr_n_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
53690 static_assert!(N >= 1 && N <= 8);
53691 let n: i32 = if N == 8 { 7 } else { N };
53692 unsafe { simd_shr(a, vdup_n_s8(n as _)) }
53693}
53694#[doc = "Shift right"]
53695#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_s8)"]
53696#[inline]
53697#[target_feature(enable = "neon")]
53698#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53699#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s8", N = 2))]
53700#[cfg_attr(
53701 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53702 assert_instr(sshr, N = 2)
53703)]
53704#[rustc_legacy_const_generics(1)]
53705#[cfg_attr(
53706 not(target_arch = "arm"),
53707 stable(feature = "neon_intrinsics", since = "1.59.0")
53708)]
53709#[cfg_attr(
53710 target_arch = "arm",
53711 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53712)]
53713pub fn vshrq_n_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
53714 static_assert!(N >= 1 && N <= 8);
53715 let n: i32 = if N == 8 { 7 } else { N };
53716 unsafe { simd_shr(a, vdupq_n_s8(n as _)) }
53717}
53718#[doc = "Shift right"]
53719#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_s16)"]
53720#[inline]
53721#[target_feature(enable = "neon")]
53722#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53723#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s16", N = 2))]
53724#[cfg_attr(
53725 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53726 assert_instr(sshr, N = 2)
53727)]
53728#[rustc_legacy_const_generics(1)]
53729#[cfg_attr(
53730 not(target_arch = "arm"),
53731 stable(feature = "neon_intrinsics", since = "1.59.0")
53732)]
53733#[cfg_attr(
53734 target_arch = "arm",
53735 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53736)]
53737pub fn vshr_n_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
53738 static_assert!(N >= 1 && N <= 16);
53739 let n: i32 = if N == 16 { 15 } else { N };
53740 unsafe { simd_shr(a, vdup_n_s16(n as _)) }
53741}
53742#[doc = "Shift right"]
53743#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_s16)"]
53744#[inline]
53745#[target_feature(enable = "neon")]
53746#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53747#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s16", N = 2))]
53748#[cfg_attr(
53749 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53750 assert_instr(sshr, N = 2)
53751)]
53752#[rustc_legacy_const_generics(1)]
53753#[cfg_attr(
53754 not(target_arch = "arm"),
53755 stable(feature = "neon_intrinsics", since = "1.59.0")
53756)]
53757#[cfg_attr(
53758 target_arch = "arm",
53759 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53760)]
53761pub fn vshrq_n_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
53762 static_assert!(N >= 1 && N <= 16);
53763 let n: i32 = if N == 16 { 15 } else { N };
53764 unsafe { simd_shr(a, vdupq_n_s16(n as _)) }
53765}
53766#[doc = "Shift right"]
53767#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_s32)"]
53768#[inline]
53769#[target_feature(enable = "neon")]
53770#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53771#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s32", N = 2))]
53772#[cfg_attr(
53773 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53774 assert_instr(sshr, N = 2)
53775)]
53776#[rustc_legacy_const_generics(1)]
53777#[cfg_attr(
53778 not(target_arch = "arm"),
53779 stable(feature = "neon_intrinsics", since = "1.59.0")
53780)]
53781#[cfg_attr(
53782 target_arch = "arm",
53783 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53784)]
53785pub fn vshr_n_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
53786 static_assert!(N >= 1 && N <= 32);
53787 let n: i32 = if N == 32 { 31 } else { N };
53788 unsafe { simd_shr(a, vdup_n_s32(n as _)) }
53789}
53790#[doc = "Shift right"]
53791#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_s32)"]
53792#[inline]
53793#[target_feature(enable = "neon")]
53794#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53795#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s32", N = 2))]
53796#[cfg_attr(
53797 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53798 assert_instr(sshr, N = 2)
53799)]
53800#[rustc_legacy_const_generics(1)]
53801#[cfg_attr(
53802 not(target_arch = "arm"),
53803 stable(feature = "neon_intrinsics", since = "1.59.0")
53804)]
53805#[cfg_attr(
53806 target_arch = "arm",
53807 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53808)]
53809pub fn vshrq_n_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
53810 static_assert!(N >= 1 && N <= 32);
53811 let n: i32 = if N == 32 { 31 } else { N };
53812 unsafe { simd_shr(a, vdupq_n_s32(n as _)) }
53813}
53814#[doc = "Shift right"]
53815#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_s64)"]
53816#[inline]
53817#[target_feature(enable = "neon")]
53818#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53819#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s64", N = 2))]
53820#[cfg_attr(
53821 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53822 assert_instr(sshr, N = 2)
53823)]
53824#[rustc_legacy_const_generics(1)]
53825#[cfg_attr(
53826 not(target_arch = "arm"),
53827 stable(feature = "neon_intrinsics", since = "1.59.0")
53828)]
53829#[cfg_attr(
53830 target_arch = "arm",
53831 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53832)]
53833pub fn vshr_n_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
53834 static_assert!(N >= 1 && N <= 64);
53835 let n: i32 = if N == 64 { 63 } else { N };
53836 unsafe { simd_shr(a, vdup_n_s64(n as _)) }
53837}
53838#[doc = "Shift right"]
53839#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_s64)"]
53840#[inline]
53841#[target_feature(enable = "neon")]
53842#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53843#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s64", N = 2))]
53844#[cfg_attr(
53845 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53846 assert_instr(sshr, N = 2)
53847)]
53848#[rustc_legacy_const_generics(1)]
53849#[cfg_attr(
53850 not(target_arch = "arm"),
53851 stable(feature = "neon_intrinsics", since = "1.59.0")
53852)]
53853#[cfg_attr(
53854 target_arch = "arm",
53855 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53856)]
53857pub fn vshrq_n_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
53858 static_assert!(N >= 1 && N <= 64);
53859 let n: i32 = if N == 64 { 63 } else { N };
53860 unsafe { simd_shr(a, vdupq_n_s64(n as _)) }
53861}
53862#[doc = "Shift right"]
53863#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_u8)"]
53864#[inline]
53865#[target_feature(enable = "neon")]
53866#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53867#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u8", N = 2))]
53868#[cfg_attr(
53869 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53870 assert_instr(ushr, N = 2)
53871)]
53872#[rustc_legacy_const_generics(1)]
53873#[cfg_attr(
53874 not(target_arch = "arm"),
53875 stable(feature = "neon_intrinsics", since = "1.59.0")
53876)]
53877#[cfg_attr(
53878 target_arch = "arm",
53879 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53880)]
53881pub fn vshr_n_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
53882 static_assert!(N >= 1 && N <= 8);
53883 let n: i32 = if N == 8 {
53884 return vdup_n_u8(0);
53885 } else {
53886 N
53887 };
53888 unsafe { simd_shr(a, vdup_n_u8(n as _)) }
53889}
53890#[doc = "Shift right"]
53891#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_u8)"]
53892#[inline]
53893#[target_feature(enable = "neon")]
53894#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53895#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u8", N = 2))]
53896#[cfg_attr(
53897 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53898 assert_instr(ushr, N = 2)
53899)]
53900#[rustc_legacy_const_generics(1)]
53901#[cfg_attr(
53902 not(target_arch = "arm"),
53903 stable(feature = "neon_intrinsics", since = "1.59.0")
53904)]
53905#[cfg_attr(
53906 target_arch = "arm",
53907 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53908)]
53909pub fn vshrq_n_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
53910 static_assert!(N >= 1 && N <= 8);
53911 let n: i32 = if N == 8 {
53912 return vdupq_n_u8(0);
53913 } else {
53914 N
53915 };
53916 unsafe { simd_shr(a, vdupq_n_u8(n as _)) }
53917}
53918#[doc = "Shift right"]
53919#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_u16)"]
53920#[inline]
53921#[target_feature(enable = "neon")]
53922#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53923#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u16", N = 2))]
53924#[cfg_attr(
53925 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53926 assert_instr(ushr, N = 2)
53927)]
53928#[rustc_legacy_const_generics(1)]
53929#[cfg_attr(
53930 not(target_arch = "arm"),
53931 stable(feature = "neon_intrinsics", since = "1.59.0")
53932)]
53933#[cfg_attr(
53934 target_arch = "arm",
53935 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53936)]
53937pub fn vshr_n_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
53938 static_assert!(N >= 1 && N <= 16);
53939 let n: i32 = if N == 16 {
53940 return vdup_n_u16(0);
53941 } else {
53942 N
53943 };
53944 unsafe { simd_shr(a, vdup_n_u16(n as _)) }
53945}
53946#[doc = "Shift right"]
53947#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_u16)"]
53948#[inline]
53949#[target_feature(enable = "neon")]
53950#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53951#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u16", N = 2))]
53952#[cfg_attr(
53953 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53954 assert_instr(ushr, N = 2)
53955)]
53956#[rustc_legacy_const_generics(1)]
53957#[cfg_attr(
53958 not(target_arch = "arm"),
53959 stable(feature = "neon_intrinsics", since = "1.59.0")
53960)]
53961#[cfg_attr(
53962 target_arch = "arm",
53963 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53964)]
53965pub fn vshrq_n_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
53966 static_assert!(N >= 1 && N <= 16);
53967 let n: i32 = if N == 16 {
53968 return vdupq_n_u16(0);
53969 } else {
53970 N
53971 };
53972 unsafe { simd_shr(a, vdupq_n_u16(n as _)) }
53973}
53974#[doc = "Shift right"]
53975#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_u32)"]
53976#[inline]
53977#[target_feature(enable = "neon")]
53978#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53979#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u32", N = 2))]
53980#[cfg_attr(
53981 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53982 assert_instr(ushr, N = 2)
53983)]
53984#[rustc_legacy_const_generics(1)]
53985#[cfg_attr(
53986 not(target_arch = "arm"),
53987 stable(feature = "neon_intrinsics", since = "1.59.0")
53988)]
53989#[cfg_attr(
53990 target_arch = "arm",
53991 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53992)]
53993pub fn vshr_n_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
53994 static_assert!(N >= 1 && N <= 32);
53995 let n: i32 = if N == 32 {
53996 return vdup_n_u32(0);
53997 } else {
53998 N
53999 };
54000 unsafe { simd_shr(a, vdup_n_u32(n as _)) }
54001}
54002#[doc = "Shift right"]
54003#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_u32)"]
54004#[inline]
54005#[target_feature(enable = "neon")]
54006#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54007#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u32", N = 2))]
54008#[cfg_attr(
54009 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54010 assert_instr(ushr, N = 2)
54011)]
54012#[rustc_legacy_const_generics(1)]
54013#[cfg_attr(
54014 not(target_arch = "arm"),
54015 stable(feature = "neon_intrinsics", since = "1.59.0")
54016)]
54017#[cfg_attr(
54018 target_arch = "arm",
54019 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54020)]
54021pub fn vshrq_n_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
54022 static_assert!(N >= 1 && N <= 32);
54023 let n: i32 = if N == 32 {
54024 return vdupq_n_u32(0);
54025 } else {
54026 N
54027 };
54028 unsafe { simd_shr(a, vdupq_n_u32(n as _)) }
54029}
54030#[doc = "Shift right"]
54031#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_u64)"]
54032#[inline]
54033#[target_feature(enable = "neon")]
54034#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54035#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u64", N = 2))]
54036#[cfg_attr(
54037 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54038 assert_instr(ushr, N = 2)
54039)]
54040#[rustc_legacy_const_generics(1)]
54041#[cfg_attr(
54042 not(target_arch = "arm"),
54043 stable(feature = "neon_intrinsics", since = "1.59.0")
54044)]
54045#[cfg_attr(
54046 target_arch = "arm",
54047 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54048)]
54049pub fn vshr_n_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
54050 static_assert!(N >= 1 && N <= 64);
54051 let n: i32 = if N == 64 {
54052 return vdup_n_u64(0);
54053 } else {
54054 N
54055 };
54056 unsafe { simd_shr(a, vdup_n_u64(n as _)) }
54057}
54058#[doc = "Shift right"]
54059#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_u64)"]
54060#[inline]
54061#[target_feature(enable = "neon")]
54062#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54063#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u64", N = 2))]
54064#[cfg_attr(
54065 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54066 assert_instr(ushr, N = 2)
54067)]
54068#[rustc_legacy_const_generics(1)]
54069#[cfg_attr(
54070 not(target_arch = "arm"),
54071 stable(feature = "neon_intrinsics", since = "1.59.0")
54072)]
54073#[cfg_attr(
54074 target_arch = "arm",
54075 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54076)]
54077pub fn vshrq_n_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
54078 static_assert!(N >= 1 && N <= 64);
54079 let n: i32 = if N == 64 {
54080 return vdupq_n_u64(0);
54081 } else {
54082 N
54083 };
54084 unsafe { simd_shr(a, vdupq_n_u64(n as _)) }
54085}
54086#[doc = "Shift right narrow"]
54087#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_s16)"]
54088#[inline]
54089#[target_feature(enable = "neon")]
54090#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54091#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i16", N = 2))]
54092#[cfg_attr(
54093 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54094 assert_instr(shrn, N = 2)
54095)]
54096#[rustc_legacy_const_generics(1)]
54097#[cfg_attr(
54098 not(target_arch = "arm"),
54099 stable(feature = "neon_intrinsics", since = "1.59.0")
54100)]
54101#[cfg_attr(
54102 target_arch = "arm",
54103 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54104)]
54105pub fn vshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
54106 static_assert!(N >= 1 && N <= 8);
54107 unsafe { simd_cast(simd_shr(a, vdupq_n_s16(N as _))) }
54108}
54109#[doc = "Shift right narrow"]
54110#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_s32)"]
54111#[inline]
54112#[target_feature(enable = "neon")]
54113#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54114#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i32", N = 2))]
54115#[cfg_attr(
54116 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54117 assert_instr(shrn, N = 2)
54118)]
54119#[rustc_legacy_const_generics(1)]
54120#[cfg_attr(
54121 not(target_arch = "arm"),
54122 stable(feature = "neon_intrinsics", since = "1.59.0")
54123)]
54124#[cfg_attr(
54125 target_arch = "arm",
54126 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54127)]
54128pub fn vshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
54129 static_assert!(N >= 1 && N <= 16);
54130 unsafe { simd_cast(simd_shr(a, vdupq_n_s32(N as _))) }
54131}
54132#[doc = "Shift right narrow"]
54133#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_s64)"]
54134#[inline]
54135#[target_feature(enable = "neon")]
54136#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54137#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i64", N = 2))]
54138#[cfg_attr(
54139 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54140 assert_instr(shrn, N = 2)
54141)]
54142#[rustc_legacy_const_generics(1)]
54143#[cfg_attr(
54144 not(target_arch = "arm"),
54145 stable(feature = "neon_intrinsics", since = "1.59.0")
54146)]
54147#[cfg_attr(
54148 target_arch = "arm",
54149 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54150)]
54151pub fn vshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
54152 static_assert!(N >= 1 && N <= 32);
54153 unsafe { simd_cast(simd_shr(a, vdupq_n_s64(N as _))) }
54154}
54155#[doc = "Shift right narrow"]
54156#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_u16)"]
54157#[inline]
54158#[target_feature(enable = "neon")]
54159#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54160#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i16", N = 2))]
54161#[cfg_attr(
54162 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54163 assert_instr(shrn, N = 2)
54164)]
54165#[rustc_legacy_const_generics(1)]
54166#[cfg_attr(
54167 not(target_arch = "arm"),
54168 stable(feature = "neon_intrinsics", since = "1.59.0")
54169)]
54170#[cfg_attr(
54171 target_arch = "arm",
54172 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54173)]
54174pub fn vshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
54175 static_assert!(N >= 1 && N <= 8);
54176 unsafe { simd_cast(simd_shr(a, vdupq_n_u16(N as _))) }
54177}
54178#[doc = "Shift right narrow"]
54179#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_u32)"]
54180#[inline]
54181#[target_feature(enable = "neon")]
54182#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54183#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i32", N = 2))]
54184#[cfg_attr(
54185 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54186 assert_instr(shrn, N = 2)
54187)]
54188#[rustc_legacy_const_generics(1)]
54189#[cfg_attr(
54190 not(target_arch = "arm"),
54191 stable(feature = "neon_intrinsics", since = "1.59.0")
54192)]
54193#[cfg_attr(
54194 target_arch = "arm",
54195 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54196)]
54197pub fn vshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
54198 static_assert!(N >= 1 && N <= 16);
54199 unsafe { simd_cast(simd_shr(a, vdupq_n_u32(N as _))) }
54200}
54201#[doc = "Shift right narrow"]
54202#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_u64)"]
54203#[inline]
54204#[target_feature(enable = "neon")]
54205#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54206#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i64", N = 2))]
54207#[cfg_attr(
54208 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54209 assert_instr(shrn, N = 2)
54210)]
54211#[rustc_legacy_const_generics(1)]
54212#[cfg_attr(
54213 not(target_arch = "arm"),
54214 stable(feature = "neon_intrinsics", since = "1.59.0")
54215)]
54216#[cfg_attr(
54217 target_arch = "arm",
54218 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54219)]
54220pub fn vshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
54221 static_assert!(N >= 1 && N <= 32);
54222 unsafe { simd_cast(simd_shr(a, vdupq_n_u64(N as _))) }
54223}
54224#[doc = "Shift Left and Insert (immediate)"]
54225#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_s8)"]
54226#[inline]
54227#[cfg(target_arch = "arm")]
54228#[target_feature(enable = "neon,v7")]
54229#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54230#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
54231#[rustc_legacy_const_generics(2)]
54232pub fn vsli_n_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
54233 static_assert_uimm_bits!(N, 3);
54234 vshiftins_v8i8(a, b, int8x8_t::splat(N as i8))
54235}
54236#[doc = "Shift Left and Insert (immediate)"]
54237#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_s8)"]
54238#[inline]
54239#[cfg(target_arch = "arm")]
54240#[target_feature(enable = "neon,v7")]
54241#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54242#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
54243#[rustc_legacy_const_generics(2)]
54244pub fn vsliq_n_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
54245 static_assert_uimm_bits!(N, 3);
54246 vshiftins_v16i8(a, b, int8x16_t::splat(N as i8))
54247}
54248#[doc = "Shift Left and Insert (immediate)"]
54249#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_s16)"]
54250#[inline]
54251#[cfg(target_arch = "arm")]
54252#[target_feature(enable = "neon,v7")]
54253#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54254#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
54255#[rustc_legacy_const_generics(2)]
54256pub fn vsli_n_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
54257 static_assert_uimm_bits!(N, 4);
54258 vshiftins_v4i16(a, b, int16x4_t::splat(N as i16))
54259}
54260#[doc = "Shift Left and Insert (immediate)"]
54261#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_s16)"]
54262#[inline]
54263#[cfg(target_arch = "arm")]
54264#[target_feature(enable = "neon,v7")]
54265#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54266#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
54267#[rustc_legacy_const_generics(2)]
54268pub fn vsliq_n_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
54269 static_assert_uimm_bits!(N, 4);
54270 vshiftins_v8i16(a, b, int16x8_t::splat(N as i16))
54271}
54272#[doc = "Shift Left and Insert (immediate)"]
54273#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_s32)"]
54274#[inline]
54275#[cfg(target_arch = "arm")]
54276#[target_feature(enable = "neon,v7")]
54277#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54278#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.32", N = 1))]
54279#[rustc_legacy_const_generics(2)]
54280pub fn vsli_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
54281 static_assert!(N >= 0 && N <= 31);
54282 vshiftins_v2i32(a, b, int32x2_t::splat(N))
54283}
54284#[doc = "Shift Left and Insert (immediate)"]
54285#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_s32)"]
54286#[inline]
54287#[cfg(target_arch = "arm")]
54288#[target_feature(enable = "neon,v7")]
54289#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54290#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.32", N = 1))]
54291#[rustc_legacy_const_generics(2)]
54292pub fn vsliq_n_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
54293 static_assert!(N >= 0 && N <= 31);
54294 vshiftins_v4i32(a, b, int32x4_t::splat(N))
54295}
54296#[doc = "Shift Left and Insert (immediate)"]
54297#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_s64)"]
54298#[inline]
54299#[cfg(target_arch = "arm")]
54300#[target_feature(enable = "neon,v7")]
54301#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54302#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.64", N = 1))]
54303#[rustc_legacy_const_generics(2)]
54304pub fn vsli_n_s64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
54305 static_assert!(N >= 0 && N <= 63);
54306 vshiftins_v1i64(a, b, int64x1_t::splat(N as i64))
54307}
54308#[doc = "Shift Left and Insert (immediate)"]
54309#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_s64)"]
54310#[inline]
54311#[cfg(target_arch = "arm")]
54312#[target_feature(enable = "neon,v7")]
54313#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54314#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.64", N = 1))]
54315#[rustc_legacy_const_generics(2)]
54316pub fn vsliq_n_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
54317 static_assert!(N >= 0 && N <= 63);
54318 vshiftins_v2i64(a, b, int64x2_t::splat(N as i64))
54319}
54320#[doc = "Shift Left and Insert (immediate)"]
54321#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_u8)"]
54322#[inline]
54323#[cfg(target_arch = "arm")]
54324#[target_feature(enable = "neon,v7")]
54325#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54326#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
54327#[rustc_legacy_const_generics(2)]
54328pub fn vsli_n_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
54329 static_assert_uimm_bits!(N, 3);
54330 unsafe {
54331 transmute(vshiftins_v8i8(
54332 transmute(a),
54333 transmute(b),
54334 int8x8_t::splat(N as i8),
54335 ))
54336 }
54337}
54338#[doc = "Shift Left and Insert (immediate)"]
54339#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_u8)"]
54340#[inline]
54341#[cfg(target_arch = "arm")]
54342#[target_feature(enable = "neon,v7")]
54343#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54344#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
54345#[rustc_legacy_const_generics(2)]
54346pub fn vsliq_n_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
54347 static_assert_uimm_bits!(N, 3);
54348 unsafe {
54349 transmute(vshiftins_v16i8(
54350 transmute(a),
54351 transmute(b),
54352 int8x16_t::splat(N as i8),
54353 ))
54354 }
54355}
54356#[doc = "Shift Left and Insert (immediate)"]
54357#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_u16)"]
54358#[inline]
54359#[cfg(target_arch = "arm")]
54360#[target_feature(enable = "neon,v7")]
54361#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54362#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
54363#[rustc_legacy_const_generics(2)]
54364pub fn vsli_n_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
54365 static_assert_uimm_bits!(N, 4);
54366 unsafe {
54367 transmute(vshiftins_v4i16(
54368 transmute(a),
54369 transmute(b),
54370 int16x4_t::splat(N as i16),
54371 ))
54372 }
54373}
54374#[doc = "Shift Left and Insert (immediate)"]
54375#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_u16)"]
54376#[inline]
54377#[cfg(target_arch = "arm")]
54378#[target_feature(enable = "neon,v7")]
54379#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54380#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
54381#[rustc_legacy_const_generics(2)]
54382pub fn vsliq_n_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
54383 static_assert_uimm_bits!(N, 4);
54384 unsafe {
54385 transmute(vshiftins_v8i16(
54386 transmute(a),
54387 transmute(b),
54388 int16x8_t::splat(N as i16),
54389 ))
54390 }
54391}
54392#[doc = "Shift Left and Insert (immediate)"]
54393#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_u32)"]
54394#[inline]
54395#[cfg(target_arch = "arm")]
54396#[target_feature(enable = "neon,v7")]
54397#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54398#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.32", N = 1))]
54399#[rustc_legacy_const_generics(2)]
54400pub fn vsli_n_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
54401 static_assert!(N >= 0 && N <= 31);
54402 unsafe {
54403 transmute(vshiftins_v2i32(
54404 transmute(a),
54405 transmute(b),
54406 int32x2_t::splat(N),
54407 ))
54408 }
54409}
54410#[doc = "Shift Left and Insert (immediate)"]
54411#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_u32)"]
54412#[inline]
54413#[cfg(target_arch = "arm")]
54414#[target_feature(enable = "neon,v7")]
54415#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54416#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.32", N = 1))]
54417#[rustc_legacy_const_generics(2)]
54418pub fn vsliq_n_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
54419 static_assert!(N >= 0 && N <= 31);
54420 unsafe {
54421 transmute(vshiftins_v4i32(
54422 transmute(a),
54423 transmute(b),
54424 int32x4_t::splat(N),
54425 ))
54426 }
54427}
54428#[doc = "Shift Left and Insert (immediate)"]
54429#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_u64)"]
54430#[inline]
54431#[cfg(target_arch = "arm")]
54432#[target_feature(enable = "neon,v7")]
54433#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54434#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.64", N = 1))]
54435#[rustc_legacy_const_generics(2)]
54436pub fn vsli_n_u64<const N: i32>(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
54437 static_assert!(N >= 0 && N <= 63);
54438 unsafe {
54439 transmute(vshiftins_v1i64(
54440 transmute(a),
54441 transmute(b),
54442 int64x1_t::splat(N as i64),
54443 ))
54444 }
54445}
54446#[doc = "Shift Left and Insert (immediate)"]
54447#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_u64)"]
54448#[inline]
54449#[cfg(target_arch = "arm")]
54450#[target_feature(enable = "neon,v7")]
54451#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54452#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.64", N = 1))]
54453#[rustc_legacy_const_generics(2)]
54454pub fn vsliq_n_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
54455 static_assert!(N >= 0 && N <= 63);
54456 unsafe {
54457 transmute(vshiftins_v2i64(
54458 transmute(a),
54459 transmute(b),
54460 int64x2_t::splat(N as i64),
54461 ))
54462 }
54463}
54464#[doc = "Shift Left and Insert (immediate)"]
54465#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_p8)"]
54466#[inline]
54467#[cfg(target_arch = "arm")]
54468#[target_feature(enable = "neon,v7")]
54469#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54470#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
54471#[rustc_legacy_const_generics(2)]
54472pub fn vsli_n_p8<const N: i32>(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t {
54473 static_assert_uimm_bits!(N, 3);
54474 unsafe {
54475 transmute(vshiftins_v8i8(
54476 transmute(a),
54477 transmute(b),
54478 int8x8_t::splat(N as i8),
54479 ))
54480 }
54481}
54482#[doc = "Shift Left and Insert (immediate)"]
54483#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_p8)"]
54484#[inline]
54485#[cfg(target_arch = "arm")]
54486#[target_feature(enable = "neon,v7")]
54487#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54488#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
54489#[rustc_legacy_const_generics(2)]
54490pub fn vsliq_n_p8<const N: i32>(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t {
54491 static_assert_uimm_bits!(N, 3);
54492 unsafe {
54493 transmute(vshiftins_v16i8(
54494 transmute(a),
54495 transmute(b),
54496 int8x16_t::splat(N as i8),
54497 ))
54498 }
54499}
54500#[doc = "Shift Left and Insert (immediate)"]
54501#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_p16)"]
54502#[inline]
54503#[cfg(target_arch = "arm")]
54504#[target_feature(enable = "neon,v7")]
54505#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54506#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
54507#[rustc_legacy_const_generics(2)]
54508pub fn vsli_n_p16<const N: i32>(a: poly16x4_t, b: poly16x4_t) -> poly16x4_t {
54509 static_assert_uimm_bits!(N, 4);
54510 unsafe {
54511 transmute(vshiftins_v4i16(
54512 transmute(a),
54513 transmute(b),
54514 int16x4_t::splat(N as i16),
54515 ))
54516 }
54517}
54518#[doc = "Shift Left and Insert (immediate)"]
54519#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_p16)"]
54520#[inline]
54521#[cfg(target_arch = "arm")]
54522#[target_feature(enable = "neon,v7")]
54523#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54524#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
54525#[rustc_legacy_const_generics(2)]
54526pub fn vsliq_n_p16<const N: i32>(a: poly16x8_t, b: poly16x8_t) -> poly16x8_t {
54527 static_assert_uimm_bits!(N, 4);
54528 unsafe {
54529 transmute(vshiftins_v8i16(
54530 transmute(a),
54531 transmute(b),
54532 int16x8_t::splat(N as i16),
54533 ))
54534 }
54535}
54536#[doc = "Signed shift right and accumulate"]
54537#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_s8)"]
54538#[inline]
54539#[target_feature(enable = "neon")]
54540#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54541#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
54542#[cfg_attr(
54543 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54544 assert_instr(ssra, N = 2)
54545)]
54546#[rustc_legacy_const_generics(2)]
54547#[cfg_attr(
54548 not(target_arch = "arm"),
54549 stable(feature = "neon_intrinsics", since = "1.59.0")
54550)]
54551#[cfg_attr(
54552 target_arch = "arm",
54553 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54554)]
54555pub fn vsra_n_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
54556 static_assert!(N >= 1 && N <= 8);
54557 unsafe { simd_add(a, vshr_n_s8::<N>(b)) }
54558}
54559#[doc = "Signed shift right and accumulate"]
54560#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_s8)"]
54561#[inline]
54562#[target_feature(enable = "neon")]
54563#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54564#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
54565#[cfg_attr(
54566 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54567 assert_instr(ssra, N = 2)
54568)]
54569#[rustc_legacy_const_generics(2)]
54570#[cfg_attr(
54571 not(target_arch = "arm"),
54572 stable(feature = "neon_intrinsics", since = "1.59.0")
54573)]
54574#[cfg_attr(
54575 target_arch = "arm",
54576 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54577)]
54578pub fn vsraq_n_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
54579 static_assert!(N >= 1 && N <= 8);
54580 unsafe { simd_add(a, vshrq_n_s8::<N>(b)) }
54581}
54582#[doc = "Signed shift right and accumulate"]
54583#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_s16)"]
54584#[inline]
54585#[target_feature(enable = "neon")]
54586#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54587#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
54588#[cfg_attr(
54589 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54590 assert_instr(ssra, N = 2)
54591)]
54592#[rustc_legacy_const_generics(2)]
54593#[cfg_attr(
54594 not(target_arch = "arm"),
54595 stable(feature = "neon_intrinsics", since = "1.59.0")
54596)]
54597#[cfg_attr(
54598 target_arch = "arm",
54599 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54600)]
54601pub fn vsra_n_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
54602 static_assert!(N >= 1 && N <= 16);
54603 unsafe { simd_add(a, vshr_n_s16::<N>(b)) }
54604}
54605#[doc = "Signed shift right and accumulate"]
54606#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_s16)"]
54607#[inline]
54608#[target_feature(enable = "neon")]
54609#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54610#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
54611#[cfg_attr(
54612 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54613 assert_instr(ssra, N = 2)
54614)]
54615#[rustc_legacy_const_generics(2)]
54616#[cfg_attr(
54617 not(target_arch = "arm"),
54618 stable(feature = "neon_intrinsics", since = "1.59.0")
54619)]
54620#[cfg_attr(
54621 target_arch = "arm",
54622 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54623)]
54624pub fn vsraq_n_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
54625 static_assert!(N >= 1 && N <= 16);
54626 unsafe { simd_add(a, vshrq_n_s16::<N>(b)) }
54627}
54628#[doc = "Signed shift right and accumulate"]
54629#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_s32)"]
54630#[inline]
54631#[target_feature(enable = "neon")]
54632#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54633#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
54634#[cfg_attr(
54635 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54636 assert_instr(ssra, N = 2)
54637)]
54638#[rustc_legacy_const_generics(2)]
54639#[cfg_attr(
54640 not(target_arch = "arm"),
54641 stable(feature = "neon_intrinsics", since = "1.59.0")
54642)]
54643#[cfg_attr(
54644 target_arch = "arm",
54645 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54646)]
54647pub fn vsra_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
54648 static_assert!(N >= 1 && N <= 32);
54649 unsafe { simd_add(a, vshr_n_s32::<N>(b)) }
54650}
54651#[doc = "Signed shift right and accumulate"]
54652#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_s32)"]
54653#[inline]
54654#[target_feature(enable = "neon")]
54655#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54656#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
54657#[cfg_attr(
54658 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54659 assert_instr(ssra, N = 2)
54660)]
54661#[rustc_legacy_const_generics(2)]
54662#[cfg_attr(
54663 not(target_arch = "arm"),
54664 stable(feature = "neon_intrinsics", since = "1.59.0")
54665)]
54666#[cfg_attr(
54667 target_arch = "arm",
54668 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54669)]
54670pub fn vsraq_n_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
54671 static_assert!(N >= 1 && N <= 32);
54672 unsafe { simd_add(a, vshrq_n_s32::<N>(b)) }
54673}
54674#[doc = "Signed shift right and accumulate"]
54675#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_s64)"]
54676#[inline]
54677#[target_feature(enable = "neon")]
54678#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54679#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
54680#[cfg_attr(
54681 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54682 assert_instr(ssra, N = 2)
54683)]
54684#[rustc_legacy_const_generics(2)]
54685#[cfg_attr(
54686 not(target_arch = "arm"),
54687 stable(feature = "neon_intrinsics", since = "1.59.0")
54688)]
54689#[cfg_attr(
54690 target_arch = "arm",
54691 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54692)]
54693pub fn vsra_n_s64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
54694 static_assert!(N >= 1 && N <= 64);
54695 unsafe { simd_add(a, vshr_n_s64::<N>(b)) }
54696}
54697#[doc = "Signed shift right and accumulate"]
54698#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_s64)"]
54699#[inline]
54700#[target_feature(enable = "neon")]
54701#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54702#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
54703#[cfg_attr(
54704 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54705 assert_instr(ssra, N = 2)
54706)]
54707#[rustc_legacy_const_generics(2)]
54708#[cfg_attr(
54709 not(target_arch = "arm"),
54710 stable(feature = "neon_intrinsics", since = "1.59.0")
54711)]
54712#[cfg_attr(
54713 target_arch = "arm",
54714 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54715)]
54716pub fn vsraq_n_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
54717 static_assert!(N >= 1 && N <= 64);
54718 unsafe { simd_add(a, vshrq_n_s64::<N>(b)) }
54719}
54720#[doc = "Unsigned shift right and accumulate"]
54721#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_u8)"]
54722#[inline]
54723#[target_feature(enable = "neon")]
54724#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54725#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
54726#[cfg_attr(
54727 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54728 assert_instr(usra, N = 2)
54729)]
54730#[rustc_legacy_const_generics(2)]
54731#[cfg_attr(
54732 not(target_arch = "arm"),
54733 stable(feature = "neon_intrinsics", since = "1.59.0")
54734)]
54735#[cfg_attr(
54736 target_arch = "arm",
54737 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54738)]
54739pub fn vsra_n_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
54740 static_assert!(N >= 1 && N <= 8);
54741 unsafe { simd_add(a, vshr_n_u8::<N>(b)) }
54742}
54743#[doc = "Unsigned shift right and accumulate"]
54744#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_u8)"]
54745#[inline]
54746#[target_feature(enable = "neon")]
54747#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54748#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
54749#[cfg_attr(
54750 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54751 assert_instr(usra, N = 2)
54752)]
54753#[rustc_legacy_const_generics(2)]
54754#[cfg_attr(
54755 not(target_arch = "arm"),
54756 stable(feature = "neon_intrinsics", since = "1.59.0")
54757)]
54758#[cfg_attr(
54759 target_arch = "arm",
54760 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54761)]
54762pub fn vsraq_n_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
54763 static_assert!(N >= 1 && N <= 8);
54764 unsafe { simd_add(a, vshrq_n_u8::<N>(b)) }
54765}
54766#[doc = "Unsigned shift right and accumulate"]
54767#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_u16)"]
54768#[inline]
54769#[target_feature(enable = "neon")]
54770#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54771#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
54772#[cfg_attr(
54773 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54774 assert_instr(usra, N = 2)
54775)]
54776#[rustc_legacy_const_generics(2)]
54777#[cfg_attr(
54778 not(target_arch = "arm"),
54779 stable(feature = "neon_intrinsics", since = "1.59.0")
54780)]
54781#[cfg_attr(
54782 target_arch = "arm",
54783 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54784)]
54785pub fn vsra_n_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
54786 static_assert!(N >= 1 && N <= 16);
54787 unsafe { simd_add(a, vshr_n_u16::<N>(b)) }
54788}
54789#[doc = "Unsigned shift right and accumulate"]
54790#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_u16)"]
54791#[inline]
54792#[target_feature(enable = "neon")]
54793#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54794#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
54795#[cfg_attr(
54796 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54797 assert_instr(usra, N = 2)
54798)]
54799#[rustc_legacy_const_generics(2)]
54800#[cfg_attr(
54801 not(target_arch = "arm"),
54802 stable(feature = "neon_intrinsics", since = "1.59.0")
54803)]
54804#[cfg_attr(
54805 target_arch = "arm",
54806 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54807)]
54808pub fn vsraq_n_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
54809 static_assert!(N >= 1 && N <= 16);
54810 unsafe { simd_add(a, vshrq_n_u16::<N>(b)) }
54811}
54812#[doc = "Unsigned shift right and accumulate"]
54813#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_u32)"]
54814#[inline]
54815#[target_feature(enable = "neon")]
54816#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54817#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
54818#[cfg_attr(
54819 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54820 assert_instr(usra, N = 2)
54821)]
54822#[rustc_legacy_const_generics(2)]
54823#[cfg_attr(
54824 not(target_arch = "arm"),
54825 stable(feature = "neon_intrinsics", since = "1.59.0")
54826)]
54827#[cfg_attr(
54828 target_arch = "arm",
54829 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54830)]
54831pub fn vsra_n_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
54832 static_assert!(N >= 1 && N <= 32);
54833 unsafe { simd_add(a, vshr_n_u32::<N>(b)) }
54834}
54835#[doc = "Unsigned shift right and accumulate"]
54836#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_u32)"]
54837#[inline]
54838#[target_feature(enable = "neon")]
54839#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54840#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
54841#[cfg_attr(
54842 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54843 assert_instr(usra, N = 2)
54844)]
54845#[rustc_legacy_const_generics(2)]
54846#[cfg_attr(
54847 not(target_arch = "arm"),
54848 stable(feature = "neon_intrinsics", since = "1.59.0")
54849)]
54850#[cfg_attr(
54851 target_arch = "arm",
54852 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54853)]
54854pub fn vsraq_n_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
54855 static_assert!(N >= 1 && N <= 32);
54856 unsafe { simd_add(a, vshrq_n_u32::<N>(b)) }
54857}
54858#[doc = "Unsigned shift right and accumulate"]
54859#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_u64)"]
54860#[inline]
54861#[target_feature(enable = "neon")]
54862#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54863#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
54864#[cfg_attr(
54865 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54866 assert_instr(usra, N = 2)
54867)]
54868#[rustc_legacy_const_generics(2)]
54869#[cfg_attr(
54870 not(target_arch = "arm"),
54871 stable(feature = "neon_intrinsics", since = "1.59.0")
54872)]
54873#[cfg_attr(
54874 target_arch = "arm",
54875 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54876)]
54877pub fn vsra_n_u64<const N: i32>(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
54878 static_assert!(N >= 1 && N <= 64);
54879 unsafe { simd_add(a, vshr_n_u64::<N>(b)) }
54880}
54881#[doc = "Unsigned shift right and accumulate"]
54882#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_u64)"]
54883#[inline]
54884#[target_feature(enable = "neon")]
54885#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54886#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
54887#[cfg_attr(
54888 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54889 assert_instr(usra, N = 2)
54890)]
54891#[rustc_legacy_const_generics(2)]
54892#[cfg_attr(
54893 not(target_arch = "arm"),
54894 stable(feature = "neon_intrinsics", since = "1.59.0")
54895)]
54896#[cfg_attr(
54897 target_arch = "arm",
54898 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54899)]
54900pub fn vsraq_n_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
54901 static_assert!(N >= 1 && N <= 64);
54902 unsafe { simd_add(a, vshrq_n_u64::<N>(b)) }
54903}
54904#[doc = "Shift Right and Insert (immediate)"]
54905#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_s8)"]
54906#[inline]
54907#[target_feature(enable = "neon,v7")]
54908#[cfg(target_arch = "arm")]
54909#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54910#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
54911#[rustc_legacy_const_generics(2)]
54912pub fn vsri_n_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
54913 static_assert!(1 <= N && N <= 8);
54914 vshiftins_v8i8(a, b, int8x8_t::splat(-N as i8))
54915}
54916#[doc = "Shift Right and Insert (immediate)"]
54917#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_s8)"]
54918#[inline]
54919#[target_feature(enable = "neon,v7")]
54920#[cfg(target_arch = "arm")]
54921#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54922#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
54923#[rustc_legacy_const_generics(2)]
54924pub fn vsriq_n_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
54925 static_assert!(1 <= N && N <= 8);
54926 vshiftins_v16i8(a, b, int8x16_t::splat(-N as i8))
54927}
54928#[doc = "Shift Right and Insert (immediate)"]
54929#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_s16)"]
54930#[inline]
54931#[target_feature(enable = "neon,v7")]
54932#[cfg(target_arch = "arm")]
54933#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54934#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
54935#[rustc_legacy_const_generics(2)]
54936pub fn vsri_n_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
54937 static_assert!(1 <= N && N <= 16);
54938 vshiftins_v4i16(a, b, int16x4_t::splat(-N as i16))
54939}
54940#[doc = "Shift Right and Insert (immediate)"]
54941#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_s16)"]
54942#[inline]
54943#[target_feature(enable = "neon,v7")]
54944#[cfg(target_arch = "arm")]
54945#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54946#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
54947#[rustc_legacy_const_generics(2)]
54948pub fn vsriq_n_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
54949 static_assert!(1 <= N && N <= 16);
54950 vshiftins_v8i16(a, b, int16x8_t::splat(-N as i16))
54951}
54952#[doc = "Shift Right and Insert (immediate)"]
54953#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_s32)"]
54954#[inline]
54955#[target_feature(enable = "neon,v7")]
54956#[cfg(target_arch = "arm")]
54957#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54958#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.32", N = 1))]
54959#[rustc_legacy_const_generics(2)]
54960pub fn vsri_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
54961 static_assert!(1 <= N && N <= 32);
54962 vshiftins_v2i32(a, b, int32x2_t::splat(-N))
54963}
54964#[doc = "Shift Right and Insert (immediate)"]
54965#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_s32)"]
54966#[inline]
54967#[target_feature(enable = "neon,v7")]
54968#[cfg(target_arch = "arm")]
54969#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54970#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.32", N = 1))]
54971#[rustc_legacy_const_generics(2)]
54972pub fn vsriq_n_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
54973 static_assert!(1 <= N && N <= 32);
54974 vshiftins_v4i32(a, b, int32x4_t::splat(-N))
54975}
54976#[doc = "Shift Right and Insert (immediate)"]
54977#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_s64)"]
54978#[inline]
54979#[target_feature(enable = "neon,v7")]
54980#[cfg(target_arch = "arm")]
54981#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54982#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.64", N = 1))]
54983#[rustc_legacy_const_generics(2)]
54984pub fn vsri_n_s64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
54985 static_assert!(1 <= N && N <= 64);
54986 vshiftins_v1i64(a, b, int64x1_t::splat(-N as i64))
54987}
54988#[doc = "Shift Right and Insert (immediate)"]
54989#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_s64)"]
54990#[inline]
54991#[target_feature(enable = "neon,v7")]
54992#[cfg(target_arch = "arm")]
54993#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
54994#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.64", N = 1))]
54995#[rustc_legacy_const_generics(2)]
54996pub fn vsriq_n_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
54997 static_assert!(1 <= N && N <= 64);
54998 vshiftins_v2i64(a, b, int64x2_t::splat(-N as i64))
54999}
55000#[doc = "Shift Right and Insert (immediate)"]
55001#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_u8)"]
55002#[inline]
55003#[cfg(target_arch = "arm")]
55004#[target_feature(enable = "neon,v7")]
55005#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55006#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
55007#[rustc_legacy_const_generics(2)]
55008pub fn vsri_n_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
55009 static_assert!(1 <= N && N <= 8);
55010 unsafe {
55011 transmute(vshiftins_v8i8(
55012 transmute(a),
55013 transmute(b),
55014 int8x8_t::splat(-N as i8),
55015 ))
55016 }
55017}
55018#[doc = "Shift Right and Insert (immediate)"]
55019#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_u8)"]
55020#[inline]
55021#[cfg(target_arch = "arm")]
55022#[target_feature(enable = "neon,v7")]
55023#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55024#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
55025#[rustc_legacy_const_generics(2)]
55026pub fn vsriq_n_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
55027 static_assert!(1 <= N && N <= 8);
55028 unsafe {
55029 transmute(vshiftins_v16i8(
55030 transmute(a),
55031 transmute(b),
55032 int8x16_t::splat(-N as i8),
55033 ))
55034 }
55035}
55036#[doc = "Shift Right and Insert (immediate)"]
55037#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_u16)"]
55038#[inline]
55039#[cfg(target_arch = "arm")]
55040#[target_feature(enable = "neon,v7")]
55041#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55042#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
55043#[rustc_legacy_const_generics(2)]
55044pub fn vsri_n_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
55045 static_assert!(1 <= N && N <= 16);
55046 unsafe {
55047 transmute(vshiftins_v4i16(
55048 transmute(a),
55049 transmute(b),
55050 int16x4_t::splat(-N as i16),
55051 ))
55052 }
55053}
55054#[doc = "Shift Right and Insert (immediate)"]
55055#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_u16)"]
55056#[inline]
55057#[cfg(target_arch = "arm")]
55058#[target_feature(enable = "neon,v7")]
55059#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55060#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
55061#[rustc_legacy_const_generics(2)]
55062pub fn vsriq_n_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
55063 static_assert!(1 <= N && N <= 16);
55064 unsafe {
55065 transmute(vshiftins_v8i16(
55066 transmute(a),
55067 transmute(b),
55068 int16x8_t::splat(-N as i16),
55069 ))
55070 }
55071}
55072#[doc = "Shift Right and Insert (immediate)"]
55073#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_u32)"]
55074#[inline]
55075#[cfg(target_arch = "arm")]
55076#[target_feature(enable = "neon,v7")]
55077#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55078#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.32", N = 1))]
55079#[rustc_legacy_const_generics(2)]
55080pub fn vsri_n_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
55081 static_assert!(1 <= N && N <= 32);
55082 unsafe {
55083 transmute(vshiftins_v2i32(
55084 transmute(a),
55085 transmute(b),
55086 int32x2_t::splat(-N),
55087 ))
55088 }
55089}
55090#[doc = "Shift Right and Insert (immediate)"]
55091#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_u32)"]
55092#[inline]
55093#[cfg(target_arch = "arm")]
55094#[target_feature(enable = "neon,v7")]
55095#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55096#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.32", N = 1))]
55097#[rustc_legacy_const_generics(2)]
55098pub fn vsriq_n_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
55099 static_assert!(1 <= N && N <= 32);
55100 unsafe {
55101 transmute(vshiftins_v4i32(
55102 transmute(a),
55103 transmute(b),
55104 int32x4_t::splat(-N),
55105 ))
55106 }
55107}
55108#[doc = "Shift Right and Insert (immediate)"]
55109#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_u64)"]
55110#[inline]
55111#[cfg(target_arch = "arm")]
55112#[target_feature(enable = "neon,v7")]
55113#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55114#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.64", N = 1))]
55115#[rustc_legacy_const_generics(2)]
55116pub fn vsri_n_u64<const N: i32>(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
55117 static_assert!(1 <= N && N <= 64);
55118 unsafe {
55119 transmute(vshiftins_v1i64(
55120 transmute(a),
55121 transmute(b),
55122 int64x1_t::splat(-N as i64),
55123 ))
55124 }
55125}
55126#[doc = "Shift Right and Insert (immediate)"]
55127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_u64)"]
55128#[inline]
55129#[cfg(target_arch = "arm")]
55130#[target_feature(enable = "neon,v7")]
55131#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55132#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.64", N = 1))]
55133#[rustc_legacy_const_generics(2)]
55134pub fn vsriq_n_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
55135 static_assert!(1 <= N && N <= 64);
55136 unsafe {
55137 transmute(vshiftins_v2i64(
55138 transmute(a),
55139 transmute(b),
55140 int64x2_t::splat(-N as i64),
55141 ))
55142 }
55143}
55144#[doc = "Shift Right and Insert (immediate)"]
55145#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_p8)"]
55146#[inline]
55147#[cfg(target_arch = "arm")]
55148#[target_feature(enable = "neon,v7")]
55149#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55150#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
55151#[rustc_legacy_const_generics(2)]
55152pub fn vsri_n_p8<const N: i32>(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t {
55153 static_assert!(1 <= N && N <= 8);
55154 unsafe {
55155 transmute(vshiftins_v8i8(
55156 transmute(a),
55157 transmute(b),
55158 int8x8_t::splat(-N as i8),
55159 ))
55160 }
55161}
55162#[doc = "Shift Right and Insert (immediate)"]
55163#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_p8)"]
55164#[inline]
55165#[cfg(target_arch = "arm")]
55166#[target_feature(enable = "neon,v7")]
55167#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55168#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
55169#[rustc_legacy_const_generics(2)]
55170pub fn vsriq_n_p8<const N: i32>(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t {
55171 static_assert!(1 <= N && N <= 8);
55172 unsafe {
55173 transmute(vshiftins_v16i8(
55174 transmute(a),
55175 transmute(b),
55176 int8x16_t::splat(-N as i8),
55177 ))
55178 }
55179}
55180#[doc = "Shift Right and Insert (immediate)"]
55181#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_p16)"]
55182#[inline]
55183#[cfg(target_arch = "arm")]
55184#[target_feature(enable = "neon,v7")]
55185#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55186#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
55187#[rustc_legacy_const_generics(2)]
55188pub fn vsri_n_p16<const N: i32>(a: poly16x4_t, b: poly16x4_t) -> poly16x4_t {
55189 static_assert!(1 <= N && N <= 16);
55190 unsafe {
55191 transmute(vshiftins_v4i16(
55192 transmute(a),
55193 transmute(b),
55194 int16x4_t::splat(-N as i16),
55195 ))
55196 }
55197}
55198#[doc = "Shift Right and Insert (immediate)"]
55199#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_p16)"]
55200#[inline]
55201#[cfg(target_arch = "arm")]
55202#[target_feature(enable = "neon,v7")]
55203#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55204#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
55205#[rustc_legacy_const_generics(2)]
55206pub fn vsriq_n_p16<const N: i32>(a: poly16x8_t, b: poly16x8_t) -> poly16x8_t {
55207 static_assert!(1 <= N && N <= 16);
55208 unsafe {
55209 transmute(vshiftins_v8i16(
55210 transmute(a),
55211 transmute(b),
55212 int16x8_t::splat(-N as i16),
55213 ))
55214 }
55215}
55216#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55217#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16)"]
55218#[doc = "## Safety"]
55219#[doc = " * Neon instrinsic unsafe"]
55220#[inline]
55221#[cfg(target_arch = "arm")]
55222#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55223#[target_feature(enable = "neon,fp16")]
55224#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
55225#[cfg(not(target_arch = "arm64ec"))]
55226#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
55227pub unsafe fn vst1_f16(ptr: *mut f16, a: float16x4_t) {
55228 vst1_v4f16(
55229 ptr as *const i8,
55230 transmute(a),
55231 crate::mem::align_of::<f16>() as i32,
55232 )
55233}
55234#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55235#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16)"]
55236#[doc = "## Safety"]
55237#[doc = " * Neon instrinsic unsafe"]
55238#[inline]
55239#[cfg(target_arch = "arm")]
55240#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55241#[target_feature(enable = "neon,fp16")]
55242#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
55243#[cfg(not(target_arch = "arm64ec"))]
55244#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
55245pub unsafe fn vst1q_f16(ptr: *mut f16, a: float16x8_t) {
55246 vst1q_v8f16(
55247 ptr as *const i8,
55248 transmute(a),
55249 crate::mem::align_of::<f16>() as i32,
55250 )
55251}
55252#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
55253#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x2)"]
55254#[doc = "## Safety"]
55255#[doc = " * Neon instrinsic unsafe"]
55256#[inline]
55257#[cfg(target_arch = "arm")]
55258#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55259#[cfg_attr(test, assert_instr(vst1))]
55260#[target_feature(enable = "neon,fp16")]
55261#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
55262#[cfg(not(target_arch = "arm64ec"))]
55263pub unsafe fn vst1_f16_x2(a: *mut f16, b: float16x4x2_t) {
55264 unsafe extern "unadjusted" {
55265 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.p0.v4f16")]
55266 fn _vst1_f16_x2(ptr: *mut f16, a: float16x4_t, b: float16x4_t);
55267 }
55268 _vst1_f16_x2(a, b.0, b.1)
55269}
55270#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
55271#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x2)"]
55272#[doc = "## Safety"]
55273#[doc = " * Neon instrinsic unsafe"]
55274#[inline]
55275#[cfg(target_arch = "arm")]
55276#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55277#[cfg_attr(test, assert_instr(vst1))]
55278#[target_feature(enable = "neon,fp16")]
55279#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
55280#[cfg(not(target_arch = "arm64ec"))]
55281pub unsafe fn vst1q_f16_x2(a: *mut f16, b: float16x8x2_t) {
55282 unsafe extern "unadjusted" {
55283 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.p0.v8f16")]
55284 fn _vst1q_f16_x2(ptr: *mut f16, a: float16x8_t, b: float16x8_t);
55285 }
55286 _vst1q_f16_x2(a, b.0, b.1)
55287}
55288#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
55289#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x2)"]
55290#[doc = "## Safety"]
55291#[doc = " * Neon instrinsic unsafe"]
55292#[inline]
55293#[cfg(not(target_arch = "arm"))]
55294#[cfg_attr(test, assert_instr(st1))]
55295#[target_feature(enable = "neon,fp16")]
55296#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
55297#[cfg(not(target_arch = "arm64ec"))]
55298pub unsafe fn vst1_f16_x2(a: *mut f16, b: float16x4x2_t) {
55299 unsafe extern "unadjusted" {
55300 #[cfg_attr(
55301 any(target_arch = "aarch64", target_arch = "arm64ec"),
55302 link_name = "llvm.aarch64.neon.st1x2.v4f16.p0"
55303 )]
55304 fn _vst1_f16_x2(a: float16x4_t, b: float16x4_t, ptr: *mut f16);
55305 }
55306 _vst1_f16_x2(b.0, b.1, a)
55307}
55308#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
55309#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x2)"]
55310#[doc = "## Safety"]
55311#[doc = " * Neon instrinsic unsafe"]
55312#[inline]
55313#[cfg(not(target_arch = "arm"))]
55314#[cfg_attr(test, assert_instr(st1))]
55315#[target_feature(enable = "neon,fp16")]
55316#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
55317#[cfg(not(target_arch = "arm64ec"))]
55318pub unsafe fn vst1q_f16_x2(a: *mut f16, b: float16x8x2_t) {
55319 unsafe extern "unadjusted" {
55320 #[cfg_attr(
55321 any(target_arch = "aarch64", target_arch = "arm64ec"),
55322 link_name = "llvm.aarch64.neon.st1x2.v8f16.p0"
55323 )]
55324 fn _vst1q_f16_x2(a: float16x8_t, b: float16x8_t, ptr: *mut f16);
55325 }
55326 _vst1q_f16_x2(b.0, b.1, a)
55327}
55328#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
55329#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x3)"]
55330#[doc = "## Safety"]
55331#[doc = " * Neon instrinsic unsafe"]
55332#[inline]
55333#[cfg(target_arch = "arm")]
55334#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55335#[cfg_attr(test, assert_instr(vst1))]
55336#[target_feature(enable = "neon,fp16")]
55337#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
55338#[cfg(not(target_arch = "arm64ec"))]
55339pub unsafe fn vst1_f16_x3(a: *mut f16, b: float16x4x3_t) {
55340 unsafe extern "unadjusted" {
55341 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v4f16")]
55342 fn _vst1_f16_x3(ptr: *mut f16, a: float16x4_t, b: float16x4_t, c: float16x4_t);
55343 }
55344 _vst1_f16_x3(a, b.0, b.1, b.2)
55345}
55346#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
55347#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x3)"]
55348#[doc = "## Safety"]
55349#[doc = " * Neon instrinsic unsafe"]
55350#[inline]
55351#[cfg(target_arch = "arm")]
55352#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55353#[cfg_attr(test, assert_instr(vst1))]
55354#[target_feature(enable = "neon,fp16")]
55355#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
55356#[cfg(not(target_arch = "arm64ec"))]
55357pub unsafe fn vst1q_f16_x3(a: *mut f16, b: float16x8x3_t) {
55358 unsafe extern "unadjusted" {
55359 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v8f16")]
55360 fn _vst1q_f16_x3(ptr: *mut f16, a: float16x8_t, b: float16x8_t, c: float16x8_t);
55361 }
55362 _vst1q_f16_x3(a, b.0, b.1, b.2)
55363}
55364#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
55365#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x3)"]
55366#[doc = "## Safety"]
55367#[doc = " * Neon instrinsic unsafe"]
55368#[inline]
55369#[cfg(not(target_arch = "arm"))]
55370#[cfg_attr(test, assert_instr(st1))]
55371#[target_feature(enable = "neon,fp16")]
55372#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
55373#[cfg(not(target_arch = "arm64ec"))]
55374pub unsafe fn vst1_f16_x3(a: *mut f16, b: float16x4x3_t) {
55375 unsafe extern "unadjusted" {
55376 #[cfg_attr(
55377 any(target_arch = "aarch64", target_arch = "arm64ec"),
55378 link_name = "llvm.aarch64.neon.st1x3.v4f16.p0"
55379 )]
55380 fn _vst1_f16_x3(a: float16x4_t, b: float16x4_t, c: float16x4_t, ptr: *mut f16);
55381 }
55382 _vst1_f16_x3(b.0, b.1, b.2, a)
55383}
55384#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
55385#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x3)"]
55386#[doc = "## Safety"]
55387#[doc = " * Neon instrinsic unsafe"]
55388#[inline]
55389#[cfg(not(target_arch = "arm"))]
55390#[cfg_attr(test, assert_instr(st1))]
55391#[target_feature(enable = "neon,fp16")]
55392#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
55393#[cfg(not(target_arch = "arm64ec"))]
55394pub unsafe fn vst1q_f16_x3(a: *mut f16, b: float16x8x3_t) {
55395 unsafe extern "unadjusted" {
55396 #[cfg_attr(
55397 any(target_arch = "aarch64", target_arch = "arm64ec"),
55398 link_name = "llvm.aarch64.neon.st1x3.v8f16.p0"
55399 )]
55400 fn _vst1q_f16_x3(a: float16x8_t, b: float16x8_t, c: float16x8_t, ptr: *mut f16);
55401 }
55402 _vst1q_f16_x3(b.0, b.1, b.2, a)
55403}
55404#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
55405#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x4)"]
55406#[doc = "## Safety"]
55407#[doc = " * Neon instrinsic unsafe"]
55408#[inline]
55409#[cfg(target_arch = "arm")]
55410#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55411#[target_feature(enable = "neon,fp16")]
55412#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
55413#[cfg(not(target_arch = "arm64ec"))]
55414#[cfg_attr(test, assert_instr(vst1))]
55415pub unsafe fn vst1_f16_x4(a: *mut f16, b: float16x4x4_t) {
55416 unsafe extern "unadjusted" {
55417 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v4f16")]
55418 fn _vst1_f16_x4(
55419 ptr: *mut f16,
55420 a: float16x4_t,
55421 b: float16x4_t,
55422 c: float16x4_t,
55423 d: float16x4_t,
55424 );
55425 }
55426 _vst1_f16_x4(a, b.0, b.1, b.2, b.3)
55427}
55428#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
55429#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x4)"]
55430#[doc = "## Safety"]
55431#[doc = " * Neon instrinsic unsafe"]
55432#[inline]
55433#[cfg(target_arch = "arm")]
55434#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55435#[target_feature(enable = "neon,fp16")]
55436#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
55437#[cfg(not(target_arch = "arm64ec"))]
55438#[cfg_attr(test, assert_instr(vst1))]
55439pub unsafe fn vst1q_f16_x4(a: *mut f16, b: float16x8x4_t) {
55440 unsafe extern "unadjusted" {
55441 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v8f16")]
55442 fn _vst1q_f16_x4(
55443 ptr: *mut f16,
55444 a: float16x8_t,
55445 b: float16x8_t,
55446 c: float16x8_t,
55447 d: float16x8_t,
55448 );
55449 }
55450 _vst1q_f16_x4(a, b.0, b.1, b.2, b.3)
55451}
55452#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
55453#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x4)"]
55454#[doc = "## Safety"]
55455#[doc = " * Neon instrinsic unsafe"]
55456#[inline]
55457#[cfg(not(target_arch = "arm"))]
55458#[cfg_attr(test, assert_instr(st1))]
55459#[target_feature(enable = "neon,fp16")]
55460#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
55461#[cfg(not(target_arch = "arm64ec"))]
55462pub unsafe fn vst1_f16_x4(a: *mut f16, b: float16x4x4_t) {
55463 unsafe extern "unadjusted" {
55464 #[cfg_attr(
55465 any(target_arch = "aarch64", target_arch = "arm64ec"),
55466 link_name = "llvm.aarch64.neon.st1x4.v4f16.p0"
55467 )]
55468 fn _vst1_f16_x4(
55469 a: float16x4_t,
55470 b: float16x4_t,
55471 c: float16x4_t,
55472 d: float16x4_t,
55473 ptr: *mut f16,
55474 );
55475 }
55476 _vst1_f16_x4(b.0, b.1, b.2, b.3, a)
55477}
55478#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
55479#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x4)"]
55480#[doc = "## Safety"]
55481#[doc = " * Neon instrinsic unsafe"]
55482#[inline]
55483#[cfg(not(target_arch = "arm"))]
55484#[cfg_attr(test, assert_instr(st1))]
55485#[target_feature(enable = "neon,fp16")]
55486#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
55487#[cfg(not(target_arch = "arm64ec"))]
55488pub unsafe fn vst1q_f16_x4(a: *mut f16, b: float16x8x4_t) {
55489 unsafe extern "unadjusted" {
55490 #[cfg_attr(
55491 any(target_arch = "aarch64", target_arch = "arm64ec"),
55492 link_name = "llvm.aarch64.neon.st1x4.v8f16.p0"
55493 )]
55494 fn _vst1q_f16_x4(
55495 a: float16x8_t,
55496 b: float16x8_t,
55497 c: float16x8_t,
55498 d: float16x8_t,
55499 ptr: *mut f16,
55500 );
55501 }
55502 _vst1q_f16_x4(b.0, b.1, b.2, b.3, a)
55503}
55504#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55505#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32)"]
55506#[doc = "## Safety"]
55507#[doc = " * Neon instrinsic unsafe"]
55508#[inline]
55509#[target_feature(enable = "neon")]
55510#[cfg(target_arch = "arm")]
55511#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55512#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55513#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
55514pub unsafe fn vst1_f32(ptr: *mut f32, a: float32x2_t) {
55515 vst1_v2f32(
55516 ptr as *const i8,
55517 transmute(a),
55518 crate::mem::align_of::<f32>() as i32,
55519 )
55520}
55521#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55522#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32)"]
55523#[doc = "## Safety"]
55524#[doc = " * Neon instrinsic unsafe"]
55525#[inline]
55526#[target_feature(enable = "neon")]
55527#[cfg(target_arch = "arm")]
55528#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55529#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55530#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
55531pub unsafe fn vst1q_f32(ptr: *mut f32, a: float32x4_t) {
55532 vst1q_v4f32(
55533 ptr as *const i8,
55534 transmute(a),
55535 crate::mem::align_of::<f32>() as i32,
55536 )
55537}
55538#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55539#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8)"]
55540#[doc = "## Safety"]
55541#[doc = " * Neon instrinsic unsafe"]
55542#[inline]
55543#[target_feature(enable = "neon")]
55544#[cfg(target_arch = "arm")]
55545#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55546#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55547#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
55548pub unsafe fn vst1_s8(ptr: *mut i8, a: int8x8_t) {
55549 vst1_v8i8(ptr as *const i8, a, crate::mem::align_of::<i8>() as i32)
55550}
55551#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55552#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8)"]
55553#[doc = "## Safety"]
55554#[doc = " * Neon instrinsic unsafe"]
55555#[inline]
55556#[target_feature(enable = "neon")]
55557#[cfg(target_arch = "arm")]
55558#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55559#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55560#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
55561pub unsafe fn vst1q_s8(ptr: *mut i8, a: int8x16_t) {
55562 vst1q_v16i8(ptr as *const i8, a, crate::mem::align_of::<i8>() as i32)
55563}
55564#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55565#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16)"]
55566#[doc = "## Safety"]
55567#[doc = " * Neon instrinsic unsafe"]
55568#[inline]
55569#[target_feature(enable = "neon")]
55570#[cfg(target_arch = "arm")]
55571#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55572#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55573#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
55574pub unsafe fn vst1_s16(ptr: *mut i16, a: int16x4_t) {
55575 vst1_v4i16(ptr as *const i8, a, crate::mem::align_of::<i16>() as i32)
55576}
55577#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55578#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16)"]
55579#[doc = "## Safety"]
55580#[doc = " * Neon instrinsic unsafe"]
55581#[inline]
55582#[target_feature(enable = "neon")]
55583#[cfg(target_arch = "arm")]
55584#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55585#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55586#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
55587pub unsafe fn vst1q_s16(ptr: *mut i16, a: int16x8_t) {
55588 vst1q_v8i16(ptr as *const i8, a, crate::mem::align_of::<i16>() as i32)
55589}
55590#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55591#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32)"]
55592#[doc = "## Safety"]
55593#[doc = " * Neon instrinsic unsafe"]
55594#[inline]
55595#[target_feature(enable = "neon")]
55596#[cfg(target_arch = "arm")]
55597#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55598#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55599#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
55600pub unsafe fn vst1_s32(ptr: *mut i32, a: int32x2_t) {
55601 vst1_v2i32(ptr as *const i8, a, crate::mem::align_of::<i32>() as i32)
55602}
55603#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55604#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32)"]
55605#[doc = "## Safety"]
55606#[doc = " * Neon instrinsic unsafe"]
55607#[inline]
55608#[target_feature(enable = "neon")]
55609#[cfg(target_arch = "arm")]
55610#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55611#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55612#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
55613pub unsafe fn vst1q_s32(ptr: *mut i32, a: int32x4_t) {
55614 vst1q_v4i32(ptr as *const i8, a, crate::mem::align_of::<i32>() as i32)
55615}
55616#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55617#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64)"]
55618#[doc = "## Safety"]
55619#[doc = " * Neon instrinsic unsafe"]
55620#[inline]
55621#[target_feature(enable = "neon")]
55622#[cfg(target_arch = "arm")]
55623#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55624#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55625#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
55626pub unsafe fn vst1_s64(ptr: *mut i64, a: int64x1_t) {
55627 vst1_v1i64(ptr as *const i8, a, crate::mem::align_of::<i64>() as i32)
55628}
55629#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55630#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64)"]
55631#[doc = "## Safety"]
55632#[doc = " * Neon instrinsic unsafe"]
55633#[inline]
55634#[target_feature(enable = "neon")]
55635#[cfg(target_arch = "arm")]
55636#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55637#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55638#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
55639pub unsafe fn vst1q_s64(ptr: *mut i64, a: int64x2_t) {
55640 vst1q_v2i64(ptr as *const i8, a, crate::mem::align_of::<i64>() as i32)
55641}
55642#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55643#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u8)"]
55644#[doc = "## Safety"]
55645#[doc = " * Neon instrinsic unsafe"]
55646#[inline]
55647#[target_feature(enable = "neon")]
55648#[cfg(target_arch = "arm")]
55649#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55650#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55651#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
55652pub unsafe fn vst1_u8(ptr: *mut u8, a: uint8x8_t) {
55653 vst1_v8i8(
55654 ptr as *const i8,
55655 transmute(a),
55656 crate::mem::align_of::<u8>() as i32,
55657 )
55658}
55659#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55660#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u8)"]
55661#[doc = "## Safety"]
55662#[doc = " * Neon instrinsic unsafe"]
55663#[inline]
55664#[target_feature(enable = "neon")]
55665#[cfg(target_arch = "arm")]
55666#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55667#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55668#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
55669pub unsafe fn vst1q_u8(ptr: *mut u8, a: uint8x16_t) {
55670 vst1q_v16i8(
55671 ptr as *const i8,
55672 transmute(a),
55673 crate::mem::align_of::<u8>() as i32,
55674 )
55675}
55676#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55677#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u16)"]
55678#[doc = "## Safety"]
55679#[doc = " * Neon instrinsic unsafe"]
55680#[inline]
55681#[target_feature(enable = "neon")]
55682#[cfg(target_arch = "arm")]
55683#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55684#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55685#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
55686pub unsafe fn vst1_u16(ptr: *mut u16, a: uint16x4_t) {
55687 vst1_v4i16(
55688 ptr as *const i8,
55689 transmute(a),
55690 crate::mem::align_of::<u16>() as i32,
55691 )
55692}
55693#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55694#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u16)"]
55695#[doc = "## Safety"]
55696#[doc = " * Neon instrinsic unsafe"]
55697#[inline]
55698#[target_feature(enable = "neon")]
55699#[cfg(target_arch = "arm")]
55700#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55701#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55702#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
55703pub unsafe fn vst1q_u16(ptr: *mut u16, a: uint16x8_t) {
55704 vst1q_v8i16(
55705 ptr as *const i8,
55706 transmute(a),
55707 crate::mem::align_of::<u16>() as i32,
55708 )
55709}
55710#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55711#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u32)"]
55712#[doc = "## Safety"]
55713#[doc = " * Neon instrinsic unsafe"]
55714#[inline]
55715#[target_feature(enable = "neon")]
55716#[cfg(target_arch = "arm")]
55717#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55718#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55719#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
55720pub unsafe fn vst1_u32(ptr: *mut u32, a: uint32x2_t) {
55721 vst1_v2i32(
55722 ptr as *const i8,
55723 transmute(a),
55724 crate::mem::align_of::<u32>() as i32,
55725 )
55726}
55727#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55728#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u32)"]
55729#[doc = "## Safety"]
55730#[doc = " * Neon instrinsic unsafe"]
55731#[inline]
55732#[target_feature(enable = "neon")]
55733#[cfg(target_arch = "arm")]
55734#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55735#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55736#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
55737pub unsafe fn vst1q_u32(ptr: *mut u32, a: uint32x4_t) {
55738 vst1q_v4i32(
55739 ptr as *const i8,
55740 transmute(a),
55741 crate::mem::align_of::<u32>() as i32,
55742 )
55743}
55744#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55745#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u64)"]
55746#[doc = "## Safety"]
55747#[doc = " * Neon instrinsic unsafe"]
55748#[inline]
55749#[target_feature(enable = "neon")]
55750#[cfg(target_arch = "arm")]
55751#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55752#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55753#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
55754pub unsafe fn vst1_u64(ptr: *mut u64, a: uint64x1_t) {
55755 vst1_v1i64(
55756 ptr as *const i8,
55757 transmute(a),
55758 crate::mem::align_of::<u64>() as i32,
55759 )
55760}
55761#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55762#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u64)"]
55763#[doc = "## Safety"]
55764#[doc = " * Neon instrinsic unsafe"]
55765#[inline]
55766#[target_feature(enable = "neon")]
55767#[cfg(target_arch = "arm")]
55768#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55769#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55770#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
55771pub unsafe fn vst1q_u64(ptr: *mut u64, a: uint64x2_t) {
55772 vst1q_v2i64(
55773 ptr as *const i8,
55774 transmute(a),
55775 crate::mem::align_of::<u64>() as i32,
55776 )
55777}
55778#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55779#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p8)"]
55780#[doc = "## Safety"]
55781#[doc = " * Neon instrinsic unsafe"]
55782#[inline]
55783#[target_feature(enable = "neon")]
55784#[cfg(target_arch = "arm")]
55785#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55786#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55787#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
55788pub unsafe fn vst1_p8(ptr: *mut p8, a: poly8x8_t) {
55789 vst1_v8i8(
55790 ptr as *const i8,
55791 transmute(a),
55792 crate::mem::align_of::<p8>() as i32,
55793 )
55794}
55795#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55796#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p8)"]
55797#[doc = "## Safety"]
55798#[doc = " * Neon instrinsic unsafe"]
55799#[inline]
55800#[target_feature(enable = "neon")]
55801#[cfg(target_arch = "arm")]
55802#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55803#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55804#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
55805pub unsafe fn vst1q_p8(ptr: *mut p8, a: poly8x16_t) {
55806 vst1q_v16i8(
55807 ptr as *const i8,
55808 transmute(a),
55809 crate::mem::align_of::<p8>() as i32,
55810 )
55811}
55812#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55813#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p16)"]
55814#[doc = "## Safety"]
55815#[doc = " * Neon instrinsic unsafe"]
55816#[inline]
55817#[target_feature(enable = "neon")]
55818#[cfg(target_arch = "arm")]
55819#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55820#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55821#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
55822pub unsafe fn vst1_p16(ptr: *mut p16, a: poly16x4_t) {
55823 vst1_v4i16(
55824 ptr as *const i8,
55825 transmute(a),
55826 crate::mem::align_of::<p16>() as i32,
55827 )
55828}
55829#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55830#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p16)"]
55831#[doc = "## Safety"]
55832#[doc = " * Neon instrinsic unsafe"]
55833#[inline]
55834#[target_feature(enable = "neon")]
55835#[cfg(target_arch = "arm")]
55836#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55837#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55838#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
55839pub unsafe fn vst1q_p16(ptr: *mut p16, a: poly16x8_t) {
55840 vst1q_v8i16(
55841 ptr as *const i8,
55842 transmute(a),
55843 crate::mem::align_of::<p16>() as i32,
55844 )
55845}
55846#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55847#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p64)"]
55848#[doc = "## Safety"]
55849#[doc = " * Neon instrinsic unsafe"]
55850#[inline]
55851#[target_feature(enable = "neon")]
55852#[cfg(target_arch = "arm")]
55853#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55854#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55855#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
55856pub unsafe fn vst1_p64(ptr: *mut p64, a: poly64x1_t) {
55857 vst1_v1i64(
55858 ptr as *const i8,
55859 transmute(a),
55860 crate::mem::align_of::<p64>() as i32,
55861 )
55862}
55863#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
55864#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p64)"]
55865#[doc = "## Safety"]
55866#[doc = " * Neon instrinsic unsafe"]
55867#[inline]
55868#[target_feature(enable = "neon")]
55869#[cfg(target_arch = "arm")]
55870#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55871#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55872#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
55873pub unsafe fn vst1q_p64(ptr: *mut p64, a: poly64x2_t) {
55874 vst1q_v2i64(
55875 ptr as *const i8,
55876 transmute(a),
55877 crate::mem::align_of::<p64>() as i32,
55878 )
55879}
55880#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
55881#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x2)"]
55882#[doc = "## Safety"]
55883#[doc = " * Neon instrinsic unsafe"]
55884#[inline]
55885#[cfg(target_arch = "arm")]
55886#[target_feature(enable = "neon,v7")]
55887#[cfg_attr(test, assert_instr(vst1))]
55888#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55889pub unsafe fn vst1_f32_x2(a: *mut f32, b: float32x2x2_t) {
55890 unsafe extern "unadjusted" {
55891 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v2f32.p0")]
55892 fn _vst1_f32_x2(ptr: *mut f32, a: float32x2_t, b: float32x2_t);
55893 }
55894 _vst1_f32_x2(a, b.0, b.1)
55895}
55896#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
55897#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x2)"]
55898#[doc = "## Safety"]
55899#[doc = " * Neon instrinsic unsafe"]
55900#[inline]
55901#[cfg(target_arch = "arm")]
55902#[target_feature(enable = "neon,v7")]
55903#[cfg_attr(test, assert_instr(vst1))]
55904#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55905pub unsafe fn vst1q_f32_x2(a: *mut f32, b: float32x4x2_t) {
55906 unsafe extern "unadjusted" {
55907 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v4f32.p0")]
55908 fn _vst1q_f32_x2(ptr: *mut f32, a: float32x4_t, b: float32x4_t);
55909 }
55910 _vst1q_f32_x2(a, b.0, b.1)
55911}
55912#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
55913#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x2)"]
55914#[doc = "## Safety"]
55915#[doc = " * Neon instrinsic unsafe"]
55916#[inline]
55917#[target_feature(enable = "neon")]
55918#[cfg(not(target_arch = "arm"))]
55919#[cfg_attr(test, assert_instr(st1))]
55920#[stable(feature = "neon_intrinsics", since = "1.59.0")]
55921pub unsafe fn vst1_f32_x2(a: *mut f32, b: float32x2x2_t) {
55922 unsafe extern "unadjusted" {
55923 #[cfg_attr(
55924 any(target_arch = "aarch64", target_arch = "arm64ec"),
55925 link_name = "llvm.aarch64.neon.st1x2.v2f32.p0"
55926 )]
55927 fn _vst1_f32_x2(a: float32x2_t, b: float32x2_t, ptr: *mut f32);
55928 }
55929 _vst1_f32_x2(b.0, b.1, a)
55930}
55931#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
55932#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x2)"]
55933#[doc = "## Safety"]
55934#[doc = " * Neon instrinsic unsafe"]
55935#[inline]
55936#[target_feature(enable = "neon")]
55937#[cfg(not(target_arch = "arm"))]
55938#[cfg_attr(test, assert_instr(st1))]
55939#[stable(feature = "neon_intrinsics", since = "1.59.0")]
55940pub unsafe fn vst1q_f32_x2(a: *mut f32, b: float32x4x2_t) {
55941 unsafe extern "unadjusted" {
55942 #[cfg_attr(
55943 any(target_arch = "aarch64", target_arch = "arm64ec"),
55944 link_name = "llvm.aarch64.neon.st1x2.v4f32.p0"
55945 )]
55946 fn _vst1q_f32_x2(a: float32x4_t, b: float32x4_t, ptr: *mut f32);
55947 }
55948 _vst1q_f32_x2(b.0, b.1, a)
55949}
55950#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
55951#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x3)"]
55952#[doc = "## Safety"]
55953#[doc = " * Neon instrinsic unsafe"]
55954#[inline]
55955#[target_feature(enable = "neon")]
55956#[cfg(not(target_arch = "arm"))]
55957#[cfg_attr(test, assert_instr(st1))]
55958#[stable(feature = "neon_intrinsics", since = "1.59.0")]
55959pub unsafe fn vst1_f32_x3(a: *mut f32, b: float32x2x3_t) {
55960 unsafe extern "unadjusted" {
55961 #[cfg_attr(
55962 any(target_arch = "aarch64", target_arch = "arm64ec"),
55963 link_name = "llvm.aarch64.neon.st1x3.v2f32.p0"
55964 )]
55965 fn _vst1_f32_x3(a: float32x2_t, b: float32x2_t, c: float32x2_t, ptr: *mut f32);
55966 }
55967 _vst1_f32_x3(b.0, b.1, b.2, a)
55968}
55969#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
55970#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x3)"]
55971#[doc = "## Safety"]
55972#[doc = " * Neon instrinsic unsafe"]
55973#[inline]
55974#[target_feature(enable = "neon")]
55975#[cfg(not(target_arch = "arm"))]
55976#[cfg_attr(test, assert_instr(st1))]
55977#[stable(feature = "neon_intrinsics", since = "1.59.0")]
55978pub unsafe fn vst1q_f32_x3(a: *mut f32, b: float32x4x3_t) {
55979 unsafe extern "unadjusted" {
55980 #[cfg_attr(
55981 any(target_arch = "aarch64", target_arch = "arm64ec"),
55982 link_name = "llvm.aarch64.neon.st1x3.v4f32.p0"
55983 )]
55984 fn _vst1q_f32_x3(a: float32x4_t, b: float32x4_t, c: float32x4_t, ptr: *mut f32);
55985 }
55986 _vst1q_f32_x3(b.0, b.1, b.2, a)
55987}
55988#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
55989#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x4)"]
55990#[doc = "## Safety"]
55991#[doc = " * Neon instrinsic unsafe"]
55992#[inline]
55993#[cfg(target_arch = "arm")]
55994#[target_feature(enable = "neon,v7")]
55995#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
55996#[cfg_attr(test, assert_instr(vst1))]
55997pub unsafe fn vst1_f32_x4(a: *mut f32, b: float32x2x4_t) {
55998 unsafe extern "unadjusted" {
55999 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v2f32.p0")]
56000 fn _vst1_f32_x4(
56001 ptr: *mut f32,
56002 a: float32x2_t,
56003 b: float32x2_t,
56004 c: float32x2_t,
56005 d: float32x2_t,
56006 );
56007 }
56008 _vst1_f32_x4(a, b.0, b.1, b.2, b.3)
56009}
56010#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
56011#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x4)"]
56012#[doc = "## Safety"]
56013#[doc = " * Neon instrinsic unsafe"]
56014#[inline]
56015#[cfg(target_arch = "arm")]
56016#[target_feature(enable = "neon,v7")]
56017#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
56018#[cfg_attr(test, assert_instr(vst1))]
56019pub unsafe fn vst1q_f32_x4(a: *mut f32, b: float32x4x4_t) {
56020 unsafe extern "unadjusted" {
56021 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v4f32.p0")]
56022 fn _vst1q_f32_x4(
56023 ptr: *mut f32,
56024 a: float32x4_t,
56025 b: float32x4_t,
56026 c: float32x4_t,
56027 d: float32x4_t,
56028 );
56029 }
56030 _vst1q_f32_x4(a, b.0, b.1, b.2, b.3)
56031}
56032#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
56033#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x4)"]
56034#[doc = "## Safety"]
56035#[doc = " * Neon instrinsic unsafe"]
56036#[inline]
56037#[target_feature(enable = "neon")]
56038#[cfg(not(target_arch = "arm"))]
56039#[cfg_attr(test, assert_instr(st1))]
56040#[stable(feature = "neon_intrinsics", since = "1.59.0")]
56041pub unsafe fn vst1_f32_x4(a: *mut f32, b: float32x2x4_t) {
56042 unsafe extern "unadjusted" {
56043 #[cfg_attr(
56044 any(target_arch = "aarch64", target_arch = "arm64ec"),
56045 link_name = "llvm.aarch64.neon.st1x4.v2f32.p0"
56046 )]
56047 fn _vst1_f32_x4(
56048 a: float32x2_t,
56049 b: float32x2_t,
56050 c: float32x2_t,
56051 d: float32x2_t,
56052 ptr: *mut f32,
56053 );
56054 }
56055 _vst1_f32_x4(b.0, b.1, b.2, b.3, a)
56056}
56057#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
56058#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x4)"]
56059#[doc = "## Safety"]
56060#[doc = " * Neon instrinsic unsafe"]
56061#[inline]
56062#[target_feature(enable = "neon")]
56063#[cfg(not(target_arch = "arm"))]
56064#[cfg_attr(test, assert_instr(st1))]
56065#[stable(feature = "neon_intrinsics", since = "1.59.0")]
56066pub unsafe fn vst1q_f32_x4(a: *mut f32, b: float32x4x4_t) {
56067 unsafe extern "unadjusted" {
56068 #[cfg_attr(
56069 any(target_arch = "aarch64", target_arch = "arm64ec"),
56070 link_name = "llvm.aarch64.neon.st1x4.v4f32.p0"
56071 )]
56072 fn _vst1q_f32_x4(
56073 a: float32x4_t,
56074 b: float32x4_t,
56075 c: float32x4_t,
56076 d: float32x4_t,
56077 ptr: *mut f32,
56078 );
56079 }
56080 _vst1q_f32_x4(b.0, b.1, b.2, b.3, a)
56081}
56082#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56083#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_f16)"]
56084#[doc = "## Safety"]
56085#[doc = " * Neon instrinsic unsafe"]
56086#[inline]
56087#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56088#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56089#[cfg_attr(
56090 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56091 assert_instr(nop, LANE = 0)
56092)]
56093#[rustc_legacy_const_generics(2)]
56094#[target_feature(enable = "neon,fp16")]
56095#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
56096#[cfg(not(target_arch = "arm64ec"))]
56097pub unsafe fn vst1_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4_t) {
56098 static_assert_uimm_bits!(LANE, 2);
56099 *a = simd_extract!(b, LANE as u32);
56100}
56101#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56102#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_f16)"]
56103#[doc = "## Safety"]
56104#[doc = " * Neon instrinsic unsafe"]
56105#[inline]
56106#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56107#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56108#[cfg_attr(
56109 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56110 assert_instr(nop, LANE = 0)
56111)]
56112#[rustc_legacy_const_generics(2)]
56113#[target_feature(enable = "neon,fp16")]
56114#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
56115#[cfg(not(target_arch = "arm64ec"))]
56116pub unsafe fn vst1q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8_t) {
56117 static_assert_uimm_bits!(LANE, 3);
56118 *a = simd_extract!(b, LANE as u32);
56119}
56120#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56121#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_f32)"]
56122#[doc = "## Safety"]
56123#[doc = " * Neon instrinsic unsafe"]
56124#[inline]
56125#[target_feature(enable = "neon")]
56126#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56127#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56128#[cfg_attr(
56129 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56130 assert_instr(nop, LANE = 0)
56131)]
56132#[rustc_legacy_const_generics(2)]
56133#[cfg_attr(
56134 not(target_arch = "arm"),
56135 stable(feature = "neon_intrinsics", since = "1.59.0")
56136)]
56137#[cfg_attr(
56138 target_arch = "arm",
56139 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56140)]
56141pub unsafe fn vst1_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2_t) {
56142 static_assert_uimm_bits!(LANE, 1);
56143 *a = simd_extract!(b, LANE as u32);
56144}
56145#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56146#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_f32)"]
56147#[doc = "## Safety"]
56148#[doc = " * Neon instrinsic unsafe"]
56149#[inline]
56150#[target_feature(enable = "neon")]
56151#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56152#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56153#[cfg_attr(
56154 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56155 assert_instr(nop, LANE = 0)
56156)]
56157#[rustc_legacy_const_generics(2)]
56158#[cfg_attr(
56159 not(target_arch = "arm"),
56160 stable(feature = "neon_intrinsics", since = "1.59.0")
56161)]
56162#[cfg_attr(
56163 target_arch = "arm",
56164 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56165)]
56166pub unsafe fn vst1q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4_t) {
56167 static_assert_uimm_bits!(LANE, 2);
56168 *a = simd_extract!(b, LANE as u32);
56169}
56170#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56171#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_s8)"]
56172#[doc = "## Safety"]
56173#[doc = " * Neon instrinsic unsafe"]
56174#[inline]
56175#[target_feature(enable = "neon")]
56176#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56177#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56178#[cfg_attr(
56179 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56180 assert_instr(nop, LANE = 0)
56181)]
56182#[rustc_legacy_const_generics(2)]
56183#[cfg_attr(
56184 not(target_arch = "arm"),
56185 stable(feature = "neon_intrinsics", since = "1.59.0")
56186)]
56187#[cfg_attr(
56188 target_arch = "arm",
56189 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56190)]
56191pub unsafe fn vst1_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8_t) {
56192 static_assert_uimm_bits!(LANE, 3);
56193 *a = simd_extract!(b, LANE as u32);
56194}
56195#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56196#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_s8)"]
56197#[doc = "## Safety"]
56198#[doc = " * Neon instrinsic unsafe"]
56199#[inline]
56200#[target_feature(enable = "neon")]
56201#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56202#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56203#[cfg_attr(
56204 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56205 assert_instr(nop, LANE = 0)
56206)]
56207#[rustc_legacy_const_generics(2)]
56208#[cfg_attr(
56209 not(target_arch = "arm"),
56210 stable(feature = "neon_intrinsics", since = "1.59.0")
56211)]
56212#[cfg_attr(
56213 target_arch = "arm",
56214 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56215)]
56216pub unsafe fn vst1q_lane_s8<const LANE: i32>(a: *mut i8, b: int8x16_t) {
56217 static_assert_uimm_bits!(LANE, 4);
56218 *a = simd_extract!(b, LANE as u32);
56219}
56220#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56221#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_s16)"]
56222#[doc = "## Safety"]
56223#[doc = " * Neon instrinsic unsafe"]
56224#[inline]
56225#[target_feature(enable = "neon")]
56226#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56227#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56228#[cfg_attr(
56229 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56230 assert_instr(nop, LANE = 0)
56231)]
56232#[rustc_legacy_const_generics(2)]
56233#[cfg_attr(
56234 not(target_arch = "arm"),
56235 stable(feature = "neon_intrinsics", since = "1.59.0")
56236)]
56237#[cfg_attr(
56238 target_arch = "arm",
56239 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56240)]
56241pub unsafe fn vst1_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4_t) {
56242 static_assert_uimm_bits!(LANE, 2);
56243 *a = simd_extract!(b, LANE as u32);
56244}
56245#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56246#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_s16)"]
56247#[doc = "## Safety"]
56248#[doc = " * Neon instrinsic unsafe"]
56249#[inline]
56250#[target_feature(enable = "neon")]
56251#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56252#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56253#[cfg_attr(
56254 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56255 assert_instr(nop, LANE = 0)
56256)]
56257#[rustc_legacy_const_generics(2)]
56258#[cfg_attr(
56259 not(target_arch = "arm"),
56260 stable(feature = "neon_intrinsics", since = "1.59.0")
56261)]
56262#[cfg_attr(
56263 target_arch = "arm",
56264 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56265)]
56266pub unsafe fn vst1q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8_t) {
56267 static_assert_uimm_bits!(LANE, 3);
56268 *a = simd_extract!(b, LANE as u32);
56269}
56270#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56271#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_s32)"]
56272#[doc = "## Safety"]
56273#[doc = " * Neon instrinsic unsafe"]
56274#[inline]
56275#[target_feature(enable = "neon")]
56276#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56277#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56278#[cfg_attr(
56279 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56280 assert_instr(nop, LANE = 0)
56281)]
56282#[rustc_legacy_const_generics(2)]
56283#[cfg_attr(
56284 not(target_arch = "arm"),
56285 stable(feature = "neon_intrinsics", since = "1.59.0")
56286)]
56287#[cfg_attr(
56288 target_arch = "arm",
56289 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56290)]
56291pub unsafe fn vst1_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2_t) {
56292 static_assert_uimm_bits!(LANE, 1);
56293 *a = simd_extract!(b, LANE as u32);
56294}
56295#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56296#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_s32)"]
56297#[doc = "## Safety"]
56298#[doc = " * Neon instrinsic unsafe"]
56299#[inline]
56300#[target_feature(enable = "neon")]
56301#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56302#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56303#[cfg_attr(
56304 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56305 assert_instr(nop, LANE = 0)
56306)]
56307#[rustc_legacy_const_generics(2)]
56308#[cfg_attr(
56309 not(target_arch = "arm"),
56310 stable(feature = "neon_intrinsics", since = "1.59.0")
56311)]
56312#[cfg_attr(
56313 target_arch = "arm",
56314 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56315)]
56316pub unsafe fn vst1q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4_t) {
56317 static_assert_uimm_bits!(LANE, 2);
56318 *a = simd_extract!(b, LANE as u32);
56319}
56320#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56321#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_s64)"]
56322#[doc = "## Safety"]
56323#[doc = " * Neon instrinsic unsafe"]
56324#[inline]
56325#[target_feature(enable = "neon")]
56326#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56327#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56328#[cfg_attr(
56329 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56330 assert_instr(nop, LANE = 0)
56331)]
56332#[rustc_legacy_const_generics(2)]
56333#[cfg_attr(
56334 not(target_arch = "arm"),
56335 stable(feature = "neon_intrinsics", since = "1.59.0")
56336)]
56337#[cfg_attr(
56338 target_arch = "arm",
56339 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56340)]
56341pub unsafe fn vst1q_lane_s64<const LANE: i32>(a: *mut i64, b: int64x2_t) {
56342 static_assert_uimm_bits!(LANE, 1);
56343 *a = simd_extract!(b, LANE as u32);
56344}
56345#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56346#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_u8)"]
56347#[doc = "## Safety"]
56348#[doc = " * Neon instrinsic unsafe"]
56349#[inline]
56350#[target_feature(enable = "neon")]
56351#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56352#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56353#[cfg_attr(
56354 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56355 assert_instr(nop, LANE = 0)
56356)]
56357#[rustc_legacy_const_generics(2)]
56358#[cfg_attr(
56359 not(target_arch = "arm"),
56360 stable(feature = "neon_intrinsics", since = "1.59.0")
56361)]
56362#[cfg_attr(
56363 target_arch = "arm",
56364 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56365)]
56366pub unsafe fn vst1_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x8_t) {
56367 static_assert_uimm_bits!(LANE, 3);
56368 *a = simd_extract!(b, LANE as u32);
56369}
56370#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56371#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_u8)"]
56372#[doc = "## Safety"]
56373#[doc = " * Neon instrinsic unsafe"]
56374#[inline]
56375#[target_feature(enable = "neon")]
56376#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56377#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56378#[cfg_attr(
56379 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56380 assert_instr(nop, LANE = 0)
56381)]
56382#[rustc_legacy_const_generics(2)]
56383#[cfg_attr(
56384 not(target_arch = "arm"),
56385 stable(feature = "neon_intrinsics", since = "1.59.0")
56386)]
56387#[cfg_attr(
56388 target_arch = "arm",
56389 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56390)]
56391pub unsafe fn vst1q_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x16_t) {
56392 static_assert_uimm_bits!(LANE, 4);
56393 *a = simd_extract!(b, LANE as u32);
56394}
56395#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56396#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_u16)"]
56397#[doc = "## Safety"]
56398#[doc = " * Neon instrinsic unsafe"]
56399#[inline]
56400#[target_feature(enable = "neon")]
56401#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56402#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56403#[cfg_attr(
56404 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56405 assert_instr(nop, LANE = 0)
56406)]
56407#[rustc_legacy_const_generics(2)]
56408#[cfg_attr(
56409 not(target_arch = "arm"),
56410 stable(feature = "neon_intrinsics", since = "1.59.0")
56411)]
56412#[cfg_attr(
56413 target_arch = "arm",
56414 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56415)]
56416pub unsafe fn vst1_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x4_t) {
56417 static_assert_uimm_bits!(LANE, 2);
56418 *a = simd_extract!(b, LANE as u32);
56419}
56420#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56421#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_u16)"]
56422#[doc = "## Safety"]
56423#[doc = " * Neon instrinsic unsafe"]
56424#[inline]
56425#[target_feature(enable = "neon")]
56426#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56427#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56428#[cfg_attr(
56429 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56430 assert_instr(nop, LANE = 0)
56431)]
56432#[rustc_legacy_const_generics(2)]
56433#[cfg_attr(
56434 not(target_arch = "arm"),
56435 stable(feature = "neon_intrinsics", since = "1.59.0")
56436)]
56437#[cfg_attr(
56438 target_arch = "arm",
56439 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56440)]
56441pub unsafe fn vst1q_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x8_t) {
56442 static_assert_uimm_bits!(LANE, 3);
56443 *a = simd_extract!(b, LANE as u32);
56444}
56445#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56446#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_u32)"]
56447#[doc = "## Safety"]
56448#[doc = " * Neon instrinsic unsafe"]
56449#[inline]
56450#[target_feature(enable = "neon")]
56451#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56452#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56453#[cfg_attr(
56454 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56455 assert_instr(nop, LANE = 0)
56456)]
56457#[rustc_legacy_const_generics(2)]
56458#[cfg_attr(
56459 not(target_arch = "arm"),
56460 stable(feature = "neon_intrinsics", since = "1.59.0")
56461)]
56462#[cfg_attr(
56463 target_arch = "arm",
56464 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56465)]
56466pub unsafe fn vst1_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x2_t) {
56467 static_assert_uimm_bits!(LANE, 1);
56468 *a = simd_extract!(b, LANE as u32);
56469}
56470#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56471#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_u32)"]
56472#[doc = "## Safety"]
56473#[doc = " * Neon instrinsic unsafe"]
56474#[inline]
56475#[target_feature(enable = "neon")]
56476#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56477#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56478#[cfg_attr(
56479 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56480 assert_instr(nop, LANE = 0)
56481)]
56482#[rustc_legacy_const_generics(2)]
56483#[cfg_attr(
56484 not(target_arch = "arm"),
56485 stable(feature = "neon_intrinsics", since = "1.59.0")
56486)]
56487#[cfg_attr(
56488 target_arch = "arm",
56489 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56490)]
56491pub unsafe fn vst1q_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x4_t) {
56492 static_assert_uimm_bits!(LANE, 2);
56493 *a = simd_extract!(b, LANE as u32);
56494}
56495#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56496#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_u64)"]
56497#[doc = "## Safety"]
56498#[doc = " * Neon instrinsic unsafe"]
56499#[inline]
56500#[target_feature(enable = "neon")]
56501#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56502#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56503#[cfg_attr(
56504 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56505 assert_instr(nop, LANE = 0)
56506)]
56507#[rustc_legacy_const_generics(2)]
56508#[cfg_attr(
56509 not(target_arch = "arm"),
56510 stable(feature = "neon_intrinsics", since = "1.59.0")
56511)]
56512#[cfg_attr(
56513 target_arch = "arm",
56514 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56515)]
56516pub unsafe fn vst1q_lane_u64<const LANE: i32>(a: *mut u64, b: uint64x2_t) {
56517 static_assert_uimm_bits!(LANE, 1);
56518 *a = simd_extract!(b, LANE as u32);
56519}
56520#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56521#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_p8)"]
56522#[doc = "## Safety"]
56523#[doc = " * Neon instrinsic unsafe"]
56524#[inline]
56525#[target_feature(enable = "neon")]
56526#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56527#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56528#[cfg_attr(
56529 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56530 assert_instr(nop, LANE = 0)
56531)]
56532#[rustc_legacy_const_generics(2)]
56533#[cfg_attr(
56534 not(target_arch = "arm"),
56535 stable(feature = "neon_intrinsics", since = "1.59.0")
56536)]
56537#[cfg_attr(
56538 target_arch = "arm",
56539 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56540)]
56541pub unsafe fn vst1_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x8_t) {
56542 static_assert_uimm_bits!(LANE, 3);
56543 *a = simd_extract!(b, LANE as u32);
56544}
56545#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56546#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_p8)"]
56547#[doc = "## Safety"]
56548#[doc = " * Neon instrinsic unsafe"]
56549#[inline]
56550#[target_feature(enable = "neon")]
56551#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56552#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56553#[cfg_attr(
56554 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56555 assert_instr(nop, LANE = 0)
56556)]
56557#[rustc_legacy_const_generics(2)]
56558#[cfg_attr(
56559 not(target_arch = "arm"),
56560 stable(feature = "neon_intrinsics", since = "1.59.0")
56561)]
56562#[cfg_attr(
56563 target_arch = "arm",
56564 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56565)]
56566pub unsafe fn vst1q_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x16_t) {
56567 static_assert_uimm_bits!(LANE, 4);
56568 *a = simd_extract!(b, LANE as u32);
56569}
56570#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56571#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_p16)"]
56572#[doc = "## Safety"]
56573#[doc = " * Neon instrinsic unsafe"]
56574#[inline]
56575#[target_feature(enable = "neon")]
56576#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56577#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56578#[cfg_attr(
56579 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56580 assert_instr(nop, LANE = 0)
56581)]
56582#[rustc_legacy_const_generics(2)]
56583#[cfg_attr(
56584 not(target_arch = "arm"),
56585 stable(feature = "neon_intrinsics", since = "1.59.0")
56586)]
56587#[cfg_attr(
56588 target_arch = "arm",
56589 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56590)]
56591pub unsafe fn vst1_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x4_t) {
56592 static_assert_uimm_bits!(LANE, 2);
56593 *a = simd_extract!(b, LANE as u32);
56594}
56595#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56596#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_p16)"]
56597#[doc = "## Safety"]
56598#[doc = " * Neon instrinsic unsafe"]
56599#[inline]
56600#[target_feature(enable = "neon")]
56601#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56602#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56603#[cfg_attr(
56604 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56605 assert_instr(nop, LANE = 0)
56606)]
56607#[rustc_legacy_const_generics(2)]
56608#[cfg_attr(
56609 not(target_arch = "arm"),
56610 stable(feature = "neon_intrinsics", since = "1.59.0")
56611)]
56612#[cfg_attr(
56613 target_arch = "arm",
56614 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56615)]
56616pub unsafe fn vst1q_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x8_t) {
56617 static_assert_uimm_bits!(LANE, 3);
56618 *a = simd_extract!(b, LANE as u32);
56619}
56620#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56621#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_p64)"]
56622#[doc = "## Safety"]
56623#[doc = " * Neon instrinsic unsafe"]
56624#[inline]
56625#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56626#[target_feature(enable = "neon,aes")]
56627#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56628#[cfg_attr(
56629 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56630 assert_instr(nop, LANE = 0)
56631)]
56632#[rustc_legacy_const_generics(2)]
56633#[cfg_attr(
56634 not(target_arch = "arm"),
56635 stable(feature = "neon_intrinsics", since = "1.59.0")
56636)]
56637#[cfg_attr(
56638 target_arch = "arm",
56639 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56640)]
56641pub unsafe fn vst1_lane_p64<const LANE: i32>(a: *mut p64, b: poly64x1_t) {
56642 static_assert!(LANE == 0);
56643 *a = simd_extract!(b, LANE as u32);
56644}
56645#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56646#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_s64)"]
56647#[doc = "## Safety"]
56648#[doc = " * Neon instrinsic unsafe"]
56649#[inline]
56650#[target_feature(enable = "neon")]
56651#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56652#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56653#[cfg_attr(
56654 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56655 assert_instr(nop, LANE = 0)
56656)]
56657#[rustc_legacy_const_generics(2)]
56658#[cfg_attr(
56659 not(target_arch = "arm"),
56660 stable(feature = "neon_intrinsics", since = "1.59.0")
56661)]
56662#[cfg_attr(
56663 target_arch = "arm",
56664 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56665)]
56666pub unsafe fn vst1_lane_s64<const LANE: i32>(a: *mut i64, b: int64x1_t) {
56667 static_assert!(LANE == 0);
56668 *a = simd_extract!(b, LANE as u32);
56669}
56670#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56671#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_u64)"]
56672#[doc = "## Safety"]
56673#[doc = " * Neon instrinsic unsafe"]
56674#[inline]
56675#[target_feature(enable = "neon")]
56676#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56677#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
56678#[cfg_attr(
56679 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56680 assert_instr(nop, LANE = 0)
56681)]
56682#[rustc_legacy_const_generics(2)]
56683#[cfg_attr(
56684 not(target_arch = "arm"),
56685 stable(feature = "neon_intrinsics", since = "1.59.0")
56686)]
56687#[cfg_attr(
56688 target_arch = "arm",
56689 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56690)]
56691pub unsafe fn vst1_lane_u64<const LANE: i32>(a: *mut u64, b: uint64x1_t) {
56692 static_assert!(LANE == 0);
56693 *a = simd_extract!(b, LANE as u32);
56694}
56695#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
56696#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p64_x2)"]
56697#[doc = "## Safety"]
56698#[doc = " * Neon instrinsic unsafe"]
56699#[inline]
56700#[target_feature(enable = "neon,aes")]
56701#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56702#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
56703#[cfg_attr(
56704 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56705 assert_instr(st1)
56706)]
56707#[cfg_attr(
56708 not(target_arch = "arm"),
56709 stable(feature = "neon_intrinsics", since = "1.59.0")
56710)]
56711#[cfg_attr(
56712 target_arch = "arm",
56713 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56714)]
56715pub unsafe fn vst1_p64_x2(a: *mut p64, b: poly64x1x2_t) {
56716 vst1_s64_x2(transmute(a), transmute(b))
56717}
56718#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
56719#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p64_x3)"]
56720#[doc = "## Safety"]
56721#[doc = " * Neon instrinsic unsafe"]
56722#[inline]
56723#[target_feature(enable = "neon,aes")]
56724#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56725#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56726#[cfg_attr(
56727 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56728 assert_instr(st1)
56729)]
56730#[cfg_attr(
56731 not(target_arch = "arm"),
56732 stable(feature = "neon_intrinsics", since = "1.59.0")
56733)]
56734#[cfg_attr(
56735 target_arch = "arm",
56736 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56737)]
56738pub unsafe fn vst1_p64_x3(a: *mut p64, b: poly64x1x3_t) {
56739 vst1_s64_x3(transmute(a), transmute(b))
56740}
56741#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
56742#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p64_x4)"]
56743#[doc = "## Safety"]
56744#[doc = " * Neon instrinsic unsafe"]
56745#[inline]
56746#[target_feature(enable = "neon,aes")]
56747#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56748#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56749#[cfg_attr(
56750 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56751 assert_instr(st1)
56752)]
56753#[cfg_attr(
56754 not(target_arch = "arm"),
56755 stable(feature = "neon_intrinsics", since = "1.59.0")
56756)]
56757#[cfg_attr(
56758 target_arch = "arm",
56759 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56760)]
56761pub unsafe fn vst1_p64_x4(a: *mut p64, b: poly64x1x4_t) {
56762 vst1_s64_x4(transmute(a), transmute(b))
56763}
56764#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
56765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p64_x2)"]
56766#[doc = "## Safety"]
56767#[doc = " * Neon instrinsic unsafe"]
56768#[inline]
56769#[target_feature(enable = "neon,aes")]
56770#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56771#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56772#[cfg_attr(
56773 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56774 assert_instr(st1)
56775)]
56776#[cfg_attr(
56777 not(target_arch = "arm"),
56778 stable(feature = "neon_intrinsics", since = "1.59.0")
56779)]
56780#[cfg_attr(
56781 target_arch = "arm",
56782 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56783)]
56784pub unsafe fn vst1q_p64_x2(a: *mut p64, b: poly64x2x2_t) {
56785 vst1q_s64_x2(transmute(a), transmute(b))
56786}
56787#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
56788#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p64_x3)"]
56789#[doc = "## Safety"]
56790#[doc = " * Neon instrinsic unsafe"]
56791#[inline]
56792#[target_feature(enable = "neon,aes")]
56793#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56794#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56795#[cfg_attr(
56796 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56797 assert_instr(st1)
56798)]
56799#[cfg_attr(
56800 not(target_arch = "arm"),
56801 stable(feature = "neon_intrinsics", since = "1.59.0")
56802)]
56803#[cfg_attr(
56804 target_arch = "arm",
56805 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56806)]
56807pub unsafe fn vst1q_p64_x3(a: *mut p64, b: poly64x2x3_t) {
56808 vst1q_s64_x3(transmute(a), transmute(b))
56809}
56810#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
56811#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p64_x4)"]
56812#[doc = "## Safety"]
56813#[doc = " * Neon instrinsic unsafe"]
56814#[inline]
56815#[target_feature(enable = "neon,aes")]
56816#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56817#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56818#[cfg_attr(
56819 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56820 assert_instr(st1)
56821)]
56822#[cfg_attr(
56823 not(target_arch = "arm"),
56824 stable(feature = "neon_intrinsics", since = "1.59.0")
56825)]
56826#[cfg_attr(
56827 target_arch = "arm",
56828 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56829)]
56830pub unsafe fn vst1q_p64_x4(a: *mut p64, b: poly64x2x4_t) {
56831 vst1q_s64_x4(transmute(a), transmute(b))
56832}
56833#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56834#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x2)"]
56835#[doc = "## Safety"]
56836#[doc = " * Neon instrinsic unsafe"]
56837#[inline]
56838#[target_feature(enable = "neon")]
56839#[cfg(not(target_arch = "arm"))]
56840#[stable(feature = "neon_intrinsics", since = "1.59.0")]
56841#[cfg_attr(test, assert_instr(st1))]
56842pub unsafe fn vst1_s8_x2(a: *mut i8, b: int8x8x2_t) {
56843 unsafe extern "unadjusted" {
56844 #[cfg_attr(
56845 any(target_arch = "aarch64", target_arch = "arm64ec"),
56846 link_name = "llvm.aarch64.neon.st1x2.v8i8.p0"
56847 )]
56848 fn _vst1_s8_x2(a: int8x8_t, b: int8x8_t, ptr: *mut i8);
56849 }
56850 _vst1_s8_x2(b.0, b.1, a)
56851}
56852#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56853#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x2)"]
56854#[doc = "## Safety"]
56855#[doc = " * Neon instrinsic unsafe"]
56856#[inline]
56857#[target_feature(enable = "neon")]
56858#[cfg(not(target_arch = "arm"))]
56859#[stable(feature = "neon_intrinsics", since = "1.59.0")]
56860#[cfg_attr(test, assert_instr(st1))]
56861pub unsafe fn vst1q_s8_x2(a: *mut i8, b: int8x16x2_t) {
56862 unsafe extern "unadjusted" {
56863 #[cfg_attr(
56864 any(target_arch = "aarch64", target_arch = "arm64ec"),
56865 link_name = "llvm.aarch64.neon.st1x2.v16i8.p0"
56866 )]
56867 fn _vst1q_s8_x2(a: int8x16_t, b: int8x16_t, ptr: *mut i8);
56868 }
56869 _vst1q_s8_x2(b.0, b.1, a)
56870}
56871#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56872#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x2)"]
56873#[doc = "## Safety"]
56874#[doc = " * Neon instrinsic unsafe"]
56875#[inline]
56876#[target_feature(enable = "neon")]
56877#[cfg(not(target_arch = "arm"))]
56878#[stable(feature = "neon_intrinsics", since = "1.59.0")]
56879#[cfg_attr(test, assert_instr(st1))]
56880pub unsafe fn vst1_s16_x2(a: *mut i16, b: int16x4x2_t) {
56881 unsafe extern "unadjusted" {
56882 #[cfg_attr(
56883 any(target_arch = "aarch64", target_arch = "arm64ec"),
56884 link_name = "llvm.aarch64.neon.st1x2.v4i16.p0"
56885 )]
56886 fn _vst1_s16_x2(a: int16x4_t, b: int16x4_t, ptr: *mut i16);
56887 }
56888 _vst1_s16_x2(b.0, b.1, a)
56889}
56890#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56891#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x2)"]
56892#[doc = "## Safety"]
56893#[doc = " * Neon instrinsic unsafe"]
56894#[inline]
56895#[target_feature(enable = "neon")]
56896#[cfg(not(target_arch = "arm"))]
56897#[stable(feature = "neon_intrinsics", since = "1.59.0")]
56898#[cfg_attr(test, assert_instr(st1))]
56899pub unsafe fn vst1q_s16_x2(a: *mut i16, b: int16x8x2_t) {
56900 unsafe extern "unadjusted" {
56901 #[cfg_attr(
56902 any(target_arch = "aarch64", target_arch = "arm64ec"),
56903 link_name = "llvm.aarch64.neon.st1x2.v8i16.p0"
56904 )]
56905 fn _vst1q_s16_x2(a: int16x8_t, b: int16x8_t, ptr: *mut i16);
56906 }
56907 _vst1q_s16_x2(b.0, b.1, a)
56908}
56909#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56910#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x2)"]
56911#[doc = "## Safety"]
56912#[doc = " * Neon instrinsic unsafe"]
56913#[inline]
56914#[target_feature(enable = "neon")]
56915#[cfg(not(target_arch = "arm"))]
56916#[stable(feature = "neon_intrinsics", since = "1.59.0")]
56917#[cfg_attr(test, assert_instr(st1))]
56918pub unsafe fn vst1_s32_x2(a: *mut i32, b: int32x2x2_t) {
56919 unsafe extern "unadjusted" {
56920 #[cfg_attr(
56921 any(target_arch = "aarch64", target_arch = "arm64ec"),
56922 link_name = "llvm.aarch64.neon.st1x2.v2i32.p0"
56923 )]
56924 fn _vst1_s32_x2(a: int32x2_t, b: int32x2_t, ptr: *mut i32);
56925 }
56926 _vst1_s32_x2(b.0, b.1, a)
56927}
56928#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56929#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x2)"]
56930#[doc = "## Safety"]
56931#[doc = " * Neon instrinsic unsafe"]
56932#[inline]
56933#[target_feature(enable = "neon")]
56934#[cfg(not(target_arch = "arm"))]
56935#[stable(feature = "neon_intrinsics", since = "1.59.0")]
56936#[cfg_attr(test, assert_instr(st1))]
56937pub unsafe fn vst1q_s32_x2(a: *mut i32, b: int32x4x2_t) {
56938 unsafe extern "unadjusted" {
56939 #[cfg_attr(
56940 any(target_arch = "aarch64", target_arch = "arm64ec"),
56941 link_name = "llvm.aarch64.neon.st1x2.v4i32.p0"
56942 )]
56943 fn _vst1q_s32_x2(a: int32x4_t, b: int32x4_t, ptr: *mut i32);
56944 }
56945 _vst1q_s32_x2(b.0, b.1, a)
56946}
56947#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56948#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x2)"]
56949#[doc = "## Safety"]
56950#[doc = " * Neon instrinsic unsafe"]
56951#[inline]
56952#[target_feature(enable = "neon")]
56953#[cfg(not(target_arch = "arm"))]
56954#[stable(feature = "neon_intrinsics", since = "1.59.0")]
56955#[cfg_attr(test, assert_instr(st1))]
56956pub unsafe fn vst1_s64_x2(a: *mut i64, b: int64x1x2_t) {
56957 unsafe extern "unadjusted" {
56958 #[cfg_attr(
56959 any(target_arch = "aarch64", target_arch = "arm64ec"),
56960 link_name = "llvm.aarch64.neon.st1x2.v1i64.p0"
56961 )]
56962 fn _vst1_s64_x2(a: int64x1_t, b: int64x1_t, ptr: *mut i64);
56963 }
56964 _vst1_s64_x2(b.0, b.1, a)
56965}
56966#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56967#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x2)"]
56968#[doc = "## Safety"]
56969#[doc = " * Neon instrinsic unsafe"]
56970#[inline]
56971#[target_feature(enable = "neon")]
56972#[cfg(not(target_arch = "arm"))]
56973#[stable(feature = "neon_intrinsics", since = "1.59.0")]
56974#[cfg_attr(test, assert_instr(st1))]
56975pub unsafe fn vst1q_s64_x2(a: *mut i64, b: int64x2x2_t) {
56976 unsafe extern "unadjusted" {
56977 #[cfg_attr(
56978 any(target_arch = "aarch64", target_arch = "arm64ec"),
56979 link_name = "llvm.aarch64.neon.st1x2.v2i64.p0"
56980 )]
56981 fn _vst1q_s64_x2(a: int64x2_t, b: int64x2_t, ptr: *mut i64);
56982 }
56983 _vst1q_s64_x2(b.0, b.1, a)
56984}
56985#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
56986#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x2)"]
56987#[doc = "## Safety"]
56988#[doc = " * Neon instrinsic unsafe"]
56989#[inline]
56990#[target_feature(enable = "neon,v7")]
56991#[cfg(target_arch = "arm")]
56992#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
56993#[cfg_attr(test, assert_instr(vst1))]
56994pub unsafe fn vst1_s8_x2(a: *mut i8, b: int8x8x2_t) {
56995 unsafe extern "unadjusted" {
56996 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v8i8.p0")]
56997 fn _vst1_s8_x2(ptr: *mut i8, a: int8x8_t, b: int8x8_t);
56998 }
56999 _vst1_s8_x2(a, b.0, b.1)
57000}
57001#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57002#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x2)"]
57003#[doc = "## Safety"]
57004#[doc = " * Neon instrinsic unsafe"]
57005#[inline]
57006#[target_feature(enable = "neon,v7")]
57007#[cfg(target_arch = "arm")]
57008#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57009#[cfg_attr(test, assert_instr(vst1))]
57010pub unsafe fn vst1q_s8_x2(a: *mut i8, b: int8x16x2_t) {
57011 unsafe extern "unadjusted" {
57012 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v16i8.p0")]
57013 fn _vst1q_s8_x2(ptr: *mut i8, a: int8x16_t, b: int8x16_t);
57014 }
57015 _vst1q_s8_x2(a, b.0, b.1)
57016}
57017#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57018#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x2)"]
57019#[doc = "## Safety"]
57020#[doc = " * Neon instrinsic unsafe"]
57021#[inline]
57022#[target_feature(enable = "neon,v7")]
57023#[cfg(target_arch = "arm")]
57024#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57025#[cfg_attr(test, assert_instr(vst1))]
57026pub unsafe fn vst1_s16_x2(a: *mut i16, b: int16x4x2_t) {
57027 unsafe extern "unadjusted" {
57028 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v4i16.p0")]
57029 fn _vst1_s16_x2(ptr: *mut i16, a: int16x4_t, b: int16x4_t);
57030 }
57031 _vst1_s16_x2(a, b.0, b.1)
57032}
57033#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57034#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x2)"]
57035#[doc = "## Safety"]
57036#[doc = " * Neon instrinsic unsafe"]
57037#[inline]
57038#[target_feature(enable = "neon,v7")]
57039#[cfg(target_arch = "arm")]
57040#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57041#[cfg_attr(test, assert_instr(vst1))]
57042pub unsafe fn vst1q_s16_x2(a: *mut i16, b: int16x8x2_t) {
57043 unsafe extern "unadjusted" {
57044 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v8i16.p0")]
57045 fn _vst1q_s16_x2(ptr: *mut i16, a: int16x8_t, b: int16x8_t);
57046 }
57047 _vst1q_s16_x2(a, b.0, b.1)
57048}
57049#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57050#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x2)"]
57051#[doc = "## Safety"]
57052#[doc = " * Neon instrinsic unsafe"]
57053#[inline]
57054#[target_feature(enable = "neon,v7")]
57055#[cfg(target_arch = "arm")]
57056#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57057#[cfg_attr(test, assert_instr(vst1))]
57058pub unsafe fn vst1_s32_x2(a: *mut i32, b: int32x2x2_t) {
57059 unsafe extern "unadjusted" {
57060 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v2i32.p0")]
57061 fn _vst1_s32_x2(ptr: *mut i32, a: int32x2_t, b: int32x2_t);
57062 }
57063 _vst1_s32_x2(a, b.0, b.1)
57064}
57065#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57066#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x2)"]
57067#[doc = "## Safety"]
57068#[doc = " * Neon instrinsic unsafe"]
57069#[inline]
57070#[target_feature(enable = "neon,v7")]
57071#[cfg(target_arch = "arm")]
57072#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57073#[cfg_attr(test, assert_instr(vst1))]
57074pub unsafe fn vst1q_s32_x2(a: *mut i32, b: int32x4x2_t) {
57075 unsafe extern "unadjusted" {
57076 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v4i32.p0")]
57077 fn _vst1q_s32_x2(ptr: *mut i32, a: int32x4_t, b: int32x4_t);
57078 }
57079 _vst1q_s32_x2(a, b.0, b.1)
57080}
57081#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57082#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x2)"]
57083#[doc = "## Safety"]
57084#[doc = " * Neon instrinsic unsafe"]
57085#[inline]
57086#[target_feature(enable = "neon,v7")]
57087#[cfg(target_arch = "arm")]
57088#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57089#[cfg_attr(test, assert_instr(vst1))]
57090pub unsafe fn vst1_s64_x2(a: *mut i64, b: int64x1x2_t) {
57091 unsafe extern "unadjusted" {
57092 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v1i64.p0")]
57093 fn _vst1_s64_x2(ptr: *mut i64, a: int64x1_t, b: int64x1_t);
57094 }
57095 _vst1_s64_x2(a, b.0, b.1)
57096}
57097#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57098#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x2)"]
57099#[doc = "## Safety"]
57100#[doc = " * Neon instrinsic unsafe"]
57101#[inline]
57102#[target_feature(enable = "neon,v7")]
57103#[cfg(target_arch = "arm")]
57104#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57105#[cfg_attr(test, assert_instr(vst1))]
57106pub unsafe fn vst1q_s64_x2(a: *mut i64, b: int64x2x2_t) {
57107 unsafe extern "unadjusted" {
57108 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v2i64.p0")]
57109 fn _vst1q_s64_x2(ptr: *mut i64, a: int64x2_t, b: int64x2_t);
57110 }
57111 _vst1q_s64_x2(a, b.0, b.1)
57112}
57113#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57114#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x3)"]
57115#[doc = "## Safety"]
57116#[doc = " * Neon instrinsic unsafe"]
57117#[inline]
57118#[target_feature(enable = "neon")]
57119#[cfg(not(target_arch = "arm"))]
57120#[stable(feature = "neon_intrinsics", since = "1.59.0")]
57121#[cfg_attr(test, assert_instr(st1))]
57122pub unsafe fn vst1_s8_x3(a: *mut i8, b: int8x8x3_t) {
57123 unsafe extern "unadjusted" {
57124 #[cfg_attr(
57125 any(target_arch = "aarch64", target_arch = "arm64ec"),
57126 link_name = "llvm.aarch64.neon.st1x3.v8i8.p0"
57127 )]
57128 fn _vst1_s8_x3(a: int8x8_t, b: int8x8_t, c: int8x8_t, ptr: *mut i8);
57129 }
57130 _vst1_s8_x3(b.0, b.1, b.2, a)
57131}
57132#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57133#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x3)"]
57134#[doc = "## Safety"]
57135#[doc = " * Neon instrinsic unsafe"]
57136#[inline]
57137#[target_feature(enable = "neon")]
57138#[cfg(not(target_arch = "arm"))]
57139#[stable(feature = "neon_intrinsics", since = "1.59.0")]
57140#[cfg_attr(test, assert_instr(st1))]
57141pub unsafe fn vst1q_s8_x3(a: *mut i8, b: int8x16x3_t) {
57142 unsafe extern "unadjusted" {
57143 #[cfg_attr(
57144 any(target_arch = "aarch64", target_arch = "arm64ec"),
57145 link_name = "llvm.aarch64.neon.st1x3.v16i8.p0"
57146 )]
57147 fn _vst1q_s8_x3(a: int8x16_t, b: int8x16_t, c: int8x16_t, ptr: *mut i8);
57148 }
57149 _vst1q_s8_x3(b.0, b.1, b.2, a)
57150}
57151#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57152#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x3)"]
57153#[doc = "## Safety"]
57154#[doc = " * Neon instrinsic unsafe"]
57155#[inline]
57156#[target_feature(enable = "neon")]
57157#[cfg(not(target_arch = "arm"))]
57158#[stable(feature = "neon_intrinsics", since = "1.59.0")]
57159#[cfg_attr(test, assert_instr(st1))]
57160pub unsafe fn vst1_s16_x3(a: *mut i16, b: int16x4x3_t) {
57161 unsafe extern "unadjusted" {
57162 #[cfg_attr(
57163 any(target_arch = "aarch64", target_arch = "arm64ec"),
57164 link_name = "llvm.aarch64.neon.st1x3.v4i16.p0"
57165 )]
57166 fn _vst1_s16_x3(a: int16x4_t, b: int16x4_t, c: int16x4_t, ptr: *mut i16);
57167 }
57168 _vst1_s16_x3(b.0, b.1, b.2, a)
57169}
57170#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57171#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x3)"]
57172#[doc = "## Safety"]
57173#[doc = " * Neon instrinsic unsafe"]
57174#[inline]
57175#[target_feature(enable = "neon")]
57176#[cfg(not(target_arch = "arm"))]
57177#[stable(feature = "neon_intrinsics", since = "1.59.0")]
57178#[cfg_attr(test, assert_instr(st1))]
57179pub unsafe fn vst1q_s16_x3(a: *mut i16, b: int16x8x3_t) {
57180 unsafe extern "unadjusted" {
57181 #[cfg_attr(
57182 any(target_arch = "aarch64", target_arch = "arm64ec"),
57183 link_name = "llvm.aarch64.neon.st1x3.v8i16.p0"
57184 )]
57185 fn _vst1q_s16_x3(a: int16x8_t, b: int16x8_t, c: int16x8_t, ptr: *mut i16);
57186 }
57187 _vst1q_s16_x3(b.0, b.1, b.2, a)
57188}
57189#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57190#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x3)"]
57191#[doc = "## Safety"]
57192#[doc = " * Neon instrinsic unsafe"]
57193#[inline]
57194#[target_feature(enable = "neon")]
57195#[cfg(not(target_arch = "arm"))]
57196#[stable(feature = "neon_intrinsics", since = "1.59.0")]
57197#[cfg_attr(test, assert_instr(st1))]
57198pub unsafe fn vst1_s32_x3(a: *mut i32, b: int32x2x3_t) {
57199 unsafe extern "unadjusted" {
57200 #[cfg_attr(
57201 any(target_arch = "aarch64", target_arch = "arm64ec"),
57202 link_name = "llvm.aarch64.neon.st1x3.v2i32.p0"
57203 )]
57204 fn _vst1_s32_x3(a: int32x2_t, b: int32x2_t, c: int32x2_t, ptr: *mut i32);
57205 }
57206 _vst1_s32_x3(b.0, b.1, b.2, a)
57207}
57208#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57209#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x3)"]
57210#[doc = "## Safety"]
57211#[doc = " * Neon instrinsic unsafe"]
57212#[inline]
57213#[target_feature(enable = "neon")]
57214#[cfg(not(target_arch = "arm"))]
57215#[stable(feature = "neon_intrinsics", since = "1.59.0")]
57216#[cfg_attr(test, assert_instr(st1))]
57217pub unsafe fn vst1q_s32_x3(a: *mut i32, b: int32x4x3_t) {
57218 unsafe extern "unadjusted" {
57219 #[cfg_attr(
57220 any(target_arch = "aarch64", target_arch = "arm64ec"),
57221 link_name = "llvm.aarch64.neon.st1x3.v4i32.p0"
57222 )]
57223 fn _vst1q_s32_x3(a: int32x4_t, b: int32x4_t, c: int32x4_t, ptr: *mut i32);
57224 }
57225 _vst1q_s32_x3(b.0, b.1, b.2, a)
57226}
57227#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57228#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x3)"]
57229#[doc = "## Safety"]
57230#[doc = " * Neon instrinsic unsafe"]
57231#[inline]
57232#[target_feature(enable = "neon")]
57233#[cfg(not(target_arch = "arm"))]
57234#[stable(feature = "neon_intrinsics", since = "1.59.0")]
57235#[cfg_attr(test, assert_instr(st1))]
57236pub unsafe fn vst1_s64_x3(a: *mut i64, b: int64x1x3_t) {
57237 unsafe extern "unadjusted" {
57238 #[cfg_attr(
57239 any(target_arch = "aarch64", target_arch = "arm64ec"),
57240 link_name = "llvm.aarch64.neon.st1x3.v1i64.p0"
57241 )]
57242 fn _vst1_s64_x3(a: int64x1_t, b: int64x1_t, c: int64x1_t, ptr: *mut i64);
57243 }
57244 _vst1_s64_x3(b.0, b.1, b.2, a)
57245}
57246#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57247#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x3)"]
57248#[doc = "## Safety"]
57249#[doc = " * Neon instrinsic unsafe"]
57250#[inline]
57251#[target_feature(enable = "neon")]
57252#[cfg(not(target_arch = "arm"))]
57253#[stable(feature = "neon_intrinsics", since = "1.59.0")]
57254#[cfg_attr(test, assert_instr(st1))]
57255pub unsafe fn vst1q_s64_x3(a: *mut i64, b: int64x2x3_t) {
57256 unsafe extern "unadjusted" {
57257 #[cfg_attr(
57258 any(target_arch = "aarch64", target_arch = "arm64ec"),
57259 link_name = "llvm.aarch64.neon.st1x3.v2i64.p0"
57260 )]
57261 fn _vst1q_s64_x3(a: int64x2_t, b: int64x2_t, c: int64x2_t, ptr: *mut i64);
57262 }
57263 _vst1q_s64_x3(b.0, b.1, b.2, a)
57264}
57265#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57266#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x3)"]
57267#[doc = "## Safety"]
57268#[doc = " * Neon instrinsic unsafe"]
57269#[inline]
57270#[target_feature(enable = "neon,v7")]
57271#[cfg(target_arch = "arm")]
57272#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57273#[cfg_attr(test, assert_instr(vst1))]
57274pub unsafe fn vst1_s8_x3(a: *mut i8, b: int8x8x3_t) {
57275 unsafe extern "unadjusted" {
57276 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v8i8.p0")]
57277 fn _vst1_s8_x3(ptr: *mut i8, a: int8x8_t, b: int8x8_t, c: int8x8_t);
57278 }
57279 _vst1_s8_x3(a, b.0, b.1, b.2)
57280}
57281#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57282#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x3)"]
57283#[doc = "## Safety"]
57284#[doc = " * Neon instrinsic unsafe"]
57285#[inline]
57286#[target_feature(enable = "neon,v7")]
57287#[cfg(target_arch = "arm")]
57288#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57289#[cfg_attr(test, assert_instr(vst1))]
57290pub unsafe fn vst1q_s8_x3(a: *mut i8, b: int8x16x3_t) {
57291 unsafe extern "unadjusted" {
57292 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v16i8.p0")]
57293 fn _vst1q_s8_x3(ptr: *mut i8, a: int8x16_t, b: int8x16_t, c: int8x16_t);
57294 }
57295 _vst1q_s8_x3(a, b.0, b.1, b.2)
57296}
57297#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57298#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x3)"]
57299#[doc = "## Safety"]
57300#[doc = " * Neon instrinsic unsafe"]
57301#[inline]
57302#[target_feature(enable = "neon,v7")]
57303#[cfg(target_arch = "arm")]
57304#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57305#[cfg_attr(test, assert_instr(vst1))]
57306pub unsafe fn vst1_s16_x3(a: *mut i16, b: int16x4x3_t) {
57307 unsafe extern "unadjusted" {
57308 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v4i16.p0")]
57309 fn _vst1_s16_x3(ptr: *mut i16, a: int16x4_t, b: int16x4_t, c: int16x4_t);
57310 }
57311 _vst1_s16_x3(a, b.0, b.1, b.2)
57312}
57313#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57314#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x3)"]
57315#[doc = "## Safety"]
57316#[doc = " * Neon instrinsic unsafe"]
57317#[inline]
57318#[target_feature(enable = "neon,v7")]
57319#[cfg(target_arch = "arm")]
57320#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57321#[cfg_attr(test, assert_instr(vst1))]
57322pub unsafe fn vst1q_s16_x3(a: *mut i16, b: int16x8x3_t) {
57323 unsafe extern "unadjusted" {
57324 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v8i16.p0")]
57325 fn _vst1q_s16_x3(ptr: *mut i16, a: int16x8_t, b: int16x8_t, c: int16x8_t);
57326 }
57327 _vst1q_s16_x3(a, b.0, b.1, b.2)
57328}
57329#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57330#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x3)"]
57331#[doc = "## Safety"]
57332#[doc = " * Neon instrinsic unsafe"]
57333#[inline]
57334#[target_feature(enable = "neon,v7")]
57335#[cfg(target_arch = "arm")]
57336#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57337#[cfg_attr(test, assert_instr(vst1))]
57338pub unsafe fn vst1_s32_x3(a: *mut i32, b: int32x2x3_t) {
57339 unsafe extern "unadjusted" {
57340 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v2i32.p0")]
57341 fn _vst1_s32_x3(ptr: *mut i32, a: int32x2_t, b: int32x2_t, c: int32x2_t);
57342 }
57343 _vst1_s32_x3(a, b.0, b.1, b.2)
57344}
57345#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57346#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x3)"]
57347#[doc = "## Safety"]
57348#[doc = " * Neon instrinsic unsafe"]
57349#[inline]
57350#[target_feature(enable = "neon,v7")]
57351#[cfg(target_arch = "arm")]
57352#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57353#[cfg_attr(test, assert_instr(vst1))]
57354pub unsafe fn vst1q_s32_x3(a: *mut i32, b: int32x4x3_t) {
57355 unsafe extern "unadjusted" {
57356 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v4i32.p0")]
57357 fn _vst1q_s32_x3(ptr: *mut i32, a: int32x4_t, b: int32x4_t, c: int32x4_t);
57358 }
57359 _vst1q_s32_x3(a, b.0, b.1, b.2)
57360}
57361#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57362#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x3)"]
57363#[doc = "## Safety"]
57364#[doc = " * Neon instrinsic unsafe"]
57365#[inline]
57366#[target_feature(enable = "neon,v7")]
57367#[cfg(target_arch = "arm")]
57368#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57369#[cfg_attr(test, assert_instr(vst1))]
57370pub unsafe fn vst1_s64_x3(a: *mut i64, b: int64x1x3_t) {
57371 unsafe extern "unadjusted" {
57372 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v1i64.p0")]
57373 fn _vst1_s64_x3(ptr: *mut i64, a: int64x1_t, b: int64x1_t, c: int64x1_t);
57374 }
57375 _vst1_s64_x3(a, b.0, b.1, b.2)
57376}
57377#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57378#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x3)"]
57379#[doc = "## Safety"]
57380#[doc = " * Neon instrinsic unsafe"]
57381#[inline]
57382#[target_feature(enable = "neon,v7")]
57383#[cfg(target_arch = "arm")]
57384#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57385#[cfg_attr(test, assert_instr(vst1))]
57386pub unsafe fn vst1q_s64_x3(a: *mut i64, b: int64x2x3_t) {
57387 unsafe extern "unadjusted" {
57388 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v2i64.p0")]
57389 fn _vst1q_s64_x3(ptr: *mut i64, a: int64x2_t, b: int64x2_t, c: int64x2_t);
57390 }
57391 _vst1q_s64_x3(a, b.0, b.1, b.2)
57392}
57393#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57394#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x4)"]
57395#[doc = "## Safety"]
57396#[doc = " * Neon instrinsic unsafe"]
57397#[inline]
57398#[target_feature(enable = "neon")]
57399#[cfg(not(target_arch = "arm"))]
57400#[stable(feature = "neon_intrinsics", since = "1.59.0")]
57401#[cfg_attr(test, assert_instr(st1))]
57402pub unsafe fn vst1_s8_x4(a: *mut i8, b: int8x8x4_t) {
57403 unsafe extern "unadjusted" {
57404 #[cfg_attr(
57405 any(target_arch = "aarch64", target_arch = "arm64ec"),
57406 link_name = "llvm.aarch64.neon.st1x4.v8i8.p0"
57407 )]
57408 fn _vst1_s8_x4(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, ptr: *mut i8);
57409 }
57410 _vst1_s8_x4(b.0, b.1, b.2, b.3, a)
57411}
57412#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57413#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x4)"]
57414#[doc = "## Safety"]
57415#[doc = " * Neon instrinsic unsafe"]
57416#[inline]
57417#[target_feature(enable = "neon")]
57418#[cfg(not(target_arch = "arm"))]
57419#[stable(feature = "neon_intrinsics", since = "1.59.0")]
57420#[cfg_attr(test, assert_instr(st1))]
57421pub unsafe fn vst1q_s8_x4(a: *mut i8, b: int8x16x4_t) {
57422 unsafe extern "unadjusted" {
57423 #[cfg_attr(
57424 any(target_arch = "aarch64", target_arch = "arm64ec"),
57425 link_name = "llvm.aarch64.neon.st1x4.v16i8.p0"
57426 )]
57427 fn _vst1q_s8_x4(a: int8x16_t, b: int8x16_t, c: int8x16_t, d: int8x16_t, ptr: *mut i8);
57428 }
57429 _vst1q_s8_x4(b.0, b.1, b.2, b.3, a)
57430}
57431#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57432#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x4)"]
57433#[doc = "## Safety"]
57434#[doc = " * Neon instrinsic unsafe"]
57435#[inline]
57436#[target_feature(enable = "neon")]
57437#[cfg(not(target_arch = "arm"))]
57438#[stable(feature = "neon_intrinsics", since = "1.59.0")]
57439#[cfg_attr(test, assert_instr(st1))]
57440pub unsafe fn vst1_s16_x4(a: *mut i16, b: int16x4x4_t) {
57441 unsafe extern "unadjusted" {
57442 #[cfg_attr(
57443 any(target_arch = "aarch64", target_arch = "arm64ec"),
57444 link_name = "llvm.aarch64.neon.st1x4.v4i16.p0"
57445 )]
57446 fn _vst1_s16_x4(a: int16x4_t, b: int16x4_t, c: int16x4_t, d: int16x4_t, ptr: *mut i16);
57447 }
57448 _vst1_s16_x4(b.0, b.1, b.2, b.3, a)
57449}
57450#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57451#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x4)"]
57452#[doc = "## Safety"]
57453#[doc = " * Neon instrinsic unsafe"]
57454#[inline]
57455#[target_feature(enable = "neon")]
57456#[cfg(not(target_arch = "arm"))]
57457#[stable(feature = "neon_intrinsics", since = "1.59.0")]
57458#[cfg_attr(test, assert_instr(st1))]
57459pub unsafe fn vst1q_s16_x4(a: *mut i16, b: int16x8x4_t) {
57460 unsafe extern "unadjusted" {
57461 #[cfg_attr(
57462 any(target_arch = "aarch64", target_arch = "arm64ec"),
57463 link_name = "llvm.aarch64.neon.st1x4.v8i16.p0"
57464 )]
57465 fn _vst1q_s16_x4(a: int16x8_t, b: int16x8_t, c: int16x8_t, d: int16x8_t, ptr: *mut i16);
57466 }
57467 _vst1q_s16_x4(b.0, b.1, b.2, b.3, a)
57468}
57469#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57470#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x4)"]
57471#[doc = "## Safety"]
57472#[doc = " * Neon instrinsic unsafe"]
57473#[inline]
57474#[target_feature(enable = "neon")]
57475#[cfg(not(target_arch = "arm"))]
57476#[stable(feature = "neon_intrinsics", since = "1.59.0")]
57477#[cfg_attr(test, assert_instr(st1))]
57478pub unsafe fn vst1_s32_x4(a: *mut i32, b: int32x2x4_t) {
57479 unsafe extern "unadjusted" {
57480 #[cfg_attr(
57481 any(target_arch = "aarch64", target_arch = "arm64ec"),
57482 link_name = "llvm.aarch64.neon.st1x4.v2i32.p0"
57483 )]
57484 fn _vst1_s32_x4(a: int32x2_t, b: int32x2_t, c: int32x2_t, d: int32x2_t, ptr: *mut i32);
57485 }
57486 _vst1_s32_x4(b.0, b.1, b.2, b.3, a)
57487}
57488#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57489#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x4)"]
57490#[doc = "## Safety"]
57491#[doc = " * Neon instrinsic unsafe"]
57492#[inline]
57493#[target_feature(enable = "neon")]
57494#[cfg(not(target_arch = "arm"))]
57495#[stable(feature = "neon_intrinsics", since = "1.59.0")]
57496#[cfg_attr(test, assert_instr(st1))]
57497pub unsafe fn vst1q_s32_x4(a: *mut i32, b: int32x4x4_t) {
57498 unsafe extern "unadjusted" {
57499 #[cfg_attr(
57500 any(target_arch = "aarch64", target_arch = "arm64ec"),
57501 link_name = "llvm.aarch64.neon.st1x4.v4i32.p0"
57502 )]
57503 fn _vst1q_s32_x4(a: int32x4_t, b: int32x4_t, c: int32x4_t, d: int32x4_t, ptr: *mut i32);
57504 }
57505 _vst1q_s32_x4(b.0, b.1, b.2, b.3, a)
57506}
57507#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57508#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x4)"]
57509#[doc = "## Safety"]
57510#[doc = " * Neon instrinsic unsafe"]
57511#[inline]
57512#[target_feature(enable = "neon")]
57513#[cfg(not(target_arch = "arm"))]
57514#[stable(feature = "neon_intrinsics", since = "1.59.0")]
57515#[cfg_attr(test, assert_instr(st1))]
57516pub unsafe fn vst1_s64_x4(a: *mut i64, b: int64x1x4_t) {
57517 unsafe extern "unadjusted" {
57518 #[cfg_attr(
57519 any(target_arch = "aarch64", target_arch = "arm64ec"),
57520 link_name = "llvm.aarch64.neon.st1x4.v1i64.p0"
57521 )]
57522 fn _vst1_s64_x4(a: int64x1_t, b: int64x1_t, c: int64x1_t, d: int64x1_t, ptr: *mut i64);
57523 }
57524 _vst1_s64_x4(b.0, b.1, b.2, b.3, a)
57525}
57526#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57527#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x4)"]
57528#[doc = "## Safety"]
57529#[doc = " * Neon instrinsic unsafe"]
57530#[inline]
57531#[target_feature(enable = "neon")]
57532#[cfg(not(target_arch = "arm"))]
57533#[stable(feature = "neon_intrinsics", since = "1.59.0")]
57534#[cfg_attr(test, assert_instr(st1))]
57535pub unsafe fn vst1q_s64_x4(a: *mut i64, b: int64x2x4_t) {
57536 unsafe extern "unadjusted" {
57537 #[cfg_attr(
57538 any(target_arch = "aarch64", target_arch = "arm64ec"),
57539 link_name = "llvm.aarch64.neon.st1x4.v2i64.p0"
57540 )]
57541 fn _vst1q_s64_x4(a: int64x2_t, b: int64x2_t, c: int64x2_t, d: int64x2_t, ptr: *mut i64);
57542 }
57543 _vst1q_s64_x4(b.0, b.1, b.2, b.3, a)
57544}
57545#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57546#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x4)"]
57547#[doc = "## Safety"]
57548#[doc = " * Neon instrinsic unsafe"]
57549#[inline]
57550#[cfg(target_arch = "arm")]
57551#[target_feature(enable = "neon,v7")]
57552#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57553#[cfg_attr(test, assert_instr(vst1))]
57554pub unsafe fn vst1_s8_x4(a: *mut i8, b: int8x8x4_t) {
57555 unsafe extern "unadjusted" {
57556 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v8i8.p0")]
57557 fn _vst1_s8_x4(ptr: *mut i8, a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t);
57558 }
57559 _vst1_s8_x4(a, b.0, b.1, b.2, b.3)
57560}
57561#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57562#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x4)"]
57563#[doc = "## Safety"]
57564#[doc = " * Neon instrinsic unsafe"]
57565#[inline]
57566#[cfg(target_arch = "arm")]
57567#[target_feature(enable = "neon,v7")]
57568#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57569#[cfg_attr(test, assert_instr(vst1))]
57570pub unsafe fn vst1q_s8_x4(a: *mut i8, b: int8x16x4_t) {
57571 unsafe extern "unadjusted" {
57572 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v16i8.p0")]
57573 fn _vst1q_s8_x4(ptr: *mut i8, a: int8x16_t, b: int8x16_t, c: int8x16_t, d: int8x16_t);
57574 }
57575 _vst1q_s8_x4(a, b.0, b.1, b.2, b.3)
57576}
57577#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57578#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x4)"]
57579#[doc = "## Safety"]
57580#[doc = " * Neon instrinsic unsafe"]
57581#[inline]
57582#[cfg(target_arch = "arm")]
57583#[target_feature(enable = "neon,v7")]
57584#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57585#[cfg_attr(test, assert_instr(vst1))]
57586pub unsafe fn vst1_s16_x4(a: *mut i16, b: int16x4x4_t) {
57587 unsafe extern "unadjusted" {
57588 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v4i16.p0")]
57589 fn _vst1_s16_x4(ptr: *mut i16, a: int16x4_t, b: int16x4_t, c: int16x4_t, d: int16x4_t);
57590 }
57591 _vst1_s16_x4(a, b.0, b.1, b.2, b.3)
57592}
57593#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57594#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x4)"]
57595#[doc = "## Safety"]
57596#[doc = " * Neon instrinsic unsafe"]
57597#[inline]
57598#[cfg(target_arch = "arm")]
57599#[target_feature(enable = "neon,v7")]
57600#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57601#[cfg_attr(test, assert_instr(vst1))]
57602pub unsafe fn vst1q_s16_x4(a: *mut i16, b: int16x8x4_t) {
57603 unsafe extern "unadjusted" {
57604 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v8i16.p0")]
57605 fn _vst1q_s16_x4(ptr: *mut i16, a: int16x8_t, b: int16x8_t, c: int16x8_t, d: int16x8_t);
57606 }
57607 _vst1q_s16_x4(a, b.0, b.1, b.2, b.3)
57608}
57609#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57610#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x4)"]
57611#[doc = "## Safety"]
57612#[doc = " * Neon instrinsic unsafe"]
57613#[inline]
57614#[cfg(target_arch = "arm")]
57615#[target_feature(enable = "neon,v7")]
57616#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57617#[cfg_attr(test, assert_instr(vst1))]
57618pub unsafe fn vst1_s32_x4(a: *mut i32, b: int32x2x4_t) {
57619 unsafe extern "unadjusted" {
57620 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v2i32.p0")]
57621 fn _vst1_s32_x4(ptr: *mut i32, a: int32x2_t, b: int32x2_t, c: int32x2_t, d: int32x2_t);
57622 }
57623 _vst1_s32_x4(a, b.0, b.1, b.2, b.3)
57624}
57625#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57626#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x4)"]
57627#[doc = "## Safety"]
57628#[doc = " * Neon instrinsic unsafe"]
57629#[inline]
57630#[cfg(target_arch = "arm")]
57631#[target_feature(enable = "neon,v7")]
57632#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57633#[cfg_attr(test, assert_instr(vst1))]
57634pub unsafe fn vst1q_s32_x4(a: *mut i32, b: int32x4x4_t) {
57635 unsafe extern "unadjusted" {
57636 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v4i32.p0")]
57637 fn _vst1q_s32_x4(ptr: *mut i32, a: int32x4_t, b: int32x4_t, c: int32x4_t, d: int32x4_t);
57638 }
57639 _vst1q_s32_x4(a, b.0, b.1, b.2, b.3)
57640}
57641#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57642#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x4)"]
57643#[doc = "## Safety"]
57644#[doc = " * Neon instrinsic unsafe"]
57645#[inline]
57646#[cfg(target_arch = "arm")]
57647#[target_feature(enable = "neon,v7")]
57648#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57649#[cfg_attr(test, assert_instr(vst1))]
57650pub unsafe fn vst1_s64_x4(a: *mut i64, b: int64x1x4_t) {
57651 unsafe extern "unadjusted" {
57652 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v1i64.p0")]
57653 fn _vst1_s64_x4(ptr: *mut i64, a: int64x1_t, b: int64x1_t, c: int64x1_t, d: int64x1_t);
57654 }
57655 _vst1_s64_x4(a, b.0, b.1, b.2, b.3)
57656}
57657#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
57658#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x4)"]
57659#[doc = "## Safety"]
57660#[doc = " * Neon instrinsic unsafe"]
57661#[inline]
57662#[cfg(target_arch = "arm")]
57663#[target_feature(enable = "neon,v7")]
57664#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57665#[cfg_attr(test, assert_instr(vst1))]
57666pub unsafe fn vst1q_s64_x4(a: *mut i64, b: int64x2x4_t) {
57667 unsafe extern "unadjusted" {
57668 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v2i64.p0")]
57669 fn _vst1q_s64_x4(ptr: *mut i64, a: int64x2_t, b: int64x2_t, c: int64x2_t, d: int64x2_t);
57670 }
57671 _vst1q_s64_x4(a, b.0, b.1, b.2, b.3)
57672}
57673#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
57674#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u8_x2)"]
57675#[doc = "## Safety"]
57676#[doc = " * Neon instrinsic unsafe"]
57677#[inline]
57678#[target_feature(enable = "neon")]
57679#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57680#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
57681#[cfg_attr(
57682 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57683 assert_instr(st1)
57684)]
57685#[cfg_attr(
57686 not(target_arch = "arm"),
57687 stable(feature = "neon_intrinsics", since = "1.59.0")
57688)]
57689#[cfg_attr(
57690 target_arch = "arm",
57691 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57692)]
57693pub unsafe fn vst1_u8_x2(a: *mut u8, b: uint8x8x2_t) {
57694 vst1_s8_x2(transmute(a), transmute(b))
57695}
57696#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
57697#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u8_x3)"]
57698#[doc = "## Safety"]
57699#[doc = " * Neon instrinsic unsafe"]
57700#[inline]
57701#[target_feature(enable = "neon")]
57702#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57703#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
57704#[cfg_attr(
57705 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57706 assert_instr(st1)
57707)]
57708#[cfg_attr(
57709 not(target_arch = "arm"),
57710 stable(feature = "neon_intrinsics", since = "1.59.0")
57711)]
57712#[cfg_attr(
57713 target_arch = "arm",
57714 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57715)]
57716pub unsafe fn vst1_u8_x3(a: *mut u8, b: uint8x8x3_t) {
57717 vst1_s8_x3(transmute(a), transmute(b))
57718}
57719#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
57720#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u8_x4)"]
57721#[doc = "## Safety"]
57722#[doc = " * Neon instrinsic unsafe"]
57723#[inline]
57724#[target_feature(enable = "neon")]
57725#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57726#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
57727#[cfg_attr(
57728 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57729 assert_instr(st1)
57730)]
57731#[cfg_attr(
57732 not(target_arch = "arm"),
57733 stable(feature = "neon_intrinsics", since = "1.59.0")
57734)]
57735#[cfg_attr(
57736 target_arch = "arm",
57737 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57738)]
57739pub unsafe fn vst1_u8_x4(a: *mut u8, b: uint8x8x4_t) {
57740 vst1_s8_x4(transmute(a), transmute(b))
57741}
57742#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
57743#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u8_x2)"]
57744#[doc = "## Safety"]
57745#[doc = " * Neon instrinsic unsafe"]
57746#[inline]
57747#[target_feature(enable = "neon")]
57748#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57749#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
57750#[cfg_attr(
57751 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57752 assert_instr(st1)
57753)]
57754#[cfg_attr(
57755 not(target_arch = "arm"),
57756 stable(feature = "neon_intrinsics", since = "1.59.0")
57757)]
57758#[cfg_attr(
57759 target_arch = "arm",
57760 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57761)]
57762pub unsafe fn vst1q_u8_x2(a: *mut u8, b: uint8x16x2_t) {
57763 vst1q_s8_x2(transmute(a), transmute(b))
57764}
57765#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
57766#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u8_x3)"]
57767#[doc = "## Safety"]
57768#[doc = " * Neon instrinsic unsafe"]
57769#[inline]
57770#[target_feature(enable = "neon")]
57771#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57772#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
57773#[cfg_attr(
57774 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57775 assert_instr(st1)
57776)]
57777#[cfg_attr(
57778 not(target_arch = "arm"),
57779 stable(feature = "neon_intrinsics", since = "1.59.0")
57780)]
57781#[cfg_attr(
57782 target_arch = "arm",
57783 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57784)]
57785pub unsafe fn vst1q_u8_x3(a: *mut u8, b: uint8x16x3_t) {
57786 vst1q_s8_x3(transmute(a), transmute(b))
57787}
57788#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
57789#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u8_x4)"]
57790#[doc = "## Safety"]
57791#[doc = " * Neon instrinsic unsafe"]
57792#[inline]
57793#[target_feature(enable = "neon")]
57794#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57795#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
57796#[cfg_attr(
57797 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57798 assert_instr(st1)
57799)]
57800#[cfg_attr(
57801 not(target_arch = "arm"),
57802 stable(feature = "neon_intrinsics", since = "1.59.0")
57803)]
57804#[cfg_attr(
57805 target_arch = "arm",
57806 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57807)]
57808pub unsafe fn vst1q_u8_x4(a: *mut u8, b: uint8x16x4_t) {
57809 vst1q_s8_x4(transmute(a), transmute(b))
57810}
57811#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
57812#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u16_x2)"]
57813#[doc = "## Safety"]
57814#[doc = " * Neon instrinsic unsafe"]
57815#[inline]
57816#[target_feature(enable = "neon")]
57817#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57818#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
57819#[cfg_attr(
57820 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57821 assert_instr(st1)
57822)]
57823#[cfg_attr(
57824 not(target_arch = "arm"),
57825 stable(feature = "neon_intrinsics", since = "1.59.0")
57826)]
57827#[cfg_attr(
57828 target_arch = "arm",
57829 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57830)]
57831pub unsafe fn vst1_u16_x2(a: *mut u16, b: uint16x4x2_t) {
57832 vst1_s16_x2(transmute(a), transmute(b))
57833}
57834#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
57835#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u16_x3)"]
57836#[doc = "## Safety"]
57837#[doc = " * Neon instrinsic unsafe"]
57838#[inline]
57839#[target_feature(enable = "neon")]
57840#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57841#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
57842#[cfg_attr(
57843 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57844 assert_instr(st1)
57845)]
57846#[cfg_attr(
57847 not(target_arch = "arm"),
57848 stable(feature = "neon_intrinsics", since = "1.59.0")
57849)]
57850#[cfg_attr(
57851 target_arch = "arm",
57852 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57853)]
57854pub unsafe fn vst1_u16_x3(a: *mut u16, b: uint16x4x3_t) {
57855 vst1_s16_x3(transmute(a), transmute(b))
57856}
57857#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
57858#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u16_x4)"]
57859#[doc = "## Safety"]
57860#[doc = " * Neon instrinsic unsafe"]
57861#[inline]
57862#[target_feature(enable = "neon")]
57863#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57864#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
57865#[cfg_attr(
57866 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57867 assert_instr(st1)
57868)]
57869#[cfg_attr(
57870 not(target_arch = "arm"),
57871 stable(feature = "neon_intrinsics", since = "1.59.0")
57872)]
57873#[cfg_attr(
57874 target_arch = "arm",
57875 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57876)]
57877pub unsafe fn vst1_u16_x4(a: *mut u16, b: uint16x4x4_t) {
57878 vst1_s16_x4(transmute(a), transmute(b))
57879}
57880#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
57881#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u16_x2)"]
57882#[doc = "## Safety"]
57883#[doc = " * Neon instrinsic unsafe"]
57884#[inline]
57885#[target_feature(enable = "neon")]
57886#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57887#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
57888#[cfg_attr(
57889 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57890 assert_instr(st1)
57891)]
57892#[cfg_attr(
57893 not(target_arch = "arm"),
57894 stable(feature = "neon_intrinsics", since = "1.59.0")
57895)]
57896#[cfg_attr(
57897 target_arch = "arm",
57898 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57899)]
57900pub unsafe fn vst1q_u16_x2(a: *mut u16, b: uint16x8x2_t) {
57901 vst1q_s16_x2(transmute(a), transmute(b))
57902}
57903#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
57904#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u16_x3)"]
57905#[doc = "## Safety"]
57906#[doc = " * Neon instrinsic unsafe"]
57907#[inline]
57908#[target_feature(enable = "neon")]
57909#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57910#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
57911#[cfg_attr(
57912 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57913 assert_instr(st1)
57914)]
57915#[cfg_attr(
57916 not(target_arch = "arm"),
57917 stable(feature = "neon_intrinsics", since = "1.59.0")
57918)]
57919#[cfg_attr(
57920 target_arch = "arm",
57921 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57922)]
57923pub unsafe fn vst1q_u16_x3(a: *mut u16, b: uint16x8x3_t) {
57924 vst1q_s16_x3(transmute(a), transmute(b))
57925}
57926#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
57927#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u16_x4)"]
57928#[doc = "## Safety"]
57929#[doc = " * Neon instrinsic unsafe"]
57930#[inline]
57931#[target_feature(enable = "neon")]
57932#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57933#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
57934#[cfg_attr(
57935 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57936 assert_instr(st1)
57937)]
57938#[cfg_attr(
57939 not(target_arch = "arm"),
57940 stable(feature = "neon_intrinsics", since = "1.59.0")
57941)]
57942#[cfg_attr(
57943 target_arch = "arm",
57944 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57945)]
57946pub unsafe fn vst1q_u16_x4(a: *mut u16, b: uint16x8x4_t) {
57947 vst1q_s16_x4(transmute(a), transmute(b))
57948}
57949#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
57950#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u32_x2)"]
57951#[doc = "## Safety"]
57952#[doc = " * Neon instrinsic unsafe"]
57953#[inline]
57954#[target_feature(enable = "neon")]
57955#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57956#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
57957#[cfg_attr(
57958 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57959 assert_instr(st1)
57960)]
57961#[cfg_attr(
57962 not(target_arch = "arm"),
57963 stable(feature = "neon_intrinsics", since = "1.59.0")
57964)]
57965#[cfg_attr(
57966 target_arch = "arm",
57967 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57968)]
57969pub unsafe fn vst1_u32_x2(a: *mut u32, b: uint32x2x2_t) {
57970 vst1_s32_x2(transmute(a), transmute(b))
57971}
57972#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
57973#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u32_x3)"]
57974#[doc = "## Safety"]
57975#[doc = " * Neon instrinsic unsafe"]
57976#[inline]
57977#[target_feature(enable = "neon")]
57978#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57979#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
57980#[cfg_attr(
57981 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57982 assert_instr(st1)
57983)]
57984#[cfg_attr(
57985 not(target_arch = "arm"),
57986 stable(feature = "neon_intrinsics", since = "1.59.0")
57987)]
57988#[cfg_attr(
57989 target_arch = "arm",
57990 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57991)]
57992pub unsafe fn vst1_u32_x3(a: *mut u32, b: uint32x2x3_t) {
57993 vst1_s32_x3(transmute(a), transmute(b))
57994}
57995#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
57996#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u32_x4)"]
57997#[doc = "## Safety"]
57998#[doc = " * Neon instrinsic unsafe"]
57999#[inline]
58000#[target_feature(enable = "neon")]
58001#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58002#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58003#[cfg_attr(
58004 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58005 assert_instr(st1)
58006)]
58007#[cfg_attr(
58008 not(target_arch = "arm"),
58009 stable(feature = "neon_intrinsics", since = "1.59.0")
58010)]
58011#[cfg_attr(
58012 target_arch = "arm",
58013 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58014)]
58015pub unsafe fn vst1_u32_x4(a: *mut u32, b: uint32x2x4_t) {
58016 vst1_s32_x4(transmute(a), transmute(b))
58017}
58018#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58019#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u32_x2)"]
58020#[doc = "## Safety"]
58021#[doc = " * Neon instrinsic unsafe"]
58022#[inline]
58023#[target_feature(enable = "neon")]
58024#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58025#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58026#[cfg_attr(
58027 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58028 assert_instr(st1)
58029)]
58030#[cfg_attr(
58031 not(target_arch = "arm"),
58032 stable(feature = "neon_intrinsics", since = "1.59.0")
58033)]
58034#[cfg_attr(
58035 target_arch = "arm",
58036 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58037)]
58038pub unsafe fn vst1q_u32_x2(a: *mut u32, b: uint32x4x2_t) {
58039 vst1q_s32_x2(transmute(a), transmute(b))
58040}
58041#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58042#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u32_x3)"]
58043#[doc = "## Safety"]
58044#[doc = " * Neon instrinsic unsafe"]
58045#[inline]
58046#[target_feature(enable = "neon")]
58047#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58048#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58049#[cfg_attr(
58050 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58051 assert_instr(st1)
58052)]
58053#[cfg_attr(
58054 not(target_arch = "arm"),
58055 stable(feature = "neon_intrinsics", since = "1.59.0")
58056)]
58057#[cfg_attr(
58058 target_arch = "arm",
58059 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58060)]
58061pub unsafe fn vst1q_u32_x3(a: *mut u32, b: uint32x4x3_t) {
58062 vst1q_s32_x3(transmute(a), transmute(b))
58063}
58064#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58065#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u32_x4)"]
58066#[doc = "## Safety"]
58067#[doc = " * Neon instrinsic unsafe"]
58068#[inline]
58069#[target_feature(enable = "neon")]
58070#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58071#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58072#[cfg_attr(
58073 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58074 assert_instr(st1)
58075)]
58076#[cfg_attr(
58077 not(target_arch = "arm"),
58078 stable(feature = "neon_intrinsics", since = "1.59.0")
58079)]
58080#[cfg_attr(
58081 target_arch = "arm",
58082 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58083)]
58084pub unsafe fn vst1q_u32_x4(a: *mut u32, b: uint32x4x4_t) {
58085 vst1q_s32_x4(transmute(a), transmute(b))
58086}
58087#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58088#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u64_x2)"]
58089#[doc = "## Safety"]
58090#[doc = " * Neon instrinsic unsafe"]
58091#[inline]
58092#[target_feature(enable = "neon")]
58093#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58094#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58095#[cfg_attr(
58096 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58097 assert_instr(st1)
58098)]
58099#[cfg_attr(
58100 not(target_arch = "arm"),
58101 stable(feature = "neon_intrinsics", since = "1.59.0")
58102)]
58103#[cfg_attr(
58104 target_arch = "arm",
58105 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58106)]
58107pub unsafe fn vst1_u64_x2(a: *mut u64, b: uint64x1x2_t) {
58108 vst1_s64_x2(transmute(a), transmute(b))
58109}
58110#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58111#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u64_x3)"]
58112#[doc = "## Safety"]
58113#[doc = " * Neon instrinsic unsafe"]
58114#[inline]
58115#[target_feature(enable = "neon")]
58116#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58117#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58118#[cfg_attr(
58119 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58120 assert_instr(st1)
58121)]
58122#[cfg_attr(
58123 not(target_arch = "arm"),
58124 stable(feature = "neon_intrinsics", since = "1.59.0")
58125)]
58126#[cfg_attr(
58127 target_arch = "arm",
58128 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58129)]
58130pub unsafe fn vst1_u64_x3(a: *mut u64, b: uint64x1x3_t) {
58131 vst1_s64_x3(transmute(a), transmute(b))
58132}
58133#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58134#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u64_x4)"]
58135#[doc = "## Safety"]
58136#[doc = " * Neon instrinsic unsafe"]
58137#[inline]
58138#[target_feature(enable = "neon")]
58139#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58140#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58141#[cfg_attr(
58142 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58143 assert_instr(st1)
58144)]
58145#[cfg_attr(
58146 not(target_arch = "arm"),
58147 stable(feature = "neon_intrinsics", since = "1.59.0")
58148)]
58149#[cfg_attr(
58150 target_arch = "arm",
58151 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58152)]
58153pub unsafe fn vst1_u64_x4(a: *mut u64, b: uint64x1x4_t) {
58154 vst1_s64_x4(transmute(a), transmute(b))
58155}
58156#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58157#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u64_x2)"]
58158#[doc = "## Safety"]
58159#[doc = " * Neon instrinsic unsafe"]
58160#[inline]
58161#[target_feature(enable = "neon")]
58162#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58163#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58164#[cfg_attr(
58165 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58166 assert_instr(st1)
58167)]
58168#[cfg_attr(
58169 not(target_arch = "arm"),
58170 stable(feature = "neon_intrinsics", since = "1.59.0")
58171)]
58172#[cfg_attr(
58173 target_arch = "arm",
58174 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58175)]
58176pub unsafe fn vst1q_u64_x2(a: *mut u64, b: uint64x2x2_t) {
58177 vst1q_s64_x2(transmute(a), transmute(b))
58178}
58179#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58180#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u64_x3)"]
58181#[doc = "## Safety"]
58182#[doc = " * Neon instrinsic unsafe"]
58183#[inline]
58184#[target_feature(enable = "neon")]
58185#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58186#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58187#[cfg_attr(
58188 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58189 assert_instr(st1)
58190)]
58191#[cfg_attr(
58192 not(target_arch = "arm"),
58193 stable(feature = "neon_intrinsics", since = "1.59.0")
58194)]
58195#[cfg_attr(
58196 target_arch = "arm",
58197 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58198)]
58199pub unsafe fn vst1q_u64_x3(a: *mut u64, b: uint64x2x3_t) {
58200 vst1q_s64_x3(transmute(a), transmute(b))
58201}
58202#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58203#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u64_x4)"]
58204#[doc = "## Safety"]
58205#[doc = " * Neon instrinsic unsafe"]
58206#[inline]
58207#[target_feature(enable = "neon")]
58208#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58209#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58210#[cfg_attr(
58211 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58212 assert_instr(st1)
58213)]
58214#[cfg_attr(
58215 not(target_arch = "arm"),
58216 stable(feature = "neon_intrinsics", since = "1.59.0")
58217)]
58218#[cfg_attr(
58219 target_arch = "arm",
58220 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58221)]
58222pub unsafe fn vst1q_u64_x4(a: *mut u64, b: uint64x2x4_t) {
58223 vst1q_s64_x4(transmute(a), transmute(b))
58224}
58225#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58226#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p8_x2)"]
58227#[doc = "## Safety"]
58228#[doc = " * Neon instrinsic unsafe"]
58229#[inline]
58230#[target_feature(enable = "neon")]
58231#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58232#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58233#[cfg_attr(
58234 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58235 assert_instr(st1)
58236)]
58237#[cfg_attr(
58238 not(target_arch = "arm"),
58239 stable(feature = "neon_intrinsics", since = "1.59.0")
58240)]
58241#[cfg_attr(
58242 target_arch = "arm",
58243 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58244)]
58245pub unsafe fn vst1_p8_x2(a: *mut p8, b: poly8x8x2_t) {
58246 vst1_s8_x2(transmute(a), transmute(b))
58247}
58248#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58249#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p8_x3)"]
58250#[doc = "## Safety"]
58251#[doc = " * Neon instrinsic unsafe"]
58252#[inline]
58253#[target_feature(enable = "neon")]
58254#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58255#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58256#[cfg_attr(
58257 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58258 assert_instr(st1)
58259)]
58260#[cfg_attr(
58261 not(target_arch = "arm"),
58262 stable(feature = "neon_intrinsics", since = "1.59.0")
58263)]
58264#[cfg_attr(
58265 target_arch = "arm",
58266 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58267)]
58268pub unsafe fn vst1_p8_x3(a: *mut p8, b: poly8x8x3_t) {
58269 vst1_s8_x3(transmute(a), transmute(b))
58270}
58271#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58272#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p8_x4)"]
58273#[doc = "## Safety"]
58274#[doc = " * Neon instrinsic unsafe"]
58275#[inline]
58276#[target_feature(enable = "neon")]
58277#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58278#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58279#[cfg_attr(
58280 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58281 assert_instr(st1)
58282)]
58283#[cfg_attr(
58284 not(target_arch = "arm"),
58285 stable(feature = "neon_intrinsics", since = "1.59.0")
58286)]
58287#[cfg_attr(
58288 target_arch = "arm",
58289 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58290)]
58291pub unsafe fn vst1_p8_x4(a: *mut p8, b: poly8x8x4_t) {
58292 vst1_s8_x4(transmute(a), transmute(b))
58293}
58294#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58295#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p8_x2)"]
58296#[doc = "## Safety"]
58297#[doc = " * Neon instrinsic unsafe"]
58298#[inline]
58299#[target_feature(enable = "neon")]
58300#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58301#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58302#[cfg_attr(
58303 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58304 assert_instr(st1)
58305)]
58306#[cfg_attr(
58307 not(target_arch = "arm"),
58308 stable(feature = "neon_intrinsics", since = "1.59.0")
58309)]
58310#[cfg_attr(
58311 target_arch = "arm",
58312 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58313)]
58314pub unsafe fn vst1q_p8_x2(a: *mut p8, b: poly8x16x2_t) {
58315 vst1q_s8_x2(transmute(a), transmute(b))
58316}
58317#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58318#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p8_x3)"]
58319#[doc = "## Safety"]
58320#[doc = " * Neon instrinsic unsafe"]
58321#[inline]
58322#[target_feature(enable = "neon")]
58323#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58324#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58325#[cfg_attr(
58326 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58327 assert_instr(st1)
58328)]
58329#[cfg_attr(
58330 not(target_arch = "arm"),
58331 stable(feature = "neon_intrinsics", since = "1.59.0")
58332)]
58333#[cfg_attr(
58334 target_arch = "arm",
58335 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58336)]
58337pub unsafe fn vst1q_p8_x3(a: *mut p8, b: poly8x16x3_t) {
58338 vst1q_s8_x3(transmute(a), transmute(b))
58339}
58340#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58341#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p8_x4)"]
58342#[doc = "## Safety"]
58343#[doc = " * Neon instrinsic unsafe"]
58344#[inline]
58345#[target_feature(enable = "neon")]
58346#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58347#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58348#[cfg_attr(
58349 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58350 assert_instr(st1)
58351)]
58352#[cfg_attr(
58353 not(target_arch = "arm"),
58354 stable(feature = "neon_intrinsics", since = "1.59.0")
58355)]
58356#[cfg_attr(
58357 target_arch = "arm",
58358 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58359)]
58360pub unsafe fn vst1q_p8_x4(a: *mut p8, b: poly8x16x4_t) {
58361 vst1q_s8_x4(transmute(a), transmute(b))
58362}
58363#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58364#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p16_x2)"]
58365#[doc = "## Safety"]
58366#[doc = " * Neon instrinsic unsafe"]
58367#[inline]
58368#[target_feature(enable = "neon")]
58369#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58370#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58371#[cfg_attr(
58372 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58373 assert_instr(st1)
58374)]
58375#[cfg_attr(
58376 not(target_arch = "arm"),
58377 stable(feature = "neon_intrinsics", since = "1.59.0")
58378)]
58379#[cfg_attr(
58380 target_arch = "arm",
58381 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58382)]
58383pub unsafe fn vst1_p16_x2(a: *mut p16, b: poly16x4x2_t) {
58384 vst1_s16_x2(transmute(a), transmute(b))
58385}
58386#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58387#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p16_x3)"]
58388#[doc = "## Safety"]
58389#[doc = " * Neon instrinsic unsafe"]
58390#[inline]
58391#[target_feature(enable = "neon")]
58392#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58393#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58394#[cfg_attr(
58395 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58396 assert_instr(st1)
58397)]
58398#[cfg_attr(
58399 not(target_arch = "arm"),
58400 stable(feature = "neon_intrinsics", since = "1.59.0")
58401)]
58402#[cfg_attr(
58403 target_arch = "arm",
58404 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58405)]
58406pub unsafe fn vst1_p16_x3(a: *mut p16, b: poly16x4x3_t) {
58407 vst1_s16_x3(transmute(a), transmute(b))
58408}
58409#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58410#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p16_x4)"]
58411#[doc = "## Safety"]
58412#[doc = " * Neon instrinsic unsafe"]
58413#[inline]
58414#[target_feature(enable = "neon")]
58415#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58416#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58417#[cfg_attr(
58418 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58419 assert_instr(st1)
58420)]
58421#[cfg_attr(
58422 not(target_arch = "arm"),
58423 stable(feature = "neon_intrinsics", since = "1.59.0")
58424)]
58425#[cfg_attr(
58426 target_arch = "arm",
58427 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58428)]
58429pub unsafe fn vst1_p16_x4(a: *mut p16, b: poly16x4x4_t) {
58430 vst1_s16_x4(transmute(a), transmute(b))
58431}
58432#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58433#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p16_x2)"]
58434#[doc = "## Safety"]
58435#[doc = " * Neon instrinsic unsafe"]
58436#[inline]
58437#[target_feature(enable = "neon")]
58438#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58439#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58440#[cfg_attr(
58441 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58442 assert_instr(st1)
58443)]
58444#[cfg_attr(
58445 not(target_arch = "arm"),
58446 stable(feature = "neon_intrinsics", since = "1.59.0")
58447)]
58448#[cfg_attr(
58449 target_arch = "arm",
58450 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58451)]
58452pub unsafe fn vst1q_p16_x2(a: *mut p16, b: poly16x8x2_t) {
58453 vst1q_s16_x2(transmute(a), transmute(b))
58454}
58455#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58456#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p16_x3)"]
58457#[doc = "## Safety"]
58458#[doc = " * Neon instrinsic unsafe"]
58459#[inline]
58460#[target_feature(enable = "neon")]
58461#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58462#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58463#[cfg_attr(
58464 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58465 assert_instr(st1)
58466)]
58467#[cfg_attr(
58468 not(target_arch = "arm"),
58469 stable(feature = "neon_intrinsics", since = "1.59.0")
58470)]
58471#[cfg_attr(
58472 target_arch = "arm",
58473 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58474)]
58475pub unsafe fn vst1q_p16_x3(a: *mut p16, b: poly16x8x3_t) {
58476 vst1q_s16_x3(transmute(a), transmute(b))
58477}
58478#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
58479#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p16_x4)"]
58480#[doc = "## Safety"]
58481#[doc = " * Neon instrinsic unsafe"]
58482#[inline]
58483#[target_feature(enable = "neon")]
58484#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58485#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
58486#[cfg_attr(
58487 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58488 assert_instr(st1)
58489)]
58490#[cfg_attr(
58491 not(target_arch = "arm"),
58492 stable(feature = "neon_intrinsics", since = "1.59.0")
58493)]
58494#[cfg_attr(
58495 target_arch = "arm",
58496 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58497)]
58498pub unsafe fn vst1q_p16_x4(a: *mut p16, b: poly16x8x4_t) {
58499 vst1q_s16_x4(transmute(a), transmute(b))
58500}
58501#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
58502#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_v1i64)"]
58503#[doc = "## Safety"]
58504#[doc = " * Neon instrinsic unsafe"]
58505#[inline]
58506#[target_feature(enable = "neon")]
58507#[cfg(target_arch = "arm")]
58508#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58509#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
58510#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
58511unsafe fn vst1_v1i64(addr: *const i8, val: int64x1_t, align: i32) {
58512 unsafe extern "unadjusted" {
58513 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v1i64.p0")]
58514 fn _vst1_v1i64(addr: *const i8, val: int64x1_t, align: i32);
58515 }
58516 _vst1_v1i64(addr, val, align)
58517}
58518#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
58519#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_v2f32)"]
58520#[doc = "## Safety"]
58521#[doc = " * Neon instrinsic unsafe"]
58522#[inline]
58523#[target_feature(enable = "neon")]
58524#[cfg(target_arch = "arm")]
58525#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58526#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
58527#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
58528unsafe fn vst1_v2f32(addr: *const i8, val: float32x2_t, align: i32) {
58529 unsafe extern "unadjusted" {
58530 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v2f32.p0")]
58531 fn _vst1_v2f32(addr: *const i8, val: float32x2_t, align: i32);
58532 }
58533 _vst1_v2f32(addr, val, align)
58534}
58535#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
58536#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_v2i32)"]
58537#[doc = "## Safety"]
58538#[doc = " * Neon instrinsic unsafe"]
58539#[inline]
58540#[target_feature(enable = "neon")]
58541#[cfg(target_arch = "arm")]
58542#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58543#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
58544#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
58545unsafe fn vst1_v2i32(addr: *const i8, val: int32x2_t, align: i32) {
58546 unsafe extern "unadjusted" {
58547 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v2i32.p0")]
58548 fn _vst1_v2i32(addr: *const i8, val: int32x2_t, align: i32);
58549 }
58550 _vst1_v2i32(addr, val, align)
58551}
58552#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
58553#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_v4i16)"]
58554#[doc = "## Safety"]
58555#[doc = " * Neon instrinsic unsafe"]
58556#[inline]
58557#[target_feature(enable = "neon")]
58558#[cfg(target_arch = "arm")]
58559#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58560#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
58561#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
58562unsafe fn vst1_v4i16(addr: *const i8, val: int16x4_t, align: i32) {
58563 unsafe extern "unadjusted" {
58564 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v4i16.p0")]
58565 fn _vst1_v4i16(addr: *const i8, val: int16x4_t, align: i32);
58566 }
58567 _vst1_v4i16(addr, val, align)
58568}
58569#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
58570#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_v8i8)"]
58571#[doc = "## Safety"]
58572#[doc = " * Neon instrinsic unsafe"]
58573#[inline]
58574#[target_feature(enable = "neon")]
58575#[cfg(target_arch = "arm")]
58576#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58577#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
58578#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
58579unsafe fn vst1_v8i8(addr: *const i8, val: int8x8_t, align: i32) {
58580 unsafe extern "unadjusted" {
58581 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v8i8.p0")]
58582 fn _vst1_v8i8(addr: *const i8, val: int8x8_t, align: i32);
58583 }
58584 _vst1_v8i8(addr, val, align)
58585}
58586#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
58587#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_v16i8)"]
58588#[doc = "## Safety"]
58589#[doc = " * Neon instrinsic unsafe"]
58590#[inline]
58591#[target_feature(enable = "neon")]
58592#[cfg(target_arch = "arm")]
58593#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58594#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
58595#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
58596unsafe fn vst1q_v16i8(addr: *const i8, val: int8x16_t, align: i32) {
58597 unsafe extern "unadjusted" {
58598 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v16i8.p0")]
58599 fn _vst1q_v16i8(addr: *const i8, val: int8x16_t, align: i32);
58600 }
58601 _vst1q_v16i8(addr, val, align)
58602}
58603#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
58604#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_v2i64)"]
58605#[doc = "## Safety"]
58606#[doc = " * Neon instrinsic unsafe"]
58607#[inline]
58608#[target_feature(enable = "neon")]
58609#[cfg(target_arch = "arm")]
58610#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58611#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
58612#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
58613unsafe fn vst1q_v2i64(addr: *const i8, val: int64x2_t, align: i32) {
58614 unsafe extern "unadjusted" {
58615 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v2i64.p0")]
58616 fn _vst1q_v2i64(addr: *const i8, val: int64x2_t, align: i32);
58617 }
58618 _vst1q_v2i64(addr, val, align)
58619}
58620#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
58621#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_v4f32)"]
58622#[doc = "## Safety"]
58623#[doc = " * Neon instrinsic unsafe"]
58624#[inline]
58625#[target_feature(enable = "neon")]
58626#[cfg(target_arch = "arm")]
58627#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58628#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
58629#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
58630unsafe fn vst1q_v4f32(addr: *const i8, val: float32x4_t, align: i32) {
58631 unsafe extern "unadjusted" {
58632 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v4f32.p0")]
58633 fn _vst1q_v4f32(addr: *const i8, val: float32x4_t, align: i32);
58634 }
58635 _vst1q_v4f32(addr, val, align)
58636}
58637#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
58638#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_v4i32)"]
58639#[doc = "## Safety"]
58640#[doc = " * Neon instrinsic unsafe"]
58641#[inline]
58642#[target_feature(enable = "neon")]
58643#[cfg(target_arch = "arm")]
58644#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58645#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
58646#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
58647unsafe fn vst1q_v4i32(addr: *const i8, val: int32x4_t, align: i32) {
58648 unsafe extern "unadjusted" {
58649 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v4i32.p0")]
58650 fn _vst1q_v4i32(addr: *const i8, val: int32x4_t, align: i32);
58651 }
58652 _vst1q_v4i32(addr, val, align)
58653}
58654#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
58655#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_v8i16)"]
58656#[doc = "## Safety"]
58657#[doc = " * Neon instrinsic unsafe"]
58658#[inline]
58659#[target_feature(enable = "neon")]
58660#[cfg(target_arch = "arm")]
58661#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58662#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
58663#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
58664unsafe fn vst1q_v8i16(addr: *const i8, val: int16x8_t, align: i32) {
58665 unsafe extern "unadjusted" {
58666 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v8i16.p0")]
58667 fn _vst1q_v8i16(addr: *const i8, val: int16x8_t, align: i32);
58668 }
58669 _vst1q_v8i16(addr, val, align)
58670}
58671#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
58672#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_v4f16)"]
58673#[doc = "## Safety"]
58674#[doc = " * Neon instrinsic unsafe"]
58675#[inline]
58676#[cfg(target_arch = "arm")]
58677#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58678#[target_feature(enable = "neon,fp16")]
58679#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
58680#[cfg(not(target_arch = "arm64ec"))]
58681#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
58682unsafe fn vst1_v4f16(addr: *const i8, val: float16x4_t, align: i32) {
58683 unsafe extern "unadjusted" {
58684 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v4f16.p0")]
58685 fn _vst1_v4f16(addr: *const i8, val: float16x4_t, align: i32);
58686 }
58687 _vst1_v4f16(addr, val, align)
58688}
58689#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
58690#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_v8f16)"]
58691#[doc = "## Safety"]
58692#[doc = " * Neon instrinsic unsafe"]
58693#[inline]
58694#[cfg(target_arch = "arm")]
58695#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58696#[target_feature(enable = "neon,fp16")]
58697#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
58698#[cfg(not(target_arch = "arm64ec"))]
58699#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
58700unsafe fn vst1q_v8f16(addr: *const i8, val: float16x8_t, align: i32) {
58701 unsafe extern "unadjusted" {
58702 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v8f16.p0")]
58703 fn _vst1q_v8f16(addr: *const i8, val: float16x8_t, align: i32);
58704 }
58705 _vst1q_v8f16(addr, val, align)
58706}
58707#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
58708#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_p64)"]
58709#[doc = "## Safety"]
58710#[doc = " * Neon instrinsic unsafe"]
58711#[inline]
58712#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58713#[target_feature(enable = "neon,aes")]
58714#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
58715#[cfg_attr(
58716 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58717 assert_instr(nop, LANE = 0)
58718)]
58719#[rustc_legacy_const_generics(2)]
58720#[cfg_attr(
58721 not(target_arch = "arm"),
58722 stable(feature = "neon_intrinsics", since = "1.59.0")
58723)]
58724#[cfg_attr(
58725 target_arch = "arm",
58726 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58727)]
58728pub unsafe fn vst1q_lane_p64<const LANE: i32>(a: *mut p64, b: poly64x2_t) {
58729 static_assert_uimm_bits!(LANE, 1);
58730 *a = simd_extract!(b, LANE as u32);
58731}
58732#[doc = "Store multiple 2-element structures from two registers"]
58733#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_f16)"]
58734#[doc = "## Safety"]
58735#[doc = " * Neon instrinsic unsafe"]
58736#[inline]
58737#[cfg(not(target_arch = "arm"))]
58738#[target_feature(enable = "neon,fp16")]
58739#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
58740#[cfg(not(target_arch = "arm64ec"))]
58741#[cfg_attr(test, assert_instr(st2))]
58742pub unsafe fn vst2_f16(a: *mut f16, b: float16x4x2_t) {
58743 unsafe extern "unadjusted" {
58744 #[cfg_attr(
58745 any(target_arch = "aarch64", target_arch = "arm64ec"),
58746 link_name = "llvm.aarch64.neon.st2.v4f16.p0"
58747 )]
58748 fn _vst2_f16(a: float16x4_t, b: float16x4_t, ptr: *mut i8);
58749 }
58750 _vst2_f16(b.0, b.1, a as _)
58751}
58752#[doc = "Store multiple 2-element structures from two registers"]
58753#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_f16)"]
58754#[doc = "## Safety"]
58755#[doc = " * Neon instrinsic unsafe"]
58756#[inline]
58757#[cfg(not(target_arch = "arm"))]
58758#[target_feature(enable = "neon,fp16")]
58759#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
58760#[cfg(not(target_arch = "arm64ec"))]
58761#[cfg_attr(test, assert_instr(st2))]
58762pub unsafe fn vst2q_f16(a: *mut f16, b: float16x8x2_t) {
58763 unsafe extern "unadjusted" {
58764 #[cfg_attr(
58765 any(target_arch = "aarch64", target_arch = "arm64ec"),
58766 link_name = "llvm.aarch64.neon.st2.v8f16.p0"
58767 )]
58768 fn _vst2q_f16(a: float16x8_t, b: float16x8_t, ptr: *mut i8);
58769 }
58770 _vst2q_f16(b.0, b.1, a as _)
58771}
58772#[doc = "Store multiple 2-element structures from two registers"]
58773#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_f16)"]
58774#[doc = "## Safety"]
58775#[doc = " * Neon instrinsic unsafe"]
58776#[inline]
58777#[cfg(target_arch = "arm")]
58778#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58779#[target_feature(enable = "neon,fp16")]
58780#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
58781#[cfg(not(target_arch = "arm64ec"))]
58782#[cfg_attr(test, assert_instr(vst2))]
58783pub unsafe fn vst2_f16(a: *mut f16, b: float16x4x2_t) {
58784 unsafe extern "unadjusted" {
58785 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.p0.v4f16")]
58786 fn _vst2_f16(ptr: *mut i8, a: float16x4_t, b: float16x4_t, size: i32);
58787 }
58788 _vst2_f16(a as _, b.0, b.1, 2)
58789}
58790#[doc = "Store multiple 2-element structures from two registers"]
58791#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_f16)"]
58792#[doc = "## Safety"]
58793#[doc = " * Neon instrinsic unsafe"]
58794#[inline]
58795#[cfg(target_arch = "arm")]
58796#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58797#[target_feature(enable = "neon,fp16")]
58798#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
58799#[cfg(not(target_arch = "arm64ec"))]
58800#[cfg_attr(test, assert_instr(vst2))]
58801pub unsafe fn vst2q_f16(a: *mut f16, b: float16x8x2_t) {
58802 unsafe extern "unadjusted" {
58803 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.p0.v8f16")]
58804 fn _vst2q_f16(ptr: *mut i8, a: float16x8_t, b: float16x8_t, size: i32);
58805 }
58806 _vst2q_f16(a as _, b.0, b.1, 2)
58807}
58808#[doc = "Store multiple 2-element structures from two registers"]
58809#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_f32)"]
58810#[doc = "## Safety"]
58811#[doc = " * Neon instrinsic unsafe"]
58812#[inline]
58813#[target_feature(enable = "neon")]
58814#[cfg(not(target_arch = "arm"))]
58815#[stable(feature = "neon_intrinsics", since = "1.59.0")]
58816#[cfg_attr(test, assert_instr(st2))]
58817pub unsafe fn vst2_f32(a: *mut f32, b: float32x2x2_t) {
58818 unsafe extern "unadjusted" {
58819 #[cfg_attr(
58820 any(target_arch = "aarch64", target_arch = "arm64ec"),
58821 link_name = "llvm.aarch64.neon.st2.v2f32.p0"
58822 )]
58823 fn _vst2_f32(a: float32x2_t, b: float32x2_t, ptr: *mut i8);
58824 }
58825 _vst2_f32(b.0, b.1, a as _)
58826}
58827#[doc = "Store multiple 2-element structures from two registers"]
58828#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_f32)"]
58829#[doc = "## Safety"]
58830#[doc = " * Neon instrinsic unsafe"]
58831#[inline]
58832#[target_feature(enable = "neon")]
58833#[cfg(not(target_arch = "arm"))]
58834#[stable(feature = "neon_intrinsics", since = "1.59.0")]
58835#[cfg_attr(test, assert_instr(st2))]
58836pub unsafe fn vst2q_f32(a: *mut f32, b: float32x4x2_t) {
58837 unsafe extern "unadjusted" {
58838 #[cfg_attr(
58839 any(target_arch = "aarch64", target_arch = "arm64ec"),
58840 link_name = "llvm.aarch64.neon.st2.v4f32.p0"
58841 )]
58842 fn _vst2q_f32(a: float32x4_t, b: float32x4_t, ptr: *mut i8);
58843 }
58844 _vst2q_f32(b.0, b.1, a as _)
58845}
58846#[doc = "Store multiple 2-element structures from two registers"]
58847#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s8)"]
58848#[doc = "## Safety"]
58849#[doc = " * Neon instrinsic unsafe"]
58850#[inline]
58851#[target_feature(enable = "neon")]
58852#[cfg(not(target_arch = "arm"))]
58853#[stable(feature = "neon_intrinsics", since = "1.59.0")]
58854#[cfg_attr(test, assert_instr(st2))]
58855pub unsafe fn vst2_s8(a: *mut i8, b: int8x8x2_t) {
58856 unsafe extern "unadjusted" {
58857 #[cfg_attr(
58858 any(target_arch = "aarch64", target_arch = "arm64ec"),
58859 link_name = "llvm.aarch64.neon.st2.v8i8.p0"
58860 )]
58861 fn _vst2_s8(a: int8x8_t, b: int8x8_t, ptr: *mut i8);
58862 }
58863 _vst2_s8(b.0, b.1, a as _)
58864}
58865#[doc = "Store multiple 2-element structures from two registers"]
58866#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s8)"]
58867#[doc = "## Safety"]
58868#[doc = " * Neon instrinsic unsafe"]
58869#[inline]
58870#[target_feature(enable = "neon")]
58871#[cfg(not(target_arch = "arm"))]
58872#[stable(feature = "neon_intrinsics", since = "1.59.0")]
58873#[cfg_attr(test, assert_instr(st2))]
58874pub unsafe fn vst2q_s8(a: *mut i8, b: int8x16x2_t) {
58875 unsafe extern "unadjusted" {
58876 #[cfg_attr(
58877 any(target_arch = "aarch64", target_arch = "arm64ec"),
58878 link_name = "llvm.aarch64.neon.st2.v16i8.p0"
58879 )]
58880 fn _vst2q_s8(a: int8x16_t, b: int8x16_t, ptr: *mut i8);
58881 }
58882 _vst2q_s8(b.0, b.1, a as _)
58883}
58884#[doc = "Store multiple 2-element structures from two registers"]
58885#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s16)"]
58886#[doc = "## Safety"]
58887#[doc = " * Neon instrinsic unsafe"]
58888#[inline]
58889#[target_feature(enable = "neon")]
58890#[cfg(not(target_arch = "arm"))]
58891#[stable(feature = "neon_intrinsics", since = "1.59.0")]
58892#[cfg_attr(test, assert_instr(st2))]
58893pub unsafe fn vst2_s16(a: *mut i16, b: int16x4x2_t) {
58894 unsafe extern "unadjusted" {
58895 #[cfg_attr(
58896 any(target_arch = "aarch64", target_arch = "arm64ec"),
58897 link_name = "llvm.aarch64.neon.st2.v4i16.p0"
58898 )]
58899 fn _vst2_s16(a: int16x4_t, b: int16x4_t, ptr: *mut i8);
58900 }
58901 _vst2_s16(b.0, b.1, a as _)
58902}
58903#[doc = "Store multiple 2-element structures from two registers"]
58904#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s16)"]
58905#[doc = "## Safety"]
58906#[doc = " * Neon instrinsic unsafe"]
58907#[inline]
58908#[target_feature(enable = "neon")]
58909#[cfg(not(target_arch = "arm"))]
58910#[stable(feature = "neon_intrinsics", since = "1.59.0")]
58911#[cfg_attr(test, assert_instr(st2))]
58912pub unsafe fn vst2q_s16(a: *mut i16, b: int16x8x2_t) {
58913 unsafe extern "unadjusted" {
58914 #[cfg_attr(
58915 any(target_arch = "aarch64", target_arch = "arm64ec"),
58916 link_name = "llvm.aarch64.neon.st2.v8i16.p0"
58917 )]
58918 fn _vst2q_s16(a: int16x8_t, b: int16x8_t, ptr: *mut i8);
58919 }
58920 _vst2q_s16(b.0, b.1, a as _)
58921}
58922#[doc = "Store multiple 2-element structures from two registers"]
58923#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s32)"]
58924#[doc = "## Safety"]
58925#[doc = " * Neon instrinsic unsafe"]
58926#[inline]
58927#[target_feature(enable = "neon")]
58928#[cfg(not(target_arch = "arm"))]
58929#[stable(feature = "neon_intrinsics", since = "1.59.0")]
58930#[cfg_attr(test, assert_instr(st2))]
58931pub unsafe fn vst2_s32(a: *mut i32, b: int32x2x2_t) {
58932 unsafe extern "unadjusted" {
58933 #[cfg_attr(
58934 any(target_arch = "aarch64", target_arch = "arm64ec"),
58935 link_name = "llvm.aarch64.neon.st2.v2i32.p0"
58936 )]
58937 fn _vst2_s32(a: int32x2_t, b: int32x2_t, ptr: *mut i8);
58938 }
58939 _vst2_s32(b.0, b.1, a as _)
58940}
58941#[doc = "Store multiple 2-element structures from two registers"]
58942#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s32)"]
58943#[doc = "## Safety"]
58944#[doc = " * Neon instrinsic unsafe"]
58945#[inline]
58946#[target_feature(enable = "neon")]
58947#[cfg(not(target_arch = "arm"))]
58948#[stable(feature = "neon_intrinsics", since = "1.59.0")]
58949#[cfg_attr(test, assert_instr(st2))]
58950pub unsafe fn vst2q_s32(a: *mut i32, b: int32x4x2_t) {
58951 unsafe extern "unadjusted" {
58952 #[cfg_attr(
58953 any(target_arch = "aarch64", target_arch = "arm64ec"),
58954 link_name = "llvm.aarch64.neon.st2.v4i32.p0"
58955 )]
58956 fn _vst2q_s32(a: int32x4_t, b: int32x4_t, ptr: *mut i8);
58957 }
58958 _vst2q_s32(b.0, b.1, a as _)
58959}
58960#[doc = "Store multiple 2-element structures from two registers"]
58961#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_f32)"]
58962#[doc = "## Safety"]
58963#[doc = " * Neon instrinsic unsafe"]
58964#[inline]
58965#[cfg(target_arch = "arm")]
58966#[target_feature(enable = "neon,v7")]
58967#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
58968#[cfg_attr(test, assert_instr(vst2))]
58969pub unsafe fn vst2_f32(a: *mut f32, b: float32x2x2_t) {
58970 unsafe extern "unadjusted" {
58971 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v2f32.p0")]
58972 fn _vst2_f32(ptr: *mut i8, a: float32x2_t, b: float32x2_t, size: i32);
58973 }
58974 _vst2_f32(a as _, b.0, b.1, 4)
58975}
58976#[doc = "Store multiple 2-element structures from two registers"]
58977#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_f32)"]
58978#[doc = "## Safety"]
58979#[doc = " * Neon instrinsic unsafe"]
58980#[inline]
58981#[cfg(target_arch = "arm")]
58982#[target_feature(enable = "neon,v7")]
58983#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
58984#[cfg_attr(test, assert_instr(vst2))]
58985pub unsafe fn vst2q_f32(a: *mut f32, b: float32x4x2_t) {
58986 unsafe extern "unadjusted" {
58987 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v4f32.p0")]
58988 fn _vst2q_f32(ptr: *mut i8, a: float32x4_t, b: float32x4_t, size: i32);
58989 }
58990 _vst2q_f32(a as _, b.0, b.1, 4)
58991}
58992#[doc = "Store multiple 2-element structures from two registers"]
58993#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s8)"]
58994#[doc = "## Safety"]
58995#[doc = " * Neon instrinsic unsafe"]
58996#[inline]
58997#[cfg(target_arch = "arm")]
58998#[target_feature(enable = "neon,v7")]
58999#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59000#[cfg_attr(test, assert_instr(vst2))]
59001pub unsafe fn vst2_s8(a: *mut i8, b: int8x8x2_t) {
59002 unsafe extern "unadjusted" {
59003 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v8i8.p0")]
59004 fn _vst2_s8(ptr: *mut i8, a: int8x8_t, b: int8x8_t, size: i32);
59005 }
59006 _vst2_s8(a as _, b.0, b.1, 1)
59007}
59008#[doc = "Store multiple 2-element structures from two registers"]
59009#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s8)"]
59010#[doc = "## Safety"]
59011#[doc = " * Neon instrinsic unsafe"]
59012#[inline]
59013#[cfg(target_arch = "arm")]
59014#[target_feature(enable = "neon,v7")]
59015#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59016#[cfg_attr(test, assert_instr(vst2))]
59017pub unsafe fn vst2q_s8(a: *mut i8, b: int8x16x2_t) {
59018 unsafe extern "unadjusted" {
59019 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v16i8.p0")]
59020 fn _vst2q_s8(ptr: *mut i8, a: int8x16_t, b: int8x16_t, size: i32);
59021 }
59022 _vst2q_s8(a as _, b.0, b.1, 1)
59023}
59024#[doc = "Store multiple 2-element structures from two registers"]
59025#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s16)"]
59026#[doc = "## Safety"]
59027#[doc = " * Neon instrinsic unsafe"]
59028#[inline]
59029#[cfg(target_arch = "arm")]
59030#[target_feature(enable = "neon,v7")]
59031#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59032#[cfg_attr(test, assert_instr(vst2))]
59033pub unsafe fn vst2_s16(a: *mut i16, b: int16x4x2_t) {
59034 unsafe extern "unadjusted" {
59035 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v4i16.p0")]
59036 fn _vst2_s16(ptr: *mut i8, a: int16x4_t, b: int16x4_t, size: i32);
59037 }
59038 _vst2_s16(a as _, b.0, b.1, 2)
59039}
59040#[doc = "Store multiple 2-element structures from two registers"]
59041#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s16)"]
59042#[doc = "## Safety"]
59043#[doc = " * Neon instrinsic unsafe"]
59044#[inline]
59045#[cfg(target_arch = "arm")]
59046#[target_feature(enable = "neon,v7")]
59047#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59048#[cfg_attr(test, assert_instr(vst2))]
59049pub unsafe fn vst2q_s16(a: *mut i16, b: int16x8x2_t) {
59050 unsafe extern "unadjusted" {
59051 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v8i16.p0")]
59052 fn _vst2q_s16(ptr: *mut i8, a: int16x8_t, b: int16x8_t, size: i32);
59053 }
59054 _vst2q_s16(a as _, b.0, b.1, 2)
59055}
59056#[doc = "Store multiple 2-element structures from two registers"]
59057#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s32)"]
59058#[doc = "## Safety"]
59059#[doc = " * Neon instrinsic unsafe"]
59060#[inline]
59061#[cfg(target_arch = "arm")]
59062#[target_feature(enable = "neon,v7")]
59063#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59064#[cfg_attr(test, assert_instr(vst2))]
59065pub unsafe fn vst2_s32(a: *mut i32, b: int32x2x2_t) {
59066 unsafe extern "unadjusted" {
59067 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v2i32.p0")]
59068 fn _vst2_s32(ptr: *mut i8, a: int32x2_t, b: int32x2_t, size: i32);
59069 }
59070 _vst2_s32(a as _, b.0, b.1, 4)
59071}
59072#[doc = "Store multiple 2-element structures from two registers"]
59073#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s32)"]
59074#[doc = "## Safety"]
59075#[doc = " * Neon instrinsic unsafe"]
59076#[inline]
59077#[cfg(target_arch = "arm")]
59078#[target_feature(enable = "neon,v7")]
59079#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59080#[cfg_attr(test, assert_instr(vst2))]
59081pub unsafe fn vst2q_s32(a: *mut i32, b: int32x4x2_t) {
59082 unsafe extern "unadjusted" {
59083 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v4i32.p0")]
59084 fn _vst2q_s32(ptr: *mut i8, a: int32x4_t, b: int32x4_t, size: i32);
59085 }
59086 _vst2q_s32(a as _, b.0, b.1, 4)
59087}
59088#[doc = "Store multiple 2-element structures from two registers"]
59089#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_f16)"]
59090#[doc = "## Safety"]
59091#[doc = " * Neon instrinsic unsafe"]
59092#[inline]
59093#[cfg(not(target_arch = "arm"))]
59094#[rustc_legacy_const_generics(2)]
59095#[cfg_attr(test, assert_instr(st2, LANE = 0))]
59096#[target_feature(enable = "neon,fp16")]
59097#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
59098#[cfg(not(target_arch = "arm64ec"))]
59099pub unsafe fn vst2_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x2_t) {
59100 static_assert_uimm_bits!(LANE, 2);
59101 unsafe extern "unadjusted" {
59102 #[cfg_attr(
59103 any(target_arch = "aarch64", target_arch = "arm64ec"),
59104 link_name = "llvm.aarch64.neon.st2lane.v4f16.p0"
59105 )]
59106 fn _vst2_lane_f16(a: float16x4_t, b: float16x4_t, n: i64, ptr: *mut i8);
59107 }
59108 _vst2_lane_f16(b.0, b.1, LANE as i64, a as _)
59109}
59110#[doc = "Store multiple 2-element structures from two registers"]
59111#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_f16)"]
59112#[doc = "## Safety"]
59113#[doc = " * Neon instrinsic unsafe"]
59114#[inline]
59115#[cfg(not(target_arch = "arm"))]
59116#[rustc_legacy_const_generics(2)]
59117#[cfg_attr(test, assert_instr(st2, LANE = 0))]
59118#[target_feature(enable = "neon,fp16")]
59119#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
59120#[cfg(not(target_arch = "arm64ec"))]
59121pub unsafe fn vst2q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x2_t) {
59122 static_assert_uimm_bits!(LANE, 3);
59123 unsafe extern "unadjusted" {
59124 #[cfg_attr(
59125 any(target_arch = "aarch64", target_arch = "arm64ec"),
59126 link_name = "llvm.aarch64.neon.st2lane.v8f16.p0"
59127 )]
59128 fn _vst2q_lane_f16(a: float16x8_t, b: float16x8_t, n: i64, ptr: *mut i8);
59129 }
59130 _vst2q_lane_f16(b.0, b.1, LANE as i64, a as _)
59131}
59132#[doc = "Store multiple 2-element structures from two registers"]
59133#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_f16)"]
59134#[doc = "## Safety"]
59135#[doc = " * Neon instrinsic unsafe"]
59136#[inline]
59137#[cfg(target_arch = "arm")]
59138#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59139#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
59140#[rustc_legacy_const_generics(2)]
59141#[target_feature(enable = "neon,fp16")]
59142#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
59143#[cfg(not(target_arch = "arm64ec"))]
59144pub unsafe fn vst2_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x2_t) {
59145 static_assert_uimm_bits!(LANE, 2);
59146 unsafe extern "unadjusted" {
59147 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.p0.v4f16")]
59148 fn _vst2_lane_f16(ptr: *mut i8, a: float16x4_t, b: float16x4_t, n: i32, size: i32);
59149 }
59150 _vst2_lane_f16(a as _, b.0, b.1, LANE, 2)
59151}
59152#[doc = "Store multiple 2-element structures from two registers"]
59153#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_f16)"]
59154#[doc = "## Safety"]
59155#[doc = " * Neon instrinsic unsafe"]
59156#[inline]
59157#[cfg(target_arch = "arm")]
59158#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59159#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
59160#[rustc_legacy_const_generics(2)]
59161#[target_feature(enable = "neon,fp16")]
59162#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
59163#[cfg(not(target_arch = "arm64ec"))]
59164pub unsafe fn vst2q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x2_t) {
59165 static_assert_uimm_bits!(LANE, 1);
59166 unsafe extern "unadjusted" {
59167 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.p0.v8f16")]
59168 fn _vst2q_lane_f16(ptr: *mut i8, a: float16x8_t, b: float16x8_t, n: i32, size: i32);
59169 }
59170 _vst2q_lane_f16(a as _, b.0, b.1, LANE, 2)
59171}
59172#[doc = "Store multiple 2-element structures from two registers"]
59173#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_f32)"]
59174#[doc = "## Safety"]
59175#[doc = " * Neon instrinsic unsafe"]
59176#[inline]
59177#[target_feature(enable = "neon")]
59178#[cfg(not(target_arch = "arm"))]
59179#[rustc_legacy_const_generics(2)]
59180#[cfg_attr(test, assert_instr(st2, LANE = 0))]
59181#[stable(feature = "neon_intrinsics", since = "1.59.0")]
59182pub unsafe fn vst2_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x2_t) {
59183 static_assert_uimm_bits!(LANE, 1);
59184 unsafe extern "unadjusted" {
59185 #[cfg_attr(
59186 any(target_arch = "aarch64", target_arch = "arm64ec"),
59187 link_name = "llvm.aarch64.neon.st2lane.v2f32.p0"
59188 )]
59189 fn _vst2_lane_f32(a: float32x2_t, b: float32x2_t, n: i64, ptr: *mut i8);
59190 }
59191 _vst2_lane_f32(b.0, b.1, LANE as i64, a as _)
59192}
59193#[doc = "Store multiple 2-element structures from two registers"]
59194#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_f32)"]
59195#[doc = "## Safety"]
59196#[doc = " * Neon instrinsic unsafe"]
59197#[inline]
59198#[target_feature(enable = "neon")]
59199#[cfg(not(target_arch = "arm"))]
59200#[rustc_legacy_const_generics(2)]
59201#[cfg_attr(test, assert_instr(st2, LANE = 0))]
59202#[stable(feature = "neon_intrinsics", since = "1.59.0")]
59203pub unsafe fn vst2q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x2_t) {
59204 static_assert_uimm_bits!(LANE, 2);
59205 unsafe extern "unadjusted" {
59206 #[cfg_attr(
59207 any(target_arch = "aarch64", target_arch = "arm64ec"),
59208 link_name = "llvm.aarch64.neon.st2lane.v4f32.p0"
59209 )]
59210 fn _vst2q_lane_f32(a: float32x4_t, b: float32x4_t, n: i64, ptr: *mut i8);
59211 }
59212 _vst2q_lane_f32(b.0, b.1, LANE as i64, a as _)
59213}
59214#[doc = "Store multiple 2-element structures from two registers"]
59215#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s8)"]
59216#[doc = "## Safety"]
59217#[doc = " * Neon instrinsic unsafe"]
59218#[inline]
59219#[target_feature(enable = "neon")]
59220#[cfg(not(target_arch = "arm"))]
59221#[rustc_legacy_const_generics(2)]
59222#[cfg_attr(test, assert_instr(st2, LANE = 0))]
59223#[stable(feature = "neon_intrinsics", since = "1.59.0")]
59224pub unsafe fn vst2_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x2_t) {
59225 static_assert_uimm_bits!(LANE, 3);
59226 unsafe extern "unadjusted" {
59227 #[cfg_attr(
59228 any(target_arch = "aarch64", target_arch = "arm64ec"),
59229 link_name = "llvm.aarch64.neon.st2lane.v8i8.p0"
59230 )]
59231 fn _vst2_lane_s8(a: int8x8_t, b: int8x8_t, n: i64, ptr: *mut i8);
59232 }
59233 _vst2_lane_s8(b.0, b.1, LANE as i64, a as _)
59234}
59235#[doc = "Store multiple 2-element structures from two registers"]
59236#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s16)"]
59237#[doc = "## Safety"]
59238#[doc = " * Neon instrinsic unsafe"]
59239#[inline]
59240#[target_feature(enable = "neon")]
59241#[cfg(not(target_arch = "arm"))]
59242#[rustc_legacy_const_generics(2)]
59243#[cfg_attr(test, assert_instr(st2, LANE = 0))]
59244#[stable(feature = "neon_intrinsics", since = "1.59.0")]
59245pub unsafe fn vst2_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x2_t) {
59246 static_assert_uimm_bits!(LANE, 2);
59247 unsafe extern "unadjusted" {
59248 #[cfg_attr(
59249 any(target_arch = "aarch64", target_arch = "arm64ec"),
59250 link_name = "llvm.aarch64.neon.st2lane.v4i16.p0"
59251 )]
59252 fn _vst2_lane_s16(a: int16x4_t, b: int16x4_t, n: i64, ptr: *mut i8);
59253 }
59254 _vst2_lane_s16(b.0, b.1, LANE as i64, a as _)
59255}
59256#[doc = "Store multiple 2-element structures from two registers"]
59257#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_s16)"]
59258#[doc = "## Safety"]
59259#[doc = " * Neon instrinsic unsafe"]
59260#[inline]
59261#[target_feature(enable = "neon")]
59262#[cfg(not(target_arch = "arm"))]
59263#[rustc_legacy_const_generics(2)]
59264#[cfg_attr(test, assert_instr(st2, LANE = 0))]
59265#[stable(feature = "neon_intrinsics", since = "1.59.0")]
59266pub unsafe fn vst2q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x2_t) {
59267 static_assert_uimm_bits!(LANE, 3);
59268 unsafe extern "unadjusted" {
59269 #[cfg_attr(
59270 any(target_arch = "aarch64", target_arch = "arm64ec"),
59271 link_name = "llvm.aarch64.neon.st2lane.v8i16.p0"
59272 )]
59273 fn _vst2q_lane_s16(a: int16x8_t, b: int16x8_t, n: i64, ptr: *mut i8);
59274 }
59275 _vst2q_lane_s16(b.0, b.1, LANE as i64, a as _)
59276}
59277#[doc = "Store multiple 2-element structures from two registers"]
59278#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s32)"]
59279#[doc = "## Safety"]
59280#[doc = " * Neon instrinsic unsafe"]
59281#[inline]
59282#[target_feature(enable = "neon")]
59283#[cfg(not(target_arch = "arm"))]
59284#[rustc_legacy_const_generics(2)]
59285#[cfg_attr(test, assert_instr(st2, LANE = 0))]
59286#[stable(feature = "neon_intrinsics", since = "1.59.0")]
59287pub unsafe fn vst2_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x2_t) {
59288 static_assert_uimm_bits!(LANE, 1);
59289 unsafe extern "unadjusted" {
59290 #[cfg_attr(
59291 any(target_arch = "aarch64", target_arch = "arm64ec"),
59292 link_name = "llvm.aarch64.neon.st2lane.v2i32.p0"
59293 )]
59294 fn _vst2_lane_s32(a: int32x2_t, b: int32x2_t, n: i64, ptr: *mut i8);
59295 }
59296 _vst2_lane_s32(b.0, b.1, LANE as i64, a as _)
59297}
59298#[doc = "Store multiple 2-element structures from two registers"]
59299#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_s32)"]
59300#[doc = "## Safety"]
59301#[doc = " * Neon instrinsic unsafe"]
59302#[inline]
59303#[target_feature(enable = "neon")]
59304#[cfg(not(target_arch = "arm"))]
59305#[rustc_legacy_const_generics(2)]
59306#[cfg_attr(test, assert_instr(st2, LANE = 0))]
59307#[stable(feature = "neon_intrinsics", since = "1.59.0")]
59308pub unsafe fn vst2q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x2_t) {
59309 static_assert_uimm_bits!(LANE, 2);
59310 unsafe extern "unadjusted" {
59311 #[cfg_attr(
59312 any(target_arch = "aarch64", target_arch = "arm64ec"),
59313 link_name = "llvm.aarch64.neon.st2lane.v4i32.p0"
59314 )]
59315 fn _vst2q_lane_s32(a: int32x4_t, b: int32x4_t, n: i64, ptr: *mut i8);
59316 }
59317 _vst2q_lane_s32(b.0, b.1, LANE as i64, a as _)
59318}
59319#[doc = "Store multiple 2-element structures from two registers"]
59320#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_f32)"]
59321#[doc = "## Safety"]
59322#[doc = " * Neon instrinsic unsafe"]
59323#[inline]
59324#[cfg(target_arch = "arm")]
59325#[target_feature(enable = "neon,v7")]
59326#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
59327#[rustc_legacy_const_generics(2)]
59328#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59329pub unsafe fn vst2_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x2_t) {
59330 static_assert_uimm_bits!(LANE, 1);
59331 unsafe extern "unadjusted" {
59332 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v2f32.p0")]
59333 fn _vst2_lane_f32(ptr: *mut i8, a: float32x2_t, b: float32x2_t, n: i32, size: i32);
59334 }
59335 _vst2_lane_f32(a as _, b.0, b.1, LANE, 4)
59336}
59337#[doc = "Store multiple 2-element structures from two registers"]
59338#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_f32)"]
59339#[doc = "## Safety"]
59340#[doc = " * Neon instrinsic unsafe"]
59341#[inline]
59342#[cfg(target_arch = "arm")]
59343#[target_feature(enable = "neon,v7")]
59344#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
59345#[rustc_legacy_const_generics(2)]
59346#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59347pub unsafe fn vst2q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x2_t) {
59348 static_assert_uimm_bits!(LANE, 2);
59349 unsafe extern "unadjusted" {
59350 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v4f32.p0")]
59351 fn _vst2q_lane_f32(ptr: *mut i8, a: float32x4_t, b: float32x4_t, n: i32, size: i32);
59352 }
59353 _vst2q_lane_f32(a as _, b.0, b.1, LANE, 4)
59354}
59355#[doc = "Store multiple 2-element structures from two registers"]
59356#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s8)"]
59357#[doc = "## Safety"]
59358#[doc = " * Neon instrinsic unsafe"]
59359#[inline]
59360#[cfg(target_arch = "arm")]
59361#[target_feature(enable = "neon,v7")]
59362#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
59363#[rustc_legacy_const_generics(2)]
59364#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59365pub unsafe fn vst2_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x2_t) {
59366 static_assert_uimm_bits!(LANE, 3);
59367 unsafe extern "unadjusted" {
59368 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v8i8.p0")]
59369 fn _vst2_lane_s8(ptr: *mut i8, a: int8x8_t, b: int8x8_t, n: i32, size: i32);
59370 }
59371 _vst2_lane_s8(a as _, b.0, b.1, LANE, 1)
59372}
59373#[doc = "Store multiple 2-element structures from two registers"]
59374#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s16)"]
59375#[doc = "## Safety"]
59376#[doc = " * Neon instrinsic unsafe"]
59377#[inline]
59378#[cfg(target_arch = "arm")]
59379#[target_feature(enable = "neon,v7")]
59380#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
59381#[rustc_legacy_const_generics(2)]
59382#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59383pub unsafe fn vst2_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x2_t) {
59384 static_assert_uimm_bits!(LANE, 2);
59385 unsafe extern "unadjusted" {
59386 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v4i16.p0")]
59387 fn _vst2_lane_s16(ptr: *mut i8, a: int16x4_t, b: int16x4_t, n: i32, size: i32);
59388 }
59389 _vst2_lane_s16(a as _, b.0, b.1, LANE, 2)
59390}
59391#[doc = "Store multiple 2-element structures from two registers"]
59392#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_s16)"]
59393#[doc = "## Safety"]
59394#[doc = " * Neon instrinsic unsafe"]
59395#[inline]
59396#[cfg(target_arch = "arm")]
59397#[target_feature(enable = "neon,v7")]
59398#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
59399#[rustc_legacy_const_generics(2)]
59400#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59401pub unsafe fn vst2q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x2_t) {
59402 static_assert_uimm_bits!(LANE, 3);
59403 unsafe extern "unadjusted" {
59404 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v8i16.p0")]
59405 fn _vst2q_lane_s16(ptr: *mut i8, a: int16x8_t, b: int16x8_t, n: i32, size: i32);
59406 }
59407 _vst2q_lane_s16(a as _, b.0, b.1, LANE, 2)
59408}
59409#[doc = "Store multiple 2-element structures from two registers"]
59410#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s32)"]
59411#[doc = "## Safety"]
59412#[doc = " * Neon instrinsic unsafe"]
59413#[inline]
59414#[cfg(target_arch = "arm")]
59415#[target_feature(enable = "neon,v7")]
59416#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
59417#[rustc_legacy_const_generics(2)]
59418#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59419pub unsafe fn vst2_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x2_t) {
59420 static_assert_uimm_bits!(LANE, 1);
59421 unsafe extern "unadjusted" {
59422 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v2i32.p0")]
59423 fn _vst2_lane_s32(ptr: *mut i8, a: int32x2_t, b: int32x2_t, n: i32, size: i32);
59424 }
59425 _vst2_lane_s32(a as _, b.0, b.1, LANE, 4)
59426}
59427#[doc = "Store multiple 2-element structures from two registers"]
59428#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_s32)"]
59429#[doc = "## Safety"]
59430#[doc = " * Neon instrinsic unsafe"]
59431#[inline]
59432#[cfg(target_arch = "arm")]
59433#[target_feature(enable = "neon,v7")]
59434#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
59435#[rustc_legacy_const_generics(2)]
59436#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59437pub unsafe fn vst2q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x2_t) {
59438 static_assert_uimm_bits!(LANE, 2);
59439 unsafe extern "unadjusted" {
59440 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v4i32.p0")]
59441 fn _vst2q_lane_s32(ptr: *mut i8, a: int32x4_t, b: int32x4_t, n: i32, size: i32);
59442 }
59443 _vst2q_lane_s32(a as _, b.0, b.1, LANE, 4)
59444}
59445#[doc = "Store multiple 2-element structures from two registers"]
59446#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_u8)"]
59447#[doc = "## Safety"]
59448#[doc = " * Neon instrinsic unsafe"]
59449#[inline]
59450#[target_feature(enable = "neon")]
59451#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59452#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
59453#[cfg_attr(
59454 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59455 assert_instr(st2, LANE = 0)
59456)]
59457#[rustc_legacy_const_generics(2)]
59458#[cfg_attr(
59459 not(target_arch = "arm"),
59460 stable(feature = "neon_intrinsics", since = "1.59.0")
59461)]
59462#[cfg_attr(
59463 target_arch = "arm",
59464 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59465)]
59466pub unsafe fn vst2_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x8x2_t) {
59467 static_assert_uimm_bits!(LANE, 3);
59468 vst2_lane_s8::<LANE>(transmute(a), transmute(b))
59469}
59470#[doc = "Store multiple 2-element structures from two registers"]
59471#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_u16)"]
59472#[doc = "## Safety"]
59473#[doc = " * Neon instrinsic unsafe"]
59474#[inline]
59475#[target_feature(enable = "neon")]
59476#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59477#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
59478#[cfg_attr(
59479 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59480 assert_instr(st2, LANE = 0)
59481)]
59482#[rustc_legacy_const_generics(2)]
59483#[cfg_attr(
59484 not(target_arch = "arm"),
59485 stable(feature = "neon_intrinsics", since = "1.59.0")
59486)]
59487#[cfg_attr(
59488 target_arch = "arm",
59489 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59490)]
59491pub unsafe fn vst2_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x4x2_t) {
59492 static_assert_uimm_bits!(LANE, 2);
59493 vst2_lane_s16::<LANE>(transmute(a), transmute(b))
59494}
59495#[doc = "Store multiple 2-element structures from two registers"]
59496#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_u16)"]
59497#[doc = "## Safety"]
59498#[doc = " * Neon instrinsic unsafe"]
59499#[inline]
59500#[target_feature(enable = "neon")]
59501#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59502#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
59503#[cfg_attr(
59504 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59505 assert_instr(st2, LANE = 0)
59506)]
59507#[rustc_legacy_const_generics(2)]
59508#[cfg_attr(
59509 not(target_arch = "arm"),
59510 stable(feature = "neon_intrinsics", since = "1.59.0")
59511)]
59512#[cfg_attr(
59513 target_arch = "arm",
59514 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59515)]
59516pub unsafe fn vst2q_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x8x2_t) {
59517 static_assert_uimm_bits!(LANE, 3);
59518 vst2q_lane_s16::<LANE>(transmute(a), transmute(b))
59519}
59520#[doc = "Store multiple 2-element structures from two registers"]
59521#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_u32)"]
59522#[doc = "## Safety"]
59523#[doc = " * Neon instrinsic unsafe"]
59524#[inline]
59525#[target_feature(enable = "neon")]
59526#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59527#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
59528#[cfg_attr(
59529 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59530 assert_instr(st2, LANE = 0)
59531)]
59532#[rustc_legacy_const_generics(2)]
59533#[cfg_attr(
59534 not(target_arch = "arm"),
59535 stable(feature = "neon_intrinsics", since = "1.59.0")
59536)]
59537#[cfg_attr(
59538 target_arch = "arm",
59539 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59540)]
59541pub unsafe fn vst2_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x2x2_t) {
59542 static_assert_uimm_bits!(LANE, 1);
59543 vst2_lane_s32::<LANE>(transmute(a), transmute(b))
59544}
59545#[doc = "Store multiple 2-element structures from two registers"]
59546#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_u32)"]
59547#[doc = "## Safety"]
59548#[doc = " * Neon instrinsic unsafe"]
59549#[inline]
59550#[target_feature(enable = "neon")]
59551#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59552#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
59553#[cfg_attr(
59554 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59555 assert_instr(st2, LANE = 0)
59556)]
59557#[rustc_legacy_const_generics(2)]
59558#[cfg_attr(
59559 not(target_arch = "arm"),
59560 stable(feature = "neon_intrinsics", since = "1.59.0")
59561)]
59562#[cfg_attr(
59563 target_arch = "arm",
59564 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59565)]
59566pub unsafe fn vst2q_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x4x2_t) {
59567 static_assert_uimm_bits!(LANE, 2);
59568 vst2q_lane_s32::<LANE>(transmute(a), transmute(b))
59569}
59570#[doc = "Store multiple 2-element structures from two registers"]
59571#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_p8)"]
59572#[doc = "## Safety"]
59573#[doc = " * Neon instrinsic unsafe"]
59574#[inline]
59575#[target_feature(enable = "neon")]
59576#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59577#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
59578#[cfg_attr(
59579 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59580 assert_instr(st2, LANE = 0)
59581)]
59582#[rustc_legacy_const_generics(2)]
59583#[cfg_attr(
59584 not(target_arch = "arm"),
59585 stable(feature = "neon_intrinsics", since = "1.59.0")
59586)]
59587#[cfg_attr(
59588 target_arch = "arm",
59589 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59590)]
59591pub unsafe fn vst2_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x8x2_t) {
59592 static_assert_uimm_bits!(LANE, 3);
59593 vst2_lane_s8::<LANE>(transmute(a), transmute(b))
59594}
59595#[doc = "Store multiple 2-element structures from two registers"]
59596#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_p16)"]
59597#[doc = "## Safety"]
59598#[doc = " * Neon instrinsic unsafe"]
59599#[inline]
59600#[target_feature(enable = "neon")]
59601#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59602#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
59603#[cfg_attr(
59604 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59605 assert_instr(st2, LANE = 0)
59606)]
59607#[rustc_legacy_const_generics(2)]
59608#[cfg_attr(
59609 not(target_arch = "arm"),
59610 stable(feature = "neon_intrinsics", since = "1.59.0")
59611)]
59612#[cfg_attr(
59613 target_arch = "arm",
59614 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59615)]
59616pub unsafe fn vst2_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x4x2_t) {
59617 static_assert_uimm_bits!(LANE, 2);
59618 vst2_lane_s16::<LANE>(transmute(a), transmute(b))
59619}
59620#[doc = "Store multiple 2-element structures from two registers"]
59621#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_p16)"]
59622#[doc = "## Safety"]
59623#[doc = " * Neon instrinsic unsafe"]
59624#[inline]
59625#[target_feature(enable = "neon")]
59626#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59627#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
59628#[cfg_attr(
59629 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59630 assert_instr(st2, LANE = 0)
59631)]
59632#[rustc_legacy_const_generics(2)]
59633#[cfg_attr(
59634 not(target_arch = "arm"),
59635 stable(feature = "neon_intrinsics", since = "1.59.0")
59636)]
59637#[cfg_attr(
59638 target_arch = "arm",
59639 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59640)]
59641pub unsafe fn vst2q_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x8x2_t) {
59642 static_assert_uimm_bits!(LANE, 3);
59643 vst2q_lane_s16::<LANE>(transmute(a), transmute(b))
59644}
59645#[doc = "Store multiple 2-element structures from two registers"]
59646#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_p64)"]
59647#[doc = "## Safety"]
59648#[doc = " * Neon instrinsic unsafe"]
59649#[inline]
59650#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59651#[target_feature(enable = "neon,aes")]
59652#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
59653#[cfg_attr(
59654 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59655 assert_instr(nop)
59656)]
59657#[cfg_attr(
59658 not(target_arch = "arm"),
59659 stable(feature = "neon_intrinsics", since = "1.59.0")
59660)]
59661#[cfg_attr(
59662 target_arch = "arm",
59663 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59664)]
59665pub unsafe fn vst2_p64(a: *mut p64, b: poly64x1x2_t) {
59666 vst2_s64(transmute(a), transmute(b))
59667}
59668#[doc = "Store multiple 2-element structures from two registers"]
59669#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s64)"]
59670#[doc = "## Safety"]
59671#[doc = " * Neon instrinsic unsafe"]
59672#[inline]
59673#[cfg(target_arch = "arm")]
59674#[target_feature(enable = "neon,v7")]
59675#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59676#[cfg_attr(test, assert_instr(nop))]
59677pub unsafe fn vst2_s64(a: *mut i64, b: int64x1x2_t) {
59678 unsafe extern "unadjusted" {
59679 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v1i64.p0")]
59680 fn _vst2_s64(ptr: *mut i8, a: int64x1_t, b: int64x1_t, size: i32);
59681 }
59682 _vst2_s64(a as _, b.0, b.1, 8)
59683}
59684#[doc = "Store multiple 2-element structures from two registers"]
59685#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s64)"]
59686#[doc = "## Safety"]
59687#[doc = " * Neon instrinsic unsafe"]
59688#[inline]
59689#[target_feature(enable = "neon")]
59690#[cfg(not(target_arch = "arm"))]
59691#[stable(feature = "neon_intrinsics", since = "1.59.0")]
59692#[cfg_attr(test, assert_instr(nop))]
59693pub unsafe fn vst2_s64(a: *mut i64, b: int64x1x2_t) {
59694 unsafe extern "unadjusted" {
59695 #[cfg_attr(
59696 any(target_arch = "aarch64", target_arch = "arm64ec"),
59697 link_name = "llvm.aarch64.neon.st2.v1i64.p0"
59698 )]
59699 fn _vst2_s64(a: int64x1_t, b: int64x1_t, ptr: *mut i8);
59700 }
59701 _vst2_s64(b.0, b.1, a as _)
59702}
59703#[doc = "Store multiple 2-element structures from two registers"]
59704#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_u64)"]
59705#[doc = "## Safety"]
59706#[doc = " * Neon instrinsic unsafe"]
59707#[inline]
59708#[target_feature(enable = "neon")]
59709#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59710#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
59711#[cfg_attr(
59712 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59713 assert_instr(nop)
59714)]
59715#[cfg_attr(
59716 not(target_arch = "arm"),
59717 stable(feature = "neon_intrinsics", since = "1.59.0")
59718)]
59719#[cfg_attr(
59720 target_arch = "arm",
59721 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59722)]
59723pub unsafe fn vst2_u64(a: *mut u64, b: uint64x1x2_t) {
59724 vst2_s64(transmute(a), transmute(b))
59725}
59726#[doc = "Store multiple 2-element structures from two registers"]
59727#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_u8)"]
59728#[doc = "## Safety"]
59729#[doc = " * Neon instrinsic unsafe"]
59730#[inline]
59731#[target_feature(enable = "neon")]
59732#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59733#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
59734#[cfg_attr(
59735 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59736 assert_instr(st2)
59737)]
59738#[cfg_attr(
59739 not(target_arch = "arm"),
59740 stable(feature = "neon_intrinsics", since = "1.59.0")
59741)]
59742#[cfg_attr(
59743 target_arch = "arm",
59744 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59745)]
59746pub unsafe fn vst2_u8(a: *mut u8, b: uint8x8x2_t) {
59747 vst2_s8(transmute(a), transmute(b))
59748}
59749#[doc = "Store multiple 2-element structures from two registers"]
59750#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_u8)"]
59751#[doc = "## Safety"]
59752#[doc = " * Neon instrinsic unsafe"]
59753#[inline]
59754#[target_feature(enable = "neon")]
59755#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59756#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
59757#[cfg_attr(
59758 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59759 assert_instr(st2)
59760)]
59761#[cfg_attr(
59762 not(target_arch = "arm"),
59763 stable(feature = "neon_intrinsics", since = "1.59.0")
59764)]
59765#[cfg_attr(
59766 target_arch = "arm",
59767 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59768)]
59769pub unsafe fn vst2q_u8(a: *mut u8, b: uint8x16x2_t) {
59770 vst2q_s8(transmute(a), transmute(b))
59771}
59772#[doc = "Store multiple 2-element structures from two registers"]
59773#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_u16)"]
59774#[doc = "## Safety"]
59775#[doc = " * Neon instrinsic unsafe"]
59776#[inline]
59777#[target_feature(enable = "neon")]
59778#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59779#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
59780#[cfg_attr(
59781 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59782 assert_instr(st2)
59783)]
59784#[cfg_attr(
59785 not(target_arch = "arm"),
59786 stable(feature = "neon_intrinsics", since = "1.59.0")
59787)]
59788#[cfg_attr(
59789 target_arch = "arm",
59790 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59791)]
59792pub unsafe fn vst2_u16(a: *mut u16, b: uint16x4x2_t) {
59793 vst2_s16(transmute(a), transmute(b))
59794}
59795#[doc = "Store multiple 2-element structures from two registers"]
59796#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_u16)"]
59797#[doc = "## Safety"]
59798#[doc = " * Neon instrinsic unsafe"]
59799#[inline]
59800#[target_feature(enable = "neon")]
59801#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59802#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
59803#[cfg_attr(
59804 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59805 assert_instr(st2)
59806)]
59807#[cfg_attr(
59808 not(target_arch = "arm"),
59809 stable(feature = "neon_intrinsics", since = "1.59.0")
59810)]
59811#[cfg_attr(
59812 target_arch = "arm",
59813 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59814)]
59815pub unsafe fn vst2q_u16(a: *mut u16, b: uint16x8x2_t) {
59816 vst2q_s16(transmute(a), transmute(b))
59817}
59818#[doc = "Store multiple 2-element structures from two registers"]
59819#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_u32)"]
59820#[doc = "## Safety"]
59821#[doc = " * Neon instrinsic unsafe"]
59822#[inline]
59823#[target_feature(enable = "neon")]
59824#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59825#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
59826#[cfg_attr(
59827 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59828 assert_instr(st2)
59829)]
59830#[cfg_attr(
59831 not(target_arch = "arm"),
59832 stable(feature = "neon_intrinsics", since = "1.59.0")
59833)]
59834#[cfg_attr(
59835 target_arch = "arm",
59836 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59837)]
59838pub unsafe fn vst2_u32(a: *mut u32, b: uint32x2x2_t) {
59839 vst2_s32(transmute(a), transmute(b))
59840}
59841#[doc = "Store multiple 2-element structures from two registers"]
59842#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_u32)"]
59843#[doc = "## Safety"]
59844#[doc = " * Neon instrinsic unsafe"]
59845#[inline]
59846#[target_feature(enable = "neon")]
59847#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59848#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
59849#[cfg_attr(
59850 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59851 assert_instr(st2)
59852)]
59853#[cfg_attr(
59854 not(target_arch = "arm"),
59855 stable(feature = "neon_intrinsics", since = "1.59.0")
59856)]
59857#[cfg_attr(
59858 target_arch = "arm",
59859 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59860)]
59861pub unsafe fn vst2q_u32(a: *mut u32, b: uint32x4x2_t) {
59862 vst2q_s32(transmute(a), transmute(b))
59863}
59864#[doc = "Store multiple 2-element structures from two registers"]
59865#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_p8)"]
59866#[doc = "## Safety"]
59867#[doc = " * Neon instrinsic unsafe"]
59868#[inline]
59869#[target_feature(enable = "neon")]
59870#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59871#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
59872#[cfg_attr(
59873 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59874 assert_instr(st2)
59875)]
59876#[cfg_attr(
59877 not(target_arch = "arm"),
59878 stable(feature = "neon_intrinsics", since = "1.59.0")
59879)]
59880#[cfg_attr(
59881 target_arch = "arm",
59882 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59883)]
59884pub unsafe fn vst2_p8(a: *mut p8, b: poly8x8x2_t) {
59885 vst2_s8(transmute(a), transmute(b))
59886}
59887#[doc = "Store multiple 2-element structures from two registers"]
59888#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_p8)"]
59889#[doc = "## Safety"]
59890#[doc = " * Neon instrinsic unsafe"]
59891#[inline]
59892#[target_feature(enable = "neon")]
59893#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59894#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
59895#[cfg_attr(
59896 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59897 assert_instr(st2)
59898)]
59899#[cfg_attr(
59900 not(target_arch = "arm"),
59901 stable(feature = "neon_intrinsics", since = "1.59.0")
59902)]
59903#[cfg_attr(
59904 target_arch = "arm",
59905 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59906)]
59907pub unsafe fn vst2q_p8(a: *mut p8, b: poly8x16x2_t) {
59908 vst2q_s8(transmute(a), transmute(b))
59909}
59910#[doc = "Store multiple 2-element structures from two registers"]
59911#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_p16)"]
59912#[doc = "## Safety"]
59913#[doc = " * Neon instrinsic unsafe"]
59914#[inline]
59915#[target_feature(enable = "neon")]
59916#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59917#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
59918#[cfg_attr(
59919 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59920 assert_instr(st2)
59921)]
59922#[cfg_attr(
59923 not(target_arch = "arm"),
59924 stable(feature = "neon_intrinsics", since = "1.59.0")
59925)]
59926#[cfg_attr(
59927 target_arch = "arm",
59928 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59929)]
59930pub unsafe fn vst2_p16(a: *mut p16, b: poly16x4x2_t) {
59931 vst2_s16(transmute(a), transmute(b))
59932}
59933#[doc = "Store multiple 2-element structures from two registers"]
59934#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_p16)"]
59935#[doc = "## Safety"]
59936#[doc = " * Neon instrinsic unsafe"]
59937#[inline]
59938#[target_feature(enable = "neon")]
59939#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59940#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
59941#[cfg_attr(
59942 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59943 assert_instr(st2)
59944)]
59945#[cfg_attr(
59946 not(target_arch = "arm"),
59947 stable(feature = "neon_intrinsics", since = "1.59.0")
59948)]
59949#[cfg_attr(
59950 target_arch = "arm",
59951 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59952)]
59953pub unsafe fn vst2q_p16(a: *mut p16, b: poly16x8x2_t) {
59954 vst2q_s16(transmute(a), transmute(b))
59955}
59956#[doc = "Store multiple 3-element structures from three registers"]
59957#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_f16)"]
59958#[doc = "## Safety"]
59959#[doc = " * Neon instrinsic unsafe"]
59960#[inline]
59961#[cfg(target_arch = "arm")]
59962#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59963#[target_feature(enable = "neon,fp16")]
59964#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
59965#[cfg(not(target_arch = "arm64ec"))]
59966#[cfg_attr(test, assert_instr(vst3))]
59967pub unsafe fn vst3_f16(a: *mut f16, b: float16x4x3_t) {
59968 unsafe extern "unadjusted" {
59969 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v4f16")]
59970 fn _vst3_f16(ptr: *mut i8, a: float16x4_t, b: float16x4_t, c: float16x4_t, size: i32);
59971 }
59972 _vst3_f16(a as _, b.0, b.1, b.2, 2)
59973}
59974#[doc = "Store multiple 3-element structures from three registers"]
59975#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_f16)"]
59976#[doc = "## Safety"]
59977#[doc = " * Neon instrinsic unsafe"]
59978#[inline]
59979#[cfg(target_arch = "arm")]
59980#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59981#[target_feature(enable = "neon,fp16")]
59982#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
59983#[cfg(not(target_arch = "arm64ec"))]
59984#[cfg_attr(test, assert_instr(vst3))]
59985pub unsafe fn vst3q_f16(a: *mut f16, b: float16x8x3_t) {
59986 unsafe extern "unadjusted" {
59987 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v8f16")]
59988 fn _vst3q_f16(ptr: *mut i8, a: float16x8_t, b: float16x8_t, c: float16x8_t, size: i32);
59989 }
59990 _vst3q_f16(a as _, b.0, b.1, b.2, 2)
59991}
59992#[doc = "Store multiple 3-element structures from three registers"]
59993#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_f16)"]
59994#[doc = "## Safety"]
59995#[doc = " * Neon instrinsic unsafe"]
59996#[inline]
59997#[cfg(not(target_arch = "arm"))]
59998#[target_feature(enable = "neon,fp16")]
59999#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
60000#[cfg(not(target_arch = "arm64ec"))]
60001#[cfg_attr(test, assert_instr(st3))]
60002pub unsafe fn vst3_f16(a: *mut f16, b: float16x4x3_t) {
60003 unsafe extern "unadjusted" {
60004 #[cfg_attr(
60005 any(target_arch = "aarch64", target_arch = "arm64ec"),
60006 link_name = "llvm.aarch64.neon.st3.v4f16.p0"
60007 )]
60008 fn _vst3_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t, ptr: *mut i8);
60009 }
60010 _vst3_f16(b.0, b.1, b.2, a as _)
60011}
60012#[doc = "Store multiple 3-element structures from three registers"]
60013#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_f16)"]
60014#[doc = "## Safety"]
60015#[doc = " * Neon instrinsic unsafe"]
60016#[inline]
60017#[cfg(not(target_arch = "arm"))]
60018#[target_feature(enable = "neon,fp16")]
60019#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
60020#[cfg(not(target_arch = "arm64ec"))]
60021#[cfg_attr(test, assert_instr(st3))]
60022pub unsafe fn vst3q_f16(a: *mut f16, b: float16x8x3_t) {
60023 unsafe extern "unadjusted" {
60024 #[cfg_attr(
60025 any(target_arch = "aarch64", target_arch = "arm64ec"),
60026 link_name = "llvm.aarch64.neon.st3.v8f16.p0"
60027 )]
60028 fn _vst3q_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t, ptr: *mut i8);
60029 }
60030 _vst3q_f16(b.0, b.1, b.2, a as _)
60031}
60032#[doc = "Store multiple 3-element structures from three registers"]
60033#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_f32)"]
60034#[doc = "## Safety"]
60035#[doc = " * Neon instrinsic unsafe"]
60036#[inline]
60037#[cfg(target_arch = "arm")]
60038#[target_feature(enable = "neon,v7")]
60039#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60040#[cfg_attr(test, assert_instr(vst3))]
60041pub unsafe fn vst3_f32(a: *mut f32, b: float32x2x3_t) {
60042 unsafe extern "unadjusted" {
60043 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v2f32")]
60044 fn _vst3_f32(ptr: *mut i8, a: float32x2_t, b: float32x2_t, c: float32x2_t, size: i32);
60045 }
60046 _vst3_f32(a as _, b.0, b.1, b.2, 4)
60047}
60048#[doc = "Store multiple 3-element structures from three registers"]
60049#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_f32)"]
60050#[doc = "## Safety"]
60051#[doc = " * Neon instrinsic unsafe"]
60052#[inline]
60053#[cfg(target_arch = "arm")]
60054#[target_feature(enable = "neon,v7")]
60055#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60056#[cfg_attr(test, assert_instr(vst3))]
60057pub unsafe fn vst3q_f32(a: *mut f32, b: float32x4x3_t) {
60058 unsafe extern "unadjusted" {
60059 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v4f32")]
60060 fn _vst3q_f32(ptr: *mut i8, a: float32x4_t, b: float32x4_t, c: float32x4_t, size: i32);
60061 }
60062 _vst3q_f32(a as _, b.0, b.1, b.2, 4)
60063}
60064#[doc = "Store multiple 3-element structures from three registers"]
60065#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s8)"]
60066#[doc = "## Safety"]
60067#[doc = " * Neon instrinsic unsafe"]
60068#[inline]
60069#[cfg(target_arch = "arm")]
60070#[target_feature(enable = "neon,v7")]
60071#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60072#[cfg_attr(test, assert_instr(vst3))]
60073pub unsafe fn vst3_s8(a: *mut i8, b: int8x8x3_t) {
60074 unsafe extern "unadjusted" {
60075 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v8i8")]
60076 fn _vst3_s8(ptr: *mut i8, a: int8x8_t, b: int8x8_t, c: int8x8_t, size: i32);
60077 }
60078 _vst3_s8(a as _, b.0, b.1, b.2, 1)
60079}
60080#[doc = "Store multiple 3-element structures from three registers"]
60081#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s8)"]
60082#[doc = "## Safety"]
60083#[doc = " * Neon instrinsic unsafe"]
60084#[inline]
60085#[cfg(target_arch = "arm")]
60086#[target_feature(enable = "neon,v7")]
60087#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60088#[cfg_attr(test, assert_instr(vst3))]
60089pub unsafe fn vst3q_s8(a: *mut i8, b: int8x16x3_t) {
60090 unsafe extern "unadjusted" {
60091 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v16i8")]
60092 fn _vst3q_s8(ptr: *mut i8, a: int8x16_t, b: int8x16_t, c: int8x16_t, size: i32);
60093 }
60094 _vst3q_s8(a as _, b.0, b.1, b.2, 1)
60095}
60096#[doc = "Store multiple 3-element structures from three registers"]
60097#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s16)"]
60098#[doc = "## Safety"]
60099#[doc = " * Neon instrinsic unsafe"]
60100#[inline]
60101#[cfg(target_arch = "arm")]
60102#[target_feature(enable = "neon,v7")]
60103#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60104#[cfg_attr(test, assert_instr(vst3))]
60105pub unsafe fn vst3_s16(a: *mut i16, b: int16x4x3_t) {
60106 unsafe extern "unadjusted" {
60107 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v4i16")]
60108 fn _vst3_s16(ptr: *mut i8, a: int16x4_t, b: int16x4_t, c: int16x4_t, size: i32);
60109 }
60110 _vst3_s16(a as _, b.0, b.1, b.2, 2)
60111}
60112#[doc = "Store multiple 3-element structures from three registers"]
60113#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s16)"]
60114#[doc = "## Safety"]
60115#[doc = " * Neon instrinsic unsafe"]
60116#[inline]
60117#[cfg(target_arch = "arm")]
60118#[target_feature(enable = "neon,v7")]
60119#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60120#[cfg_attr(test, assert_instr(vst3))]
60121pub unsafe fn vst3q_s16(a: *mut i16, b: int16x8x3_t) {
60122 unsafe extern "unadjusted" {
60123 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v8i16")]
60124 fn _vst3q_s16(ptr: *mut i8, a: int16x8_t, b: int16x8_t, c: int16x8_t, size: i32);
60125 }
60126 _vst3q_s16(a as _, b.0, b.1, b.2, 2)
60127}
60128#[doc = "Store multiple 3-element structures from three registers"]
60129#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s32)"]
60130#[doc = "## Safety"]
60131#[doc = " * Neon instrinsic unsafe"]
60132#[inline]
60133#[cfg(target_arch = "arm")]
60134#[target_feature(enable = "neon,v7")]
60135#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60136#[cfg_attr(test, assert_instr(vst3))]
60137pub unsafe fn vst3_s32(a: *mut i32, b: int32x2x3_t) {
60138 unsafe extern "unadjusted" {
60139 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v2i32")]
60140 fn _vst3_s32(ptr: *mut i8, a: int32x2_t, b: int32x2_t, c: int32x2_t, size: i32);
60141 }
60142 _vst3_s32(a as _, b.0, b.1, b.2, 4)
60143}
60144#[doc = "Store multiple 3-element structures from three registers"]
60145#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s32)"]
60146#[doc = "## Safety"]
60147#[doc = " * Neon instrinsic unsafe"]
60148#[inline]
60149#[cfg(target_arch = "arm")]
60150#[target_feature(enable = "neon,v7")]
60151#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60152#[cfg_attr(test, assert_instr(vst3))]
60153pub unsafe fn vst3q_s32(a: *mut i32, b: int32x4x3_t) {
60154 unsafe extern "unadjusted" {
60155 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v4i32")]
60156 fn _vst3q_s32(ptr: *mut i8, a: int32x4_t, b: int32x4_t, c: int32x4_t, size: i32);
60157 }
60158 _vst3q_s32(a as _, b.0, b.1, b.2, 4)
60159}
60160#[doc = "Store multiple 3-element structures from three registers"]
60161#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_f32)"]
60162#[doc = "## Safety"]
60163#[doc = " * Neon instrinsic unsafe"]
60164#[inline]
60165#[target_feature(enable = "neon")]
60166#[cfg(not(target_arch = "arm"))]
60167#[stable(feature = "neon_intrinsics", since = "1.59.0")]
60168#[cfg_attr(test, assert_instr(st3))]
60169pub unsafe fn vst3_f32(a: *mut f32, b: float32x2x3_t) {
60170 unsafe extern "unadjusted" {
60171 #[cfg_attr(
60172 any(target_arch = "aarch64", target_arch = "arm64ec"),
60173 link_name = "llvm.aarch64.neon.st3.v2f32.p0"
60174 )]
60175 fn _vst3_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t, ptr: *mut i8);
60176 }
60177 _vst3_f32(b.0, b.1, b.2, a as _)
60178}
60179#[doc = "Store multiple 3-element structures from three registers"]
60180#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_f32)"]
60181#[doc = "## Safety"]
60182#[doc = " * Neon instrinsic unsafe"]
60183#[inline]
60184#[target_feature(enable = "neon")]
60185#[cfg(not(target_arch = "arm"))]
60186#[stable(feature = "neon_intrinsics", since = "1.59.0")]
60187#[cfg_attr(test, assert_instr(st3))]
60188pub unsafe fn vst3q_f32(a: *mut f32, b: float32x4x3_t) {
60189 unsafe extern "unadjusted" {
60190 #[cfg_attr(
60191 any(target_arch = "aarch64", target_arch = "arm64ec"),
60192 link_name = "llvm.aarch64.neon.st3.v4f32.p0"
60193 )]
60194 fn _vst3q_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t, ptr: *mut i8);
60195 }
60196 _vst3q_f32(b.0, b.1, b.2, a as _)
60197}
60198#[doc = "Store multiple 3-element structures from three registers"]
60199#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s8)"]
60200#[doc = "## Safety"]
60201#[doc = " * Neon instrinsic unsafe"]
60202#[inline]
60203#[target_feature(enable = "neon")]
60204#[cfg(not(target_arch = "arm"))]
60205#[stable(feature = "neon_intrinsics", since = "1.59.0")]
60206#[cfg_attr(test, assert_instr(st3))]
60207pub unsafe fn vst3_s8(a: *mut i8, b: int8x8x3_t) {
60208 unsafe extern "unadjusted" {
60209 #[cfg_attr(
60210 any(target_arch = "aarch64", target_arch = "arm64ec"),
60211 link_name = "llvm.aarch64.neon.st3.v8i8.p0"
60212 )]
60213 fn _vst3_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t, ptr: *mut i8);
60214 }
60215 _vst3_s8(b.0, b.1, b.2, a as _)
60216}
60217#[doc = "Store multiple 3-element structures from three registers"]
60218#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s8)"]
60219#[doc = "## Safety"]
60220#[doc = " * Neon instrinsic unsafe"]
60221#[inline]
60222#[target_feature(enable = "neon")]
60223#[cfg(not(target_arch = "arm"))]
60224#[stable(feature = "neon_intrinsics", since = "1.59.0")]
60225#[cfg_attr(test, assert_instr(st3))]
60226pub unsafe fn vst3q_s8(a: *mut i8, b: int8x16x3_t) {
60227 unsafe extern "unadjusted" {
60228 #[cfg_attr(
60229 any(target_arch = "aarch64", target_arch = "arm64ec"),
60230 link_name = "llvm.aarch64.neon.st3.v16i8.p0"
60231 )]
60232 fn _vst3q_s8(a: int8x16_t, b: int8x16_t, c: int8x16_t, ptr: *mut i8);
60233 }
60234 _vst3q_s8(b.0, b.1, b.2, a as _)
60235}
60236#[doc = "Store multiple 3-element structures from three registers"]
60237#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s16)"]
60238#[doc = "## Safety"]
60239#[doc = " * Neon instrinsic unsafe"]
60240#[inline]
60241#[target_feature(enable = "neon")]
60242#[cfg(not(target_arch = "arm"))]
60243#[stable(feature = "neon_intrinsics", since = "1.59.0")]
60244#[cfg_attr(test, assert_instr(st3))]
60245pub unsafe fn vst3_s16(a: *mut i16, b: int16x4x3_t) {
60246 unsafe extern "unadjusted" {
60247 #[cfg_attr(
60248 any(target_arch = "aarch64", target_arch = "arm64ec"),
60249 link_name = "llvm.aarch64.neon.st3.v4i16.p0"
60250 )]
60251 fn _vst3_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t, ptr: *mut i8);
60252 }
60253 _vst3_s16(b.0, b.1, b.2, a as _)
60254}
60255#[doc = "Store multiple 3-element structures from three registers"]
60256#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s16)"]
60257#[doc = "## Safety"]
60258#[doc = " * Neon instrinsic unsafe"]
60259#[inline]
60260#[target_feature(enable = "neon")]
60261#[cfg(not(target_arch = "arm"))]
60262#[stable(feature = "neon_intrinsics", since = "1.59.0")]
60263#[cfg_attr(test, assert_instr(st3))]
60264pub unsafe fn vst3q_s16(a: *mut i16, b: int16x8x3_t) {
60265 unsafe extern "unadjusted" {
60266 #[cfg_attr(
60267 any(target_arch = "aarch64", target_arch = "arm64ec"),
60268 link_name = "llvm.aarch64.neon.st3.v8i16.p0"
60269 )]
60270 fn _vst3q_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t, ptr: *mut i8);
60271 }
60272 _vst3q_s16(b.0, b.1, b.2, a as _)
60273}
60274#[doc = "Store multiple 3-element structures from three registers"]
60275#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s32)"]
60276#[doc = "## Safety"]
60277#[doc = " * Neon instrinsic unsafe"]
60278#[inline]
60279#[target_feature(enable = "neon")]
60280#[cfg(not(target_arch = "arm"))]
60281#[stable(feature = "neon_intrinsics", since = "1.59.0")]
60282#[cfg_attr(test, assert_instr(st3))]
60283pub unsafe fn vst3_s32(a: *mut i32, b: int32x2x3_t) {
60284 unsafe extern "unadjusted" {
60285 #[cfg_attr(
60286 any(target_arch = "aarch64", target_arch = "arm64ec"),
60287 link_name = "llvm.aarch64.neon.st3.v2i32.p0"
60288 )]
60289 fn _vst3_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t, ptr: *mut i8);
60290 }
60291 _vst3_s32(b.0, b.1, b.2, a as _)
60292}
60293#[doc = "Store multiple 3-element structures from three registers"]
60294#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s32)"]
60295#[doc = "## Safety"]
60296#[doc = " * Neon instrinsic unsafe"]
60297#[inline]
60298#[target_feature(enable = "neon")]
60299#[cfg(not(target_arch = "arm"))]
60300#[stable(feature = "neon_intrinsics", since = "1.59.0")]
60301#[cfg_attr(test, assert_instr(st3))]
60302pub unsafe fn vst3q_s32(a: *mut i32, b: int32x4x3_t) {
60303 unsafe extern "unadjusted" {
60304 #[cfg_attr(
60305 any(target_arch = "aarch64", target_arch = "arm64ec"),
60306 link_name = "llvm.aarch64.neon.st3.v4i32.p0"
60307 )]
60308 fn _vst3q_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t, ptr: *mut i8);
60309 }
60310 _vst3q_s32(b.0, b.1, b.2, a as _)
60311}
60312#[doc = "Store multiple 3-element structures from three registers"]
60313#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_f16)"]
60314#[doc = "## Safety"]
60315#[doc = " * Neon instrinsic unsafe"]
60316#[inline]
60317#[cfg(target_arch = "arm")]
60318#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60319#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
60320#[rustc_legacy_const_generics(2)]
60321#[target_feature(enable = "neon,fp16")]
60322#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
60323#[cfg(not(target_arch = "arm64ec"))]
60324pub unsafe fn vst3_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x3_t) {
60325 static_assert_uimm_bits!(LANE, 2);
60326 unsafe extern "unadjusted" {
60327 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v4f16")]
60328 fn _vst3_lane_f16(
60329 ptr: *mut i8,
60330 a: float16x4_t,
60331 b: float16x4_t,
60332 c: float16x4_t,
60333 n: i32,
60334 size: i32,
60335 );
60336 }
60337 _vst3_lane_f16(a as _, b.0, b.1, b.2, LANE, 4)
60338}
60339#[doc = "Store multiple 3-element structures from three registers"]
60340#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_f16)"]
60341#[doc = "## Safety"]
60342#[doc = " * Neon instrinsic unsafe"]
60343#[inline]
60344#[cfg(target_arch = "arm")]
60345#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60346#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
60347#[rustc_legacy_const_generics(2)]
60348#[target_feature(enable = "neon,fp16")]
60349#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
60350#[cfg(not(target_arch = "arm64ec"))]
60351pub unsafe fn vst3q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x3_t) {
60352 static_assert_uimm_bits!(LANE, 3);
60353 unsafe extern "unadjusted" {
60354 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v8f16")]
60355 fn _vst3q_lane_f16(
60356 ptr: *mut i8,
60357 a: float16x8_t,
60358 b: float16x8_t,
60359 c: float16x8_t,
60360 n: i32,
60361 size: i32,
60362 );
60363 }
60364 _vst3q_lane_f16(a as _, b.0, b.1, b.2, LANE, 4)
60365}
60366#[doc = "Store multiple 3-element structures from three registers"]
60367#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_f16)"]
60368#[doc = "## Safety"]
60369#[doc = " * Neon instrinsic unsafe"]
60370#[inline]
60371#[cfg(not(target_arch = "arm"))]
60372#[rustc_legacy_const_generics(2)]
60373#[cfg_attr(test, assert_instr(st3, LANE = 0))]
60374#[target_feature(enable = "neon,fp16")]
60375#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
60376#[cfg(not(target_arch = "arm64ec"))]
60377pub unsafe fn vst3_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x3_t) {
60378 static_assert_uimm_bits!(LANE, 2);
60379 unsafe extern "unadjusted" {
60380 #[cfg_attr(
60381 any(target_arch = "aarch64", target_arch = "arm64ec"),
60382 link_name = "llvm.aarch64.neon.st3lane.v4f16.p0"
60383 )]
60384 fn _vst3_lane_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t, n: i64, ptr: *mut i8);
60385 }
60386 _vst3_lane_f16(b.0, b.1, b.2, LANE as i64, a as _)
60387}
60388#[doc = "Store multiple 3-element structures from three registers"]
60389#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_f16)"]
60390#[doc = "## Safety"]
60391#[doc = " * Neon instrinsic unsafe"]
60392#[inline]
60393#[cfg(not(target_arch = "arm"))]
60394#[rustc_legacy_const_generics(2)]
60395#[cfg_attr(test, assert_instr(st3, LANE = 0))]
60396#[target_feature(enable = "neon,fp16")]
60397#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
60398#[cfg(not(target_arch = "arm64ec"))]
60399pub unsafe fn vst3q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x3_t) {
60400 static_assert_uimm_bits!(LANE, 3);
60401 unsafe extern "unadjusted" {
60402 #[cfg_attr(
60403 any(target_arch = "aarch64", target_arch = "arm64ec"),
60404 link_name = "llvm.aarch64.neon.st3lane.v8f16.p0"
60405 )]
60406 fn _vst3q_lane_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t, n: i64, ptr: *mut i8);
60407 }
60408 _vst3q_lane_f16(b.0, b.1, b.2, LANE as i64, a as _)
60409}
60410#[doc = "Store multiple 3-element structures from three registers"]
60411#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_f32)"]
60412#[doc = "## Safety"]
60413#[doc = " * Neon instrinsic unsafe"]
60414#[inline]
60415#[cfg(target_arch = "arm")]
60416#[target_feature(enable = "neon,v7")]
60417#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
60418#[rustc_legacy_const_generics(2)]
60419#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60420pub unsafe fn vst3_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x3_t) {
60421 static_assert_uimm_bits!(LANE, 1);
60422 unsafe extern "unadjusted" {
60423 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v2f32")]
60424 fn _vst3_lane_f32(
60425 ptr: *mut i8,
60426 a: float32x2_t,
60427 b: float32x2_t,
60428 c: float32x2_t,
60429 n: i32,
60430 size: i32,
60431 );
60432 }
60433 _vst3_lane_f32(a as _, b.0, b.1, b.2, LANE, 4)
60434}
60435#[doc = "Store multiple 3-element structures from three registers"]
60436#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_f32)"]
60437#[doc = "## Safety"]
60438#[doc = " * Neon instrinsic unsafe"]
60439#[inline]
60440#[cfg(target_arch = "arm")]
60441#[target_feature(enable = "neon,v7")]
60442#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
60443#[rustc_legacy_const_generics(2)]
60444#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60445pub unsafe fn vst3q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x3_t) {
60446 static_assert_uimm_bits!(LANE, 2);
60447 unsafe extern "unadjusted" {
60448 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v4f32")]
60449 fn _vst3q_lane_f32(
60450 ptr: *mut i8,
60451 a: float32x4_t,
60452 b: float32x4_t,
60453 c: float32x4_t,
60454 n: i32,
60455 size: i32,
60456 );
60457 }
60458 _vst3q_lane_f32(a as _, b.0, b.1, b.2, LANE, 4)
60459}
60460#[doc = "Store multiple 3-element structures from three registers"]
60461#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s8)"]
60462#[doc = "## Safety"]
60463#[doc = " * Neon instrinsic unsafe"]
60464#[inline]
60465#[cfg(target_arch = "arm")]
60466#[target_feature(enable = "neon,v7")]
60467#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
60468#[rustc_legacy_const_generics(2)]
60469#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60470pub unsafe fn vst3_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x3_t) {
60471 static_assert_uimm_bits!(LANE, 3);
60472 unsafe extern "unadjusted" {
60473 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v8i8")]
60474 fn _vst3_lane_s8(ptr: *mut i8, a: int8x8_t, b: int8x8_t, c: int8x8_t, n: i32, size: i32);
60475 }
60476 _vst3_lane_s8(a as _, b.0, b.1, b.2, LANE, 1)
60477}
60478#[doc = "Store multiple 3-element structures from three registers"]
60479#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s16)"]
60480#[doc = "## Safety"]
60481#[doc = " * Neon instrinsic unsafe"]
60482#[inline]
60483#[cfg(target_arch = "arm")]
60484#[target_feature(enable = "neon,v7")]
60485#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
60486#[rustc_legacy_const_generics(2)]
60487#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60488pub unsafe fn vst3_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x3_t) {
60489 static_assert_uimm_bits!(LANE, 2);
60490 unsafe extern "unadjusted" {
60491 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v4i16")]
60492 fn _vst3_lane_s16(
60493 ptr: *mut i8,
60494 a: int16x4_t,
60495 b: int16x4_t,
60496 c: int16x4_t,
60497 n: i32,
60498 size: i32,
60499 );
60500 }
60501 _vst3_lane_s16(a as _, b.0, b.1, b.2, LANE, 2)
60502}
60503#[doc = "Store multiple 3-element structures from three registers"]
60504#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_s16)"]
60505#[doc = "## Safety"]
60506#[doc = " * Neon instrinsic unsafe"]
60507#[inline]
60508#[cfg(target_arch = "arm")]
60509#[target_feature(enable = "neon,v7")]
60510#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
60511#[rustc_legacy_const_generics(2)]
60512#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60513pub unsafe fn vst3q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x3_t) {
60514 static_assert_uimm_bits!(LANE, 3);
60515 unsafe extern "unadjusted" {
60516 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v8i16")]
60517 fn _vst3q_lane_s16(
60518 ptr: *mut i8,
60519 a: int16x8_t,
60520 b: int16x8_t,
60521 c: int16x8_t,
60522 n: i32,
60523 size: i32,
60524 );
60525 }
60526 _vst3q_lane_s16(a as _, b.0, b.1, b.2, LANE, 2)
60527}
60528#[doc = "Store multiple 3-element structures from three registers"]
60529#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s32)"]
60530#[doc = "## Safety"]
60531#[doc = " * Neon instrinsic unsafe"]
60532#[inline]
60533#[cfg(target_arch = "arm")]
60534#[target_feature(enable = "neon,v7")]
60535#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
60536#[rustc_legacy_const_generics(2)]
60537#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60538pub unsafe fn vst3_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x3_t) {
60539 static_assert_uimm_bits!(LANE, 1);
60540 unsafe extern "unadjusted" {
60541 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v2i32")]
60542 fn _vst3_lane_s32(
60543 ptr: *mut i8,
60544 a: int32x2_t,
60545 b: int32x2_t,
60546 c: int32x2_t,
60547 n: i32,
60548 size: i32,
60549 );
60550 }
60551 _vst3_lane_s32(a as _, b.0, b.1, b.2, LANE, 4)
60552}
60553#[doc = "Store multiple 3-element structures from three registers"]
60554#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_s32)"]
60555#[doc = "## Safety"]
60556#[doc = " * Neon instrinsic unsafe"]
60557#[inline]
60558#[cfg(target_arch = "arm")]
60559#[target_feature(enable = "neon,v7")]
60560#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
60561#[rustc_legacy_const_generics(2)]
60562#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60563pub unsafe fn vst3q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x3_t) {
60564 static_assert_uimm_bits!(LANE, 2);
60565 unsafe extern "unadjusted" {
60566 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v4i32")]
60567 fn _vst3q_lane_s32(
60568 ptr: *mut i8,
60569 a: int32x4_t,
60570 b: int32x4_t,
60571 c: int32x4_t,
60572 n: i32,
60573 size: i32,
60574 );
60575 }
60576 _vst3q_lane_s32(a as _, b.0, b.1, b.2, LANE, 4)
60577}
60578#[doc = "Store multiple 3-element structures from three registers"]
60579#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_f32)"]
60580#[doc = "## Safety"]
60581#[doc = " * Neon instrinsic unsafe"]
60582#[inline]
60583#[target_feature(enable = "neon")]
60584#[cfg(not(target_arch = "arm"))]
60585#[rustc_legacy_const_generics(2)]
60586#[cfg_attr(test, assert_instr(st3, LANE = 0))]
60587#[stable(feature = "neon_intrinsics", since = "1.59.0")]
60588pub unsafe fn vst3_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x3_t) {
60589 static_assert_uimm_bits!(LANE, 1);
60590 unsafe extern "unadjusted" {
60591 #[cfg_attr(
60592 any(target_arch = "aarch64", target_arch = "arm64ec"),
60593 link_name = "llvm.aarch64.neon.st3lane.v2f32.p0"
60594 )]
60595 fn _vst3_lane_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t, n: i64, ptr: *mut i8);
60596 }
60597 _vst3_lane_f32(b.0, b.1, b.2, LANE as i64, a as _)
60598}
60599#[doc = "Store multiple 3-element structures from three registers"]
60600#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_f32)"]
60601#[doc = "## Safety"]
60602#[doc = " * Neon instrinsic unsafe"]
60603#[inline]
60604#[target_feature(enable = "neon")]
60605#[cfg(not(target_arch = "arm"))]
60606#[rustc_legacy_const_generics(2)]
60607#[cfg_attr(test, assert_instr(st3, LANE = 0))]
60608#[stable(feature = "neon_intrinsics", since = "1.59.0")]
60609pub unsafe fn vst3q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x3_t) {
60610 static_assert_uimm_bits!(LANE, 2);
60611 unsafe extern "unadjusted" {
60612 #[cfg_attr(
60613 any(target_arch = "aarch64", target_arch = "arm64ec"),
60614 link_name = "llvm.aarch64.neon.st3lane.v4f32.p0"
60615 )]
60616 fn _vst3q_lane_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t, n: i64, ptr: *mut i8);
60617 }
60618 _vst3q_lane_f32(b.0, b.1, b.2, LANE as i64, a as _)
60619}
60620#[doc = "Store multiple 3-element structures from three registers"]
60621#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s8)"]
60622#[doc = "## Safety"]
60623#[doc = " * Neon instrinsic unsafe"]
60624#[inline]
60625#[target_feature(enable = "neon")]
60626#[cfg(not(target_arch = "arm"))]
60627#[rustc_legacy_const_generics(2)]
60628#[cfg_attr(test, assert_instr(st3, LANE = 0))]
60629#[stable(feature = "neon_intrinsics", since = "1.59.0")]
60630pub unsafe fn vst3_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x3_t) {
60631 static_assert_uimm_bits!(LANE, 3);
60632 unsafe extern "unadjusted" {
60633 #[cfg_attr(
60634 any(target_arch = "aarch64", target_arch = "arm64ec"),
60635 link_name = "llvm.aarch64.neon.st3lane.v8i8.p0"
60636 )]
60637 fn _vst3_lane_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t, n: i64, ptr: *mut i8);
60638 }
60639 _vst3_lane_s8(b.0, b.1, b.2, LANE as i64, a as _)
60640}
60641#[doc = "Store multiple 3-element structures from three registers"]
60642#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s16)"]
60643#[doc = "## Safety"]
60644#[doc = " * Neon instrinsic unsafe"]
60645#[inline]
60646#[target_feature(enable = "neon")]
60647#[cfg(not(target_arch = "arm"))]
60648#[rustc_legacy_const_generics(2)]
60649#[cfg_attr(test, assert_instr(st3, LANE = 0))]
60650#[stable(feature = "neon_intrinsics", since = "1.59.0")]
60651pub unsafe fn vst3_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x3_t) {
60652 static_assert_uimm_bits!(LANE, 2);
60653 unsafe extern "unadjusted" {
60654 #[cfg_attr(
60655 any(target_arch = "aarch64", target_arch = "arm64ec"),
60656 link_name = "llvm.aarch64.neon.st3lane.v4i16.p0"
60657 )]
60658 fn _vst3_lane_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t, n: i64, ptr: *mut i8);
60659 }
60660 _vst3_lane_s16(b.0, b.1, b.2, LANE as i64, a as _)
60661}
60662#[doc = "Store multiple 3-element structures from three registers"]
60663#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_s16)"]
60664#[doc = "## Safety"]
60665#[doc = " * Neon instrinsic unsafe"]
60666#[inline]
60667#[target_feature(enable = "neon")]
60668#[cfg(not(target_arch = "arm"))]
60669#[rustc_legacy_const_generics(2)]
60670#[cfg_attr(test, assert_instr(st3, LANE = 0))]
60671#[stable(feature = "neon_intrinsics", since = "1.59.0")]
60672pub unsafe fn vst3q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x3_t) {
60673 static_assert_uimm_bits!(LANE, 3);
60674 unsafe extern "unadjusted" {
60675 #[cfg_attr(
60676 any(target_arch = "aarch64", target_arch = "arm64ec"),
60677 link_name = "llvm.aarch64.neon.st3lane.v8i16.p0"
60678 )]
60679 fn _vst3q_lane_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t, n: i64, ptr: *mut i8);
60680 }
60681 _vst3q_lane_s16(b.0, b.1, b.2, LANE as i64, a as _)
60682}
60683#[doc = "Store multiple 3-element structures from three registers"]
60684#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s32)"]
60685#[doc = "## Safety"]
60686#[doc = " * Neon instrinsic unsafe"]
60687#[inline]
60688#[target_feature(enable = "neon")]
60689#[cfg(not(target_arch = "arm"))]
60690#[rustc_legacy_const_generics(2)]
60691#[cfg_attr(test, assert_instr(st3, LANE = 0))]
60692#[stable(feature = "neon_intrinsics", since = "1.59.0")]
60693pub unsafe fn vst3_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x3_t) {
60694 static_assert_uimm_bits!(LANE, 1);
60695 unsafe extern "unadjusted" {
60696 #[cfg_attr(
60697 any(target_arch = "aarch64", target_arch = "arm64ec"),
60698 link_name = "llvm.aarch64.neon.st3lane.v2i32.p0"
60699 )]
60700 fn _vst3_lane_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t, n: i64, ptr: *mut i8);
60701 }
60702 _vst3_lane_s32(b.0, b.1, b.2, LANE as i64, a as _)
60703}
60704#[doc = "Store multiple 3-element structures from three registers"]
60705#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_s32)"]
60706#[doc = "## Safety"]
60707#[doc = " * Neon instrinsic unsafe"]
60708#[inline]
60709#[target_feature(enable = "neon")]
60710#[cfg(not(target_arch = "arm"))]
60711#[rustc_legacy_const_generics(2)]
60712#[cfg_attr(test, assert_instr(st3, LANE = 0))]
60713#[stable(feature = "neon_intrinsics", since = "1.59.0")]
60714pub unsafe fn vst3q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x3_t) {
60715 static_assert_uimm_bits!(LANE, 2);
60716 unsafe extern "unadjusted" {
60717 #[cfg_attr(
60718 any(target_arch = "aarch64", target_arch = "arm64ec"),
60719 link_name = "llvm.aarch64.neon.st3lane.v4i32.p0"
60720 )]
60721 fn _vst3q_lane_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t, n: i64, ptr: *mut i8);
60722 }
60723 _vst3q_lane_s32(b.0, b.1, b.2, LANE as i64, a as _)
60724}
60725#[doc = "Store multiple 3-element structures from three registers"]
60726#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_u8)"]
60727#[doc = "## Safety"]
60728#[doc = " * Neon instrinsic unsafe"]
60729#[inline]
60730#[target_feature(enable = "neon")]
60731#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60732#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
60733#[cfg_attr(
60734 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60735 assert_instr(st3, LANE = 0)
60736)]
60737#[rustc_legacy_const_generics(2)]
60738#[cfg_attr(
60739 not(target_arch = "arm"),
60740 stable(feature = "neon_intrinsics", since = "1.59.0")
60741)]
60742#[cfg_attr(
60743 target_arch = "arm",
60744 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60745)]
60746pub unsafe fn vst3_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x8x3_t) {
60747 static_assert_uimm_bits!(LANE, 3);
60748 vst3_lane_s8::<LANE>(transmute(a), transmute(b))
60749}
60750#[doc = "Store multiple 3-element structures from three registers"]
60751#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_u16)"]
60752#[doc = "## Safety"]
60753#[doc = " * Neon instrinsic unsafe"]
60754#[inline]
60755#[target_feature(enable = "neon")]
60756#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60757#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
60758#[cfg_attr(
60759 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60760 assert_instr(st3, LANE = 0)
60761)]
60762#[rustc_legacy_const_generics(2)]
60763#[cfg_attr(
60764 not(target_arch = "arm"),
60765 stable(feature = "neon_intrinsics", since = "1.59.0")
60766)]
60767#[cfg_attr(
60768 target_arch = "arm",
60769 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60770)]
60771pub unsafe fn vst3_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x4x3_t) {
60772 static_assert_uimm_bits!(LANE, 2);
60773 vst3_lane_s16::<LANE>(transmute(a), transmute(b))
60774}
60775#[doc = "Store multiple 3-element structures from three registers"]
60776#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_u16)"]
60777#[doc = "## Safety"]
60778#[doc = " * Neon instrinsic unsafe"]
60779#[inline]
60780#[target_feature(enable = "neon")]
60781#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60782#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
60783#[cfg_attr(
60784 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60785 assert_instr(st3, LANE = 0)
60786)]
60787#[rustc_legacy_const_generics(2)]
60788#[cfg_attr(
60789 not(target_arch = "arm"),
60790 stable(feature = "neon_intrinsics", since = "1.59.0")
60791)]
60792#[cfg_attr(
60793 target_arch = "arm",
60794 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60795)]
60796pub unsafe fn vst3q_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x8x3_t) {
60797 static_assert_uimm_bits!(LANE, 3);
60798 vst3q_lane_s16::<LANE>(transmute(a), transmute(b))
60799}
60800#[doc = "Store multiple 3-element structures from three registers"]
60801#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_u32)"]
60802#[doc = "## Safety"]
60803#[doc = " * Neon instrinsic unsafe"]
60804#[inline]
60805#[target_feature(enable = "neon")]
60806#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60807#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
60808#[cfg_attr(
60809 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60810 assert_instr(st3, LANE = 0)
60811)]
60812#[rustc_legacy_const_generics(2)]
60813#[cfg_attr(
60814 not(target_arch = "arm"),
60815 stable(feature = "neon_intrinsics", since = "1.59.0")
60816)]
60817#[cfg_attr(
60818 target_arch = "arm",
60819 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60820)]
60821pub unsafe fn vst3_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x2x3_t) {
60822 static_assert_uimm_bits!(LANE, 1);
60823 vst3_lane_s32::<LANE>(transmute(a), transmute(b))
60824}
60825#[doc = "Store multiple 3-element structures from three registers"]
60826#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_u32)"]
60827#[doc = "## Safety"]
60828#[doc = " * Neon instrinsic unsafe"]
60829#[inline]
60830#[target_feature(enable = "neon")]
60831#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60832#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
60833#[cfg_attr(
60834 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60835 assert_instr(st3, LANE = 0)
60836)]
60837#[rustc_legacy_const_generics(2)]
60838#[cfg_attr(
60839 not(target_arch = "arm"),
60840 stable(feature = "neon_intrinsics", since = "1.59.0")
60841)]
60842#[cfg_attr(
60843 target_arch = "arm",
60844 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60845)]
60846pub unsafe fn vst3q_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x4x3_t) {
60847 static_assert_uimm_bits!(LANE, 2);
60848 vst3q_lane_s32::<LANE>(transmute(a), transmute(b))
60849}
60850#[doc = "Store multiple 3-element structures from three registers"]
60851#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_p8)"]
60852#[doc = "## Safety"]
60853#[doc = " * Neon instrinsic unsafe"]
60854#[inline]
60855#[target_feature(enable = "neon")]
60856#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60857#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
60858#[cfg_attr(
60859 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60860 assert_instr(st3, LANE = 0)
60861)]
60862#[rustc_legacy_const_generics(2)]
60863#[cfg_attr(
60864 not(target_arch = "arm"),
60865 stable(feature = "neon_intrinsics", since = "1.59.0")
60866)]
60867#[cfg_attr(
60868 target_arch = "arm",
60869 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60870)]
60871pub unsafe fn vst3_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x8x3_t) {
60872 static_assert_uimm_bits!(LANE, 3);
60873 vst3_lane_s8::<LANE>(transmute(a), transmute(b))
60874}
60875#[doc = "Store multiple 3-element structures from three registers"]
60876#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_p16)"]
60877#[doc = "## Safety"]
60878#[doc = " * Neon instrinsic unsafe"]
60879#[inline]
60880#[target_feature(enable = "neon")]
60881#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60882#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
60883#[cfg_attr(
60884 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60885 assert_instr(st3, LANE = 0)
60886)]
60887#[rustc_legacy_const_generics(2)]
60888#[cfg_attr(
60889 not(target_arch = "arm"),
60890 stable(feature = "neon_intrinsics", since = "1.59.0")
60891)]
60892#[cfg_attr(
60893 target_arch = "arm",
60894 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60895)]
60896pub unsafe fn vst3_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x4x3_t) {
60897 static_assert_uimm_bits!(LANE, 2);
60898 vst3_lane_s16::<LANE>(transmute(a), transmute(b))
60899}
60900#[doc = "Store multiple 3-element structures from three registers"]
60901#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_p16)"]
60902#[doc = "## Safety"]
60903#[doc = " * Neon instrinsic unsafe"]
60904#[inline]
60905#[target_feature(enable = "neon")]
60906#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60907#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
60908#[cfg_attr(
60909 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60910 assert_instr(st3, LANE = 0)
60911)]
60912#[rustc_legacy_const_generics(2)]
60913#[cfg_attr(
60914 not(target_arch = "arm"),
60915 stable(feature = "neon_intrinsics", since = "1.59.0")
60916)]
60917#[cfg_attr(
60918 target_arch = "arm",
60919 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60920)]
60921pub unsafe fn vst3q_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x8x3_t) {
60922 static_assert_uimm_bits!(LANE, 3);
60923 vst3q_lane_s16::<LANE>(transmute(a), transmute(b))
60924}
60925#[doc = "Store multiple 3-element structures from three registers"]
60926#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_p64)"]
60927#[doc = "## Safety"]
60928#[doc = " * Neon instrinsic unsafe"]
60929#[inline]
60930#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
60931#[target_feature(enable = "neon,aes")]
60932#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
60933#[cfg_attr(
60934 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60935 assert_instr(nop)
60936)]
60937#[cfg_attr(
60938 not(target_arch = "arm"),
60939 stable(feature = "neon_intrinsics", since = "1.59.0")
60940)]
60941#[cfg_attr(
60942 target_arch = "arm",
60943 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60944)]
60945pub unsafe fn vst3_p64(a: *mut p64, b: poly64x1x3_t) {
60946 vst3_s64(transmute(a), transmute(b))
60947}
60948#[doc = "Store multiple 3-element structures from three registers"]
60949#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s64)"]
60950#[doc = "## Safety"]
60951#[doc = " * Neon instrinsic unsafe"]
60952#[inline]
60953#[target_feature(enable = "neon")]
60954#[cfg(not(target_arch = "arm"))]
60955#[stable(feature = "neon_intrinsics", since = "1.59.0")]
60956#[cfg_attr(test, assert_instr(nop))]
60957pub unsafe fn vst3_s64(a: *mut i64, b: int64x1x3_t) {
60958 unsafe extern "unadjusted" {
60959 #[cfg_attr(
60960 any(target_arch = "aarch64", target_arch = "arm64ec"),
60961 link_name = "llvm.aarch64.neon.st3.v1i64.p0"
60962 )]
60963 fn _vst3_s64(a: int64x1_t, b: int64x1_t, c: int64x1_t, ptr: *mut i8);
60964 }
60965 _vst3_s64(b.0, b.1, b.2, a as _)
60966}
60967#[doc = "Store multiple 3-element structures from three registers"]
60968#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s64)"]
60969#[doc = "## Safety"]
60970#[doc = " * Neon instrinsic unsafe"]
60971#[inline]
60972#[cfg(target_arch = "arm")]
60973#[target_feature(enable = "neon,v7")]
60974#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60975#[cfg_attr(test, assert_instr(nop))]
60976pub unsafe fn vst3_s64(a: *mut i64, b: int64x1x3_t) {
60977 unsafe extern "unadjusted" {
60978 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v1i64")]
60979 fn _vst3_s64(ptr: *mut i8, a: int64x1_t, b: int64x1_t, c: int64x1_t, size: i32);
60980 }
60981 _vst3_s64(a as _, b.0, b.1, b.2, 8)
60982}
60983#[doc = "Store multiple 3-element structures from three registers"]
60984#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_u64)"]
60985#[doc = "## Safety"]
60986#[doc = " * Neon instrinsic unsafe"]
60987#[inline]
60988#[target_feature(enable = "neon")]
60989#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60990#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
60991#[cfg_attr(
60992 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60993 assert_instr(nop)
60994)]
60995#[cfg_attr(
60996 not(target_arch = "arm"),
60997 stable(feature = "neon_intrinsics", since = "1.59.0")
60998)]
60999#[cfg_attr(
61000 target_arch = "arm",
61001 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61002)]
61003pub unsafe fn vst3_u64(a: *mut u64, b: uint64x1x3_t) {
61004 vst3_s64(transmute(a), transmute(b))
61005}
61006#[doc = "Store multiple 3-element structures from three registers"]
61007#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_u8)"]
61008#[doc = "## Safety"]
61009#[doc = " * Neon instrinsic unsafe"]
61010#[inline]
61011#[target_feature(enable = "neon")]
61012#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61013#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
61014#[cfg_attr(
61015 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61016 assert_instr(st3)
61017)]
61018#[cfg_attr(
61019 not(target_arch = "arm"),
61020 stable(feature = "neon_intrinsics", since = "1.59.0")
61021)]
61022#[cfg_attr(
61023 target_arch = "arm",
61024 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61025)]
61026pub unsafe fn vst3_u8(a: *mut u8, b: uint8x8x3_t) {
61027 vst3_s8(transmute(a), transmute(b))
61028}
61029#[doc = "Store multiple 3-element structures from three registers"]
61030#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_u8)"]
61031#[doc = "## Safety"]
61032#[doc = " * Neon instrinsic unsafe"]
61033#[inline]
61034#[target_feature(enable = "neon")]
61035#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61036#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
61037#[cfg_attr(
61038 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61039 assert_instr(st3)
61040)]
61041#[cfg_attr(
61042 not(target_arch = "arm"),
61043 stable(feature = "neon_intrinsics", since = "1.59.0")
61044)]
61045#[cfg_attr(
61046 target_arch = "arm",
61047 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61048)]
61049pub unsafe fn vst3q_u8(a: *mut u8, b: uint8x16x3_t) {
61050 vst3q_s8(transmute(a), transmute(b))
61051}
61052#[doc = "Store multiple 3-element structures from three registers"]
61053#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_u16)"]
61054#[doc = "## Safety"]
61055#[doc = " * Neon instrinsic unsafe"]
61056#[inline]
61057#[target_feature(enable = "neon")]
61058#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61059#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
61060#[cfg_attr(
61061 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61062 assert_instr(st3)
61063)]
61064#[cfg_attr(
61065 not(target_arch = "arm"),
61066 stable(feature = "neon_intrinsics", since = "1.59.0")
61067)]
61068#[cfg_attr(
61069 target_arch = "arm",
61070 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61071)]
61072pub unsafe fn vst3_u16(a: *mut u16, b: uint16x4x3_t) {
61073 vst3_s16(transmute(a), transmute(b))
61074}
61075#[doc = "Store multiple 3-element structures from three registers"]
61076#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_u16)"]
61077#[doc = "## Safety"]
61078#[doc = " * Neon instrinsic unsafe"]
61079#[inline]
61080#[target_feature(enable = "neon")]
61081#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61082#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
61083#[cfg_attr(
61084 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61085 assert_instr(st3)
61086)]
61087#[cfg_attr(
61088 not(target_arch = "arm"),
61089 stable(feature = "neon_intrinsics", since = "1.59.0")
61090)]
61091#[cfg_attr(
61092 target_arch = "arm",
61093 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61094)]
61095pub unsafe fn vst3q_u16(a: *mut u16, b: uint16x8x3_t) {
61096 vst3q_s16(transmute(a), transmute(b))
61097}
61098#[doc = "Store multiple 3-element structures from three registers"]
61099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_u32)"]
61100#[doc = "## Safety"]
61101#[doc = " * Neon instrinsic unsafe"]
61102#[inline]
61103#[target_feature(enable = "neon")]
61104#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61105#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
61106#[cfg_attr(
61107 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61108 assert_instr(st3)
61109)]
61110#[cfg_attr(
61111 not(target_arch = "arm"),
61112 stable(feature = "neon_intrinsics", since = "1.59.0")
61113)]
61114#[cfg_attr(
61115 target_arch = "arm",
61116 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61117)]
61118pub unsafe fn vst3_u32(a: *mut u32, b: uint32x2x3_t) {
61119 vst3_s32(transmute(a), transmute(b))
61120}
61121#[doc = "Store multiple 3-element structures from three registers"]
61122#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_u32)"]
61123#[doc = "## Safety"]
61124#[doc = " * Neon instrinsic unsafe"]
61125#[inline]
61126#[target_feature(enable = "neon")]
61127#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61128#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
61129#[cfg_attr(
61130 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61131 assert_instr(st3)
61132)]
61133#[cfg_attr(
61134 not(target_arch = "arm"),
61135 stable(feature = "neon_intrinsics", since = "1.59.0")
61136)]
61137#[cfg_attr(
61138 target_arch = "arm",
61139 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61140)]
61141pub unsafe fn vst3q_u32(a: *mut u32, b: uint32x4x3_t) {
61142 vst3q_s32(transmute(a), transmute(b))
61143}
61144#[doc = "Store multiple 3-element structures from three registers"]
61145#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_p8)"]
61146#[doc = "## Safety"]
61147#[doc = " * Neon instrinsic unsafe"]
61148#[inline]
61149#[target_feature(enable = "neon")]
61150#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61151#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
61152#[cfg_attr(
61153 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61154 assert_instr(st3)
61155)]
61156#[cfg_attr(
61157 not(target_arch = "arm"),
61158 stable(feature = "neon_intrinsics", since = "1.59.0")
61159)]
61160#[cfg_attr(
61161 target_arch = "arm",
61162 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61163)]
61164pub unsafe fn vst3_p8(a: *mut p8, b: poly8x8x3_t) {
61165 vst3_s8(transmute(a), transmute(b))
61166}
61167#[doc = "Store multiple 3-element structures from three registers"]
61168#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_p8)"]
61169#[doc = "## Safety"]
61170#[doc = " * Neon instrinsic unsafe"]
61171#[inline]
61172#[target_feature(enable = "neon")]
61173#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61174#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
61175#[cfg_attr(
61176 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61177 assert_instr(st3)
61178)]
61179#[cfg_attr(
61180 not(target_arch = "arm"),
61181 stable(feature = "neon_intrinsics", since = "1.59.0")
61182)]
61183#[cfg_attr(
61184 target_arch = "arm",
61185 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61186)]
61187pub unsafe fn vst3q_p8(a: *mut p8, b: poly8x16x3_t) {
61188 vst3q_s8(transmute(a), transmute(b))
61189}
61190#[doc = "Store multiple 3-element structures from three registers"]
61191#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_p16)"]
61192#[doc = "## Safety"]
61193#[doc = " * Neon instrinsic unsafe"]
61194#[inline]
61195#[target_feature(enable = "neon")]
61196#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61197#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
61198#[cfg_attr(
61199 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61200 assert_instr(st3)
61201)]
61202#[cfg_attr(
61203 not(target_arch = "arm"),
61204 stable(feature = "neon_intrinsics", since = "1.59.0")
61205)]
61206#[cfg_attr(
61207 target_arch = "arm",
61208 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61209)]
61210pub unsafe fn vst3_p16(a: *mut p16, b: poly16x4x3_t) {
61211 vst3_s16(transmute(a), transmute(b))
61212}
61213#[doc = "Store multiple 3-element structures from three registers"]
61214#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_p16)"]
61215#[doc = "## Safety"]
61216#[doc = " * Neon instrinsic unsafe"]
61217#[inline]
61218#[target_feature(enable = "neon")]
61219#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61220#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
61221#[cfg_attr(
61222 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61223 assert_instr(st3)
61224)]
61225#[cfg_attr(
61226 not(target_arch = "arm"),
61227 stable(feature = "neon_intrinsics", since = "1.59.0")
61228)]
61229#[cfg_attr(
61230 target_arch = "arm",
61231 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61232)]
61233pub unsafe fn vst3q_p16(a: *mut p16, b: poly16x8x3_t) {
61234 vst3q_s16(transmute(a), transmute(b))
61235}
61236#[doc = "Store multiple 4-element structures from four registers"]
61237#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_f16)"]
61238#[doc = "## Safety"]
61239#[doc = " * Neon instrinsic unsafe"]
61240#[inline]
61241#[cfg(target_arch = "arm")]
61242#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61243#[target_feature(enable = "neon,fp16")]
61244#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
61245#[cfg(not(target_arch = "arm64ec"))]
61246#[cfg_attr(test, assert_instr(vst4))]
61247pub unsafe fn vst4_f16(a: *mut f16, b: float16x4x4_t) {
61248 unsafe extern "unadjusted" {
61249 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v4f16")]
61250 fn _vst4_f16(
61251 ptr: *mut i8,
61252 a: float16x4_t,
61253 b: float16x4_t,
61254 c: float16x4_t,
61255 d: float16x4_t,
61256 size: i32,
61257 );
61258 }
61259 _vst4_f16(a as _, b.0, b.1, b.2, b.3, 2)
61260}
61261#[doc = "Store multiple 4-element structures from four registers"]
61262#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_f16)"]
61263#[doc = "## Safety"]
61264#[doc = " * Neon instrinsic unsafe"]
61265#[inline]
61266#[cfg(target_arch = "arm")]
61267#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61268#[target_feature(enable = "neon,fp16")]
61269#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
61270#[cfg(not(target_arch = "arm64ec"))]
61271#[cfg_attr(test, assert_instr(vst4))]
61272pub unsafe fn vst4q_f16(a: *mut f16, b: float16x8x4_t) {
61273 unsafe extern "unadjusted" {
61274 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v8f16")]
61275 fn _vst4q_f16(
61276 ptr: *mut i8,
61277 a: float16x8_t,
61278 b: float16x8_t,
61279 c: float16x8_t,
61280 d: float16x8_t,
61281 size: i32,
61282 );
61283 }
61284 _vst4q_f16(a as _, b.0, b.1, b.2, b.3, 2)
61285}
61286#[doc = "Store multiple 4-element structures from four registers"]
61287#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_f16)"]
61288#[doc = "## Safety"]
61289#[doc = " * Neon instrinsic unsafe"]
61290#[inline]
61291#[cfg(not(target_arch = "arm"))]
61292#[target_feature(enable = "neon,fp16")]
61293#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
61294#[cfg(not(target_arch = "arm64ec"))]
61295#[cfg_attr(test, assert_instr(st4))]
61296pub unsafe fn vst4_f16(a: *mut f16, b: float16x4x4_t) {
61297 unsafe extern "unadjusted" {
61298 #[cfg_attr(
61299 any(target_arch = "aarch64", target_arch = "arm64ec"),
61300 link_name = "llvm.aarch64.neon.st4.v4f16.p0"
61301 )]
61302 fn _vst4_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t, d: float16x4_t, ptr: *mut i8);
61303 }
61304 _vst4_f16(b.0, b.1, b.2, b.3, a as _)
61305}
61306#[doc = "Store multiple 4-element structures from four registers"]
61307#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_f16)"]
61308#[doc = "## Safety"]
61309#[doc = " * Neon instrinsic unsafe"]
61310#[inline]
61311#[cfg(not(target_arch = "arm"))]
61312#[target_feature(enable = "neon,fp16")]
61313#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
61314#[cfg(not(target_arch = "arm64ec"))]
61315#[cfg_attr(test, assert_instr(st4))]
61316pub unsafe fn vst4q_f16(a: *mut f16, b: float16x8x4_t) {
61317 unsafe extern "unadjusted" {
61318 #[cfg_attr(
61319 any(target_arch = "aarch64", target_arch = "arm64ec"),
61320 link_name = "llvm.aarch64.neon.st4.v8f16.p0"
61321 )]
61322 fn _vst4q_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t, d: float16x8_t, ptr: *mut i8);
61323 }
61324 _vst4q_f16(b.0, b.1, b.2, b.3, a as _)
61325}
61326#[doc = "Store multiple 4-element structures from four registers"]
61327#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_f32)"]
61328#[doc = "## Safety"]
61329#[doc = " * Neon instrinsic unsafe"]
61330#[inline]
61331#[cfg(target_arch = "arm")]
61332#[target_feature(enable = "neon,v7")]
61333#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61334#[cfg_attr(test, assert_instr(vst4))]
61335pub unsafe fn vst4_f32(a: *mut f32, b: float32x2x4_t) {
61336 unsafe extern "unadjusted" {
61337 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v2f32")]
61338 fn _vst4_f32(
61339 ptr: *mut i8,
61340 a: float32x2_t,
61341 b: float32x2_t,
61342 c: float32x2_t,
61343 d: float32x2_t,
61344 size: i32,
61345 );
61346 }
61347 _vst4_f32(a as _, b.0, b.1, b.2, b.3, 4)
61348}
61349#[doc = "Store multiple 4-element structures from four registers"]
61350#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_f32)"]
61351#[doc = "## Safety"]
61352#[doc = " * Neon instrinsic unsafe"]
61353#[inline]
61354#[cfg(target_arch = "arm")]
61355#[target_feature(enable = "neon,v7")]
61356#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61357#[cfg_attr(test, assert_instr(vst4))]
61358pub unsafe fn vst4q_f32(a: *mut f32, b: float32x4x4_t) {
61359 unsafe extern "unadjusted" {
61360 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v4f32")]
61361 fn _vst4q_f32(
61362 ptr: *mut i8,
61363 a: float32x4_t,
61364 b: float32x4_t,
61365 c: float32x4_t,
61366 d: float32x4_t,
61367 size: i32,
61368 );
61369 }
61370 _vst4q_f32(a as _, b.0, b.1, b.2, b.3, 4)
61371}
61372#[doc = "Store multiple 4-element structures from four registers"]
61373#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s8)"]
61374#[doc = "## Safety"]
61375#[doc = " * Neon instrinsic unsafe"]
61376#[inline]
61377#[cfg(target_arch = "arm")]
61378#[target_feature(enable = "neon,v7")]
61379#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61380#[cfg_attr(test, assert_instr(vst4))]
61381pub unsafe fn vst4_s8(a: *mut i8, b: int8x8x4_t) {
61382 unsafe extern "unadjusted" {
61383 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v8i8")]
61384 fn _vst4_s8(ptr: *mut i8, a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, size: i32);
61385 }
61386 _vst4_s8(a as _, b.0, b.1, b.2, b.3, 1)
61387}
61388#[doc = "Store multiple 4-element structures from four registers"]
61389#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s8)"]
61390#[doc = "## Safety"]
61391#[doc = " * Neon instrinsic unsafe"]
61392#[inline]
61393#[cfg(target_arch = "arm")]
61394#[target_feature(enable = "neon,v7")]
61395#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61396#[cfg_attr(test, assert_instr(vst4))]
61397pub unsafe fn vst4q_s8(a: *mut i8, b: int8x16x4_t) {
61398 unsafe extern "unadjusted" {
61399 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v16i8")]
61400 fn _vst4q_s8(
61401 ptr: *mut i8,
61402 a: int8x16_t,
61403 b: int8x16_t,
61404 c: int8x16_t,
61405 d: int8x16_t,
61406 size: i32,
61407 );
61408 }
61409 _vst4q_s8(a as _, b.0, b.1, b.2, b.3, 1)
61410}
61411#[doc = "Store multiple 4-element structures from four registers"]
61412#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s16)"]
61413#[doc = "## Safety"]
61414#[doc = " * Neon instrinsic unsafe"]
61415#[inline]
61416#[cfg(target_arch = "arm")]
61417#[target_feature(enable = "neon,v7")]
61418#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61419#[cfg_attr(test, assert_instr(vst4))]
61420pub unsafe fn vst4_s16(a: *mut i16, b: int16x4x4_t) {
61421 unsafe extern "unadjusted" {
61422 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v4i16")]
61423 fn _vst4_s16(
61424 ptr: *mut i8,
61425 a: int16x4_t,
61426 b: int16x4_t,
61427 c: int16x4_t,
61428 d: int16x4_t,
61429 size: i32,
61430 );
61431 }
61432 _vst4_s16(a as _, b.0, b.1, b.2, b.3, 2)
61433}
61434#[doc = "Store multiple 4-element structures from four registers"]
61435#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s16)"]
61436#[doc = "## Safety"]
61437#[doc = " * Neon instrinsic unsafe"]
61438#[inline]
61439#[cfg(target_arch = "arm")]
61440#[target_feature(enable = "neon,v7")]
61441#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61442#[cfg_attr(test, assert_instr(vst4))]
61443pub unsafe fn vst4q_s16(a: *mut i16, b: int16x8x4_t) {
61444 unsafe extern "unadjusted" {
61445 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v8i16")]
61446 fn _vst4q_s16(
61447 ptr: *mut i8,
61448 a: int16x8_t,
61449 b: int16x8_t,
61450 c: int16x8_t,
61451 d: int16x8_t,
61452 size: i32,
61453 );
61454 }
61455 _vst4q_s16(a as _, b.0, b.1, b.2, b.3, 2)
61456}
61457#[doc = "Store multiple 4-element structures from four registers"]
61458#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s32)"]
61459#[doc = "## Safety"]
61460#[doc = " * Neon instrinsic unsafe"]
61461#[inline]
61462#[cfg(target_arch = "arm")]
61463#[target_feature(enable = "neon,v7")]
61464#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61465#[cfg_attr(test, assert_instr(vst4))]
61466pub unsafe fn vst4_s32(a: *mut i32, b: int32x2x4_t) {
61467 unsafe extern "unadjusted" {
61468 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v2i32")]
61469 fn _vst4_s32(
61470 ptr: *mut i8,
61471 a: int32x2_t,
61472 b: int32x2_t,
61473 c: int32x2_t,
61474 d: int32x2_t,
61475 size: i32,
61476 );
61477 }
61478 _vst4_s32(a as _, b.0, b.1, b.2, b.3, 4)
61479}
61480#[doc = "Store multiple 4-element structures from four registers"]
61481#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s32)"]
61482#[doc = "## Safety"]
61483#[doc = " * Neon instrinsic unsafe"]
61484#[inline]
61485#[cfg(target_arch = "arm")]
61486#[target_feature(enable = "neon,v7")]
61487#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61488#[cfg_attr(test, assert_instr(vst4))]
61489pub unsafe fn vst4q_s32(a: *mut i32, b: int32x4x4_t) {
61490 unsafe extern "unadjusted" {
61491 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v4i32")]
61492 fn _vst4q_s32(
61493 ptr: *mut i8,
61494 a: int32x4_t,
61495 b: int32x4_t,
61496 c: int32x4_t,
61497 d: int32x4_t,
61498 size: i32,
61499 );
61500 }
61501 _vst4q_s32(a as _, b.0, b.1, b.2, b.3, 4)
61502}
61503#[doc = "Store multiple 4-element structures from four registers"]
61504#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_f32)"]
61505#[doc = "## Safety"]
61506#[doc = " * Neon instrinsic unsafe"]
61507#[inline]
61508#[target_feature(enable = "neon")]
61509#[cfg(not(target_arch = "arm"))]
61510#[stable(feature = "neon_intrinsics", since = "1.59.0")]
61511#[cfg_attr(test, assert_instr(st4))]
61512pub unsafe fn vst4_f32(a: *mut f32, b: float32x2x4_t) {
61513 unsafe extern "unadjusted" {
61514 #[cfg_attr(
61515 any(target_arch = "aarch64", target_arch = "arm64ec"),
61516 link_name = "llvm.aarch64.neon.st4.v2f32.p0"
61517 )]
61518 fn _vst4_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t, d: float32x2_t, ptr: *mut i8);
61519 }
61520 _vst4_f32(b.0, b.1, b.2, b.3, a as _)
61521}
61522#[doc = "Store multiple 4-element structures from four registers"]
61523#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_f32)"]
61524#[doc = "## Safety"]
61525#[doc = " * Neon instrinsic unsafe"]
61526#[inline]
61527#[target_feature(enable = "neon")]
61528#[cfg(not(target_arch = "arm"))]
61529#[stable(feature = "neon_intrinsics", since = "1.59.0")]
61530#[cfg_attr(test, assert_instr(st4))]
61531pub unsafe fn vst4q_f32(a: *mut f32, b: float32x4x4_t) {
61532 unsafe extern "unadjusted" {
61533 #[cfg_attr(
61534 any(target_arch = "aarch64", target_arch = "arm64ec"),
61535 link_name = "llvm.aarch64.neon.st4.v4f32.p0"
61536 )]
61537 fn _vst4q_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t, d: float32x4_t, ptr: *mut i8);
61538 }
61539 _vst4q_f32(b.0, b.1, b.2, b.3, a as _)
61540}
61541#[doc = "Store multiple 4-element structures from four registers"]
61542#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s8)"]
61543#[doc = "## Safety"]
61544#[doc = " * Neon instrinsic unsafe"]
61545#[inline]
61546#[target_feature(enable = "neon")]
61547#[cfg(not(target_arch = "arm"))]
61548#[stable(feature = "neon_intrinsics", since = "1.59.0")]
61549#[cfg_attr(test, assert_instr(st4))]
61550pub unsafe fn vst4_s8(a: *mut i8, b: int8x8x4_t) {
61551 unsafe extern "unadjusted" {
61552 #[cfg_attr(
61553 any(target_arch = "aarch64", target_arch = "arm64ec"),
61554 link_name = "llvm.aarch64.neon.st4.v8i8.p0"
61555 )]
61556 fn _vst4_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, ptr: *mut i8);
61557 }
61558 _vst4_s8(b.0, b.1, b.2, b.3, a as _)
61559}
61560#[doc = "Store multiple 4-element structures from four registers"]
61561#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s8)"]
61562#[doc = "## Safety"]
61563#[doc = " * Neon instrinsic unsafe"]
61564#[inline]
61565#[target_feature(enable = "neon")]
61566#[cfg(not(target_arch = "arm"))]
61567#[stable(feature = "neon_intrinsics", since = "1.59.0")]
61568#[cfg_attr(test, assert_instr(st4))]
61569pub unsafe fn vst4q_s8(a: *mut i8, b: int8x16x4_t) {
61570 unsafe extern "unadjusted" {
61571 #[cfg_attr(
61572 any(target_arch = "aarch64", target_arch = "arm64ec"),
61573 link_name = "llvm.aarch64.neon.st4.v16i8.p0"
61574 )]
61575 fn _vst4q_s8(a: int8x16_t, b: int8x16_t, c: int8x16_t, d: int8x16_t, ptr: *mut i8);
61576 }
61577 _vst4q_s8(b.0, b.1, b.2, b.3, a as _)
61578}
61579#[doc = "Store multiple 4-element structures from four registers"]
61580#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s16)"]
61581#[doc = "## Safety"]
61582#[doc = " * Neon instrinsic unsafe"]
61583#[inline]
61584#[target_feature(enable = "neon")]
61585#[cfg(not(target_arch = "arm"))]
61586#[stable(feature = "neon_intrinsics", since = "1.59.0")]
61587#[cfg_attr(test, assert_instr(st4))]
61588pub unsafe fn vst4_s16(a: *mut i16, b: int16x4x4_t) {
61589 unsafe extern "unadjusted" {
61590 #[cfg_attr(
61591 any(target_arch = "aarch64", target_arch = "arm64ec"),
61592 link_name = "llvm.aarch64.neon.st4.v4i16.p0"
61593 )]
61594 fn _vst4_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t, d: int16x4_t, ptr: *mut i8);
61595 }
61596 _vst4_s16(b.0, b.1, b.2, b.3, a as _)
61597}
61598#[doc = "Store multiple 4-element structures from four registers"]
61599#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s16)"]
61600#[doc = "## Safety"]
61601#[doc = " * Neon instrinsic unsafe"]
61602#[inline]
61603#[target_feature(enable = "neon")]
61604#[cfg(not(target_arch = "arm"))]
61605#[stable(feature = "neon_intrinsics", since = "1.59.0")]
61606#[cfg_attr(test, assert_instr(st4))]
61607pub unsafe fn vst4q_s16(a: *mut i16, b: int16x8x4_t) {
61608 unsafe extern "unadjusted" {
61609 #[cfg_attr(
61610 any(target_arch = "aarch64", target_arch = "arm64ec"),
61611 link_name = "llvm.aarch64.neon.st4.v8i16.p0"
61612 )]
61613 fn _vst4q_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t, d: int16x8_t, ptr: *mut i8);
61614 }
61615 _vst4q_s16(b.0, b.1, b.2, b.3, a as _)
61616}
61617#[doc = "Store multiple 4-element structures from four registers"]
61618#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s32)"]
61619#[doc = "## Safety"]
61620#[doc = " * Neon instrinsic unsafe"]
61621#[inline]
61622#[target_feature(enable = "neon")]
61623#[cfg(not(target_arch = "arm"))]
61624#[stable(feature = "neon_intrinsics", since = "1.59.0")]
61625#[cfg_attr(test, assert_instr(st4))]
61626pub unsafe fn vst4_s32(a: *mut i32, b: int32x2x4_t) {
61627 unsafe extern "unadjusted" {
61628 #[cfg_attr(
61629 any(target_arch = "aarch64", target_arch = "arm64ec"),
61630 link_name = "llvm.aarch64.neon.st4.v2i32.p0"
61631 )]
61632 fn _vst4_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t, d: int32x2_t, ptr: *mut i8);
61633 }
61634 _vst4_s32(b.0, b.1, b.2, b.3, a as _)
61635}
61636#[doc = "Store multiple 4-element structures from four registers"]
61637#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s32)"]
61638#[doc = "## Safety"]
61639#[doc = " * Neon instrinsic unsafe"]
61640#[inline]
61641#[target_feature(enable = "neon")]
61642#[cfg(not(target_arch = "arm"))]
61643#[stable(feature = "neon_intrinsics", since = "1.59.0")]
61644#[cfg_attr(test, assert_instr(st4))]
61645pub unsafe fn vst4q_s32(a: *mut i32, b: int32x4x4_t) {
61646 unsafe extern "unadjusted" {
61647 #[cfg_attr(
61648 any(target_arch = "aarch64", target_arch = "arm64ec"),
61649 link_name = "llvm.aarch64.neon.st4.v4i32.p0"
61650 )]
61651 fn _vst4q_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t, d: int32x4_t, ptr: *mut i8);
61652 }
61653 _vst4q_s32(b.0, b.1, b.2, b.3, a as _)
61654}
61655#[doc = "Store multiple 4-element structures from four registers"]
61656#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_f16)"]
61657#[doc = "## Safety"]
61658#[doc = " * Neon instrinsic unsafe"]
61659#[inline]
61660#[cfg(target_arch = "arm")]
61661#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61662#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
61663#[rustc_legacy_const_generics(2)]
61664#[target_feature(enable = "neon,fp16")]
61665#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
61666#[cfg(not(target_arch = "arm64ec"))]
61667pub unsafe fn vst4_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x4_t) {
61668 static_assert_uimm_bits!(LANE, 2);
61669 unsafe extern "unadjusted" {
61670 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v4f16")]
61671 fn _vst4_lane_f16(
61672 ptr: *mut i8,
61673 a: float16x4_t,
61674 b: float16x4_t,
61675 c: float16x4_t,
61676 d: float16x4_t,
61677 n: i32,
61678 size: i32,
61679 );
61680 }
61681 _vst4_lane_f16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
61682}
61683#[doc = "Store multiple 4-element structures from four registers"]
61684#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_f16)"]
61685#[doc = "## Safety"]
61686#[doc = " * Neon instrinsic unsafe"]
61687#[inline]
61688#[cfg(target_arch = "arm")]
61689#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61690#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
61691#[rustc_legacy_const_generics(2)]
61692#[target_feature(enable = "neon,fp16")]
61693#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
61694#[cfg(not(target_arch = "arm64ec"))]
61695pub unsafe fn vst4q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x4_t) {
61696 static_assert_uimm_bits!(LANE, 3);
61697 unsafe extern "unadjusted" {
61698 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v8f16")]
61699 fn _vst4q_lane_f16(
61700 ptr: *mut i8,
61701 a: float16x8_t,
61702 b: float16x8_t,
61703 c: float16x8_t,
61704 d: float16x8_t,
61705 n: i32,
61706 size: i32,
61707 );
61708 }
61709 _vst4q_lane_f16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
61710}
61711#[doc = "Store multiple 4-element structures from four registers"]
61712#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_f16)"]
61713#[doc = "## Safety"]
61714#[doc = " * Neon instrinsic unsafe"]
61715#[inline]
61716#[cfg(not(target_arch = "arm"))]
61717#[rustc_legacy_const_generics(2)]
61718#[cfg_attr(test, assert_instr(st4, LANE = 0))]
61719#[target_feature(enable = "neon,fp16")]
61720#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
61721#[cfg(not(target_arch = "arm64ec"))]
61722pub unsafe fn vst4_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x4_t) {
61723 static_assert_uimm_bits!(LANE, 2);
61724 unsafe extern "unadjusted" {
61725 #[cfg_attr(
61726 any(target_arch = "aarch64", target_arch = "arm64ec"),
61727 link_name = "llvm.aarch64.neon.st4lane.v4f16.p0"
61728 )]
61729 fn _vst4_lane_f16(
61730 a: float16x4_t,
61731 b: float16x4_t,
61732 c: float16x4_t,
61733 d: float16x4_t,
61734 n: i64,
61735 ptr: *mut i8,
61736 );
61737 }
61738 _vst4_lane_f16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
61739}
61740#[doc = "Store multiple 4-element structures from four registers"]
61741#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_f16)"]
61742#[doc = "## Safety"]
61743#[doc = " * Neon instrinsic unsafe"]
61744#[inline]
61745#[cfg(not(target_arch = "arm"))]
61746#[rustc_legacy_const_generics(2)]
61747#[cfg_attr(test, assert_instr(st4, LANE = 0))]
61748#[target_feature(enable = "neon,fp16")]
61749#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
61750#[cfg(not(target_arch = "arm64ec"))]
61751pub unsafe fn vst4q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x4_t) {
61752 static_assert_uimm_bits!(LANE, 3);
61753 unsafe extern "unadjusted" {
61754 #[cfg_attr(
61755 any(target_arch = "aarch64", target_arch = "arm64ec"),
61756 link_name = "llvm.aarch64.neon.st4lane.v8f16.p0"
61757 )]
61758 fn _vst4q_lane_f16(
61759 a: float16x8_t,
61760 b: float16x8_t,
61761 c: float16x8_t,
61762 d: float16x8_t,
61763 n: i64,
61764 ptr: *mut i8,
61765 );
61766 }
61767 _vst4q_lane_f16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
61768}
61769#[doc = "Store multiple 4-element structures from four registers"]
61770#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_f32)"]
61771#[doc = "## Safety"]
61772#[doc = " * Neon instrinsic unsafe"]
61773#[inline]
61774#[cfg(target_arch = "arm")]
61775#[target_feature(enable = "neon,v7")]
61776#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
61777#[rustc_legacy_const_generics(2)]
61778#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61779pub unsafe fn vst4_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x4_t) {
61780 static_assert_uimm_bits!(LANE, 1);
61781 unsafe extern "unadjusted" {
61782 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v2f32")]
61783 fn _vst4_lane_f32(
61784 ptr: *mut i8,
61785 a: float32x2_t,
61786 b: float32x2_t,
61787 c: float32x2_t,
61788 d: float32x2_t,
61789 n: i32,
61790 size: i32,
61791 );
61792 }
61793 _vst4_lane_f32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
61794}
61795#[doc = "Store multiple 4-element structures from four registers"]
61796#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_f32)"]
61797#[doc = "## Safety"]
61798#[doc = " * Neon instrinsic unsafe"]
61799#[inline]
61800#[cfg(target_arch = "arm")]
61801#[target_feature(enable = "neon,v7")]
61802#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
61803#[rustc_legacy_const_generics(2)]
61804#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61805pub unsafe fn vst4q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x4_t) {
61806 static_assert_uimm_bits!(LANE, 2);
61807 unsafe extern "unadjusted" {
61808 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v4f32")]
61809 fn _vst4q_lane_f32(
61810 ptr: *mut i8,
61811 a: float32x4_t,
61812 b: float32x4_t,
61813 c: float32x4_t,
61814 d: float32x4_t,
61815 n: i32,
61816 size: i32,
61817 );
61818 }
61819 _vst4q_lane_f32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
61820}
61821#[doc = "Store multiple 4-element structures from four registers"]
61822#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s8)"]
61823#[doc = "## Safety"]
61824#[doc = " * Neon instrinsic unsafe"]
61825#[inline]
61826#[cfg(target_arch = "arm")]
61827#[target_feature(enable = "neon,v7")]
61828#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
61829#[rustc_legacy_const_generics(2)]
61830#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61831pub unsafe fn vst4_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x4_t) {
61832 static_assert_uimm_bits!(LANE, 3);
61833 unsafe extern "unadjusted" {
61834 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v8i8")]
61835 fn _vst4_lane_s8(
61836 ptr: *mut i8,
61837 a: int8x8_t,
61838 b: int8x8_t,
61839 c: int8x8_t,
61840 d: int8x8_t,
61841 n: i32,
61842 size: i32,
61843 );
61844 }
61845 _vst4_lane_s8(a as _, b.0, b.1, b.2, b.3, LANE, 1)
61846}
61847#[doc = "Store multiple 4-element structures from four registers"]
61848#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s16)"]
61849#[doc = "## Safety"]
61850#[doc = " * Neon instrinsic unsafe"]
61851#[inline]
61852#[cfg(target_arch = "arm")]
61853#[target_feature(enable = "neon,v7")]
61854#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
61855#[rustc_legacy_const_generics(2)]
61856#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61857pub unsafe fn vst4_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x4_t) {
61858 static_assert_uimm_bits!(LANE, 2);
61859 unsafe extern "unadjusted" {
61860 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v4i16")]
61861 fn _vst4_lane_s16(
61862 ptr: *mut i8,
61863 a: int16x4_t,
61864 b: int16x4_t,
61865 c: int16x4_t,
61866 d: int16x4_t,
61867 n: i32,
61868 size: i32,
61869 );
61870 }
61871 _vst4_lane_s16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
61872}
61873#[doc = "Store multiple 4-element structures from four registers"]
61874#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_s16)"]
61875#[doc = "## Safety"]
61876#[doc = " * Neon instrinsic unsafe"]
61877#[inline]
61878#[cfg(target_arch = "arm")]
61879#[target_feature(enable = "neon,v7")]
61880#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
61881#[rustc_legacy_const_generics(2)]
61882#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61883pub unsafe fn vst4q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x4_t) {
61884 static_assert_uimm_bits!(LANE, 3);
61885 unsafe extern "unadjusted" {
61886 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v8i16")]
61887 fn _vst4q_lane_s16(
61888 ptr: *mut i8,
61889 a: int16x8_t,
61890 b: int16x8_t,
61891 c: int16x8_t,
61892 d: int16x8_t,
61893 n: i32,
61894 size: i32,
61895 );
61896 }
61897 _vst4q_lane_s16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
61898}
61899#[doc = "Store multiple 4-element structures from four registers"]
61900#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s32)"]
61901#[doc = "## Safety"]
61902#[doc = " * Neon instrinsic unsafe"]
61903#[inline]
61904#[cfg(target_arch = "arm")]
61905#[target_feature(enable = "neon,v7")]
61906#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
61907#[rustc_legacy_const_generics(2)]
61908#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61909pub unsafe fn vst4_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x4_t) {
61910 static_assert_uimm_bits!(LANE, 1);
61911 unsafe extern "unadjusted" {
61912 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v2i32")]
61913 fn _vst4_lane_s32(
61914 ptr: *mut i8,
61915 a: int32x2_t,
61916 b: int32x2_t,
61917 c: int32x2_t,
61918 d: int32x2_t,
61919 n: i32,
61920 size: i32,
61921 );
61922 }
61923 _vst4_lane_s32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
61924}
61925#[doc = "Store multiple 4-element structures from four registers"]
61926#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_s32)"]
61927#[doc = "## Safety"]
61928#[doc = " * Neon instrinsic unsafe"]
61929#[inline]
61930#[cfg(target_arch = "arm")]
61931#[target_feature(enable = "neon,v7")]
61932#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
61933#[rustc_legacy_const_generics(2)]
61934#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61935pub unsafe fn vst4q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x4_t) {
61936 static_assert_uimm_bits!(LANE, 2);
61937 unsafe extern "unadjusted" {
61938 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v4i32")]
61939 fn _vst4q_lane_s32(
61940 ptr: *mut i8,
61941 a: int32x4_t,
61942 b: int32x4_t,
61943 c: int32x4_t,
61944 d: int32x4_t,
61945 n: i32,
61946 size: i32,
61947 );
61948 }
61949 _vst4q_lane_s32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
61950}
61951#[doc = "Store multiple 4-element structures from four registers"]
61952#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_f32)"]
61953#[doc = "## Safety"]
61954#[doc = " * Neon instrinsic unsafe"]
61955#[inline]
61956#[target_feature(enable = "neon")]
61957#[cfg(not(target_arch = "arm"))]
61958#[rustc_legacy_const_generics(2)]
61959#[cfg_attr(test, assert_instr(st4, LANE = 0))]
61960#[stable(feature = "neon_intrinsics", since = "1.59.0")]
61961pub unsafe fn vst4_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x4_t) {
61962 static_assert_uimm_bits!(LANE, 1);
61963 unsafe extern "unadjusted" {
61964 #[cfg_attr(
61965 any(target_arch = "aarch64", target_arch = "arm64ec"),
61966 link_name = "llvm.aarch64.neon.st4lane.v2f32.p0"
61967 )]
61968 fn _vst4_lane_f32(
61969 a: float32x2_t,
61970 b: float32x2_t,
61971 c: float32x2_t,
61972 d: float32x2_t,
61973 n: i64,
61974 ptr: *mut i8,
61975 );
61976 }
61977 _vst4_lane_f32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
61978}
61979#[doc = "Store multiple 4-element structures from four registers"]
61980#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_f32)"]
61981#[doc = "## Safety"]
61982#[doc = " * Neon instrinsic unsafe"]
61983#[inline]
61984#[target_feature(enable = "neon")]
61985#[cfg(not(target_arch = "arm"))]
61986#[rustc_legacy_const_generics(2)]
61987#[cfg_attr(test, assert_instr(st4, LANE = 0))]
61988#[stable(feature = "neon_intrinsics", since = "1.59.0")]
61989pub unsafe fn vst4q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x4_t) {
61990 static_assert_uimm_bits!(LANE, 2);
61991 unsafe extern "unadjusted" {
61992 #[cfg_attr(
61993 any(target_arch = "aarch64", target_arch = "arm64ec"),
61994 link_name = "llvm.aarch64.neon.st4lane.v4f32.p0"
61995 )]
61996 fn _vst4q_lane_f32(
61997 a: float32x4_t,
61998 b: float32x4_t,
61999 c: float32x4_t,
62000 d: float32x4_t,
62001 n: i64,
62002 ptr: *mut i8,
62003 );
62004 }
62005 _vst4q_lane_f32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
62006}
62007#[doc = "Store multiple 4-element structures from four registers"]
62008#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s8)"]
62009#[doc = "## Safety"]
62010#[doc = " * Neon instrinsic unsafe"]
62011#[inline]
62012#[target_feature(enable = "neon")]
62013#[cfg(not(target_arch = "arm"))]
62014#[rustc_legacy_const_generics(2)]
62015#[cfg_attr(test, assert_instr(st4, LANE = 0))]
62016#[stable(feature = "neon_intrinsics", since = "1.59.0")]
62017pub unsafe fn vst4_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x4_t) {
62018 static_assert_uimm_bits!(LANE, 3);
62019 unsafe extern "unadjusted" {
62020 #[cfg_attr(
62021 any(target_arch = "aarch64", target_arch = "arm64ec"),
62022 link_name = "llvm.aarch64.neon.st4lane.v8i8.p0"
62023 )]
62024 fn _vst4_lane_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, n: i64, ptr: *mut i8);
62025 }
62026 _vst4_lane_s8(b.0, b.1, b.2, b.3, LANE as i64, a as _)
62027}
62028#[doc = "Store multiple 4-element structures from four registers"]
62029#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s16)"]
62030#[doc = "## Safety"]
62031#[doc = " * Neon instrinsic unsafe"]
62032#[inline]
62033#[target_feature(enable = "neon")]
62034#[cfg(not(target_arch = "arm"))]
62035#[rustc_legacy_const_generics(2)]
62036#[cfg_attr(test, assert_instr(st4, LANE = 0))]
62037#[stable(feature = "neon_intrinsics", since = "1.59.0")]
62038pub unsafe fn vst4_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x4_t) {
62039 static_assert_uimm_bits!(LANE, 2);
62040 unsafe extern "unadjusted" {
62041 #[cfg_attr(
62042 any(target_arch = "aarch64", target_arch = "arm64ec"),
62043 link_name = "llvm.aarch64.neon.st4lane.v4i16.p0"
62044 )]
62045 fn _vst4_lane_s16(
62046 a: int16x4_t,
62047 b: int16x4_t,
62048 c: int16x4_t,
62049 d: int16x4_t,
62050 n: i64,
62051 ptr: *mut i8,
62052 );
62053 }
62054 _vst4_lane_s16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
62055}
62056#[doc = "Store multiple 4-element structures from four registers"]
62057#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_s16)"]
62058#[doc = "## Safety"]
62059#[doc = " * Neon instrinsic unsafe"]
62060#[inline]
62061#[target_feature(enable = "neon")]
62062#[cfg(not(target_arch = "arm"))]
62063#[rustc_legacy_const_generics(2)]
62064#[cfg_attr(test, assert_instr(st4, LANE = 0))]
62065#[stable(feature = "neon_intrinsics", since = "1.59.0")]
62066pub unsafe fn vst4q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x4_t) {
62067 static_assert_uimm_bits!(LANE, 3);
62068 unsafe extern "unadjusted" {
62069 #[cfg_attr(
62070 any(target_arch = "aarch64", target_arch = "arm64ec"),
62071 link_name = "llvm.aarch64.neon.st4lane.v8i16.p0"
62072 )]
62073 fn _vst4q_lane_s16(
62074 a: int16x8_t,
62075 b: int16x8_t,
62076 c: int16x8_t,
62077 d: int16x8_t,
62078 n: i64,
62079 ptr: *mut i8,
62080 );
62081 }
62082 _vst4q_lane_s16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
62083}
62084#[doc = "Store multiple 4-element structures from four registers"]
62085#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s32)"]
62086#[doc = "## Safety"]
62087#[doc = " * Neon instrinsic unsafe"]
62088#[inline]
62089#[target_feature(enable = "neon")]
62090#[cfg(not(target_arch = "arm"))]
62091#[rustc_legacy_const_generics(2)]
62092#[cfg_attr(test, assert_instr(st4, LANE = 0))]
62093#[stable(feature = "neon_intrinsics", since = "1.59.0")]
62094pub unsafe fn vst4_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x4_t) {
62095 static_assert_uimm_bits!(LANE, 1);
62096 unsafe extern "unadjusted" {
62097 #[cfg_attr(
62098 any(target_arch = "aarch64", target_arch = "arm64ec"),
62099 link_name = "llvm.aarch64.neon.st4lane.v2i32.p0"
62100 )]
62101 fn _vst4_lane_s32(
62102 a: int32x2_t,
62103 b: int32x2_t,
62104 c: int32x2_t,
62105 d: int32x2_t,
62106 n: i64,
62107 ptr: *mut i8,
62108 );
62109 }
62110 _vst4_lane_s32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
62111}
62112#[doc = "Store multiple 4-element structures from four registers"]
62113#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_s32)"]
62114#[doc = "## Safety"]
62115#[doc = " * Neon instrinsic unsafe"]
62116#[inline]
62117#[target_feature(enable = "neon")]
62118#[cfg(not(target_arch = "arm"))]
62119#[rustc_legacy_const_generics(2)]
62120#[cfg_attr(test, assert_instr(st4, LANE = 0))]
62121#[stable(feature = "neon_intrinsics", since = "1.59.0")]
62122pub unsafe fn vst4q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x4_t) {
62123 static_assert_uimm_bits!(LANE, 2);
62124 unsafe extern "unadjusted" {
62125 #[cfg_attr(
62126 any(target_arch = "aarch64", target_arch = "arm64ec"),
62127 link_name = "llvm.aarch64.neon.st4lane.v4i32.p0"
62128 )]
62129 fn _vst4q_lane_s32(
62130 a: int32x4_t,
62131 b: int32x4_t,
62132 c: int32x4_t,
62133 d: int32x4_t,
62134 n: i64,
62135 ptr: *mut i8,
62136 );
62137 }
62138 _vst4q_lane_s32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
62139}
62140#[doc = "Store multiple 4-element structures from four registers"]
62141#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_u8)"]
62142#[doc = "## Safety"]
62143#[doc = " * Neon instrinsic unsafe"]
62144#[inline]
62145#[target_feature(enable = "neon")]
62146#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62147#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
62148#[cfg_attr(
62149 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62150 assert_instr(st4, LANE = 0)
62151)]
62152#[rustc_legacy_const_generics(2)]
62153#[cfg_attr(
62154 not(target_arch = "arm"),
62155 stable(feature = "neon_intrinsics", since = "1.59.0")
62156)]
62157#[cfg_attr(
62158 target_arch = "arm",
62159 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62160)]
62161pub unsafe fn vst4_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x8x4_t) {
62162 static_assert_uimm_bits!(LANE, 3);
62163 vst4_lane_s8::<LANE>(transmute(a), transmute(b))
62164}
62165#[doc = "Store multiple 4-element structures from four registers"]
62166#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_u16)"]
62167#[doc = "## Safety"]
62168#[doc = " * Neon instrinsic unsafe"]
62169#[inline]
62170#[target_feature(enable = "neon")]
62171#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62172#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
62173#[cfg_attr(
62174 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62175 assert_instr(st4, LANE = 0)
62176)]
62177#[rustc_legacy_const_generics(2)]
62178#[cfg_attr(
62179 not(target_arch = "arm"),
62180 stable(feature = "neon_intrinsics", since = "1.59.0")
62181)]
62182#[cfg_attr(
62183 target_arch = "arm",
62184 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62185)]
62186pub unsafe fn vst4_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x4x4_t) {
62187 static_assert_uimm_bits!(LANE, 2);
62188 vst4_lane_s16::<LANE>(transmute(a), transmute(b))
62189}
62190#[doc = "Store multiple 4-element structures from four registers"]
62191#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_u16)"]
62192#[doc = "## Safety"]
62193#[doc = " * Neon instrinsic unsafe"]
62194#[inline]
62195#[target_feature(enable = "neon")]
62196#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62197#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
62198#[cfg_attr(
62199 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62200 assert_instr(st4, LANE = 0)
62201)]
62202#[rustc_legacy_const_generics(2)]
62203#[cfg_attr(
62204 not(target_arch = "arm"),
62205 stable(feature = "neon_intrinsics", since = "1.59.0")
62206)]
62207#[cfg_attr(
62208 target_arch = "arm",
62209 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62210)]
62211pub unsafe fn vst4q_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x8x4_t) {
62212 static_assert_uimm_bits!(LANE, 3);
62213 vst4q_lane_s16::<LANE>(transmute(a), transmute(b))
62214}
62215#[doc = "Store multiple 4-element structures from four registers"]
62216#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_u32)"]
62217#[doc = "## Safety"]
62218#[doc = " * Neon instrinsic unsafe"]
62219#[inline]
62220#[target_feature(enable = "neon")]
62221#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62222#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
62223#[cfg_attr(
62224 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62225 assert_instr(st4, LANE = 0)
62226)]
62227#[rustc_legacy_const_generics(2)]
62228#[cfg_attr(
62229 not(target_arch = "arm"),
62230 stable(feature = "neon_intrinsics", since = "1.59.0")
62231)]
62232#[cfg_attr(
62233 target_arch = "arm",
62234 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62235)]
62236pub unsafe fn vst4_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x2x4_t) {
62237 static_assert_uimm_bits!(LANE, 1);
62238 vst4_lane_s32::<LANE>(transmute(a), transmute(b))
62239}
62240#[doc = "Store multiple 4-element structures from four registers"]
62241#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_u32)"]
62242#[doc = "## Safety"]
62243#[doc = " * Neon instrinsic unsafe"]
62244#[inline]
62245#[target_feature(enable = "neon")]
62246#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62247#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
62248#[cfg_attr(
62249 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62250 assert_instr(st4, LANE = 0)
62251)]
62252#[rustc_legacy_const_generics(2)]
62253#[cfg_attr(
62254 not(target_arch = "arm"),
62255 stable(feature = "neon_intrinsics", since = "1.59.0")
62256)]
62257#[cfg_attr(
62258 target_arch = "arm",
62259 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62260)]
62261pub unsafe fn vst4q_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x4x4_t) {
62262 static_assert_uimm_bits!(LANE, 2);
62263 vst4q_lane_s32::<LANE>(transmute(a), transmute(b))
62264}
62265#[doc = "Store multiple 4-element structures from four registers"]
62266#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_p8)"]
62267#[doc = "## Safety"]
62268#[doc = " * Neon instrinsic unsafe"]
62269#[inline]
62270#[target_feature(enable = "neon")]
62271#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62272#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
62273#[cfg_attr(
62274 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62275 assert_instr(st4, LANE = 0)
62276)]
62277#[rustc_legacy_const_generics(2)]
62278#[cfg_attr(
62279 not(target_arch = "arm"),
62280 stable(feature = "neon_intrinsics", since = "1.59.0")
62281)]
62282#[cfg_attr(
62283 target_arch = "arm",
62284 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62285)]
62286pub unsafe fn vst4_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x8x4_t) {
62287 static_assert_uimm_bits!(LANE, 3);
62288 vst4_lane_s8::<LANE>(transmute(a), transmute(b))
62289}
62290#[doc = "Store multiple 4-element structures from four registers"]
62291#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_p16)"]
62292#[doc = "## Safety"]
62293#[doc = " * Neon instrinsic unsafe"]
62294#[inline]
62295#[target_feature(enable = "neon")]
62296#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62297#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
62298#[cfg_attr(
62299 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62300 assert_instr(st4, LANE = 0)
62301)]
62302#[rustc_legacy_const_generics(2)]
62303#[cfg_attr(
62304 not(target_arch = "arm"),
62305 stable(feature = "neon_intrinsics", since = "1.59.0")
62306)]
62307#[cfg_attr(
62308 target_arch = "arm",
62309 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62310)]
62311pub unsafe fn vst4_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x4x4_t) {
62312 static_assert_uimm_bits!(LANE, 2);
62313 vst4_lane_s16::<LANE>(transmute(a), transmute(b))
62314}
62315#[doc = "Store multiple 4-element structures from four registers"]
62316#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_p16)"]
62317#[doc = "## Safety"]
62318#[doc = " * Neon instrinsic unsafe"]
62319#[inline]
62320#[target_feature(enable = "neon")]
62321#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62322#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
62323#[cfg_attr(
62324 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62325 assert_instr(st4, LANE = 0)
62326)]
62327#[rustc_legacy_const_generics(2)]
62328#[cfg_attr(
62329 not(target_arch = "arm"),
62330 stable(feature = "neon_intrinsics", since = "1.59.0")
62331)]
62332#[cfg_attr(
62333 target_arch = "arm",
62334 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62335)]
62336pub unsafe fn vst4q_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x8x4_t) {
62337 static_assert_uimm_bits!(LANE, 3);
62338 vst4q_lane_s16::<LANE>(transmute(a), transmute(b))
62339}
62340#[doc = "Store multiple 4-element structures from four registers"]
62341#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_p64)"]
62342#[doc = "## Safety"]
62343#[doc = " * Neon instrinsic unsafe"]
62344#[inline]
62345#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
62346#[target_feature(enable = "neon,aes")]
62347#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
62348#[cfg_attr(
62349 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62350 assert_instr(nop)
62351)]
62352#[cfg_attr(
62353 not(target_arch = "arm"),
62354 stable(feature = "neon_intrinsics", since = "1.59.0")
62355)]
62356#[cfg_attr(
62357 target_arch = "arm",
62358 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62359)]
62360pub unsafe fn vst4_p64(a: *mut p64, b: poly64x1x4_t) {
62361 vst4_s64(transmute(a), transmute(b))
62362}
62363#[doc = "Store multiple 4-element structures from four registers"]
62364#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s64)"]
62365#[doc = "## Safety"]
62366#[doc = " * Neon instrinsic unsafe"]
62367#[inline]
62368#[cfg(target_arch = "arm")]
62369#[target_feature(enable = "neon,v7")]
62370#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62371#[cfg_attr(test, assert_instr(nop))]
62372pub unsafe fn vst4_s64(a: *mut i64, b: int64x1x4_t) {
62373 unsafe extern "unadjusted" {
62374 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v1i64")]
62375 fn _vst4_s64(
62376 ptr: *mut i8,
62377 a: int64x1_t,
62378 b: int64x1_t,
62379 c: int64x1_t,
62380 d: int64x1_t,
62381 size: i32,
62382 );
62383 }
62384 _vst4_s64(a as _, b.0, b.1, b.2, b.3, 8)
62385}
62386#[doc = "Store multiple 4-element structures from four registers"]
62387#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s64)"]
62388#[doc = "## Safety"]
62389#[doc = " * Neon instrinsic unsafe"]
62390#[inline]
62391#[target_feature(enable = "neon")]
62392#[cfg(not(target_arch = "arm"))]
62393#[stable(feature = "neon_intrinsics", since = "1.59.0")]
62394#[cfg_attr(test, assert_instr(nop))]
62395pub unsafe fn vst4_s64(a: *mut i64, b: int64x1x4_t) {
62396 unsafe extern "unadjusted" {
62397 #[cfg_attr(
62398 any(target_arch = "aarch64", target_arch = "arm64ec"),
62399 link_name = "llvm.aarch64.neon.st4.v1i64.p0"
62400 )]
62401 fn _vst4_s64(a: int64x1_t, b: int64x1_t, c: int64x1_t, d: int64x1_t, ptr: *mut i8);
62402 }
62403 _vst4_s64(b.0, b.1, b.2, b.3, a as _)
62404}
62405#[doc = "Store multiple 4-element structures from four registers"]
62406#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_u64)"]
62407#[doc = "## Safety"]
62408#[doc = " * Neon instrinsic unsafe"]
62409#[inline]
62410#[target_feature(enable = "neon")]
62411#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62412#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
62413#[cfg_attr(
62414 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62415 assert_instr(nop)
62416)]
62417#[cfg_attr(
62418 not(target_arch = "arm"),
62419 stable(feature = "neon_intrinsics", since = "1.59.0")
62420)]
62421#[cfg_attr(
62422 target_arch = "arm",
62423 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62424)]
62425pub unsafe fn vst4_u64(a: *mut u64, b: uint64x1x4_t) {
62426 vst4_s64(transmute(a), transmute(b))
62427}
62428#[doc = "Store multiple 4-element structures from four registers"]
62429#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_u8)"]
62430#[doc = "## Safety"]
62431#[doc = " * Neon instrinsic unsafe"]
62432#[inline]
62433#[target_feature(enable = "neon")]
62434#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62435#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
62436#[cfg_attr(
62437 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62438 assert_instr(st4)
62439)]
62440#[cfg_attr(
62441 not(target_arch = "arm"),
62442 stable(feature = "neon_intrinsics", since = "1.59.0")
62443)]
62444#[cfg_attr(
62445 target_arch = "arm",
62446 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62447)]
62448pub unsafe fn vst4_u8(a: *mut u8, b: uint8x8x4_t) {
62449 vst4_s8(transmute(a), transmute(b))
62450}
62451#[doc = "Store multiple 4-element structures from four registers"]
62452#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_u8)"]
62453#[doc = "## Safety"]
62454#[doc = " * Neon instrinsic unsafe"]
62455#[inline]
62456#[target_feature(enable = "neon")]
62457#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62458#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
62459#[cfg_attr(
62460 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62461 assert_instr(st4)
62462)]
62463#[cfg_attr(
62464 not(target_arch = "arm"),
62465 stable(feature = "neon_intrinsics", since = "1.59.0")
62466)]
62467#[cfg_attr(
62468 target_arch = "arm",
62469 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62470)]
62471pub unsafe fn vst4q_u8(a: *mut u8, b: uint8x16x4_t) {
62472 vst4q_s8(transmute(a), transmute(b))
62473}
62474#[doc = "Store multiple 4-element structures from four registers"]
62475#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_u16)"]
62476#[doc = "## Safety"]
62477#[doc = " * Neon instrinsic unsafe"]
62478#[inline]
62479#[target_feature(enable = "neon")]
62480#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62481#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
62482#[cfg_attr(
62483 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62484 assert_instr(st4)
62485)]
62486#[cfg_attr(
62487 not(target_arch = "arm"),
62488 stable(feature = "neon_intrinsics", since = "1.59.0")
62489)]
62490#[cfg_attr(
62491 target_arch = "arm",
62492 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62493)]
62494pub unsafe fn vst4_u16(a: *mut u16, b: uint16x4x4_t) {
62495 vst4_s16(transmute(a), transmute(b))
62496}
62497#[doc = "Store multiple 4-element structures from four registers"]
62498#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_u16)"]
62499#[doc = "## Safety"]
62500#[doc = " * Neon instrinsic unsafe"]
62501#[inline]
62502#[target_feature(enable = "neon")]
62503#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62504#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
62505#[cfg_attr(
62506 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62507 assert_instr(st4)
62508)]
62509#[cfg_attr(
62510 not(target_arch = "arm"),
62511 stable(feature = "neon_intrinsics", since = "1.59.0")
62512)]
62513#[cfg_attr(
62514 target_arch = "arm",
62515 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62516)]
62517pub unsafe fn vst4q_u16(a: *mut u16, b: uint16x8x4_t) {
62518 vst4q_s16(transmute(a), transmute(b))
62519}
62520#[doc = "Store multiple 4-element structures from four registers"]
62521#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_u32)"]
62522#[doc = "## Safety"]
62523#[doc = " * Neon instrinsic unsafe"]
62524#[inline]
62525#[target_feature(enable = "neon")]
62526#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62527#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
62528#[cfg_attr(
62529 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62530 assert_instr(st4)
62531)]
62532#[cfg_attr(
62533 not(target_arch = "arm"),
62534 stable(feature = "neon_intrinsics", since = "1.59.0")
62535)]
62536#[cfg_attr(
62537 target_arch = "arm",
62538 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62539)]
62540pub unsafe fn vst4_u32(a: *mut u32, b: uint32x2x4_t) {
62541 vst4_s32(transmute(a), transmute(b))
62542}
62543#[doc = "Store multiple 4-element structures from four registers"]
62544#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_u32)"]
62545#[doc = "## Safety"]
62546#[doc = " * Neon instrinsic unsafe"]
62547#[inline]
62548#[target_feature(enable = "neon")]
62549#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62550#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
62551#[cfg_attr(
62552 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62553 assert_instr(st4)
62554)]
62555#[cfg_attr(
62556 not(target_arch = "arm"),
62557 stable(feature = "neon_intrinsics", since = "1.59.0")
62558)]
62559#[cfg_attr(
62560 target_arch = "arm",
62561 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62562)]
62563pub unsafe fn vst4q_u32(a: *mut u32, b: uint32x4x4_t) {
62564 vst4q_s32(transmute(a), transmute(b))
62565}
62566#[doc = "Store multiple 4-element structures from four registers"]
62567#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_p8)"]
62568#[doc = "## Safety"]
62569#[doc = " * Neon instrinsic unsafe"]
62570#[inline]
62571#[target_feature(enable = "neon")]
62572#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62573#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
62574#[cfg_attr(
62575 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62576 assert_instr(st4)
62577)]
62578#[cfg_attr(
62579 not(target_arch = "arm"),
62580 stable(feature = "neon_intrinsics", since = "1.59.0")
62581)]
62582#[cfg_attr(
62583 target_arch = "arm",
62584 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62585)]
62586pub unsafe fn vst4_p8(a: *mut p8, b: poly8x8x4_t) {
62587 vst4_s8(transmute(a), transmute(b))
62588}
62589#[doc = "Store multiple 4-element structures from four registers"]
62590#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_p8)"]
62591#[doc = "## Safety"]
62592#[doc = " * Neon instrinsic unsafe"]
62593#[inline]
62594#[target_feature(enable = "neon")]
62595#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62596#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
62597#[cfg_attr(
62598 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62599 assert_instr(st4)
62600)]
62601#[cfg_attr(
62602 not(target_arch = "arm"),
62603 stable(feature = "neon_intrinsics", since = "1.59.0")
62604)]
62605#[cfg_attr(
62606 target_arch = "arm",
62607 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62608)]
62609pub unsafe fn vst4q_p8(a: *mut p8, b: poly8x16x4_t) {
62610 vst4q_s8(transmute(a), transmute(b))
62611}
62612#[doc = "Store multiple 4-element structures from four registers"]
62613#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_p16)"]
62614#[doc = "## Safety"]
62615#[doc = " * Neon instrinsic unsafe"]
62616#[inline]
62617#[target_feature(enable = "neon")]
62618#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62619#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
62620#[cfg_attr(
62621 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62622 assert_instr(st4)
62623)]
62624#[cfg_attr(
62625 not(target_arch = "arm"),
62626 stable(feature = "neon_intrinsics", since = "1.59.0")
62627)]
62628#[cfg_attr(
62629 target_arch = "arm",
62630 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62631)]
62632pub unsafe fn vst4_p16(a: *mut p16, b: poly16x4x4_t) {
62633 vst4_s16(transmute(a), transmute(b))
62634}
62635#[doc = "Store multiple 4-element structures from four registers"]
62636#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_p16)"]
62637#[doc = "## Safety"]
62638#[doc = " * Neon instrinsic unsafe"]
62639#[inline]
62640#[target_feature(enable = "neon")]
62641#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62642#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
62643#[cfg_attr(
62644 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62645 assert_instr(st4)
62646)]
62647#[cfg_attr(
62648 not(target_arch = "arm"),
62649 stable(feature = "neon_intrinsics", since = "1.59.0")
62650)]
62651#[cfg_attr(
62652 target_arch = "arm",
62653 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62654)]
62655pub unsafe fn vst4q_p16(a: *mut p16, b: poly16x8x4_t) {
62656 vst4q_s16(transmute(a), transmute(b))
62657}
62658#[doc = "Store SIMD&FP register (immediate offset)"]
62659#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vstrq_p128)"]
62660#[doc = "## Safety"]
62661#[doc = " * Neon instrinsic unsafe"]
62662#[inline]
62663#[target_feature(enable = "neon")]
62664#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62665#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
62666#[cfg_attr(
62667 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62668 assert_instr(nop)
62669)]
62670#[cfg_attr(
62671 not(target_arch = "arm"),
62672 stable(feature = "neon_intrinsics", since = "1.59.0")
62673)]
62674#[cfg_attr(
62675 target_arch = "arm",
62676 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62677)]
62678pub unsafe fn vstrq_p128(a: *mut p128, b: p128) {
62679 *a = b
62680}
62681#[doc = "Subtract"]
62682#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_f16)"]
62683#[inline]
62684#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
62685#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.f16"))]
62686#[cfg_attr(
62687 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62688 assert_instr(fsub)
62689)]
62690#[target_feature(enable = "neon,fp16")]
62691#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62692#[cfg(not(target_arch = "arm64ec"))]
62693pub fn vsub_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
62694 unsafe { simd_sub(a, b) }
62695}
62696#[doc = "Subtract"]
62697#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_f16)"]
62698#[inline]
62699#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
62700#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.f16"))]
62701#[cfg_attr(
62702 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62703 assert_instr(fsub)
62704)]
62705#[target_feature(enable = "neon,fp16")]
62706#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62707#[cfg(not(target_arch = "arm64ec"))]
62708pub fn vsubq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
62709 unsafe { simd_sub(a, b) }
62710}
62711#[doc = "Subtract"]
62712#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_f32)"]
62713#[inline]
62714#[target_feature(enable = "neon")]
62715#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62716#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.f32"))]
62717#[cfg_attr(
62718 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62719 assert_instr(fsub)
62720)]
62721#[cfg_attr(
62722 not(target_arch = "arm"),
62723 stable(feature = "neon_intrinsics", since = "1.59.0")
62724)]
62725#[cfg_attr(
62726 target_arch = "arm",
62727 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62728)]
62729pub fn vsub_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
62730 unsafe { simd_sub(a, b) }
62731}
62732#[doc = "Subtract"]
62733#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_f32)"]
62734#[inline]
62735#[target_feature(enable = "neon")]
62736#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62737#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.f32"))]
62738#[cfg_attr(
62739 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62740 assert_instr(fsub)
62741)]
62742#[cfg_attr(
62743 not(target_arch = "arm"),
62744 stable(feature = "neon_intrinsics", since = "1.59.0")
62745)]
62746#[cfg_attr(
62747 target_arch = "arm",
62748 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62749)]
62750pub fn vsubq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
62751 unsafe { simd_sub(a, b) }
62752}
62753#[doc = "Subtract"]
62754#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_s16)"]
62755#[inline]
62756#[target_feature(enable = "neon")]
62757#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62758#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i16"))]
62759#[cfg_attr(
62760 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62761 assert_instr(sub)
62762)]
62763#[cfg_attr(
62764 not(target_arch = "arm"),
62765 stable(feature = "neon_intrinsics", since = "1.59.0")
62766)]
62767#[cfg_attr(
62768 target_arch = "arm",
62769 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62770)]
62771pub fn vsub_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
62772 unsafe { simd_sub(a, b) }
62773}
62774#[doc = "Subtract"]
62775#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_s16)"]
62776#[inline]
62777#[target_feature(enable = "neon")]
62778#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62779#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i16"))]
62780#[cfg_attr(
62781 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62782 assert_instr(sub)
62783)]
62784#[cfg_attr(
62785 not(target_arch = "arm"),
62786 stable(feature = "neon_intrinsics", since = "1.59.0")
62787)]
62788#[cfg_attr(
62789 target_arch = "arm",
62790 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62791)]
62792pub fn vsubq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
62793 unsafe { simd_sub(a, b) }
62794}
62795#[doc = "Subtract"]
62796#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_u16)"]
62797#[inline]
62798#[target_feature(enable = "neon")]
62799#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62800#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i16"))]
62801#[cfg_attr(
62802 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62803 assert_instr(sub)
62804)]
62805#[cfg_attr(
62806 not(target_arch = "arm"),
62807 stable(feature = "neon_intrinsics", since = "1.59.0")
62808)]
62809#[cfg_attr(
62810 target_arch = "arm",
62811 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62812)]
62813pub fn vsub_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
62814 unsafe { simd_sub(a, b) }
62815}
62816#[doc = "Subtract"]
62817#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_u16)"]
62818#[inline]
62819#[target_feature(enable = "neon")]
62820#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62821#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i16"))]
62822#[cfg_attr(
62823 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62824 assert_instr(sub)
62825)]
62826#[cfg_attr(
62827 not(target_arch = "arm"),
62828 stable(feature = "neon_intrinsics", since = "1.59.0")
62829)]
62830#[cfg_attr(
62831 target_arch = "arm",
62832 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62833)]
62834pub fn vsubq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
62835 unsafe { simd_sub(a, b) }
62836}
62837#[doc = "Subtract"]
62838#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_s32)"]
62839#[inline]
62840#[target_feature(enable = "neon")]
62841#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62842#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i32"))]
62843#[cfg_attr(
62844 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62845 assert_instr(sub)
62846)]
62847#[cfg_attr(
62848 not(target_arch = "arm"),
62849 stable(feature = "neon_intrinsics", since = "1.59.0")
62850)]
62851#[cfg_attr(
62852 target_arch = "arm",
62853 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62854)]
62855pub fn vsub_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
62856 unsafe { simd_sub(a, b) }
62857}
62858#[doc = "Subtract"]
62859#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_s32)"]
62860#[inline]
62861#[target_feature(enable = "neon")]
62862#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62863#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i32"))]
62864#[cfg_attr(
62865 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62866 assert_instr(sub)
62867)]
62868#[cfg_attr(
62869 not(target_arch = "arm"),
62870 stable(feature = "neon_intrinsics", since = "1.59.0")
62871)]
62872#[cfg_attr(
62873 target_arch = "arm",
62874 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62875)]
62876pub fn vsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
62877 unsafe { simd_sub(a, b) }
62878}
62879#[doc = "Subtract"]
62880#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_u32)"]
62881#[inline]
62882#[target_feature(enable = "neon")]
62883#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62884#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i32"))]
62885#[cfg_attr(
62886 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62887 assert_instr(sub)
62888)]
62889#[cfg_attr(
62890 not(target_arch = "arm"),
62891 stable(feature = "neon_intrinsics", since = "1.59.0")
62892)]
62893#[cfg_attr(
62894 target_arch = "arm",
62895 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62896)]
62897pub fn vsub_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
62898 unsafe { simd_sub(a, b) }
62899}
62900#[doc = "Subtract"]
62901#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_u32)"]
62902#[inline]
62903#[target_feature(enable = "neon")]
62904#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62905#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i32"))]
62906#[cfg_attr(
62907 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62908 assert_instr(sub)
62909)]
62910#[cfg_attr(
62911 not(target_arch = "arm"),
62912 stable(feature = "neon_intrinsics", since = "1.59.0")
62913)]
62914#[cfg_attr(
62915 target_arch = "arm",
62916 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62917)]
62918pub fn vsubq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
62919 unsafe { simd_sub(a, b) }
62920}
62921#[doc = "Subtract"]
62922#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_s64)"]
62923#[inline]
62924#[target_feature(enable = "neon")]
62925#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62926#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i64"))]
62927#[cfg_attr(
62928 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62929 assert_instr(sub)
62930)]
62931#[cfg_attr(
62932 not(target_arch = "arm"),
62933 stable(feature = "neon_intrinsics", since = "1.59.0")
62934)]
62935#[cfg_attr(
62936 target_arch = "arm",
62937 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62938)]
62939pub fn vsub_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
62940 unsafe { simd_sub(a, b) }
62941}
62942#[doc = "Subtract"]
62943#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_s64)"]
62944#[inline]
62945#[target_feature(enable = "neon")]
62946#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62947#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i64"))]
62948#[cfg_attr(
62949 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62950 assert_instr(sub)
62951)]
62952#[cfg_attr(
62953 not(target_arch = "arm"),
62954 stable(feature = "neon_intrinsics", since = "1.59.0")
62955)]
62956#[cfg_attr(
62957 target_arch = "arm",
62958 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62959)]
62960pub fn vsubq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
62961 unsafe { simd_sub(a, b) }
62962}
62963#[doc = "Subtract"]
62964#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_u64)"]
62965#[inline]
62966#[target_feature(enable = "neon")]
62967#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62968#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i64"))]
62969#[cfg_attr(
62970 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62971 assert_instr(sub)
62972)]
62973#[cfg_attr(
62974 not(target_arch = "arm"),
62975 stable(feature = "neon_intrinsics", since = "1.59.0")
62976)]
62977#[cfg_attr(
62978 target_arch = "arm",
62979 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62980)]
62981pub fn vsub_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
62982 unsafe { simd_sub(a, b) }
62983}
62984#[doc = "Subtract"]
62985#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_u64)"]
62986#[inline]
62987#[target_feature(enable = "neon")]
62988#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62989#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i64"))]
62990#[cfg_attr(
62991 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62992 assert_instr(sub)
62993)]
62994#[cfg_attr(
62995 not(target_arch = "arm"),
62996 stable(feature = "neon_intrinsics", since = "1.59.0")
62997)]
62998#[cfg_attr(
62999 target_arch = "arm",
63000 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63001)]
63002pub fn vsubq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
63003 unsafe { simd_sub(a, b) }
63004}
63005#[doc = "Subtract"]
63006#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_s8)"]
63007#[inline]
63008#[target_feature(enable = "neon")]
63009#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63010#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i8"))]
63011#[cfg_attr(
63012 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63013 assert_instr(sub)
63014)]
63015#[cfg_attr(
63016 not(target_arch = "arm"),
63017 stable(feature = "neon_intrinsics", since = "1.59.0")
63018)]
63019#[cfg_attr(
63020 target_arch = "arm",
63021 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63022)]
63023pub fn vsub_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
63024 unsafe { simd_sub(a, b) }
63025}
63026#[doc = "Subtract"]
63027#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_s8)"]
63028#[inline]
63029#[target_feature(enable = "neon")]
63030#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63031#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i8"))]
63032#[cfg_attr(
63033 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63034 assert_instr(sub)
63035)]
63036#[cfg_attr(
63037 not(target_arch = "arm"),
63038 stable(feature = "neon_intrinsics", since = "1.59.0")
63039)]
63040#[cfg_attr(
63041 target_arch = "arm",
63042 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63043)]
63044pub fn vsubq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
63045 unsafe { simd_sub(a, b) }
63046}
63047#[doc = "Subtract"]
63048#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_u8)"]
63049#[inline]
63050#[target_feature(enable = "neon")]
63051#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63052#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i8"))]
63053#[cfg_attr(
63054 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63055 assert_instr(sub)
63056)]
63057#[cfg_attr(
63058 not(target_arch = "arm"),
63059 stable(feature = "neon_intrinsics", since = "1.59.0")
63060)]
63061#[cfg_attr(
63062 target_arch = "arm",
63063 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63064)]
63065pub fn vsub_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
63066 unsafe { simd_sub(a, b) }
63067}
63068#[doc = "Subtract"]
63069#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_u8)"]
63070#[inline]
63071#[target_feature(enable = "neon")]
63072#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63073#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i8"))]
63074#[cfg_attr(
63075 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63076 assert_instr(sub)
63077)]
63078#[cfg_attr(
63079 not(target_arch = "arm"),
63080 stable(feature = "neon_intrinsics", since = "1.59.0")
63081)]
63082#[cfg_attr(
63083 target_arch = "arm",
63084 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63085)]
63086pub fn vsubq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
63087 unsafe { simd_sub(a, b) }
63088}
63089#[doc = "Subtract returning high narrow"]
63090#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_s16)"]
63091#[inline]
63092#[target_feature(enable = "neon")]
63093#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63094#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
63095#[cfg_attr(
63096 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63097 assert_instr(subhn2)
63098)]
63099#[cfg_attr(
63100 not(target_arch = "arm"),
63101 stable(feature = "neon_intrinsics", since = "1.59.0")
63102)]
63103#[cfg_attr(
63104 target_arch = "arm",
63105 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63106)]
63107pub fn vsubhn_high_s16(a: int8x8_t, b: int16x8_t, c: int16x8_t) -> int8x16_t {
63108 let d: int8x8_t = vsubhn_s16(b, c);
63109 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) }
63110}
63111#[doc = "Subtract returning high narrow"]
63112#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_s32)"]
63113#[inline]
63114#[target_feature(enable = "neon")]
63115#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63116#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
63117#[cfg_attr(
63118 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63119 assert_instr(subhn2)
63120)]
63121#[cfg_attr(
63122 not(target_arch = "arm"),
63123 stable(feature = "neon_intrinsics", since = "1.59.0")
63124)]
63125#[cfg_attr(
63126 target_arch = "arm",
63127 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63128)]
63129pub fn vsubhn_high_s32(a: int16x4_t, b: int32x4_t, c: int32x4_t) -> int16x8_t {
63130 let d: int16x4_t = vsubhn_s32(b, c);
63131 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3, 4, 5, 6, 7]) }
63132}
63133#[doc = "Subtract returning high narrow"]
63134#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_s64)"]
63135#[inline]
63136#[target_feature(enable = "neon")]
63137#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63138#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
63139#[cfg_attr(
63140 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63141 assert_instr(subhn2)
63142)]
63143#[cfg_attr(
63144 not(target_arch = "arm"),
63145 stable(feature = "neon_intrinsics", since = "1.59.0")
63146)]
63147#[cfg_attr(
63148 target_arch = "arm",
63149 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63150)]
63151pub fn vsubhn_high_s64(a: int32x2_t, b: int64x2_t, c: int64x2_t) -> int32x4_t {
63152 let d: int32x2_t = vsubhn_s64(b, c);
63153 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3]) }
63154}
63155#[doc = "Subtract returning high narrow"]
63156#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_u16)"]
63157#[inline]
63158#[target_feature(enable = "neon")]
63159#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63160#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
63161#[cfg_attr(
63162 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63163 assert_instr(subhn2)
63164)]
63165#[cfg_attr(
63166 not(target_arch = "arm"),
63167 stable(feature = "neon_intrinsics", since = "1.59.0")
63168)]
63169#[cfg_attr(
63170 target_arch = "arm",
63171 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63172)]
63173pub fn vsubhn_high_u16(a: uint8x8_t, b: uint16x8_t, c: uint16x8_t) -> uint8x16_t {
63174 let d: uint8x8_t = vsubhn_u16(b, c);
63175 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) }
63176}
63177#[doc = "Subtract returning high narrow"]
63178#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_u32)"]
63179#[inline]
63180#[target_feature(enable = "neon")]
63181#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63182#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
63183#[cfg_attr(
63184 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63185 assert_instr(subhn2)
63186)]
63187#[cfg_attr(
63188 not(target_arch = "arm"),
63189 stable(feature = "neon_intrinsics", since = "1.59.0")
63190)]
63191#[cfg_attr(
63192 target_arch = "arm",
63193 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63194)]
63195pub fn vsubhn_high_u32(a: uint16x4_t, b: uint32x4_t, c: uint32x4_t) -> uint16x8_t {
63196 let d: uint16x4_t = vsubhn_u32(b, c);
63197 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3, 4, 5, 6, 7]) }
63198}
63199#[doc = "Subtract returning high narrow"]
63200#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_u64)"]
63201#[inline]
63202#[target_feature(enable = "neon")]
63203#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63204#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
63205#[cfg_attr(
63206 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63207 assert_instr(subhn2)
63208)]
63209#[cfg_attr(
63210 not(target_arch = "arm"),
63211 stable(feature = "neon_intrinsics", since = "1.59.0")
63212)]
63213#[cfg_attr(
63214 target_arch = "arm",
63215 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63216)]
63217pub fn vsubhn_high_u64(a: uint32x2_t, b: uint64x2_t, c: uint64x2_t) -> uint32x4_t {
63218 let d: uint32x2_t = vsubhn_u64(b, c);
63219 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3]) }
63220}
63221#[doc = "Subtract returning high narrow"]
63222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_s16)"]
63223#[inline]
63224#[target_feature(enable = "neon")]
63225#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63226#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
63227#[cfg_attr(
63228 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63229 assert_instr(subhn)
63230)]
63231#[cfg_attr(
63232 not(target_arch = "arm"),
63233 stable(feature = "neon_intrinsics", since = "1.59.0")
63234)]
63235#[cfg_attr(
63236 target_arch = "arm",
63237 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63238)]
63239pub fn vsubhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t {
63240 let c: i16x8 = i16x8::new(8, 8, 8, 8, 8, 8, 8, 8);
63241 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
63242}
63243#[doc = "Subtract returning high narrow"]
63244#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_s32)"]
63245#[inline]
63246#[target_feature(enable = "neon")]
63247#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63248#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
63249#[cfg_attr(
63250 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63251 assert_instr(subhn)
63252)]
63253#[cfg_attr(
63254 not(target_arch = "arm"),
63255 stable(feature = "neon_intrinsics", since = "1.59.0")
63256)]
63257#[cfg_attr(
63258 target_arch = "arm",
63259 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63260)]
63261pub fn vsubhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t {
63262 let c: i32x4 = i32x4::new(16, 16, 16, 16);
63263 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
63264}
63265#[doc = "Subtract returning high narrow"]
63266#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_s64)"]
63267#[inline]
63268#[target_feature(enable = "neon")]
63269#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63270#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
63271#[cfg_attr(
63272 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63273 assert_instr(subhn)
63274)]
63275#[cfg_attr(
63276 not(target_arch = "arm"),
63277 stable(feature = "neon_intrinsics", since = "1.59.0")
63278)]
63279#[cfg_attr(
63280 target_arch = "arm",
63281 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63282)]
63283pub fn vsubhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t {
63284 let c: i64x2 = i64x2::new(32, 32);
63285 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
63286}
63287#[doc = "Subtract returning high narrow"]
63288#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_u16)"]
63289#[inline]
63290#[target_feature(enable = "neon")]
63291#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63292#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
63293#[cfg_attr(
63294 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63295 assert_instr(subhn)
63296)]
63297#[cfg_attr(
63298 not(target_arch = "arm"),
63299 stable(feature = "neon_intrinsics", since = "1.59.0")
63300)]
63301#[cfg_attr(
63302 target_arch = "arm",
63303 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63304)]
63305pub fn vsubhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
63306 let c: u16x8 = u16x8::new(8, 8, 8, 8, 8, 8, 8, 8);
63307 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
63308}
63309#[doc = "Subtract returning high narrow"]
63310#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_u32)"]
63311#[inline]
63312#[target_feature(enable = "neon")]
63313#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63314#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
63315#[cfg_attr(
63316 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63317 assert_instr(subhn)
63318)]
63319#[cfg_attr(
63320 not(target_arch = "arm"),
63321 stable(feature = "neon_intrinsics", since = "1.59.0")
63322)]
63323#[cfg_attr(
63324 target_arch = "arm",
63325 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63326)]
63327pub fn vsubhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
63328 let c: u32x4 = u32x4::new(16, 16, 16, 16);
63329 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
63330}
63331#[doc = "Subtract returning high narrow"]
63332#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_u64)"]
63333#[inline]
63334#[target_feature(enable = "neon")]
63335#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63336#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
63337#[cfg_attr(
63338 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63339 assert_instr(subhn)
63340)]
63341#[cfg_attr(
63342 not(target_arch = "arm"),
63343 stable(feature = "neon_intrinsics", since = "1.59.0")
63344)]
63345#[cfg_attr(
63346 target_arch = "arm",
63347 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63348)]
63349pub fn vsubhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
63350 let c: u64x2 = u64x2::new(32, 32);
63351 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
63352}
63353#[doc = "Signed Subtract Long"]
63354#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_s8)"]
63355#[inline]
63356#[target_feature(enable = "neon")]
63357#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63358#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
63359#[cfg_attr(
63360 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63361 assert_instr(ssubl)
63362)]
63363#[cfg_attr(
63364 not(target_arch = "arm"),
63365 stable(feature = "neon_intrinsics", since = "1.59.0")
63366)]
63367#[cfg_attr(
63368 target_arch = "arm",
63369 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63370)]
63371pub fn vsubl_s8(a: int8x8_t, b: int8x8_t) -> int16x8_t {
63372 unsafe {
63373 let c: int16x8_t = simd_cast(a);
63374 let d: int16x8_t = simd_cast(b);
63375 simd_sub(c, d)
63376 }
63377}
63378#[doc = "Signed Subtract Long"]
63379#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_s16)"]
63380#[inline]
63381#[target_feature(enable = "neon")]
63382#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63383#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
63384#[cfg_attr(
63385 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63386 assert_instr(ssubl)
63387)]
63388#[cfg_attr(
63389 not(target_arch = "arm"),
63390 stable(feature = "neon_intrinsics", since = "1.59.0")
63391)]
63392#[cfg_attr(
63393 target_arch = "arm",
63394 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63395)]
63396pub fn vsubl_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t {
63397 unsafe {
63398 let c: int32x4_t = simd_cast(a);
63399 let d: int32x4_t = simd_cast(b);
63400 simd_sub(c, d)
63401 }
63402}
63403#[doc = "Signed Subtract Long"]
63404#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_s32)"]
63405#[inline]
63406#[target_feature(enable = "neon")]
63407#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63408#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
63409#[cfg_attr(
63410 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63411 assert_instr(ssubl)
63412)]
63413#[cfg_attr(
63414 not(target_arch = "arm"),
63415 stable(feature = "neon_intrinsics", since = "1.59.0")
63416)]
63417#[cfg_attr(
63418 target_arch = "arm",
63419 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63420)]
63421pub fn vsubl_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t {
63422 unsafe {
63423 let c: int64x2_t = simd_cast(a);
63424 let d: int64x2_t = simd_cast(b);
63425 simd_sub(c, d)
63426 }
63427}
63428#[doc = "Unsigned Subtract Long"]
63429#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_u8)"]
63430#[inline]
63431#[target_feature(enable = "neon")]
63432#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63433#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
63434#[cfg_attr(
63435 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63436 assert_instr(usubl)
63437)]
63438#[cfg_attr(
63439 not(target_arch = "arm"),
63440 stable(feature = "neon_intrinsics", since = "1.59.0")
63441)]
63442#[cfg_attr(
63443 target_arch = "arm",
63444 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63445)]
63446pub fn vsubl_u8(a: uint8x8_t, b: uint8x8_t) -> uint16x8_t {
63447 unsafe {
63448 let c: uint16x8_t = simd_cast(a);
63449 let d: uint16x8_t = simd_cast(b);
63450 simd_sub(c, d)
63451 }
63452}
63453#[doc = "Unsigned Subtract Long"]
63454#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_u16)"]
63455#[inline]
63456#[target_feature(enable = "neon")]
63457#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63458#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
63459#[cfg_attr(
63460 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63461 assert_instr(usubl)
63462)]
63463#[cfg_attr(
63464 not(target_arch = "arm"),
63465 stable(feature = "neon_intrinsics", since = "1.59.0")
63466)]
63467#[cfg_attr(
63468 target_arch = "arm",
63469 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63470)]
63471pub fn vsubl_u16(a: uint16x4_t, b: uint16x4_t) -> uint32x4_t {
63472 unsafe {
63473 let c: uint32x4_t = simd_cast(a);
63474 let d: uint32x4_t = simd_cast(b);
63475 simd_sub(c, d)
63476 }
63477}
63478#[doc = "Unsigned Subtract Long"]
63479#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_u32)"]
63480#[inline]
63481#[target_feature(enable = "neon")]
63482#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63483#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
63484#[cfg_attr(
63485 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63486 assert_instr(usubl)
63487)]
63488#[cfg_attr(
63489 not(target_arch = "arm"),
63490 stable(feature = "neon_intrinsics", since = "1.59.0")
63491)]
63492#[cfg_attr(
63493 target_arch = "arm",
63494 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63495)]
63496pub fn vsubl_u32(a: uint32x2_t, b: uint32x2_t) -> uint64x2_t {
63497 unsafe {
63498 let c: uint64x2_t = simd_cast(a);
63499 let d: uint64x2_t = simd_cast(b);
63500 simd_sub(c, d)
63501 }
63502}
63503#[doc = "Signed Subtract Wide"]
63504#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_s8)"]
63505#[inline]
63506#[target_feature(enable = "neon")]
63507#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63508#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
63509#[cfg_attr(
63510 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63511 assert_instr(ssubw)
63512)]
63513#[cfg_attr(
63514 not(target_arch = "arm"),
63515 stable(feature = "neon_intrinsics", since = "1.59.0")
63516)]
63517#[cfg_attr(
63518 target_arch = "arm",
63519 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63520)]
63521pub fn vsubw_s8(a: int16x8_t, b: int8x8_t) -> int16x8_t {
63522 unsafe { simd_sub(a, simd_cast(b)) }
63523}
63524#[doc = "Signed Subtract Wide"]
63525#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_s16)"]
63526#[inline]
63527#[target_feature(enable = "neon")]
63528#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63529#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
63530#[cfg_attr(
63531 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63532 assert_instr(ssubw)
63533)]
63534#[cfg_attr(
63535 not(target_arch = "arm"),
63536 stable(feature = "neon_intrinsics", since = "1.59.0")
63537)]
63538#[cfg_attr(
63539 target_arch = "arm",
63540 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63541)]
63542pub fn vsubw_s16(a: int32x4_t, b: int16x4_t) -> int32x4_t {
63543 unsafe { simd_sub(a, simd_cast(b)) }
63544}
63545#[doc = "Signed Subtract Wide"]
63546#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_s32)"]
63547#[inline]
63548#[target_feature(enable = "neon")]
63549#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63550#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
63551#[cfg_attr(
63552 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63553 assert_instr(ssubw)
63554)]
63555#[cfg_attr(
63556 not(target_arch = "arm"),
63557 stable(feature = "neon_intrinsics", since = "1.59.0")
63558)]
63559#[cfg_attr(
63560 target_arch = "arm",
63561 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63562)]
63563pub fn vsubw_s32(a: int64x2_t, b: int32x2_t) -> int64x2_t {
63564 unsafe { simd_sub(a, simd_cast(b)) }
63565}
63566#[doc = "Unsigned Subtract Wide"]
63567#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_u8)"]
63568#[inline]
63569#[target_feature(enable = "neon")]
63570#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63571#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
63572#[cfg_attr(
63573 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63574 assert_instr(usubw)
63575)]
63576#[cfg_attr(
63577 not(target_arch = "arm"),
63578 stable(feature = "neon_intrinsics", since = "1.59.0")
63579)]
63580#[cfg_attr(
63581 target_arch = "arm",
63582 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63583)]
63584pub fn vsubw_u8(a: uint16x8_t, b: uint8x8_t) -> uint16x8_t {
63585 unsafe { simd_sub(a, simd_cast(b)) }
63586}
63587#[doc = "Unsigned Subtract Wide"]
63588#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_u16)"]
63589#[inline]
63590#[target_feature(enable = "neon")]
63591#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63592#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
63593#[cfg_attr(
63594 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63595 assert_instr(usubw)
63596)]
63597#[cfg_attr(
63598 not(target_arch = "arm"),
63599 stable(feature = "neon_intrinsics", since = "1.59.0")
63600)]
63601#[cfg_attr(
63602 target_arch = "arm",
63603 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63604)]
63605pub fn vsubw_u16(a: uint32x4_t, b: uint16x4_t) -> uint32x4_t {
63606 unsafe { simd_sub(a, simd_cast(b)) }
63607}
63608#[doc = "Unsigned Subtract Wide"]
63609#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_u32)"]
63610#[inline]
63611#[target_feature(enable = "neon")]
63612#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63613#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
63614#[cfg_attr(
63615 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63616 assert_instr(usubw)
63617)]
63618#[cfg_attr(
63619 not(target_arch = "arm"),
63620 stable(feature = "neon_intrinsics", since = "1.59.0")
63621)]
63622#[cfg_attr(
63623 target_arch = "arm",
63624 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63625)]
63626pub fn vsubw_u32(a: uint64x2_t, b: uint32x2_t) -> uint64x2_t {
63627 unsafe { simd_sub(a, simd_cast(b)) }
63628}
63629#[doc = "Dot product index form with signed and unsigned integers"]
63630#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsudot_lane_s32)"]
63631#[inline]
63632#[target_feature(enable = "neon,i8mm")]
63633#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
63634#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsudot, LANE = 0))]
63635#[cfg_attr(
63636 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63637 assert_instr(sudot, LANE = 0)
63638)]
63639#[rustc_legacy_const_generics(3)]
63640#[cfg_attr(
63641 not(target_arch = "arm"),
63642 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
63643)]
63644#[cfg_attr(
63645 target_arch = "arm",
63646 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63647)]
63648pub fn vsudot_lane_s32<const LANE: i32>(a: int32x2_t, b: int8x8_t, c: uint8x8_t) -> int32x2_t {
63649 static_assert_uimm_bits!(LANE, 1);
63650 unsafe {
63651 let c: uint32x2_t = transmute(c);
63652 let c: uint32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
63653 vusdot_s32(a, transmute(c), b)
63654 }
63655}
63656#[doc = "Dot product index form with signed and unsigned integers"]
63657#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsudotq_lane_s32)"]
63658#[inline]
63659#[target_feature(enable = "neon,i8mm")]
63660#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
63661#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsudot, LANE = 0))]
63662#[cfg_attr(
63663 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63664 assert_instr(sudot, LANE = 0)
63665)]
63666#[rustc_legacy_const_generics(3)]
63667#[cfg_attr(
63668 not(target_arch = "arm"),
63669 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
63670)]
63671#[cfg_attr(
63672 target_arch = "arm",
63673 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63674)]
63675pub fn vsudotq_lane_s32<const LANE: i32>(a: int32x4_t, b: int8x16_t, c: uint8x8_t) -> int32x4_t {
63676 static_assert_uimm_bits!(LANE, 1);
63677 unsafe {
63678 let c: uint32x2_t = transmute(c);
63679 let c: uint32x4_t =
63680 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
63681 vusdotq_s32(a, transmute(c), b)
63682 }
63683}
63684#[doc = "Table look-up"]
63685#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1)"]
63686#[inline]
63687#[target_feature(enable = "neon")]
63688#[cfg(target_arch = "arm")]
63689#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63690#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63691#[cfg_attr(test, assert_instr(vtbl))]
63692fn vtbl1(a: int8x8_t, b: int8x8_t) -> int8x8_t {
63693 unsafe extern "unadjusted" {
63694 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbl1")]
63695 fn _vtbl1(a: int8x8_t, b: int8x8_t) -> int8x8_t;
63696 }
63697 unsafe { _vtbl1(a, b) }
63698}
63699#[doc = "Table look-up"]
63700#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_s8)"]
63701#[inline]
63702#[target_feature(enable = "neon")]
63703#[cfg(target_arch = "arm")]
63704#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63705#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63706#[cfg_attr(test, assert_instr(vtbl))]
63707pub fn vtbl1_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
63708 vtbl1(a, b)
63709}
63710#[doc = "Table look-up"]
63711#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_u8)"]
63712#[inline]
63713#[cfg(target_endian = "little")]
63714#[target_feature(enable = "neon")]
63715#[cfg(target_arch = "arm")]
63716#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63717#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63718#[cfg_attr(test, assert_instr(vtbl))]
63719pub fn vtbl1_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
63720 unsafe { transmute(vtbl1(transmute(a), transmute(b))) }
63721}
63722#[doc = "Table look-up"]
63723#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_u8)"]
63724#[inline]
63725#[cfg(target_endian = "big")]
63726#[target_feature(enable = "neon")]
63727#[cfg(target_arch = "arm")]
63728#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63729#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63730#[cfg_attr(test, assert_instr(vtbl))]
63731pub fn vtbl1_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
63732 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
63733 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
63734 unsafe {
63735 let ret_val: uint8x8_t = transmute(vtbl1(transmute(a), transmute(b)));
63736 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
63737 }
63738}
63739#[doc = "Table look-up"]
63740#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_p8)"]
63741#[inline]
63742#[cfg(target_endian = "little")]
63743#[target_feature(enable = "neon")]
63744#[cfg(target_arch = "arm")]
63745#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63746#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63747#[cfg_attr(test, assert_instr(vtbl))]
63748pub fn vtbl1_p8(a: poly8x8_t, b: uint8x8_t) -> poly8x8_t {
63749 unsafe { transmute(vtbl1(transmute(a), transmute(b))) }
63750}
63751#[doc = "Table look-up"]
63752#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_p8)"]
63753#[inline]
63754#[cfg(target_endian = "big")]
63755#[target_feature(enable = "neon")]
63756#[cfg(target_arch = "arm")]
63757#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63758#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63759#[cfg_attr(test, assert_instr(vtbl))]
63760pub fn vtbl1_p8(a: poly8x8_t, b: uint8x8_t) -> poly8x8_t {
63761 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
63762 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
63763 unsafe {
63764 let ret_val: poly8x8_t = transmute(vtbl1(transmute(a), transmute(b)));
63765 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
63766 }
63767}
63768#[doc = "Table look-up"]
63769#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2)"]
63770#[inline]
63771#[target_feature(enable = "neon")]
63772#[cfg(target_arch = "arm")]
63773#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63774#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63775#[cfg_attr(test, assert_instr(vtbl))]
63776fn vtbl2(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
63777 unsafe extern "unadjusted" {
63778 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbl2")]
63779 fn _vtbl2(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t;
63780 }
63781 unsafe { _vtbl2(a, b, c) }
63782}
63783#[doc = "Table look-up"]
63784#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_s8)"]
63785#[inline]
63786#[target_feature(enable = "neon")]
63787#[cfg(target_arch = "arm")]
63788#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63789#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63790#[cfg_attr(test, assert_instr(vtbl))]
63791pub fn vtbl2_s8(a: int8x8x2_t, b: int8x8_t) -> int8x8_t {
63792 vtbl2(a.0, a.1, b)
63793}
63794#[doc = "Table look-up"]
63795#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_u8)"]
63796#[inline]
63797#[cfg(target_endian = "little")]
63798#[target_feature(enable = "neon")]
63799#[cfg(target_arch = "arm")]
63800#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63801#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63802#[cfg_attr(test, assert_instr(vtbl))]
63803pub fn vtbl2_u8(a: uint8x8x2_t, b: uint8x8_t) -> uint8x8_t {
63804 unsafe { transmute(vtbl2(transmute(a.0), transmute(a.1), transmute(b))) }
63805}
63806#[doc = "Table look-up"]
63807#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_u8)"]
63808#[inline]
63809#[cfg(target_endian = "big")]
63810#[target_feature(enable = "neon")]
63811#[cfg(target_arch = "arm")]
63812#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63813#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63814#[cfg_attr(test, assert_instr(vtbl))]
63815pub fn vtbl2_u8(a: uint8x8x2_t, b: uint8x8_t) -> uint8x8_t {
63816 let mut a: uint8x8x2_t = a;
63817 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
63818 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
63819 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
63820 unsafe {
63821 let ret_val: uint8x8_t = transmute(vtbl2(transmute(a.0), transmute(a.1), transmute(b)));
63822 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
63823 }
63824}
63825#[doc = "Table look-up"]
63826#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_p8)"]
63827#[inline]
63828#[cfg(target_endian = "little")]
63829#[target_feature(enable = "neon")]
63830#[cfg(target_arch = "arm")]
63831#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63832#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63833#[cfg_attr(test, assert_instr(vtbl))]
63834pub fn vtbl2_p8(a: poly8x8x2_t, b: uint8x8_t) -> poly8x8_t {
63835 unsafe { transmute(vtbl2(transmute(a.0), transmute(a.1), transmute(b))) }
63836}
63837#[doc = "Table look-up"]
63838#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_p8)"]
63839#[inline]
63840#[cfg(target_endian = "big")]
63841#[target_feature(enable = "neon")]
63842#[cfg(target_arch = "arm")]
63843#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63844#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63845#[cfg_attr(test, assert_instr(vtbl))]
63846pub fn vtbl2_p8(a: poly8x8x2_t, b: uint8x8_t) -> poly8x8_t {
63847 let mut a: poly8x8x2_t = a;
63848 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
63849 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
63850 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
63851 unsafe {
63852 let ret_val: poly8x8_t = transmute(vtbl2(transmute(a.0), transmute(a.1), transmute(b)));
63853 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
63854 }
63855}
63856#[doc = "Table look-up"]
63857#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3)"]
63858#[inline]
63859#[target_feature(enable = "neon")]
63860#[cfg(target_arch = "arm")]
63861#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63862#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63863#[cfg_attr(test, assert_instr(vtbl))]
63864fn vtbl3(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t) -> int8x8_t {
63865 unsafe extern "unadjusted" {
63866 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbl3")]
63867 fn _vtbl3(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t) -> int8x8_t;
63868 }
63869 unsafe { _vtbl3(a, b, c, d) }
63870}
63871#[doc = "Table look-up"]
63872#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_s8)"]
63873#[inline]
63874#[target_feature(enable = "neon")]
63875#[cfg(target_arch = "arm")]
63876#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63877#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63878#[cfg_attr(test, assert_instr(vtbl))]
63879pub fn vtbl3_s8(a: int8x8x3_t, b: int8x8_t) -> int8x8_t {
63880 vtbl3(a.0, a.1, a.2, b)
63881}
63882#[doc = "Table look-up"]
63883#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_u8)"]
63884#[inline]
63885#[cfg(target_endian = "little")]
63886#[target_feature(enable = "neon")]
63887#[cfg(target_arch = "arm")]
63888#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63889#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63890#[cfg_attr(test, assert_instr(vtbl))]
63891pub fn vtbl3_u8(a: uint8x8x3_t, b: uint8x8_t) -> uint8x8_t {
63892 unsafe {
63893 transmute(vtbl3(
63894 transmute(a.0),
63895 transmute(a.1),
63896 transmute(a.2),
63897 transmute(b),
63898 ))
63899 }
63900}
63901#[doc = "Table look-up"]
63902#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_u8)"]
63903#[inline]
63904#[cfg(target_endian = "big")]
63905#[target_feature(enable = "neon")]
63906#[cfg(target_arch = "arm")]
63907#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63908#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63909#[cfg_attr(test, assert_instr(vtbl))]
63910pub fn vtbl3_u8(a: uint8x8x3_t, b: uint8x8_t) -> uint8x8_t {
63911 let mut a: uint8x8x3_t = a;
63912 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
63913 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
63914 a.2 = unsafe { simd_shuffle!(a.2, a.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
63915 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
63916 unsafe {
63917 let ret_val: uint8x8_t = transmute(vtbl3(
63918 transmute(a.0),
63919 transmute(a.1),
63920 transmute(a.2),
63921 transmute(b),
63922 ));
63923 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
63924 }
63925}
63926#[doc = "Table look-up"]
63927#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_p8)"]
63928#[inline]
63929#[cfg(target_endian = "little")]
63930#[target_feature(enable = "neon")]
63931#[cfg(target_arch = "arm")]
63932#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63933#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63934#[cfg_attr(test, assert_instr(vtbl))]
63935pub fn vtbl3_p8(a: poly8x8x3_t, b: uint8x8_t) -> poly8x8_t {
63936 unsafe {
63937 transmute(vtbl3(
63938 transmute(a.0),
63939 transmute(a.1),
63940 transmute(a.2),
63941 transmute(b),
63942 ))
63943 }
63944}
63945#[doc = "Table look-up"]
63946#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_p8)"]
63947#[inline]
63948#[cfg(target_endian = "big")]
63949#[target_feature(enable = "neon")]
63950#[cfg(target_arch = "arm")]
63951#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63952#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63953#[cfg_attr(test, assert_instr(vtbl))]
63954pub fn vtbl3_p8(a: poly8x8x3_t, b: uint8x8_t) -> poly8x8_t {
63955 let mut a: poly8x8x3_t = a;
63956 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
63957 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
63958 a.2 = unsafe { simd_shuffle!(a.2, a.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
63959 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
63960 unsafe {
63961 let ret_val: poly8x8_t = transmute(vtbl3(
63962 transmute(a.0),
63963 transmute(a.1),
63964 transmute(a.2),
63965 transmute(b),
63966 ));
63967 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
63968 }
63969}
63970#[doc = "Table look-up"]
63971#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4)"]
63972#[inline]
63973#[target_feature(enable = "neon")]
63974#[cfg(target_arch = "arm")]
63975#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63976#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63977#[cfg_attr(test, assert_instr(vtbl))]
63978fn vtbl4(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t) -> int8x8_t {
63979 unsafe extern "unadjusted" {
63980 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbl4")]
63981 fn _vtbl4(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t) -> int8x8_t;
63982 }
63983 unsafe { _vtbl4(a, b, c, d, e) }
63984}
63985#[doc = "Table look-up"]
63986#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_s8)"]
63987#[inline]
63988#[target_feature(enable = "neon")]
63989#[cfg(target_arch = "arm")]
63990#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63991#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63992#[cfg_attr(test, assert_instr(vtbl))]
63993pub fn vtbl4_s8(a: int8x8x4_t, b: int8x8_t) -> int8x8_t {
63994 vtbl4(a.0, a.1, a.2, a.3, b)
63995}
63996#[doc = "Table look-up"]
63997#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_u8)"]
63998#[inline]
63999#[cfg(target_endian = "little")]
64000#[target_feature(enable = "neon")]
64001#[cfg(target_arch = "arm")]
64002#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64003#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64004#[cfg_attr(test, assert_instr(vtbl))]
64005pub fn vtbl4_u8(a: uint8x8x4_t, b: uint8x8_t) -> uint8x8_t {
64006 unsafe {
64007 transmute(vtbl4(
64008 transmute(a.0),
64009 transmute(a.1),
64010 transmute(a.2),
64011 transmute(a.3),
64012 transmute(b),
64013 ))
64014 }
64015}
64016#[doc = "Table look-up"]
64017#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_u8)"]
64018#[inline]
64019#[cfg(target_endian = "big")]
64020#[target_feature(enable = "neon")]
64021#[cfg(target_arch = "arm")]
64022#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64023#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64024#[cfg_attr(test, assert_instr(vtbl))]
64025pub fn vtbl4_u8(a: uint8x8x4_t, b: uint8x8_t) -> uint8x8_t {
64026 let mut a: uint8x8x4_t = a;
64027 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
64028 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
64029 a.2 = unsafe { simd_shuffle!(a.2, a.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
64030 a.3 = unsafe { simd_shuffle!(a.3, a.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
64031 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
64032 unsafe {
64033 let ret_val: uint8x8_t = transmute(vtbl4(
64034 transmute(a.0),
64035 transmute(a.1),
64036 transmute(a.2),
64037 transmute(a.3),
64038 transmute(b),
64039 ));
64040 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
64041 }
64042}
64043#[doc = "Table look-up"]
64044#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_p8)"]
64045#[inline]
64046#[cfg(target_endian = "little")]
64047#[target_feature(enable = "neon")]
64048#[cfg(target_arch = "arm")]
64049#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64050#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64051#[cfg_attr(test, assert_instr(vtbl))]
64052pub fn vtbl4_p8(a: poly8x8x4_t, b: uint8x8_t) -> poly8x8_t {
64053 unsafe {
64054 transmute(vtbl4(
64055 transmute(a.0),
64056 transmute(a.1),
64057 transmute(a.2),
64058 transmute(a.3),
64059 transmute(b),
64060 ))
64061 }
64062}
64063#[doc = "Table look-up"]
64064#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_p8)"]
64065#[inline]
64066#[cfg(target_endian = "big")]
64067#[target_feature(enable = "neon")]
64068#[cfg(target_arch = "arm")]
64069#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64070#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64071#[cfg_attr(test, assert_instr(vtbl))]
64072pub fn vtbl4_p8(a: poly8x8x4_t, b: uint8x8_t) -> poly8x8_t {
64073 let mut a: poly8x8x4_t = a;
64074 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
64075 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
64076 a.2 = unsafe { simd_shuffle!(a.2, a.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
64077 a.3 = unsafe { simd_shuffle!(a.3, a.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
64078 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
64079 unsafe {
64080 let ret_val: poly8x8_t = transmute(vtbl4(
64081 transmute(a.0),
64082 transmute(a.1),
64083 transmute(a.2),
64084 transmute(a.3),
64085 transmute(b),
64086 ));
64087 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
64088 }
64089}
64090#[doc = "Extended table look-up"]
64091#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1)"]
64092#[inline]
64093#[target_feature(enable = "neon,v7")]
64094#[cfg(target_arch = "arm")]
64095#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64096#[cfg_attr(test, assert_instr(vtbx))]
64097fn vtbx1(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
64098 unsafe extern "unadjusted" {
64099 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbx1")]
64100 fn _vtbx1(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t;
64101 }
64102 unsafe { _vtbx1(a, b, c) }
64103}
64104#[doc = "Extended table look-up"]
64105#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_s8)"]
64106#[inline]
64107#[target_feature(enable = "neon,v7")]
64108#[cfg(target_arch = "arm")]
64109#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64110#[cfg_attr(test, assert_instr(vtbx))]
64111pub fn vtbx1_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
64112 vtbx1(a, b, c)
64113}
64114#[doc = "Extended table look-up"]
64115#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_u8)"]
64116#[inline]
64117#[cfg(target_endian = "little")]
64118#[target_feature(enable = "neon,v7")]
64119#[cfg(target_arch = "arm")]
64120#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64121#[cfg_attr(test, assert_instr(vtbx))]
64122pub fn vtbx1_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
64123 unsafe { transmute(vtbx1(transmute(a), transmute(b), transmute(c))) }
64124}
64125#[doc = "Extended table look-up"]
64126#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_u8)"]
64127#[inline]
64128#[cfg(target_endian = "big")]
64129#[target_feature(enable = "neon,v7")]
64130#[cfg(target_arch = "arm")]
64131#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64132#[cfg_attr(test, assert_instr(vtbx))]
64133pub fn vtbx1_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
64134 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
64135 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
64136 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
64137 unsafe {
64138 let ret_val: uint8x8_t = transmute(vtbx1(transmute(a), transmute(b), transmute(c)));
64139 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
64140 }
64141}
64142#[doc = "Extended table look-up"]
64143#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_p8)"]
64144#[inline]
64145#[cfg(target_endian = "little")]
64146#[target_feature(enable = "neon,v7")]
64147#[cfg(target_arch = "arm")]
64148#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64149#[cfg_attr(test, assert_instr(vtbx))]
64150pub fn vtbx1_p8(a: poly8x8_t, b: poly8x8_t, c: uint8x8_t) -> poly8x8_t {
64151 unsafe { transmute(vtbx1(transmute(a), transmute(b), transmute(c))) }
64152}
64153#[doc = "Extended table look-up"]
64154#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_p8)"]
64155#[inline]
64156#[cfg(target_endian = "big")]
64157#[target_feature(enable = "neon,v7")]
64158#[cfg(target_arch = "arm")]
64159#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64160#[cfg_attr(test, assert_instr(vtbx))]
64161pub fn vtbx1_p8(a: poly8x8_t, b: poly8x8_t, c: uint8x8_t) -> poly8x8_t {
64162 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
64163 let b: poly8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
64164 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
64165 unsafe {
64166 let ret_val: poly8x8_t = transmute(vtbx1(transmute(a), transmute(b), transmute(c)));
64167 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
64168 }
64169}
64170#[doc = "Extended table look-up"]
64171#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2)"]
64172#[inline]
64173#[target_feature(enable = "neon,v7")]
64174#[cfg(target_arch = "arm")]
64175#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64176#[cfg_attr(test, assert_instr(vtbx))]
64177fn vtbx2(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t) -> int8x8_t {
64178 unsafe extern "unadjusted" {
64179 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbx2")]
64180 fn _vtbx2(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t) -> int8x8_t;
64181 }
64182 unsafe { _vtbx2(a, b, c, d) }
64183}
64184#[doc = "Extended table look-up"]
64185#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_s8)"]
64186#[inline]
64187#[target_feature(enable = "neon,v7")]
64188#[cfg(target_arch = "arm")]
64189#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64190#[cfg_attr(test, assert_instr(vtbx))]
64191pub fn vtbx2_s8(a: int8x8_t, b: int8x8x2_t, c: int8x8_t) -> int8x8_t {
64192 vtbx2(a, b.0, b.1, c)
64193}
64194#[doc = "Extended table look-up"]
64195#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_u8)"]
64196#[inline]
64197#[cfg(target_endian = "little")]
64198#[target_feature(enable = "neon,v7")]
64199#[cfg(target_arch = "arm")]
64200#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64201#[cfg_attr(test, assert_instr(vtbx))]
64202pub fn vtbx2_u8(a: uint8x8_t, b: uint8x8x2_t, c: uint8x8_t) -> uint8x8_t {
64203 unsafe {
64204 transmute(vtbx2(
64205 transmute(a),
64206 transmute(b.0),
64207 transmute(b.1),
64208 transmute(c),
64209 ))
64210 }
64211}
64212#[doc = "Extended table look-up"]
64213#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_u8)"]
64214#[inline]
64215#[cfg(target_endian = "big")]
64216#[target_feature(enable = "neon,v7")]
64217#[cfg(target_arch = "arm")]
64218#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64219#[cfg_attr(test, assert_instr(vtbx))]
64220pub fn vtbx2_u8(a: uint8x8_t, b: uint8x8x2_t, c: uint8x8_t) -> uint8x8_t {
64221 let mut b: uint8x8x2_t = b;
64222 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
64223 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
64224 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
64225 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
64226 unsafe {
64227 let ret_val: uint8x8_t = transmute(vtbx2(
64228 transmute(a),
64229 transmute(b.0),
64230 transmute(b.1),
64231 transmute(c),
64232 ));
64233 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
64234 }
64235}
64236#[doc = "Extended table look-up"]
64237#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_p8)"]
64238#[inline]
64239#[cfg(target_endian = "little")]
64240#[target_feature(enable = "neon,v7")]
64241#[cfg(target_arch = "arm")]
64242#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64243#[cfg_attr(test, assert_instr(vtbx))]
64244pub fn vtbx2_p8(a: poly8x8_t, b: poly8x8x2_t, c: uint8x8_t) -> poly8x8_t {
64245 unsafe {
64246 transmute(vtbx2(
64247 transmute(a),
64248 transmute(b.0),
64249 transmute(b.1),
64250 transmute(c),
64251 ))
64252 }
64253}
64254#[doc = "Extended table look-up"]
64255#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_p8)"]
64256#[inline]
64257#[cfg(target_endian = "big")]
64258#[target_feature(enable = "neon,v7")]
64259#[cfg(target_arch = "arm")]
64260#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64261#[cfg_attr(test, assert_instr(vtbx))]
64262pub fn vtbx2_p8(a: poly8x8_t, b: poly8x8x2_t, c: uint8x8_t) -> poly8x8_t {
64263 let mut b: poly8x8x2_t = b;
64264 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
64265 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
64266 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
64267 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
64268 unsafe {
64269 let ret_val: poly8x8_t = transmute(vtbx2(
64270 transmute(a),
64271 transmute(b.0),
64272 transmute(b.1),
64273 transmute(c),
64274 ));
64275 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
64276 }
64277}
64278#[doc = "Extended table look-up"]
64279#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3)"]
64280#[inline]
64281#[target_feature(enable = "neon,v7")]
64282#[cfg(target_arch = "arm")]
64283#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64284#[cfg_attr(test, assert_instr(vtbx))]
64285fn vtbx3(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t) -> int8x8_t {
64286 unsafe extern "unadjusted" {
64287 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbx3")]
64288 fn _vtbx3(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t) -> int8x8_t;
64289 }
64290 unsafe { _vtbx3(a, b, c, d, e) }
64291}
64292#[doc = "Extended table look-up"]
64293#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_s8)"]
64294#[inline]
64295#[target_feature(enable = "neon,v7")]
64296#[cfg(target_arch = "arm")]
64297#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64298#[cfg_attr(test, assert_instr(vtbx))]
64299pub fn vtbx3_s8(a: int8x8_t, b: int8x8x3_t, c: int8x8_t) -> int8x8_t {
64300 vtbx3(a, b.0, b.1, b.2, c)
64301}
64302#[doc = "Extended table look-up"]
64303#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_u8)"]
64304#[inline]
64305#[cfg(target_endian = "little")]
64306#[target_feature(enable = "neon,v7")]
64307#[cfg(target_arch = "arm")]
64308#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64309#[cfg_attr(test, assert_instr(vtbx))]
64310pub fn vtbx3_u8(a: uint8x8_t, b: uint8x8x3_t, c: uint8x8_t) -> uint8x8_t {
64311 unsafe {
64312 transmute(vtbx3(
64313 transmute(a),
64314 transmute(b.0),
64315 transmute(b.1),
64316 transmute(b.2),
64317 transmute(c),
64318 ))
64319 }
64320}
64321#[doc = "Extended table look-up"]
64322#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_u8)"]
64323#[inline]
64324#[cfg(target_endian = "big")]
64325#[target_feature(enable = "neon,v7")]
64326#[cfg(target_arch = "arm")]
64327#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64328#[cfg_attr(test, assert_instr(vtbx))]
64329pub fn vtbx3_u8(a: uint8x8_t, b: uint8x8x3_t, c: uint8x8_t) -> uint8x8_t {
64330 let mut b: uint8x8x3_t = b;
64331 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
64332 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
64333 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
64334 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
64335 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
64336 unsafe {
64337 let ret_val: uint8x8_t = transmute(vtbx3(
64338 transmute(a),
64339 transmute(b.0),
64340 transmute(b.1),
64341 transmute(b.2),
64342 transmute(c),
64343 ));
64344 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
64345 }
64346}
64347#[doc = "Extended table look-up"]
64348#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_p8)"]
64349#[inline]
64350#[cfg(target_endian = "little")]
64351#[target_feature(enable = "neon,v7")]
64352#[cfg(target_arch = "arm")]
64353#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64354#[cfg_attr(test, assert_instr(vtbx))]
64355pub fn vtbx3_p8(a: poly8x8_t, b: poly8x8x3_t, c: uint8x8_t) -> poly8x8_t {
64356 unsafe {
64357 transmute(vtbx3(
64358 transmute(a),
64359 transmute(b.0),
64360 transmute(b.1),
64361 transmute(b.2),
64362 transmute(c),
64363 ))
64364 }
64365}
64366#[doc = "Extended table look-up"]
64367#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_p8)"]
64368#[inline]
64369#[cfg(target_endian = "big")]
64370#[target_feature(enable = "neon,v7")]
64371#[cfg(target_arch = "arm")]
64372#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64373#[cfg_attr(test, assert_instr(vtbx))]
64374pub fn vtbx3_p8(a: poly8x8_t, b: poly8x8x3_t, c: uint8x8_t) -> poly8x8_t {
64375 let mut b: poly8x8x3_t = b;
64376 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
64377 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
64378 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
64379 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
64380 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
64381 unsafe {
64382 let ret_val: poly8x8_t = transmute(vtbx3(
64383 transmute(a),
64384 transmute(b.0),
64385 transmute(b.1),
64386 transmute(b.2),
64387 transmute(c),
64388 ));
64389 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
64390 }
64391}
64392#[doc = "Extended table look-up"]
64393#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4)"]
64394#[inline]
64395#[target_feature(enable = "neon,v7")]
64396#[cfg(target_arch = "arm")]
64397#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64398#[cfg_attr(test, assert_instr(vtbx))]
64399fn vtbx4(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t, f: int8x8_t) -> int8x8_t {
64400 unsafe extern "unadjusted" {
64401 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbx4")]
64402 fn _vtbx4(
64403 a: int8x8_t,
64404 b: int8x8_t,
64405 c: int8x8_t,
64406 d: int8x8_t,
64407 e: int8x8_t,
64408 f: int8x8_t,
64409 ) -> int8x8_t;
64410 }
64411 unsafe { _vtbx4(a, b, c, d, e, f) }
64412}
64413#[doc = "Extended table look-up"]
64414#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_s8)"]
64415#[inline]
64416#[cfg(target_endian = "little")]
64417#[target_feature(enable = "neon,v7")]
64418#[cfg(target_arch = "arm")]
64419#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64420#[cfg_attr(test, assert_instr(vtbx))]
64421pub fn vtbx4_s8(a: int8x8_t, b: int8x8x4_t, c: int8x8_t) -> int8x8_t {
64422 unsafe {
64423 vtbx4(
64424 a,
64425 transmute(b.0),
64426 transmute(b.1),
64427 transmute(b.2),
64428 transmute(b.3),
64429 c,
64430 )
64431 }
64432}
64433#[doc = "Extended table look-up"]
64434#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_s8)"]
64435#[inline]
64436#[cfg(target_endian = "big")]
64437#[target_feature(enable = "neon,v7")]
64438#[cfg(target_arch = "arm")]
64439#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64440#[cfg_attr(test, assert_instr(vtbx))]
64441pub fn vtbx4_s8(a: int8x8_t, b: int8x8x4_t, c: int8x8_t) -> int8x8_t {
64442 let mut b: int8x8x4_t = b;
64443 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
64444 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
64445 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
64446 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
64447 b.3 = unsafe { simd_shuffle!(b.3, b.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
64448 let c: int8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
64449 unsafe {
64450 let ret_val: int8x8_t = vtbx4(
64451 a,
64452 transmute(b.0),
64453 transmute(b.1),
64454 transmute(b.2),
64455 transmute(b.3),
64456 c,
64457 );
64458 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
64459 }
64460}
64461#[doc = "Extended table look-up"]
64462#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_u8)"]
64463#[inline]
64464#[cfg(target_endian = "little")]
64465#[target_feature(enable = "neon,v7")]
64466#[cfg(target_arch = "arm")]
64467#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64468#[cfg_attr(test, assert_instr(vtbx))]
64469pub fn vtbx4_u8(a: uint8x8_t, b: uint8x8x4_t, c: uint8x8_t) -> uint8x8_t {
64470 unsafe {
64471 transmute(vtbx4(
64472 transmute(a),
64473 transmute(b.0),
64474 transmute(b.1),
64475 transmute(b.2),
64476 transmute(b.3),
64477 transmute(c),
64478 ))
64479 }
64480}
64481#[doc = "Extended table look-up"]
64482#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_u8)"]
64483#[inline]
64484#[cfg(target_endian = "big")]
64485#[target_feature(enable = "neon,v7")]
64486#[cfg(target_arch = "arm")]
64487#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64488#[cfg_attr(test, assert_instr(vtbx))]
64489pub fn vtbx4_u8(a: uint8x8_t, b: uint8x8x4_t, c: uint8x8_t) -> uint8x8_t {
64490 let mut b: uint8x8x4_t = b;
64491 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
64492 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
64493 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
64494 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
64495 b.3 = unsafe { simd_shuffle!(b.3, b.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
64496 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
64497 unsafe {
64498 let ret_val: uint8x8_t = transmute(vtbx4(
64499 transmute(a),
64500 transmute(b.0),
64501 transmute(b.1),
64502 transmute(b.2),
64503 transmute(b.3),
64504 transmute(c),
64505 ));
64506 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
64507 }
64508}
64509#[doc = "Extended table look-up"]
64510#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_p8)"]
64511#[inline]
64512#[cfg(target_endian = "little")]
64513#[target_feature(enable = "neon,v7")]
64514#[cfg(target_arch = "arm")]
64515#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64516#[cfg_attr(test, assert_instr(vtbx))]
64517pub fn vtbx4_p8(a: poly8x8_t, b: poly8x8x4_t, c: uint8x8_t) -> poly8x8_t {
64518 unsafe {
64519 transmute(vtbx4(
64520 transmute(a),
64521 transmute(b.0),
64522 transmute(b.1),
64523 transmute(b.2),
64524 transmute(b.3),
64525 transmute(c),
64526 ))
64527 }
64528}
64529#[doc = "Extended table look-up"]
64530#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_p8)"]
64531#[inline]
64532#[cfg(target_endian = "big")]
64533#[target_feature(enable = "neon,v7")]
64534#[cfg(target_arch = "arm")]
64535#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64536#[cfg_attr(test, assert_instr(vtbx))]
64537pub fn vtbx4_p8(a: poly8x8_t, b: poly8x8x4_t, c: uint8x8_t) -> poly8x8_t {
64538 let mut b: poly8x8x4_t = b;
64539 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
64540 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
64541 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
64542 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
64543 b.3 = unsafe { simd_shuffle!(b.3, b.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
64544 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
64545 unsafe {
64546 let ret_val: poly8x8_t = transmute(vtbx4(
64547 transmute(a),
64548 transmute(b.0),
64549 transmute(b.1),
64550 transmute(b.2),
64551 transmute(b.3),
64552 transmute(c),
64553 ));
64554 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
64555 }
64556}
64557#[doc = "Transpose elements"]
64558#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_f16)"]
64559#[inline]
64560#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64561#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
64562#[cfg_attr(
64563 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64564 assert_instr(trn1)
64565)]
64566#[cfg_attr(
64567 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64568 assert_instr(trn2)
64569)]
64570#[target_feature(enable = "neon,fp16")]
64571#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
64572#[cfg(not(target_arch = "arm64ec"))]
64573pub fn vtrn_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {
64574 unsafe {
64575 let a1: float16x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
64576 let b1: float16x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
64577 transmute((a1, b1))
64578 }
64579}
64580#[doc = "Transpose elements"]
64581#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_f16)"]
64582#[inline]
64583#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64584#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
64585#[cfg_attr(
64586 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64587 assert_instr(trn1)
64588)]
64589#[cfg_attr(
64590 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64591 assert_instr(trn2)
64592)]
64593#[target_feature(enable = "neon,fp16")]
64594#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
64595#[cfg(not(target_arch = "arm64ec"))]
64596pub fn vtrnq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {
64597 unsafe {
64598 let a1: float16x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
64599 let b1: float16x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
64600 transmute((a1, b1))
64601 }
64602}
64603#[doc = "Transpose elements"]
64604#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_f32)"]
64605#[inline]
64606#[target_feature(enable = "neon")]
64607#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64608#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
64609#[cfg_attr(
64610 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64611 assert_instr(zip1)
64612)]
64613#[cfg_attr(
64614 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64615 assert_instr(zip2)
64616)]
64617#[cfg_attr(
64618 not(target_arch = "arm"),
64619 stable(feature = "neon_intrinsics", since = "1.59.0")
64620)]
64621#[cfg_attr(
64622 target_arch = "arm",
64623 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64624)]
64625pub fn vtrn_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {
64626 unsafe {
64627 let a1: float32x2_t = simd_shuffle!(a, b, [0, 2]);
64628 let b1: float32x2_t = simd_shuffle!(a, b, [1, 3]);
64629 transmute((a1, b1))
64630 }
64631}
64632#[doc = "Transpose elements"]
64633#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_s32)"]
64634#[inline]
64635#[target_feature(enable = "neon")]
64636#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64637#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
64638#[cfg_attr(
64639 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64640 assert_instr(zip1)
64641)]
64642#[cfg_attr(
64643 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64644 assert_instr(zip2)
64645)]
64646#[cfg_attr(
64647 not(target_arch = "arm"),
64648 stable(feature = "neon_intrinsics", since = "1.59.0")
64649)]
64650#[cfg_attr(
64651 target_arch = "arm",
64652 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64653)]
64654pub fn vtrn_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {
64655 unsafe {
64656 let a1: int32x2_t = simd_shuffle!(a, b, [0, 2]);
64657 let b1: int32x2_t = simd_shuffle!(a, b, [1, 3]);
64658 transmute((a1, b1))
64659 }
64660}
64661#[doc = "Transpose elements"]
64662#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_u32)"]
64663#[inline]
64664#[target_feature(enable = "neon")]
64665#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64666#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
64667#[cfg_attr(
64668 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64669 assert_instr(zip1)
64670)]
64671#[cfg_attr(
64672 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64673 assert_instr(zip2)
64674)]
64675#[cfg_attr(
64676 not(target_arch = "arm"),
64677 stable(feature = "neon_intrinsics", since = "1.59.0")
64678)]
64679#[cfg_attr(
64680 target_arch = "arm",
64681 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64682)]
64683pub fn vtrn_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {
64684 unsafe {
64685 let a1: uint32x2_t = simd_shuffle!(a, b, [0, 2]);
64686 let b1: uint32x2_t = simd_shuffle!(a, b, [1, 3]);
64687 transmute((a1, b1))
64688 }
64689}
64690#[doc = "Transpose elements"]
64691#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_f32)"]
64692#[inline]
64693#[target_feature(enable = "neon")]
64694#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64695#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
64696#[cfg_attr(
64697 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64698 assert_instr(trn1)
64699)]
64700#[cfg_attr(
64701 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64702 assert_instr(trn2)
64703)]
64704#[cfg_attr(
64705 not(target_arch = "arm"),
64706 stable(feature = "neon_intrinsics", since = "1.59.0")
64707)]
64708#[cfg_attr(
64709 target_arch = "arm",
64710 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64711)]
64712pub fn vtrnq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
64713 unsafe {
64714 let a1: float32x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
64715 let b1: float32x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
64716 transmute((a1, b1))
64717 }
64718}
64719#[doc = "Transpose elements"]
64720#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_s8)"]
64721#[inline]
64722#[target_feature(enable = "neon")]
64723#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64724#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
64725#[cfg_attr(
64726 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64727 assert_instr(trn1)
64728)]
64729#[cfg_attr(
64730 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64731 assert_instr(trn2)
64732)]
64733#[cfg_attr(
64734 not(target_arch = "arm"),
64735 stable(feature = "neon_intrinsics", since = "1.59.0")
64736)]
64737#[cfg_attr(
64738 target_arch = "arm",
64739 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64740)]
64741pub fn vtrn_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {
64742 unsafe {
64743 let a1: int8x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
64744 let b1: int8x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
64745 transmute((a1, b1))
64746 }
64747}
64748#[doc = "Transpose elements"]
64749#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_s8)"]
64750#[inline]
64751#[target_feature(enable = "neon")]
64752#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64753#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
64754#[cfg_attr(
64755 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64756 assert_instr(trn1)
64757)]
64758#[cfg_attr(
64759 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64760 assert_instr(trn2)
64761)]
64762#[cfg_attr(
64763 not(target_arch = "arm"),
64764 stable(feature = "neon_intrinsics", since = "1.59.0")
64765)]
64766#[cfg_attr(
64767 target_arch = "arm",
64768 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64769)]
64770pub fn vtrnq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
64771 unsafe {
64772 let a1: int8x16_t = simd_shuffle!(
64773 a,
64774 b,
64775 [0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30]
64776 );
64777 let b1: int8x16_t = simd_shuffle!(
64778 a,
64779 b,
64780 [1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31]
64781 );
64782 transmute((a1, b1))
64783 }
64784}
64785#[doc = "Transpose elements"]
64786#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_s16)"]
64787#[inline]
64788#[target_feature(enable = "neon")]
64789#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64790#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
64791#[cfg_attr(
64792 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64793 assert_instr(trn1)
64794)]
64795#[cfg_attr(
64796 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64797 assert_instr(trn2)
64798)]
64799#[cfg_attr(
64800 not(target_arch = "arm"),
64801 stable(feature = "neon_intrinsics", since = "1.59.0")
64802)]
64803#[cfg_attr(
64804 target_arch = "arm",
64805 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64806)]
64807pub fn vtrn_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {
64808 unsafe {
64809 let a1: int16x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
64810 let b1: int16x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
64811 transmute((a1, b1))
64812 }
64813}
64814#[doc = "Transpose elements"]
64815#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_s16)"]
64816#[inline]
64817#[target_feature(enable = "neon")]
64818#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64819#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
64820#[cfg_attr(
64821 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64822 assert_instr(trn1)
64823)]
64824#[cfg_attr(
64825 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64826 assert_instr(trn2)
64827)]
64828#[cfg_attr(
64829 not(target_arch = "arm"),
64830 stable(feature = "neon_intrinsics", since = "1.59.0")
64831)]
64832#[cfg_attr(
64833 target_arch = "arm",
64834 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64835)]
64836pub fn vtrnq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
64837 unsafe {
64838 let a1: int16x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
64839 let b1: int16x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
64840 transmute((a1, b1))
64841 }
64842}
64843#[doc = "Transpose elements"]
64844#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_s32)"]
64845#[inline]
64846#[target_feature(enable = "neon")]
64847#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64848#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
64849#[cfg_attr(
64850 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64851 assert_instr(trn1)
64852)]
64853#[cfg_attr(
64854 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64855 assert_instr(trn2)
64856)]
64857#[cfg_attr(
64858 not(target_arch = "arm"),
64859 stable(feature = "neon_intrinsics", since = "1.59.0")
64860)]
64861#[cfg_attr(
64862 target_arch = "arm",
64863 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64864)]
64865pub fn vtrnq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
64866 unsafe {
64867 let a1: int32x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
64868 let b1: int32x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
64869 transmute((a1, b1))
64870 }
64871}
64872#[doc = "Transpose elements"]
64873#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_u8)"]
64874#[inline]
64875#[target_feature(enable = "neon")]
64876#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64877#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
64878#[cfg_attr(
64879 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64880 assert_instr(trn1)
64881)]
64882#[cfg_attr(
64883 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64884 assert_instr(trn2)
64885)]
64886#[cfg_attr(
64887 not(target_arch = "arm"),
64888 stable(feature = "neon_intrinsics", since = "1.59.0")
64889)]
64890#[cfg_attr(
64891 target_arch = "arm",
64892 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64893)]
64894pub fn vtrn_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {
64895 unsafe {
64896 let a1: uint8x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
64897 let b1: uint8x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
64898 transmute((a1, b1))
64899 }
64900}
64901#[doc = "Transpose elements"]
64902#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_u8)"]
64903#[inline]
64904#[target_feature(enable = "neon")]
64905#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64906#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
64907#[cfg_attr(
64908 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64909 assert_instr(trn1)
64910)]
64911#[cfg_attr(
64912 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64913 assert_instr(trn2)
64914)]
64915#[cfg_attr(
64916 not(target_arch = "arm"),
64917 stable(feature = "neon_intrinsics", since = "1.59.0")
64918)]
64919#[cfg_attr(
64920 target_arch = "arm",
64921 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64922)]
64923pub fn vtrnq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
64924 unsafe {
64925 let a1: uint8x16_t = simd_shuffle!(
64926 a,
64927 b,
64928 [0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30]
64929 );
64930 let b1: uint8x16_t = simd_shuffle!(
64931 a,
64932 b,
64933 [1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31]
64934 );
64935 transmute((a1, b1))
64936 }
64937}
64938#[doc = "Transpose elements"]
64939#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_u16)"]
64940#[inline]
64941#[target_feature(enable = "neon")]
64942#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64943#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
64944#[cfg_attr(
64945 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64946 assert_instr(trn1)
64947)]
64948#[cfg_attr(
64949 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64950 assert_instr(trn2)
64951)]
64952#[cfg_attr(
64953 not(target_arch = "arm"),
64954 stable(feature = "neon_intrinsics", since = "1.59.0")
64955)]
64956#[cfg_attr(
64957 target_arch = "arm",
64958 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64959)]
64960pub fn vtrn_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {
64961 unsafe {
64962 let a1: uint16x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
64963 let b1: uint16x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
64964 transmute((a1, b1))
64965 }
64966}
64967#[doc = "Transpose elements"]
64968#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_u16)"]
64969#[inline]
64970#[target_feature(enable = "neon")]
64971#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64972#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
64973#[cfg_attr(
64974 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64975 assert_instr(trn1)
64976)]
64977#[cfg_attr(
64978 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64979 assert_instr(trn2)
64980)]
64981#[cfg_attr(
64982 not(target_arch = "arm"),
64983 stable(feature = "neon_intrinsics", since = "1.59.0")
64984)]
64985#[cfg_attr(
64986 target_arch = "arm",
64987 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64988)]
64989pub fn vtrnq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
64990 unsafe {
64991 let a1: uint16x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
64992 let b1: uint16x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
64993 transmute((a1, b1))
64994 }
64995}
64996#[doc = "Transpose elements"]
64997#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_u32)"]
64998#[inline]
64999#[target_feature(enable = "neon")]
65000#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65001#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
65002#[cfg_attr(
65003 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65004 assert_instr(trn1)
65005)]
65006#[cfg_attr(
65007 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65008 assert_instr(trn2)
65009)]
65010#[cfg_attr(
65011 not(target_arch = "arm"),
65012 stable(feature = "neon_intrinsics", since = "1.59.0")
65013)]
65014#[cfg_attr(
65015 target_arch = "arm",
65016 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65017)]
65018pub fn vtrnq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
65019 unsafe {
65020 let a1: uint32x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
65021 let b1: uint32x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
65022 transmute((a1, b1))
65023 }
65024}
65025#[doc = "Transpose elements"]
65026#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_p8)"]
65027#[inline]
65028#[target_feature(enable = "neon")]
65029#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65030#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
65031#[cfg_attr(
65032 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65033 assert_instr(trn1)
65034)]
65035#[cfg_attr(
65036 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65037 assert_instr(trn2)
65038)]
65039#[cfg_attr(
65040 not(target_arch = "arm"),
65041 stable(feature = "neon_intrinsics", since = "1.59.0")
65042)]
65043#[cfg_attr(
65044 target_arch = "arm",
65045 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65046)]
65047pub fn vtrn_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {
65048 unsafe {
65049 let a1: poly8x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
65050 let b1: poly8x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
65051 transmute((a1, b1))
65052 }
65053}
65054#[doc = "Transpose elements"]
65055#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_p8)"]
65056#[inline]
65057#[target_feature(enable = "neon")]
65058#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65059#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
65060#[cfg_attr(
65061 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65062 assert_instr(trn1)
65063)]
65064#[cfg_attr(
65065 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65066 assert_instr(trn2)
65067)]
65068#[cfg_attr(
65069 not(target_arch = "arm"),
65070 stable(feature = "neon_intrinsics", since = "1.59.0")
65071)]
65072#[cfg_attr(
65073 target_arch = "arm",
65074 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65075)]
65076pub fn vtrnq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
65077 unsafe {
65078 let a1: poly8x16_t = simd_shuffle!(
65079 a,
65080 b,
65081 [0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30]
65082 );
65083 let b1: poly8x16_t = simd_shuffle!(
65084 a,
65085 b,
65086 [1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31]
65087 );
65088 transmute((a1, b1))
65089 }
65090}
65091#[doc = "Transpose elements"]
65092#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_p16)"]
65093#[inline]
65094#[target_feature(enable = "neon")]
65095#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65096#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
65097#[cfg_attr(
65098 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65099 assert_instr(trn1)
65100)]
65101#[cfg_attr(
65102 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65103 assert_instr(trn2)
65104)]
65105#[cfg_attr(
65106 not(target_arch = "arm"),
65107 stable(feature = "neon_intrinsics", since = "1.59.0")
65108)]
65109#[cfg_attr(
65110 target_arch = "arm",
65111 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65112)]
65113pub fn vtrn_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {
65114 unsafe {
65115 let a1: poly16x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
65116 let b1: poly16x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
65117 transmute((a1, b1))
65118 }
65119}
65120#[doc = "Transpose elements"]
65121#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_p16)"]
65122#[inline]
65123#[target_feature(enable = "neon")]
65124#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65125#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
65126#[cfg_attr(
65127 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65128 assert_instr(trn1)
65129)]
65130#[cfg_attr(
65131 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65132 assert_instr(trn2)
65133)]
65134#[cfg_attr(
65135 not(target_arch = "arm"),
65136 stable(feature = "neon_intrinsics", since = "1.59.0")
65137)]
65138#[cfg_attr(
65139 target_arch = "arm",
65140 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65141)]
65142pub fn vtrnq_p16(a: poly16x8_t, b: poly16x8_t) -> poly16x8x2_t {
65143 unsafe {
65144 let a1: poly16x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
65145 let b1: poly16x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
65146 transmute((a1, b1))
65147 }
65148}
65149#[doc = "Signed compare bitwise Test bits nonzero"]
65150#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_s8)"]
65151#[inline]
65152#[target_feature(enable = "neon")]
65153#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65154#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
65155#[cfg_attr(
65156 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65157 assert_instr(cmtst)
65158)]
65159#[cfg_attr(
65160 not(target_arch = "arm"),
65161 stable(feature = "neon_intrinsics", since = "1.59.0")
65162)]
65163#[cfg_attr(
65164 target_arch = "arm",
65165 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65166)]
65167pub fn vtst_s8(a: int8x8_t, b: int8x8_t) -> uint8x8_t {
65168 unsafe {
65169 let c: int8x8_t = simd_and(a, b);
65170 let d: i8x8 = i8x8::new(0, 0, 0, 0, 0, 0, 0, 0);
65171 simd_ne(c, transmute(d))
65172 }
65173}
65174#[doc = "Signed compare bitwise Test bits nonzero"]
65175#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_s8)"]
65176#[inline]
65177#[target_feature(enable = "neon")]
65178#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65179#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
65180#[cfg_attr(
65181 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65182 assert_instr(cmtst)
65183)]
65184#[cfg_attr(
65185 not(target_arch = "arm"),
65186 stable(feature = "neon_intrinsics", since = "1.59.0")
65187)]
65188#[cfg_attr(
65189 target_arch = "arm",
65190 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65191)]
65192pub fn vtstq_s8(a: int8x16_t, b: int8x16_t) -> uint8x16_t {
65193 unsafe {
65194 let c: int8x16_t = simd_and(a, b);
65195 let d: i8x16 = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
65196 simd_ne(c, transmute(d))
65197 }
65198}
65199#[doc = "Signed compare bitwise Test bits nonzero"]
65200#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_s16)"]
65201#[inline]
65202#[target_feature(enable = "neon")]
65203#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65204#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
65205#[cfg_attr(
65206 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65207 assert_instr(cmtst)
65208)]
65209#[cfg_attr(
65210 not(target_arch = "arm"),
65211 stable(feature = "neon_intrinsics", since = "1.59.0")
65212)]
65213#[cfg_attr(
65214 target_arch = "arm",
65215 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65216)]
65217pub fn vtst_s16(a: int16x4_t, b: int16x4_t) -> uint16x4_t {
65218 unsafe {
65219 let c: int16x4_t = simd_and(a, b);
65220 let d: i16x4 = i16x4::new(0, 0, 0, 0);
65221 simd_ne(c, transmute(d))
65222 }
65223}
65224#[doc = "Signed compare bitwise Test bits nonzero"]
65225#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_s16)"]
65226#[inline]
65227#[target_feature(enable = "neon")]
65228#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65229#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
65230#[cfg_attr(
65231 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65232 assert_instr(cmtst)
65233)]
65234#[cfg_attr(
65235 not(target_arch = "arm"),
65236 stable(feature = "neon_intrinsics", since = "1.59.0")
65237)]
65238#[cfg_attr(
65239 target_arch = "arm",
65240 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65241)]
65242pub fn vtstq_s16(a: int16x8_t, b: int16x8_t) -> uint16x8_t {
65243 unsafe {
65244 let c: int16x8_t = simd_and(a, b);
65245 let d: i16x8 = i16x8::new(0, 0, 0, 0, 0, 0, 0, 0);
65246 simd_ne(c, transmute(d))
65247 }
65248}
65249#[doc = "Signed compare bitwise Test bits nonzero"]
65250#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_s32)"]
65251#[inline]
65252#[target_feature(enable = "neon")]
65253#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65254#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
65255#[cfg_attr(
65256 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65257 assert_instr(cmtst)
65258)]
65259#[cfg_attr(
65260 not(target_arch = "arm"),
65261 stable(feature = "neon_intrinsics", since = "1.59.0")
65262)]
65263#[cfg_attr(
65264 target_arch = "arm",
65265 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65266)]
65267pub fn vtst_s32(a: int32x2_t, b: int32x2_t) -> uint32x2_t {
65268 unsafe {
65269 let c: int32x2_t = simd_and(a, b);
65270 let d: i32x2 = i32x2::new(0, 0);
65271 simd_ne(c, transmute(d))
65272 }
65273}
65274#[doc = "Signed compare bitwise Test bits nonzero"]
65275#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_s32)"]
65276#[inline]
65277#[target_feature(enable = "neon")]
65278#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65279#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
65280#[cfg_attr(
65281 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65282 assert_instr(cmtst)
65283)]
65284#[cfg_attr(
65285 not(target_arch = "arm"),
65286 stable(feature = "neon_intrinsics", since = "1.59.0")
65287)]
65288#[cfg_attr(
65289 target_arch = "arm",
65290 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65291)]
65292pub fn vtstq_s32(a: int32x4_t, b: int32x4_t) -> uint32x4_t {
65293 unsafe {
65294 let c: int32x4_t = simd_and(a, b);
65295 let d: i32x4 = i32x4::new(0, 0, 0, 0);
65296 simd_ne(c, transmute(d))
65297 }
65298}
65299#[doc = "Signed compare bitwise Test bits nonzero"]
65300#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_p8)"]
65301#[inline]
65302#[target_feature(enable = "neon")]
65303#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65304#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
65305#[cfg_attr(
65306 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65307 assert_instr(cmtst)
65308)]
65309#[cfg_attr(
65310 not(target_arch = "arm"),
65311 stable(feature = "neon_intrinsics", since = "1.59.0")
65312)]
65313#[cfg_attr(
65314 target_arch = "arm",
65315 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65316)]
65317pub fn vtst_p8(a: poly8x8_t, b: poly8x8_t) -> uint8x8_t {
65318 unsafe {
65319 let c: poly8x8_t = simd_and(a, b);
65320 let d: i8x8 = i8x8::new(0, 0, 0, 0, 0, 0, 0, 0);
65321 simd_ne(c, transmute(d))
65322 }
65323}
65324#[doc = "Signed compare bitwise Test bits nonzero"]
65325#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_p8)"]
65326#[inline]
65327#[target_feature(enable = "neon")]
65328#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65329#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
65330#[cfg_attr(
65331 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65332 assert_instr(cmtst)
65333)]
65334#[cfg_attr(
65335 not(target_arch = "arm"),
65336 stable(feature = "neon_intrinsics", since = "1.59.0")
65337)]
65338#[cfg_attr(
65339 target_arch = "arm",
65340 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65341)]
65342pub fn vtstq_p8(a: poly8x16_t, b: poly8x16_t) -> uint8x16_t {
65343 unsafe {
65344 let c: poly8x16_t = simd_and(a, b);
65345 let d: i8x16 = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
65346 simd_ne(c, transmute(d))
65347 }
65348}
65349#[doc = "Signed compare bitwise Test bits nonzero"]
65350#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_p16)"]
65351#[inline]
65352#[target_feature(enable = "neon")]
65353#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65354#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
65355#[cfg_attr(
65356 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65357 assert_instr(cmtst)
65358)]
65359#[cfg_attr(
65360 not(target_arch = "arm"),
65361 stable(feature = "neon_intrinsics", since = "1.59.0")
65362)]
65363#[cfg_attr(
65364 target_arch = "arm",
65365 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65366)]
65367pub fn vtst_p16(a: poly16x4_t, b: poly16x4_t) -> uint16x4_t {
65368 unsafe {
65369 let c: poly16x4_t = simd_and(a, b);
65370 let d: i16x4 = i16x4::new(0, 0, 0, 0);
65371 simd_ne(c, transmute(d))
65372 }
65373}
65374#[doc = "Signed compare bitwise Test bits nonzero"]
65375#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_p16)"]
65376#[inline]
65377#[target_feature(enable = "neon")]
65378#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65379#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
65380#[cfg_attr(
65381 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65382 assert_instr(cmtst)
65383)]
65384#[cfg_attr(
65385 not(target_arch = "arm"),
65386 stable(feature = "neon_intrinsics", since = "1.59.0")
65387)]
65388#[cfg_attr(
65389 target_arch = "arm",
65390 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65391)]
65392pub fn vtstq_p16(a: poly16x8_t, b: poly16x8_t) -> uint16x8_t {
65393 unsafe {
65394 let c: poly16x8_t = simd_and(a, b);
65395 let d: i16x8 = i16x8::new(0, 0, 0, 0, 0, 0, 0, 0);
65396 simd_ne(c, transmute(d))
65397 }
65398}
65399#[doc = "Unsigned compare bitwise Test bits nonzero"]
65400#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_u8)"]
65401#[inline]
65402#[target_feature(enable = "neon")]
65403#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65404#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
65405#[cfg_attr(
65406 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65407 assert_instr(cmtst)
65408)]
65409#[cfg_attr(
65410 not(target_arch = "arm"),
65411 stable(feature = "neon_intrinsics", since = "1.59.0")
65412)]
65413#[cfg_attr(
65414 target_arch = "arm",
65415 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65416)]
65417pub fn vtst_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
65418 unsafe {
65419 let c: uint8x8_t = simd_and(a, b);
65420 let d: u8x8 = u8x8::new(0, 0, 0, 0, 0, 0, 0, 0);
65421 simd_ne(c, transmute(d))
65422 }
65423}
65424#[doc = "Unsigned compare bitwise Test bits nonzero"]
65425#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_u8)"]
65426#[inline]
65427#[target_feature(enable = "neon")]
65428#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65429#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
65430#[cfg_attr(
65431 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65432 assert_instr(cmtst)
65433)]
65434#[cfg_attr(
65435 not(target_arch = "arm"),
65436 stable(feature = "neon_intrinsics", since = "1.59.0")
65437)]
65438#[cfg_attr(
65439 target_arch = "arm",
65440 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65441)]
65442pub fn vtstq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
65443 unsafe {
65444 let c: uint8x16_t = simd_and(a, b);
65445 let d: u8x16 = u8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
65446 simd_ne(c, transmute(d))
65447 }
65448}
65449#[doc = "Unsigned compare bitwise Test bits nonzero"]
65450#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_u16)"]
65451#[inline]
65452#[target_feature(enable = "neon")]
65453#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65454#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
65455#[cfg_attr(
65456 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65457 assert_instr(cmtst)
65458)]
65459#[cfg_attr(
65460 not(target_arch = "arm"),
65461 stable(feature = "neon_intrinsics", since = "1.59.0")
65462)]
65463#[cfg_attr(
65464 target_arch = "arm",
65465 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65466)]
65467pub fn vtst_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
65468 unsafe {
65469 let c: uint16x4_t = simd_and(a, b);
65470 let d: u16x4 = u16x4::new(0, 0, 0, 0);
65471 simd_ne(c, transmute(d))
65472 }
65473}
65474#[doc = "Unsigned compare bitwise Test bits nonzero"]
65475#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_u16)"]
65476#[inline]
65477#[target_feature(enable = "neon")]
65478#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65479#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
65480#[cfg_attr(
65481 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65482 assert_instr(cmtst)
65483)]
65484#[cfg_attr(
65485 not(target_arch = "arm"),
65486 stable(feature = "neon_intrinsics", since = "1.59.0")
65487)]
65488#[cfg_attr(
65489 target_arch = "arm",
65490 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65491)]
65492pub fn vtstq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
65493 unsafe {
65494 let c: uint16x8_t = simd_and(a, b);
65495 let d: u16x8 = u16x8::new(0, 0, 0, 0, 0, 0, 0, 0);
65496 simd_ne(c, transmute(d))
65497 }
65498}
65499#[doc = "Unsigned compare bitwise Test bits nonzero"]
65500#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_u32)"]
65501#[inline]
65502#[target_feature(enable = "neon")]
65503#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65504#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
65505#[cfg_attr(
65506 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65507 assert_instr(cmtst)
65508)]
65509#[cfg_attr(
65510 not(target_arch = "arm"),
65511 stable(feature = "neon_intrinsics", since = "1.59.0")
65512)]
65513#[cfg_attr(
65514 target_arch = "arm",
65515 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65516)]
65517pub fn vtst_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
65518 unsafe {
65519 let c: uint32x2_t = simd_and(a, b);
65520 let d: u32x2 = u32x2::new(0, 0);
65521 simd_ne(c, transmute(d))
65522 }
65523}
65524#[doc = "Unsigned compare bitwise Test bits nonzero"]
65525#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_u32)"]
65526#[inline]
65527#[target_feature(enable = "neon")]
65528#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65529#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
65530#[cfg_attr(
65531 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65532 assert_instr(cmtst)
65533)]
65534#[cfg_attr(
65535 not(target_arch = "arm"),
65536 stable(feature = "neon_intrinsics", since = "1.59.0")
65537)]
65538#[cfg_attr(
65539 target_arch = "arm",
65540 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65541)]
65542pub fn vtstq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
65543 unsafe {
65544 let c: uint32x4_t = simd_and(a, b);
65545 let d: u32x4 = u32x4::new(0, 0, 0, 0);
65546 simd_ne(c, transmute(d))
65547 }
65548}
65549#[doc = "Dot product index form with unsigned and signed integers"]
65550#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdot_lane_s32)"]
65551#[inline]
65552#[target_feature(enable = "neon,i8mm")]
65553#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
65554#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 0))]
65555#[cfg_attr(
65556 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65557 assert_instr(usdot, LANE = 0)
65558)]
65559#[rustc_legacy_const_generics(3)]
65560#[cfg_attr(
65561 not(target_arch = "arm"),
65562 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
65563)]
65564#[cfg_attr(
65565 target_arch = "arm",
65566 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65567)]
65568pub fn vusdot_lane_s32<const LANE: i32>(a: int32x2_t, b: uint8x8_t, c: int8x8_t) -> int32x2_t {
65569 static_assert_uimm_bits!(LANE, 1);
65570 unsafe {
65571 let c: int32x2_t = transmute(c);
65572 let c: int32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
65573 vusdot_s32(a, b, transmute(c))
65574 }
65575}
65576#[doc = "Dot product index form with unsigned and signed integers"]
65577#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdotq_lane_s32)"]
65578#[inline]
65579#[target_feature(enable = "neon,i8mm")]
65580#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
65581#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 0))]
65582#[cfg_attr(
65583 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65584 assert_instr(usdot, LANE = 0)
65585)]
65586#[rustc_legacy_const_generics(3)]
65587#[cfg_attr(
65588 not(target_arch = "arm"),
65589 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
65590)]
65591#[cfg_attr(
65592 target_arch = "arm",
65593 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65594)]
65595pub fn vusdotq_lane_s32<const LANE: i32>(a: int32x4_t, b: uint8x16_t, c: int8x8_t) -> int32x4_t {
65596 static_assert_uimm_bits!(LANE, 1);
65597 unsafe {
65598 let c: int32x2_t = transmute(c);
65599 let c: int32x4_t =
65600 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
65601 vusdotq_s32(a, b, transmute(c))
65602 }
65603}
65604#[doc = "Dot product vector form with unsigned and signed integers"]
65605#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdot_s32)"]
65606#[inline]
65607#[target_feature(enable = "neon,i8mm")]
65608#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
65609#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot))]
65610#[cfg_attr(
65611 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65612 assert_instr(usdot)
65613)]
65614#[cfg_attr(
65615 not(target_arch = "arm"),
65616 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
65617)]
65618#[cfg_attr(
65619 target_arch = "arm",
65620 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65621)]
65622pub fn vusdot_s32(a: int32x2_t, b: uint8x8_t, c: int8x8_t) -> int32x2_t {
65623 unsafe extern "unadjusted" {
65624 #[cfg_attr(
65625 any(target_arch = "aarch64", target_arch = "arm64ec"),
65626 link_name = "llvm.aarch64.neon.usdot.v2i32.v8i8"
65627 )]
65628 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.usdot.v2i32.v8i8")]
65629 fn _vusdot_s32(a: int32x2_t, b: uint8x8_t, c: int8x8_t) -> int32x2_t;
65630 }
65631 unsafe { _vusdot_s32(a, b, c) }
65632}
65633#[doc = "Dot product vector form with unsigned and signed integers"]
65634#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdotq_s32)"]
65635#[inline]
65636#[target_feature(enable = "neon,i8mm")]
65637#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
65638#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot))]
65639#[cfg_attr(
65640 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65641 assert_instr(usdot)
65642)]
65643#[cfg_attr(
65644 not(target_arch = "arm"),
65645 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
65646)]
65647#[cfg_attr(
65648 target_arch = "arm",
65649 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65650)]
65651pub fn vusdotq_s32(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t {
65652 unsafe extern "unadjusted" {
65653 #[cfg_attr(
65654 any(target_arch = "aarch64", target_arch = "arm64ec"),
65655 link_name = "llvm.aarch64.neon.usdot.v4i32.v16i8"
65656 )]
65657 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.usdot.v4i32.v16i8")]
65658 fn _vusdotq_s32(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t;
65659 }
65660 unsafe { _vusdotq_s32(a, b, c) }
65661}
65662#[doc = "Unsigned and signed 8-bit integer matrix multiply-accumulate"]
65663#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusmmlaq_s32)"]
65664#[inline]
65665#[target_feature(enable = "neon,i8mm")]
65666#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
65667#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
65668#[cfg_attr(
65669 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65670 assert_instr(usmmla)
65671)]
65672#[cfg_attr(
65673 not(target_arch = "arm"),
65674 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
65675)]
65676#[cfg_attr(
65677 target_arch = "arm",
65678 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65679)]
65680pub fn vusmmlaq_s32(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t {
65681 unsafe extern "unadjusted" {
65682 #[cfg_attr(
65683 any(target_arch = "aarch64", target_arch = "arm64ec"),
65684 link_name = "llvm.aarch64.neon.usmmla.v4i32.v16i8"
65685 )]
65686 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.usmmla.v4i32.v16i8")]
65687 fn _vusmmlaq_s32(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t;
65688 }
65689 unsafe { _vusmmlaq_s32(a, b, c) }
65690}
65691#[doc = "Unzip vectors"]
65692#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_f16)"]
65693#[inline]
65694#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65695#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
65696#[cfg_attr(
65697 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65698 assert_instr(uzp1)
65699)]
65700#[cfg_attr(
65701 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65702 assert_instr(uzp2)
65703)]
65704#[target_feature(enable = "neon,fp16")]
65705#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65706#[cfg(not(target_arch = "arm64ec"))]
65707pub fn vuzp_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {
65708 unsafe {
65709 let a0: float16x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
65710 let b0: float16x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
65711 transmute((a0, b0))
65712 }
65713}
65714#[doc = "Unzip vectors"]
65715#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_f16)"]
65716#[inline]
65717#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65718#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
65719#[cfg_attr(
65720 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65721 assert_instr(uzp1)
65722)]
65723#[cfg_attr(
65724 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65725 assert_instr(uzp2)
65726)]
65727#[target_feature(enable = "neon,fp16")]
65728#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65729#[cfg(not(target_arch = "arm64ec"))]
65730pub fn vuzpq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {
65731 unsafe {
65732 let a0: float16x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
65733 let b0: float16x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
65734 transmute((a0, b0))
65735 }
65736}
65737#[doc = "Unzip vectors"]
65738#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_f32)"]
65739#[inline]
65740#[target_feature(enable = "neon")]
65741#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65742#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
65743#[cfg_attr(
65744 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65745 assert_instr(zip1)
65746)]
65747#[cfg_attr(
65748 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65749 assert_instr(zip2)
65750)]
65751#[cfg_attr(
65752 not(target_arch = "arm"),
65753 stable(feature = "neon_intrinsics", since = "1.59.0")
65754)]
65755#[cfg_attr(
65756 target_arch = "arm",
65757 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65758)]
65759pub fn vuzp_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {
65760 unsafe {
65761 let a0: float32x2_t = simd_shuffle!(a, b, [0, 2]);
65762 let b0: float32x2_t = simd_shuffle!(a, b, [1, 3]);
65763 transmute((a0, b0))
65764 }
65765}
65766#[doc = "Unzip vectors"]
65767#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_s32)"]
65768#[inline]
65769#[target_feature(enable = "neon")]
65770#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65771#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
65772#[cfg_attr(
65773 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65774 assert_instr(zip1)
65775)]
65776#[cfg_attr(
65777 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65778 assert_instr(zip2)
65779)]
65780#[cfg_attr(
65781 not(target_arch = "arm"),
65782 stable(feature = "neon_intrinsics", since = "1.59.0")
65783)]
65784#[cfg_attr(
65785 target_arch = "arm",
65786 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65787)]
65788pub fn vuzp_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {
65789 unsafe {
65790 let a0: int32x2_t = simd_shuffle!(a, b, [0, 2]);
65791 let b0: int32x2_t = simd_shuffle!(a, b, [1, 3]);
65792 transmute((a0, b0))
65793 }
65794}
65795#[doc = "Unzip vectors"]
65796#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_u32)"]
65797#[inline]
65798#[target_feature(enable = "neon")]
65799#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65800#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
65801#[cfg_attr(
65802 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65803 assert_instr(zip1)
65804)]
65805#[cfg_attr(
65806 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65807 assert_instr(zip2)
65808)]
65809#[cfg_attr(
65810 not(target_arch = "arm"),
65811 stable(feature = "neon_intrinsics", since = "1.59.0")
65812)]
65813#[cfg_attr(
65814 target_arch = "arm",
65815 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65816)]
65817pub fn vuzp_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {
65818 unsafe {
65819 let a0: uint32x2_t = simd_shuffle!(a, b, [0, 2]);
65820 let b0: uint32x2_t = simd_shuffle!(a, b, [1, 3]);
65821 transmute((a0, b0))
65822 }
65823}
65824#[doc = "Unzip vectors"]
65825#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_f32)"]
65826#[inline]
65827#[target_feature(enable = "neon")]
65828#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65829#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
65830#[cfg_attr(
65831 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65832 assert_instr(uzp1)
65833)]
65834#[cfg_attr(
65835 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65836 assert_instr(uzp2)
65837)]
65838#[cfg_attr(
65839 not(target_arch = "arm"),
65840 stable(feature = "neon_intrinsics", since = "1.59.0")
65841)]
65842#[cfg_attr(
65843 target_arch = "arm",
65844 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65845)]
65846pub fn vuzpq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
65847 unsafe {
65848 let a0: float32x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
65849 let b0: float32x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
65850 transmute((a0, b0))
65851 }
65852}
65853#[doc = "Unzip vectors"]
65854#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_s8)"]
65855#[inline]
65856#[target_feature(enable = "neon")]
65857#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65858#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
65859#[cfg_attr(
65860 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65861 assert_instr(uzp1)
65862)]
65863#[cfg_attr(
65864 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65865 assert_instr(uzp2)
65866)]
65867#[cfg_attr(
65868 not(target_arch = "arm"),
65869 stable(feature = "neon_intrinsics", since = "1.59.0")
65870)]
65871#[cfg_attr(
65872 target_arch = "arm",
65873 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65874)]
65875pub fn vuzp_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {
65876 unsafe {
65877 let a0: int8x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
65878 let b0: int8x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
65879 transmute((a0, b0))
65880 }
65881}
65882#[doc = "Unzip vectors"]
65883#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_s8)"]
65884#[inline]
65885#[target_feature(enable = "neon")]
65886#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65887#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
65888#[cfg_attr(
65889 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65890 assert_instr(uzp1)
65891)]
65892#[cfg_attr(
65893 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65894 assert_instr(uzp2)
65895)]
65896#[cfg_attr(
65897 not(target_arch = "arm"),
65898 stable(feature = "neon_intrinsics", since = "1.59.0")
65899)]
65900#[cfg_attr(
65901 target_arch = "arm",
65902 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65903)]
65904pub fn vuzpq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
65905 unsafe {
65906 let a0: int8x16_t = simd_shuffle!(
65907 a,
65908 b,
65909 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]
65910 );
65911 let b0: int8x16_t = simd_shuffle!(
65912 a,
65913 b,
65914 [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31]
65915 );
65916 transmute((a0, b0))
65917 }
65918}
65919#[doc = "Unzip vectors"]
65920#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_s16)"]
65921#[inline]
65922#[target_feature(enable = "neon")]
65923#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65924#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
65925#[cfg_attr(
65926 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65927 assert_instr(uzp1)
65928)]
65929#[cfg_attr(
65930 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65931 assert_instr(uzp2)
65932)]
65933#[cfg_attr(
65934 not(target_arch = "arm"),
65935 stable(feature = "neon_intrinsics", since = "1.59.0")
65936)]
65937#[cfg_attr(
65938 target_arch = "arm",
65939 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65940)]
65941pub fn vuzp_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {
65942 unsafe {
65943 let a0: int16x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
65944 let b0: int16x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
65945 transmute((a0, b0))
65946 }
65947}
65948#[doc = "Unzip vectors"]
65949#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_s16)"]
65950#[inline]
65951#[target_feature(enable = "neon")]
65952#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65953#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
65954#[cfg_attr(
65955 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65956 assert_instr(uzp1)
65957)]
65958#[cfg_attr(
65959 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65960 assert_instr(uzp2)
65961)]
65962#[cfg_attr(
65963 not(target_arch = "arm"),
65964 stable(feature = "neon_intrinsics", since = "1.59.0")
65965)]
65966#[cfg_attr(
65967 target_arch = "arm",
65968 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65969)]
65970pub fn vuzpq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
65971 unsafe {
65972 let a0: int16x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
65973 let b0: int16x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
65974 transmute((a0, b0))
65975 }
65976}
65977#[doc = "Unzip vectors"]
65978#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_s32)"]
65979#[inline]
65980#[target_feature(enable = "neon")]
65981#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65982#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
65983#[cfg_attr(
65984 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65985 assert_instr(uzp1)
65986)]
65987#[cfg_attr(
65988 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65989 assert_instr(uzp2)
65990)]
65991#[cfg_attr(
65992 not(target_arch = "arm"),
65993 stable(feature = "neon_intrinsics", since = "1.59.0")
65994)]
65995#[cfg_attr(
65996 target_arch = "arm",
65997 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65998)]
65999pub fn vuzpq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
66000 unsafe {
66001 let a0: int32x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
66002 let b0: int32x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
66003 transmute((a0, b0))
66004 }
66005}
66006#[doc = "Unzip vectors"]
66007#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_u8)"]
66008#[inline]
66009#[target_feature(enable = "neon")]
66010#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66011#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
66012#[cfg_attr(
66013 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66014 assert_instr(uzp1)
66015)]
66016#[cfg_attr(
66017 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66018 assert_instr(uzp2)
66019)]
66020#[cfg_attr(
66021 not(target_arch = "arm"),
66022 stable(feature = "neon_intrinsics", since = "1.59.0")
66023)]
66024#[cfg_attr(
66025 target_arch = "arm",
66026 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66027)]
66028pub fn vuzp_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {
66029 unsafe {
66030 let a0: uint8x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
66031 let b0: uint8x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
66032 transmute((a0, b0))
66033 }
66034}
66035#[doc = "Unzip vectors"]
66036#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_u8)"]
66037#[inline]
66038#[target_feature(enable = "neon")]
66039#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66040#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
66041#[cfg_attr(
66042 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66043 assert_instr(uzp1)
66044)]
66045#[cfg_attr(
66046 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66047 assert_instr(uzp2)
66048)]
66049#[cfg_attr(
66050 not(target_arch = "arm"),
66051 stable(feature = "neon_intrinsics", since = "1.59.0")
66052)]
66053#[cfg_attr(
66054 target_arch = "arm",
66055 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66056)]
66057pub fn vuzpq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
66058 unsafe {
66059 let a0: uint8x16_t = simd_shuffle!(
66060 a,
66061 b,
66062 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]
66063 );
66064 let b0: uint8x16_t = simd_shuffle!(
66065 a,
66066 b,
66067 [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31]
66068 );
66069 transmute((a0, b0))
66070 }
66071}
66072#[doc = "Unzip vectors"]
66073#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_u16)"]
66074#[inline]
66075#[target_feature(enable = "neon")]
66076#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66077#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
66078#[cfg_attr(
66079 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66080 assert_instr(uzp1)
66081)]
66082#[cfg_attr(
66083 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66084 assert_instr(uzp2)
66085)]
66086#[cfg_attr(
66087 not(target_arch = "arm"),
66088 stable(feature = "neon_intrinsics", since = "1.59.0")
66089)]
66090#[cfg_attr(
66091 target_arch = "arm",
66092 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66093)]
66094pub fn vuzp_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {
66095 unsafe {
66096 let a0: uint16x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
66097 let b0: uint16x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
66098 transmute((a0, b0))
66099 }
66100}
66101#[doc = "Unzip vectors"]
66102#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_u16)"]
66103#[inline]
66104#[target_feature(enable = "neon")]
66105#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66106#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
66107#[cfg_attr(
66108 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66109 assert_instr(uzp1)
66110)]
66111#[cfg_attr(
66112 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66113 assert_instr(uzp2)
66114)]
66115#[cfg_attr(
66116 not(target_arch = "arm"),
66117 stable(feature = "neon_intrinsics", since = "1.59.0")
66118)]
66119#[cfg_attr(
66120 target_arch = "arm",
66121 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66122)]
66123pub fn vuzpq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
66124 unsafe {
66125 let a0: uint16x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
66126 let b0: uint16x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
66127 transmute((a0, b0))
66128 }
66129}
66130#[doc = "Unzip vectors"]
66131#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_u32)"]
66132#[inline]
66133#[target_feature(enable = "neon")]
66134#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66135#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
66136#[cfg_attr(
66137 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66138 assert_instr(uzp1)
66139)]
66140#[cfg_attr(
66141 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66142 assert_instr(uzp2)
66143)]
66144#[cfg_attr(
66145 not(target_arch = "arm"),
66146 stable(feature = "neon_intrinsics", since = "1.59.0")
66147)]
66148#[cfg_attr(
66149 target_arch = "arm",
66150 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66151)]
66152pub fn vuzpq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
66153 unsafe {
66154 let a0: uint32x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
66155 let b0: uint32x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
66156 transmute((a0, b0))
66157 }
66158}
66159#[doc = "Unzip vectors"]
66160#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_p8)"]
66161#[inline]
66162#[target_feature(enable = "neon")]
66163#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66164#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
66165#[cfg_attr(
66166 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66167 assert_instr(uzp1)
66168)]
66169#[cfg_attr(
66170 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66171 assert_instr(uzp2)
66172)]
66173#[cfg_attr(
66174 not(target_arch = "arm"),
66175 stable(feature = "neon_intrinsics", since = "1.59.0")
66176)]
66177#[cfg_attr(
66178 target_arch = "arm",
66179 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66180)]
66181pub fn vuzp_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {
66182 unsafe {
66183 let a0: poly8x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
66184 let b0: poly8x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
66185 transmute((a0, b0))
66186 }
66187}
66188#[doc = "Unzip vectors"]
66189#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_p8)"]
66190#[inline]
66191#[target_feature(enable = "neon")]
66192#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66193#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
66194#[cfg_attr(
66195 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66196 assert_instr(uzp1)
66197)]
66198#[cfg_attr(
66199 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66200 assert_instr(uzp2)
66201)]
66202#[cfg_attr(
66203 not(target_arch = "arm"),
66204 stable(feature = "neon_intrinsics", since = "1.59.0")
66205)]
66206#[cfg_attr(
66207 target_arch = "arm",
66208 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66209)]
66210pub fn vuzpq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
66211 unsafe {
66212 let a0: poly8x16_t = simd_shuffle!(
66213 a,
66214 b,
66215 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]
66216 );
66217 let b0: poly8x16_t = simd_shuffle!(
66218 a,
66219 b,
66220 [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31]
66221 );
66222 transmute((a0, b0))
66223 }
66224}
66225#[doc = "Unzip vectors"]
66226#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_p16)"]
66227#[inline]
66228#[target_feature(enable = "neon")]
66229#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66230#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
66231#[cfg_attr(
66232 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66233 assert_instr(uzp1)
66234)]
66235#[cfg_attr(
66236 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66237 assert_instr(uzp2)
66238)]
66239#[cfg_attr(
66240 not(target_arch = "arm"),
66241 stable(feature = "neon_intrinsics", since = "1.59.0")
66242)]
66243#[cfg_attr(
66244 target_arch = "arm",
66245 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66246)]
66247pub fn vuzp_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {
66248 unsafe {
66249 let a0: poly16x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
66250 let b0: poly16x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
66251 transmute((a0, b0))
66252 }
66253}
66254#[doc = "Unzip vectors"]
66255#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_p16)"]
66256#[inline]
66257#[target_feature(enable = "neon")]
66258#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66259#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
66260#[cfg_attr(
66261 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66262 assert_instr(uzp1)
66263)]
66264#[cfg_attr(
66265 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66266 assert_instr(uzp2)
66267)]
66268#[cfg_attr(
66269 not(target_arch = "arm"),
66270 stable(feature = "neon_intrinsics", since = "1.59.0")
66271)]
66272#[cfg_attr(
66273 target_arch = "arm",
66274 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66275)]
66276pub fn vuzpq_p16(a: poly16x8_t, b: poly16x8_t) -> poly16x8x2_t {
66277 unsafe {
66278 let a0: poly16x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
66279 let b0: poly16x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
66280 transmute((a0, b0))
66281 }
66282}
66283#[doc = "Zip vectors"]
66284#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_f16)"]
66285#[inline]
66286#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66287#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vzip.16"))]
66288#[cfg_attr(
66289 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66290 assert_instr(zip1)
66291)]
66292#[cfg_attr(
66293 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66294 assert_instr(zip2)
66295)]
66296#[target_feature(enable = "neon,fp16")]
66297#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
66298#[cfg(not(target_arch = "arm64ec"))]
66299pub fn vzip_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {
66300 unsafe {
66301 let a0: float16x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
66302 let b0: float16x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
66303 transmute((a0, b0))
66304 }
66305}
66306#[doc = "Zip vectors"]
66307#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_f16)"]
66308#[inline]
66309#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66310#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vzip.16"))]
66311#[cfg_attr(
66312 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66313 assert_instr(zip1)
66314)]
66315#[cfg_attr(
66316 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66317 assert_instr(zip2)
66318)]
66319#[target_feature(enable = "neon,fp16")]
66320#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
66321#[cfg(not(target_arch = "arm64ec"))]
66322pub fn vzipq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {
66323 unsafe {
66324 let a0: float16x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
66325 let b0: float16x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
66326 transmute((a0, b0))
66327 }
66328}
66329#[doc = "Zip vectors"]
66330#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_f32)"]
66331#[inline]
66332#[target_feature(enable = "neon")]
66333#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66334#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
66335#[cfg_attr(
66336 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66337 assert_instr(zip1)
66338)]
66339#[cfg_attr(
66340 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66341 assert_instr(zip2)
66342)]
66343#[cfg_attr(
66344 not(target_arch = "arm"),
66345 stable(feature = "neon_intrinsics", since = "1.59.0")
66346)]
66347#[cfg_attr(
66348 target_arch = "arm",
66349 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66350)]
66351pub fn vzip_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {
66352 unsafe {
66353 let a0: float32x2_t = simd_shuffle!(a, b, [0, 2]);
66354 let b0: float32x2_t = simd_shuffle!(a, b, [1, 3]);
66355 transmute((a0, b0))
66356 }
66357}
66358#[doc = "Zip vectors"]
66359#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_s32)"]
66360#[inline]
66361#[target_feature(enable = "neon")]
66362#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66363#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
66364#[cfg_attr(
66365 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66366 assert_instr(zip1)
66367)]
66368#[cfg_attr(
66369 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66370 assert_instr(zip2)
66371)]
66372#[cfg_attr(
66373 not(target_arch = "arm"),
66374 stable(feature = "neon_intrinsics", since = "1.59.0")
66375)]
66376#[cfg_attr(
66377 target_arch = "arm",
66378 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66379)]
66380pub fn vzip_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {
66381 unsafe {
66382 let a0: int32x2_t = simd_shuffle!(a, b, [0, 2]);
66383 let b0: int32x2_t = simd_shuffle!(a, b, [1, 3]);
66384 transmute((a0, b0))
66385 }
66386}
66387#[doc = "Zip vectors"]
66388#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_u32)"]
66389#[inline]
66390#[target_feature(enable = "neon")]
66391#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66392#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
66393#[cfg_attr(
66394 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66395 assert_instr(zip1)
66396)]
66397#[cfg_attr(
66398 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66399 assert_instr(zip2)
66400)]
66401#[cfg_attr(
66402 not(target_arch = "arm"),
66403 stable(feature = "neon_intrinsics", since = "1.59.0")
66404)]
66405#[cfg_attr(
66406 target_arch = "arm",
66407 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66408)]
66409pub fn vzip_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {
66410 unsafe {
66411 let a0: uint32x2_t = simd_shuffle!(a, b, [0, 2]);
66412 let b0: uint32x2_t = simd_shuffle!(a, b, [1, 3]);
66413 transmute((a0, b0))
66414 }
66415}
66416#[doc = "Zip vectors"]
66417#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_s8)"]
66418#[inline]
66419#[target_feature(enable = "neon")]
66420#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66421#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
66422#[cfg_attr(
66423 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66424 assert_instr(zip1)
66425)]
66426#[cfg_attr(
66427 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66428 assert_instr(zip2)
66429)]
66430#[cfg_attr(
66431 not(target_arch = "arm"),
66432 stable(feature = "neon_intrinsics", since = "1.59.0")
66433)]
66434#[cfg_attr(
66435 target_arch = "arm",
66436 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66437)]
66438pub fn vzip_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {
66439 unsafe {
66440 let a0: int8x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
66441 let b0: int8x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
66442 transmute((a0, b0))
66443 }
66444}
66445#[doc = "Zip vectors"]
66446#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_s16)"]
66447#[inline]
66448#[target_feature(enable = "neon")]
66449#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66450#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
66451#[cfg_attr(
66452 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66453 assert_instr(zip1)
66454)]
66455#[cfg_attr(
66456 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66457 assert_instr(zip2)
66458)]
66459#[cfg_attr(
66460 not(target_arch = "arm"),
66461 stable(feature = "neon_intrinsics", since = "1.59.0")
66462)]
66463#[cfg_attr(
66464 target_arch = "arm",
66465 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66466)]
66467pub fn vzip_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {
66468 unsafe {
66469 let a0: int16x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
66470 let b0: int16x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
66471 transmute((a0, b0))
66472 }
66473}
66474#[doc = "Zip vectors"]
66475#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_u8)"]
66476#[inline]
66477#[target_feature(enable = "neon")]
66478#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66479#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
66480#[cfg_attr(
66481 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66482 assert_instr(zip1)
66483)]
66484#[cfg_attr(
66485 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66486 assert_instr(zip2)
66487)]
66488#[cfg_attr(
66489 not(target_arch = "arm"),
66490 stable(feature = "neon_intrinsics", since = "1.59.0")
66491)]
66492#[cfg_attr(
66493 target_arch = "arm",
66494 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66495)]
66496pub fn vzip_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {
66497 unsafe {
66498 let a0: uint8x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
66499 let b0: uint8x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
66500 transmute((a0, b0))
66501 }
66502}
66503#[doc = "Zip vectors"]
66504#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_u16)"]
66505#[inline]
66506#[target_feature(enable = "neon")]
66507#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66508#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
66509#[cfg_attr(
66510 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66511 assert_instr(zip1)
66512)]
66513#[cfg_attr(
66514 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66515 assert_instr(zip2)
66516)]
66517#[cfg_attr(
66518 not(target_arch = "arm"),
66519 stable(feature = "neon_intrinsics", since = "1.59.0")
66520)]
66521#[cfg_attr(
66522 target_arch = "arm",
66523 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66524)]
66525pub fn vzip_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {
66526 unsafe {
66527 let a0: uint16x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
66528 let b0: uint16x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
66529 transmute((a0, b0))
66530 }
66531}
66532#[doc = "Zip vectors"]
66533#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_p8)"]
66534#[inline]
66535#[target_feature(enable = "neon")]
66536#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66537#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
66538#[cfg_attr(
66539 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66540 assert_instr(zip1)
66541)]
66542#[cfg_attr(
66543 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66544 assert_instr(zip2)
66545)]
66546#[cfg_attr(
66547 not(target_arch = "arm"),
66548 stable(feature = "neon_intrinsics", since = "1.59.0")
66549)]
66550#[cfg_attr(
66551 target_arch = "arm",
66552 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66553)]
66554pub fn vzip_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {
66555 unsafe {
66556 let a0: poly8x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
66557 let b0: poly8x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
66558 transmute((a0, b0))
66559 }
66560}
66561#[doc = "Zip vectors"]
66562#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_p16)"]
66563#[inline]
66564#[target_feature(enable = "neon")]
66565#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66566#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
66567#[cfg_attr(
66568 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66569 assert_instr(zip1)
66570)]
66571#[cfg_attr(
66572 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66573 assert_instr(zip2)
66574)]
66575#[cfg_attr(
66576 not(target_arch = "arm"),
66577 stable(feature = "neon_intrinsics", since = "1.59.0")
66578)]
66579#[cfg_attr(
66580 target_arch = "arm",
66581 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66582)]
66583pub fn vzip_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {
66584 unsafe {
66585 let a0: poly16x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
66586 let b0: poly16x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
66587 transmute((a0, b0))
66588 }
66589}
66590#[doc = "Zip vectors"]
66591#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_f32)"]
66592#[inline]
66593#[target_feature(enable = "neon")]
66594#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66595#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
66596#[cfg_attr(
66597 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66598 assert_instr(zip1)
66599)]
66600#[cfg_attr(
66601 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66602 assert_instr(zip2)
66603)]
66604#[cfg_attr(
66605 not(target_arch = "arm"),
66606 stable(feature = "neon_intrinsics", since = "1.59.0")
66607)]
66608#[cfg_attr(
66609 target_arch = "arm",
66610 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66611)]
66612pub fn vzipq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
66613 unsafe {
66614 let a0: float32x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
66615 let b0: float32x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
66616 transmute((a0, b0))
66617 }
66618}
66619#[doc = "Zip vectors"]
66620#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_s8)"]
66621#[inline]
66622#[target_feature(enable = "neon")]
66623#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66624#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
66625#[cfg_attr(
66626 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66627 assert_instr(zip1)
66628)]
66629#[cfg_attr(
66630 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66631 assert_instr(zip2)
66632)]
66633#[cfg_attr(
66634 not(target_arch = "arm"),
66635 stable(feature = "neon_intrinsics", since = "1.59.0")
66636)]
66637#[cfg_attr(
66638 target_arch = "arm",
66639 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66640)]
66641pub fn vzipq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
66642 unsafe {
66643 let a0: int8x16_t = simd_shuffle!(
66644 a,
66645 b,
66646 [0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23]
66647 );
66648 let b0: int8x16_t = simd_shuffle!(
66649 a,
66650 b,
66651 [8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31]
66652 );
66653 transmute((a0, b0))
66654 }
66655}
66656#[doc = "Zip vectors"]
66657#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_s16)"]
66658#[inline]
66659#[target_feature(enable = "neon")]
66660#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66661#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
66662#[cfg_attr(
66663 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66664 assert_instr(zip1)
66665)]
66666#[cfg_attr(
66667 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66668 assert_instr(zip2)
66669)]
66670#[cfg_attr(
66671 not(target_arch = "arm"),
66672 stable(feature = "neon_intrinsics", since = "1.59.0")
66673)]
66674#[cfg_attr(
66675 target_arch = "arm",
66676 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66677)]
66678pub fn vzipq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
66679 unsafe {
66680 let a0: int16x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
66681 let b0: int16x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
66682 transmute((a0, b0))
66683 }
66684}
66685#[doc = "Zip vectors"]
66686#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_s32)"]
66687#[inline]
66688#[target_feature(enable = "neon")]
66689#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66690#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
66691#[cfg_attr(
66692 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66693 assert_instr(zip1)
66694)]
66695#[cfg_attr(
66696 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66697 assert_instr(zip2)
66698)]
66699#[cfg_attr(
66700 not(target_arch = "arm"),
66701 stable(feature = "neon_intrinsics", since = "1.59.0")
66702)]
66703#[cfg_attr(
66704 target_arch = "arm",
66705 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66706)]
66707pub fn vzipq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
66708 unsafe {
66709 let a0: int32x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
66710 let b0: int32x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
66711 transmute((a0, b0))
66712 }
66713}
66714#[doc = "Zip vectors"]
66715#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_u8)"]
66716#[inline]
66717#[target_feature(enable = "neon")]
66718#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66719#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
66720#[cfg_attr(
66721 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66722 assert_instr(zip1)
66723)]
66724#[cfg_attr(
66725 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66726 assert_instr(zip2)
66727)]
66728#[cfg_attr(
66729 not(target_arch = "arm"),
66730 stable(feature = "neon_intrinsics", since = "1.59.0")
66731)]
66732#[cfg_attr(
66733 target_arch = "arm",
66734 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66735)]
66736pub fn vzipq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
66737 unsafe {
66738 let a0: uint8x16_t = simd_shuffle!(
66739 a,
66740 b,
66741 [0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23]
66742 );
66743 let b0: uint8x16_t = simd_shuffle!(
66744 a,
66745 b,
66746 [8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31]
66747 );
66748 transmute((a0, b0))
66749 }
66750}
66751#[doc = "Zip vectors"]
66752#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_u16)"]
66753#[inline]
66754#[target_feature(enable = "neon")]
66755#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66756#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
66757#[cfg_attr(
66758 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66759 assert_instr(zip1)
66760)]
66761#[cfg_attr(
66762 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66763 assert_instr(zip2)
66764)]
66765#[cfg_attr(
66766 not(target_arch = "arm"),
66767 stable(feature = "neon_intrinsics", since = "1.59.0")
66768)]
66769#[cfg_attr(
66770 target_arch = "arm",
66771 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66772)]
66773pub fn vzipq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
66774 unsafe {
66775 let a0: uint16x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
66776 let b0: uint16x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
66777 transmute((a0, b0))
66778 }
66779}
66780#[doc = "Zip vectors"]
66781#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_u32)"]
66782#[inline]
66783#[target_feature(enable = "neon")]
66784#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66785#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
66786#[cfg_attr(
66787 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66788 assert_instr(zip1)
66789)]
66790#[cfg_attr(
66791 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66792 assert_instr(zip2)
66793)]
66794#[cfg_attr(
66795 not(target_arch = "arm"),
66796 stable(feature = "neon_intrinsics", since = "1.59.0")
66797)]
66798#[cfg_attr(
66799 target_arch = "arm",
66800 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66801)]
66802pub fn vzipq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
66803 unsafe {
66804 let a0: uint32x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
66805 let b0: uint32x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
66806 transmute((a0, b0))
66807 }
66808}
66809#[doc = "Zip vectors"]
66810#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_p8)"]
66811#[inline]
66812#[target_feature(enable = "neon")]
66813#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66814#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
66815#[cfg_attr(
66816 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66817 assert_instr(zip1)
66818)]
66819#[cfg_attr(
66820 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66821 assert_instr(zip2)
66822)]
66823#[cfg_attr(
66824 not(target_arch = "arm"),
66825 stable(feature = "neon_intrinsics", since = "1.59.0")
66826)]
66827#[cfg_attr(
66828 target_arch = "arm",
66829 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66830)]
66831pub fn vzipq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
66832 unsafe {
66833 let a0: poly8x16_t = simd_shuffle!(
66834 a,
66835 b,
66836 [0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23]
66837 );
66838 let b0: poly8x16_t = simd_shuffle!(
66839 a,
66840 b,
66841 [8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31]
66842 );
66843 transmute((a0, b0))
66844 }
66845}
66846#[doc = "Zip vectors"]
66847#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_p16)"]
66848#[inline]
66849#[target_feature(enable = "neon")]
66850#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66851#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
66852#[cfg_attr(
66853 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66854 assert_instr(zip1)
66855)]
66856#[cfg_attr(
66857 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66858 assert_instr(zip2)
66859)]
66860#[cfg_attr(
66861 not(target_arch = "arm"),
66862 stable(feature = "neon_intrinsics", since = "1.59.0")
66863)]
66864#[cfg_attr(
66865 target_arch = "arm",
66866 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66867)]
66868pub fn vzipq_p16(a: poly16x8_t, b: poly16x8_t) -> poly16x8x2_t {
66869 unsafe {
66870 let a0: poly16x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
66871 let b0: poly16x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
66872 transmute((a0, b0))
66873 }
66874}