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#[cfg_attr(
823 not(target_arch = "arm"),
824 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
825)]
826#[cfg_attr(
827 target_arch = "arm",
828 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
829)]
830#[cfg(not(target_arch = "arm64ec"))]
831pub fn vabd_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
832 unsafe extern "unadjusted" {
833 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v4f16")]
834 #[cfg_attr(
835 any(target_arch = "aarch64", target_arch = "arm64ec"),
836 link_name = "llvm.aarch64.neon.fabd.v4f16"
837 )]
838 fn _vabd_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
839 }
840 unsafe { _vabd_f16(a, b) }
841}
842#[doc = "Absolute difference between the arguments of Floating"]
843#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdq_f16)"]
844#[inline]
845#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
846#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.f16"))]
847#[cfg_attr(
848 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
849 assert_instr(fabd)
850)]
851#[target_feature(enable = "neon,fp16")]
852#[cfg_attr(
853 not(target_arch = "arm"),
854 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
855)]
856#[cfg_attr(
857 target_arch = "arm",
858 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
859)]
860#[cfg(not(target_arch = "arm64ec"))]
861pub fn vabdq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
862 unsafe extern "unadjusted" {
863 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v8f16")]
864 #[cfg_attr(
865 any(target_arch = "aarch64", target_arch = "arm64ec"),
866 link_name = "llvm.aarch64.neon.fabd.v8f16"
867 )]
868 fn _vabdq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
869 }
870 unsafe { _vabdq_f16(a, b) }
871}
872#[doc = "Absolute difference between the arguments of Floating"]
873#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabd_f32)"]
874#[inline]
875#[target_feature(enable = "neon")]
876#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
877#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.f32"))]
878#[cfg_attr(
879 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
880 assert_instr(fabd)
881)]
882#[cfg_attr(
883 not(target_arch = "arm"),
884 stable(feature = "neon_intrinsics", since = "1.59.0")
885)]
886#[cfg_attr(
887 target_arch = "arm",
888 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
889)]
890pub fn vabd_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
891 unsafe extern "unadjusted" {
892 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v2f32")]
893 #[cfg_attr(
894 any(target_arch = "aarch64", target_arch = "arm64ec"),
895 link_name = "llvm.aarch64.neon.fabd.v2f32"
896 )]
897 fn _vabd_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
898 }
899 unsafe { _vabd_f32(a, b) }
900}
901#[doc = "Absolute difference between the arguments of Floating"]
902#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdq_f32)"]
903#[inline]
904#[target_feature(enable = "neon")]
905#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
906#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.f32"))]
907#[cfg_attr(
908 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
909 assert_instr(fabd)
910)]
911#[cfg_attr(
912 not(target_arch = "arm"),
913 stable(feature = "neon_intrinsics", since = "1.59.0")
914)]
915#[cfg_attr(
916 target_arch = "arm",
917 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
918)]
919pub fn vabdq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
920 unsafe extern "unadjusted" {
921 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v4f32")]
922 #[cfg_attr(
923 any(target_arch = "aarch64", target_arch = "arm64ec"),
924 link_name = "llvm.aarch64.neon.fabd.v4f32"
925 )]
926 fn _vabdq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
927 }
928 unsafe { _vabdq_f32(a, b) }
929}
930#[doc = "Absolute difference between the arguments"]
931#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabd_s8)"]
932#[inline]
933#[target_feature(enable = "neon")]
934#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
935#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.s8"))]
936#[cfg_attr(
937 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
938 assert_instr(sabd)
939)]
940#[cfg_attr(
941 not(target_arch = "arm"),
942 stable(feature = "neon_intrinsics", since = "1.59.0")
943)]
944#[cfg_attr(
945 target_arch = "arm",
946 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
947)]
948pub fn vabd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
949 unsafe extern "unadjusted" {
950 #[cfg_attr(
951 any(target_arch = "aarch64", target_arch = "arm64ec"),
952 link_name = "llvm.aarch64.neon.sabd.v8i8"
953 )]
954 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v8i8")]
955 fn _vabd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
956 }
957 unsafe { _vabd_s8(a, b) }
958}
959#[doc = "Absolute difference between the arguments"]
960#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdq_s8)"]
961#[inline]
962#[target_feature(enable = "neon")]
963#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
964#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.s8"))]
965#[cfg_attr(
966 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
967 assert_instr(sabd)
968)]
969#[cfg_attr(
970 not(target_arch = "arm"),
971 stable(feature = "neon_intrinsics", since = "1.59.0")
972)]
973#[cfg_attr(
974 target_arch = "arm",
975 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
976)]
977pub fn vabdq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
978 unsafe extern "unadjusted" {
979 #[cfg_attr(
980 any(target_arch = "aarch64", target_arch = "arm64ec"),
981 link_name = "llvm.aarch64.neon.sabd.v16i8"
982 )]
983 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v16i8")]
984 fn _vabdq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
985 }
986 unsafe { _vabdq_s8(a, b) }
987}
988#[doc = "Absolute difference between the arguments"]
989#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabd_s16)"]
990#[inline]
991#[target_feature(enable = "neon")]
992#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
993#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.s16"))]
994#[cfg_attr(
995 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
996 assert_instr(sabd)
997)]
998#[cfg_attr(
999 not(target_arch = "arm"),
1000 stable(feature = "neon_intrinsics", since = "1.59.0")
1001)]
1002#[cfg_attr(
1003 target_arch = "arm",
1004 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1005)]
1006pub fn vabd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
1007 unsafe extern "unadjusted" {
1008 #[cfg_attr(
1009 any(target_arch = "aarch64", target_arch = "arm64ec"),
1010 link_name = "llvm.aarch64.neon.sabd.v4i16"
1011 )]
1012 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v4i16")]
1013 fn _vabd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
1014 }
1015 unsafe { _vabd_s16(a, b) }
1016}
1017#[doc = "Absolute difference between the arguments"]
1018#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdq_s16)"]
1019#[inline]
1020#[target_feature(enable = "neon")]
1021#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1022#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.s16"))]
1023#[cfg_attr(
1024 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1025 assert_instr(sabd)
1026)]
1027#[cfg_attr(
1028 not(target_arch = "arm"),
1029 stable(feature = "neon_intrinsics", since = "1.59.0")
1030)]
1031#[cfg_attr(
1032 target_arch = "arm",
1033 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1034)]
1035pub fn vabdq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
1036 unsafe extern "unadjusted" {
1037 #[cfg_attr(
1038 any(target_arch = "aarch64", target_arch = "arm64ec"),
1039 link_name = "llvm.aarch64.neon.sabd.v8i16"
1040 )]
1041 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v8i16")]
1042 fn _vabdq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
1043 }
1044 unsafe { _vabdq_s16(a, b) }
1045}
1046#[doc = "Absolute difference between the arguments"]
1047#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabd_s32)"]
1048#[inline]
1049#[target_feature(enable = "neon")]
1050#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1051#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.s32"))]
1052#[cfg_attr(
1053 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1054 assert_instr(sabd)
1055)]
1056#[cfg_attr(
1057 not(target_arch = "arm"),
1058 stable(feature = "neon_intrinsics", since = "1.59.0")
1059)]
1060#[cfg_attr(
1061 target_arch = "arm",
1062 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1063)]
1064pub fn vabd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
1065 unsafe extern "unadjusted" {
1066 #[cfg_attr(
1067 any(target_arch = "aarch64", target_arch = "arm64ec"),
1068 link_name = "llvm.aarch64.neon.sabd.v2i32"
1069 )]
1070 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v2i32")]
1071 fn _vabd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
1072 }
1073 unsafe { _vabd_s32(a, b) }
1074}
1075#[doc = "Absolute difference between the arguments"]
1076#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdq_s32)"]
1077#[inline]
1078#[target_feature(enable = "neon")]
1079#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1080#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.s32"))]
1081#[cfg_attr(
1082 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1083 assert_instr(sabd)
1084)]
1085#[cfg_attr(
1086 not(target_arch = "arm"),
1087 stable(feature = "neon_intrinsics", since = "1.59.0")
1088)]
1089#[cfg_attr(
1090 target_arch = "arm",
1091 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1092)]
1093pub fn vabdq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
1094 unsafe extern "unadjusted" {
1095 #[cfg_attr(
1096 any(target_arch = "aarch64", target_arch = "arm64ec"),
1097 link_name = "llvm.aarch64.neon.sabd.v4i32"
1098 )]
1099 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabds.v4i32")]
1100 fn _vabdq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
1101 }
1102 unsafe { _vabdq_s32(a, b) }
1103}
1104#[doc = "Absolute difference between the arguments"]
1105#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabd_u8)"]
1106#[inline]
1107#[target_feature(enable = "neon")]
1108#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1109#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.u8"))]
1110#[cfg_attr(
1111 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1112 assert_instr(uabd)
1113)]
1114#[cfg_attr(
1115 not(target_arch = "arm"),
1116 stable(feature = "neon_intrinsics", since = "1.59.0")
1117)]
1118#[cfg_attr(
1119 target_arch = "arm",
1120 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1121)]
1122pub fn vabd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
1123 unsafe extern "unadjusted" {
1124 #[cfg_attr(
1125 any(target_arch = "aarch64", target_arch = "arm64ec"),
1126 link_name = "llvm.aarch64.neon.uabd.v8i8"
1127 )]
1128 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabdu.v8i8")]
1129 fn _vabd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
1130 }
1131 unsafe { _vabd_u8(a, b) }
1132}
1133#[doc = "Absolute difference between the arguments"]
1134#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdq_u8)"]
1135#[inline]
1136#[target_feature(enable = "neon")]
1137#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1138#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.u8"))]
1139#[cfg_attr(
1140 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1141 assert_instr(uabd)
1142)]
1143#[cfg_attr(
1144 not(target_arch = "arm"),
1145 stable(feature = "neon_intrinsics", since = "1.59.0")
1146)]
1147#[cfg_attr(
1148 target_arch = "arm",
1149 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1150)]
1151pub fn vabdq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
1152 unsafe extern "unadjusted" {
1153 #[cfg_attr(
1154 any(target_arch = "aarch64", target_arch = "arm64ec"),
1155 link_name = "llvm.aarch64.neon.uabd.v16i8"
1156 )]
1157 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabdu.v16i8")]
1158 fn _vabdq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
1159 }
1160 unsafe { _vabdq_u8(a, b) }
1161}
1162#[doc = "Absolute difference between the arguments"]
1163#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabd_u16)"]
1164#[inline]
1165#[target_feature(enable = "neon")]
1166#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1167#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.u16"))]
1168#[cfg_attr(
1169 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1170 assert_instr(uabd)
1171)]
1172#[cfg_attr(
1173 not(target_arch = "arm"),
1174 stable(feature = "neon_intrinsics", since = "1.59.0")
1175)]
1176#[cfg_attr(
1177 target_arch = "arm",
1178 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1179)]
1180pub fn vabd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
1181 unsafe extern "unadjusted" {
1182 #[cfg_attr(
1183 any(target_arch = "aarch64", target_arch = "arm64ec"),
1184 link_name = "llvm.aarch64.neon.uabd.v4i16"
1185 )]
1186 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabdu.v4i16")]
1187 fn _vabd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
1188 }
1189 unsafe { _vabd_u16(a, b) }
1190}
1191#[doc = "Absolute difference between the arguments"]
1192#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdq_u16)"]
1193#[inline]
1194#[target_feature(enable = "neon")]
1195#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1196#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.u16"))]
1197#[cfg_attr(
1198 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1199 assert_instr(uabd)
1200)]
1201#[cfg_attr(
1202 not(target_arch = "arm"),
1203 stable(feature = "neon_intrinsics", since = "1.59.0")
1204)]
1205#[cfg_attr(
1206 target_arch = "arm",
1207 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1208)]
1209pub fn vabdq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
1210 unsafe extern "unadjusted" {
1211 #[cfg_attr(
1212 any(target_arch = "aarch64", target_arch = "arm64ec"),
1213 link_name = "llvm.aarch64.neon.uabd.v8i16"
1214 )]
1215 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabdu.v8i16")]
1216 fn _vabdq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
1217 }
1218 unsafe { _vabdq_u16(a, b) }
1219}
1220#[doc = "Absolute difference between the arguments"]
1221#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabd_u32)"]
1222#[inline]
1223#[target_feature(enable = "neon")]
1224#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1225#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.u32"))]
1226#[cfg_attr(
1227 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1228 assert_instr(uabd)
1229)]
1230#[cfg_attr(
1231 not(target_arch = "arm"),
1232 stable(feature = "neon_intrinsics", since = "1.59.0")
1233)]
1234#[cfg_attr(
1235 target_arch = "arm",
1236 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1237)]
1238pub fn vabd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
1239 unsafe extern "unadjusted" {
1240 #[cfg_attr(
1241 any(target_arch = "aarch64", target_arch = "arm64ec"),
1242 link_name = "llvm.aarch64.neon.uabd.v2i32"
1243 )]
1244 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabdu.v2i32")]
1245 fn _vabd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
1246 }
1247 unsafe { _vabd_u32(a, b) }
1248}
1249#[doc = "Absolute difference between the arguments"]
1250#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdq_u32)"]
1251#[inline]
1252#[target_feature(enable = "neon")]
1253#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1254#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabd.u32"))]
1255#[cfg_attr(
1256 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1257 assert_instr(uabd)
1258)]
1259#[cfg_attr(
1260 not(target_arch = "arm"),
1261 stable(feature = "neon_intrinsics", since = "1.59.0")
1262)]
1263#[cfg_attr(
1264 target_arch = "arm",
1265 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1266)]
1267pub fn vabdq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
1268 unsafe extern "unadjusted" {
1269 #[cfg_attr(
1270 any(target_arch = "aarch64", target_arch = "arm64ec"),
1271 link_name = "llvm.aarch64.neon.uabd.v4i32"
1272 )]
1273 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabdu.v4i32")]
1274 fn _vabdq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
1275 }
1276 unsafe { _vabdq_u32(a, b) }
1277}
1278#[doc = "Signed Absolute difference Long"]
1279#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_s8)"]
1280#[inline]
1281#[target_feature(enable = "neon")]
1282#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1283#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabdl.s8"))]
1284#[cfg_attr(
1285 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1286 assert_instr(sabdl)
1287)]
1288#[cfg_attr(
1289 not(target_arch = "arm"),
1290 stable(feature = "neon_intrinsics", since = "1.59.0")
1291)]
1292#[cfg_attr(
1293 target_arch = "arm",
1294 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1295)]
1296pub fn vabdl_s8(a: int8x8_t, b: int8x8_t) -> int16x8_t {
1297 unsafe {
1298 let c: uint8x8_t = simd_cast(vabd_s8(a, b));
1299 simd_cast(c)
1300 }
1301}
1302#[doc = "Signed Absolute difference Long"]
1303#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_s16)"]
1304#[inline]
1305#[target_feature(enable = "neon")]
1306#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1307#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabdl.s16"))]
1308#[cfg_attr(
1309 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1310 assert_instr(sabdl)
1311)]
1312#[cfg_attr(
1313 not(target_arch = "arm"),
1314 stable(feature = "neon_intrinsics", since = "1.59.0")
1315)]
1316#[cfg_attr(
1317 target_arch = "arm",
1318 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1319)]
1320pub fn vabdl_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t {
1321 unsafe {
1322 let c: uint16x4_t = simd_cast(vabd_s16(a, b));
1323 simd_cast(c)
1324 }
1325}
1326#[doc = "Signed Absolute difference Long"]
1327#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_s32)"]
1328#[inline]
1329#[target_feature(enable = "neon")]
1330#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1331#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabdl.s32"))]
1332#[cfg_attr(
1333 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1334 assert_instr(sabdl)
1335)]
1336#[cfg_attr(
1337 not(target_arch = "arm"),
1338 stable(feature = "neon_intrinsics", since = "1.59.0")
1339)]
1340#[cfg_attr(
1341 target_arch = "arm",
1342 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1343)]
1344pub fn vabdl_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t {
1345 unsafe {
1346 let c: uint32x2_t = simd_cast(vabd_s32(a, b));
1347 simd_cast(c)
1348 }
1349}
1350#[doc = "Unsigned Absolute difference Long"]
1351#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_u8)"]
1352#[inline]
1353#[target_feature(enable = "neon")]
1354#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1355#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabdl.u8"))]
1356#[cfg_attr(
1357 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1358 assert_instr(uabdl)
1359)]
1360#[cfg_attr(
1361 not(target_arch = "arm"),
1362 stable(feature = "neon_intrinsics", since = "1.59.0")
1363)]
1364#[cfg_attr(
1365 target_arch = "arm",
1366 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1367)]
1368pub fn vabdl_u8(a: uint8x8_t, b: uint8x8_t) -> uint16x8_t {
1369 unsafe { simd_cast(vabd_u8(a, b)) }
1370}
1371#[doc = "Unsigned Absolute difference Long"]
1372#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_u16)"]
1373#[inline]
1374#[target_feature(enable = "neon")]
1375#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1376#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabdl.u16"))]
1377#[cfg_attr(
1378 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1379 assert_instr(uabdl)
1380)]
1381#[cfg_attr(
1382 not(target_arch = "arm"),
1383 stable(feature = "neon_intrinsics", since = "1.59.0")
1384)]
1385#[cfg_attr(
1386 target_arch = "arm",
1387 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1388)]
1389pub fn vabdl_u16(a: uint16x4_t, b: uint16x4_t) -> uint32x4_t {
1390 unsafe { simd_cast(vabd_u16(a, b)) }
1391}
1392#[doc = "Unsigned Absolute difference Long"]
1393#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_u32)"]
1394#[inline]
1395#[target_feature(enable = "neon")]
1396#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1397#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vabdl.u32"))]
1398#[cfg_attr(
1399 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1400 assert_instr(uabdl)
1401)]
1402#[cfg_attr(
1403 not(target_arch = "arm"),
1404 stable(feature = "neon_intrinsics", since = "1.59.0")
1405)]
1406#[cfg_attr(
1407 target_arch = "arm",
1408 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1409)]
1410pub fn vabdl_u32(a: uint32x2_t, b: uint32x2_t) -> uint64x2_t {
1411 unsafe { simd_cast(vabd_u32(a, b)) }
1412}
1413#[doc = "Floating-point absolute value"]
1414#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabs_f16)"]
1415#[inline]
1416#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
1417#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1418#[cfg_attr(
1419 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1420 assert_instr(fabs)
1421)]
1422#[target_feature(enable = "neon,fp16")]
1423#[cfg_attr(
1424 not(target_arch = "arm"),
1425 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
1426)]
1427#[cfg_attr(
1428 target_arch = "arm",
1429 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1430)]
1431#[cfg(not(target_arch = "arm64ec"))]
1432pub fn vabs_f16(a: float16x4_t) -> float16x4_t {
1433 unsafe { simd_fabs(a) }
1434}
1435#[doc = "Floating-point absolute value"]
1436#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_f16)"]
1437#[inline]
1438#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
1439#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1440#[cfg_attr(
1441 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1442 assert_instr(fabs)
1443)]
1444#[target_feature(enable = "neon,fp16")]
1445#[cfg_attr(
1446 not(target_arch = "arm"),
1447 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
1448)]
1449#[cfg_attr(
1450 target_arch = "arm",
1451 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1452)]
1453#[cfg(not(target_arch = "arm64ec"))]
1454pub fn vabsq_f16(a: float16x8_t) -> float16x8_t {
1455 unsafe { simd_fabs(a) }
1456}
1457#[doc = "Floating-point absolute value"]
1458#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabs_f32)"]
1459#[inline]
1460#[target_feature(enable = "neon")]
1461#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1462#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1463#[cfg_attr(
1464 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1465 assert_instr(fabs)
1466)]
1467#[cfg_attr(
1468 not(target_arch = "arm"),
1469 stable(feature = "neon_intrinsics", since = "1.59.0")
1470)]
1471#[cfg_attr(
1472 target_arch = "arm",
1473 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1474)]
1475pub fn vabs_f32(a: float32x2_t) -> float32x2_t {
1476 unsafe { simd_fabs(a) }
1477}
1478#[doc = "Floating-point absolute value"]
1479#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_f32)"]
1480#[inline]
1481#[target_feature(enable = "neon")]
1482#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1483#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1484#[cfg_attr(
1485 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1486 assert_instr(fabs)
1487)]
1488#[cfg_attr(
1489 not(target_arch = "arm"),
1490 stable(feature = "neon_intrinsics", since = "1.59.0")
1491)]
1492#[cfg_attr(
1493 target_arch = "arm",
1494 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1495)]
1496pub fn vabsq_f32(a: float32x4_t) -> float32x4_t {
1497 unsafe { simd_fabs(a) }
1498}
1499#[doc = "Absolute value (wrapping)."]
1500#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabs_s8)"]
1501#[inline]
1502#[target_feature(enable = "neon")]
1503#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1504#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1505#[cfg_attr(
1506 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1507 assert_instr(abs)
1508)]
1509#[cfg_attr(
1510 not(target_arch = "arm"),
1511 stable(feature = "neon_intrinsics", since = "1.59.0")
1512)]
1513#[cfg_attr(
1514 target_arch = "arm",
1515 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1516)]
1517pub fn vabs_s8(a: int8x8_t) -> int8x8_t {
1518 unsafe {
1519 let neg: int8x8_t = simd_neg(a);
1520 let mask: int8x8_t = simd_ge(a, neg);
1521 simd_select(mask, a, neg)
1522 }
1523}
1524#[doc = "Absolute value (wrapping)."]
1525#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_s8)"]
1526#[inline]
1527#[target_feature(enable = "neon")]
1528#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1529#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1530#[cfg_attr(
1531 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1532 assert_instr(abs)
1533)]
1534#[cfg_attr(
1535 not(target_arch = "arm"),
1536 stable(feature = "neon_intrinsics", since = "1.59.0")
1537)]
1538#[cfg_attr(
1539 target_arch = "arm",
1540 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1541)]
1542pub fn vabsq_s8(a: int8x16_t) -> int8x16_t {
1543 unsafe {
1544 let neg: int8x16_t = simd_neg(a);
1545 let mask: int8x16_t = simd_ge(a, neg);
1546 simd_select(mask, a, neg)
1547 }
1548}
1549#[doc = "Absolute value (wrapping)."]
1550#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabs_s16)"]
1551#[inline]
1552#[target_feature(enable = "neon")]
1553#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1554#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1555#[cfg_attr(
1556 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1557 assert_instr(abs)
1558)]
1559#[cfg_attr(
1560 not(target_arch = "arm"),
1561 stable(feature = "neon_intrinsics", since = "1.59.0")
1562)]
1563#[cfg_attr(
1564 target_arch = "arm",
1565 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1566)]
1567pub fn vabs_s16(a: int16x4_t) -> int16x4_t {
1568 unsafe {
1569 let neg: int16x4_t = simd_neg(a);
1570 let mask: int16x4_t = simd_ge(a, neg);
1571 simd_select(mask, a, neg)
1572 }
1573}
1574#[doc = "Absolute value (wrapping)."]
1575#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_s16)"]
1576#[inline]
1577#[target_feature(enable = "neon")]
1578#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1579#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1580#[cfg_attr(
1581 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1582 assert_instr(abs)
1583)]
1584#[cfg_attr(
1585 not(target_arch = "arm"),
1586 stable(feature = "neon_intrinsics", since = "1.59.0")
1587)]
1588#[cfg_attr(
1589 target_arch = "arm",
1590 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1591)]
1592pub fn vabsq_s16(a: int16x8_t) -> int16x8_t {
1593 unsafe {
1594 let neg: int16x8_t = simd_neg(a);
1595 let mask: int16x8_t = simd_ge(a, neg);
1596 simd_select(mask, a, neg)
1597 }
1598}
1599#[doc = "Absolute value (wrapping)."]
1600#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabs_s32)"]
1601#[inline]
1602#[target_feature(enable = "neon")]
1603#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1604#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1605#[cfg_attr(
1606 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1607 assert_instr(abs)
1608)]
1609#[cfg_attr(
1610 not(target_arch = "arm"),
1611 stable(feature = "neon_intrinsics", since = "1.59.0")
1612)]
1613#[cfg_attr(
1614 target_arch = "arm",
1615 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1616)]
1617pub fn vabs_s32(a: int32x2_t) -> int32x2_t {
1618 unsafe {
1619 let neg: int32x2_t = simd_neg(a);
1620 let mask: int32x2_t = simd_ge(a, neg);
1621 simd_select(mask, a, neg)
1622 }
1623}
1624#[doc = "Absolute value (wrapping)."]
1625#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_s32)"]
1626#[inline]
1627#[target_feature(enable = "neon")]
1628#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
1629#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1630#[cfg_attr(
1631 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1632 assert_instr(abs)
1633)]
1634#[cfg_attr(
1635 not(target_arch = "arm"),
1636 stable(feature = "neon_intrinsics", since = "1.59.0")
1637)]
1638#[cfg_attr(
1639 target_arch = "arm",
1640 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1641)]
1642pub fn vabsq_s32(a: int32x4_t) -> int32x4_t {
1643 unsafe {
1644 let neg: int32x4_t = simd_neg(a);
1645 let mask: int32x4_t = simd_ge(a, neg);
1646 simd_select(mask, a, neg)
1647 }
1648}
1649#[doc = "Floating-point absolute value"]
1650#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsh_f16)"]
1651#[inline]
1652#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
1653#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vabs))]
1654#[cfg_attr(
1655 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1656 assert_instr(fabs)
1657)]
1658#[target_feature(enable = "neon,fp16")]
1659#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
1660#[cfg(not(target_arch = "arm64ec"))]
1661pub fn vabsh_f16(a: f16) -> f16 {
1662 unsafe { simd_extract!(vabs_f16(vdup_n_f16(a)), 0) }
1663}
1664#[doc = "Floating-point Add (vector)."]
1665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vadd_f16)"]
1666#[inline]
1667#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
1668#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vadd.f16"))]
1669#[cfg_attr(
1670 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1671 assert_instr(fadd)
1672)]
1673#[target_feature(enable = "neon,fp16")]
1674#[cfg_attr(
1675 not(target_arch = "arm"),
1676 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
1677)]
1678#[cfg_attr(
1679 target_arch = "arm",
1680 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1681)]
1682#[cfg(not(target_arch = "arm64ec"))]
1683pub fn vadd_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
1684 unsafe { simd_add(a, b) }
1685}
1686#[doc = "Floating-point Add (vector)."]
1687#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddq_f16)"]
1688#[inline]
1689#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
1690#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vadd.f16"))]
1691#[cfg_attr(
1692 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
1693 assert_instr(fadd)
1694)]
1695#[target_feature(enable = "neon,fp16")]
1696#[cfg_attr(
1697 not(target_arch = "arm"),
1698 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
1699)]
1700#[cfg_attr(
1701 target_arch = "arm",
1702 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
1703)]
1704#[cfg(not(target_arch = "arm64ec"))]
1705pub fn vaddq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_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_f32)"]
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(fadd)
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_f32(a: float32x2_t, b: float32x2_t) -> float32x2_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_s16)"]
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_s16(a: int16x4_t, b: int16x4_t) -> int16x4_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_s32)"]
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_s32(a: int32x2_t, b: int32x2_t) -> int32x2_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_s8)"]
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_s8(a: int8x8_t, b: int8x8_t) -> int8x8_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_u16)"]
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_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_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/vadd_u32)"]
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(add)
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 vadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_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/vadd_u8)"]
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 vadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_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_f32)"]
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(fadd)
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_f32(a: float32x4_t, b: float32x4_t) -> float32x4_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_s16)"]
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_s16(a: int16x8_t, b: int16x8_t) -> int16x8_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_s32)"]
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_s32(a: int32x4_t, b: int32x4_t) -> int32x4_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_s64)"]
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_s64(a: int64x2_t, b: int64x2_t) -> int64x2_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_s8)"]
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_s8(a: int8x16_t, b: int8x16_t) -> int8x16_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_u16)"]
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_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_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_u32)"]
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_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
2000 unsafe { simd_add(a, b) }
2001}
2002#[doc = "Vector add."]
2003#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddq_u64)"]
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(vadd))]
2008#[cfg_attr(
2009 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2010 assert_instr(add)
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 vaddq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
2021 unsafe { simd_add(a, b) }
2022}
2023#[doc = "Vector add."]
2024#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddq_u8)"]
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(vadd))]
2029#[cfg_attr(
2030 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2031 assert_instr(add)
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_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
2042 unsafe { simd_add(a, b) }
2043}
2044#[doc = "Bitwise exclusive OR"]
2045#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vadd_p8)"]
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_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8_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_p8)"]
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_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16_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_p16)"]
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_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4_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_p16)"]
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_p16(a: poly16x8_t, b: poly16x8_t) -> poly16x8_t {
2126 unsafe { simd_xor(a, b) }
2127}
2128#[doc = "Bitwise exclusive OR"]
2129#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vadd_p64)"]
2130#[inline]
2131#[target_feature(enable = "neon")]
2132#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2133#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
2134#[cfg_attr(
2135 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2136 assert_instr(nop)
2137)]
2138#[cfg_attr(
2139 not(target_arch = "arm"),
2140 stable(feature = "neon_intrinsics", since = "1.59.0")
2141)]
2142#[cfg_attr(
2143 target_arch = "arm",
2144 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2145)]
2146pub fn vadd_p64(a: poly64x1_t, b: poly64x1_t) -> poly64x1_t {
2147 unsafe { simd_xor(a, b) }
2148}
2149#[doc = "Bitwise exclusive OR"]
2150#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddq_p64)"]
2151#[inline]
2152#[target_feature(enable = "neon")]
2153#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2154#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
2155#[cfg_attr(
2156 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2157 assert_instr(nop)
2158)]
2159#[cfg_attr(
2160 not(target_arch = "arm"),
2161 stable(feature = "neon_intrinsics", since = "1.59.0")
2162)]
2163#[cfg_attr(
2164 target_arch = "arm",
2165 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2166)]
2167pub fn vaddq_p64(a: poly64x2_t, b: poly64x2_t) -> poly64x2_t {
2168 unsafe { simd_xor(a, b) }
2169}
2170#[doc = "Add"]
2171#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddh_f16)"]
2172#[inline]
2173#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
2174#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vadd.f16"))]
2175#[cfg_attr(
2176 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2177 assert_instr(fadd)
2178)]
2179#[target_feature(enable = "neon,fp16")]
2180#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
2181#[cfg(not(target_arch = "arm64ec"))]
2182pub fn vaddh_f16(a: f16, b: f16) -> f16 {
2183 a + b
2184}
2185#[doc = "Add returning High Narrow (high half)."]
2186#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_high_s16)"]
2187#[inline]
2188#[target_feature(enable = "neon")]
2189#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2190#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddhn))]
2191#[cfg_attr(
2192 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2193 assert_instr(addhn2)
2194)]
2195#[cfg_attr(
2196 not(target_arch = "arm"),
2197 stable(feature = "neon_intrinsics", since = "1.59.0")
2198)]
2199#[cfg_attr(
2200 target_arch = "arm",
2201 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2202)]
2203pub fn vaddhn_high_s16(r: int8x8_t, a: int16x8_t, b: int16x8_t) -> int8x16_t {
2204 unsafe {
2205 let x = simd_cast(simd_shr(simd_add(a, b), int16x8_t::splat(8)));
2206 simd_shuffle!(r, x, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
2207 }
2208}
2209#[doc = "Add returning High Narrow (high half)."]
2210#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_high_s32)"]
2211#[inline]
2212#[target_feature(enable = "neon")]
2213#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2214#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddhn))]
2215#[cfg_attr(
2216 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2217 assert_instr(addhn2)
2218)]
2219#[cfg_attr(
2220 not(target_arch = "arm"),
2221 stable(feature = "neon_intrinsics", since = "1.59.0")
2222)]
2223#[cfg_attr(
2224 target_arch = "arm",
2225 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2226)]
2227pub fn vaddhn_high_s32(r: int16x4_t, a: int32x4_t, b: int32x4_t) -> int16x8_t {
2228 unsafe {
2229 let x = simd_cast(simd_shr(simd_add(a, b), int32x4_t::splat(16)));
2230 simd_shuffle!(r, x, [0, 1, 2, 3, 4, 5, 6, 7])
2231 }
2232}
2233#[doc = "Add returning High Narrow (high half)."]
2234#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_high_s64)"]
2235#[inline]
2236#[target_feature(enable = "neon")]
2237#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2238#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddhn))]
2239#[cfg_attr(
2240 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2241 assert_instr(addhn2)
2242)]
2243#[cfg_attr(
2244 not(target_arch = "arm"),
2245 stable(feature = "neon_intrinsics", since = "1.59.0")
2246)]
2247#[cfg_attr(
2248 target_arch = "arm",
2249 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2250)]
2251pub fn vaddhn_high_s64(r: int32x2_t, a: int64x2_t, b: int64x2_t) -> int32x4_t {
2252 unsafe {
2253 let x = simd_cast(simd_shr(simd_add(a, b), int64x2_t::splat(32)));
2254 simd_shuffle!(r, x, [0, 1, 2, 3])
2255 }
2256}
2257#[doc = "Add returning High Narrow (high half)."]
2258#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_high_u16)"]
2259#[inline]
2260#[target_feature(enable = "neon")]
2261#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2262#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddhn))]
2263#[cfg_attr(
2264 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2265 assert_instr(addhn2)
2266)]
2267#[cfg_attr(
2268 not(target_arch = "arm"),
2269 stable(feature = "neon_intrinsics", since = "1.59.0")
2270)]
2271#[cfg_attr(
2272 target_arch = "arm",
2273 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2274)]
2275pub fn vaddhn_high_u16(r: uint8x8_t, a: uint16x8_t, b: uint16x8_t) -> uint8x16_t {
2276 unsafe {
2277 let x = simd_cast(simd_shr(simd_add(a, b), uint16x8_t::splat(8)));
2278 simd_shuffle!(r, x, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
2279 }
2280}
2281#[doc = "Add returning High Narrow (high half)."]
2282#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_high_u32)"]
2283#[inline]
2284#[target_feature(enable = "neon")]
2285#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2286#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddhn))]
2287#[cfg_attr(
2288 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2289 assert_instr(addhn2)
2290)]
2291#[cfg_attr(
2292 not(target_arch = "arm"),
2293 stable(feature = "neon_intrinsics", since = "1.59.0")
2294)]
2295#[cfg_attr(
2296 target_arch = "arm",
2297 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2298)]
2299pub fn vaddhn_high_u32(r: uint16x4_t, a: uint32x4_t, b: uint32x4_t) -> uint16x8_t {
2300 unsafe {
2301 let x = simd_cast(simd_shr(simd_add(a, b), uint32x4_t::splat(16)));
2302 simd_shuffle!(r, x, [0, 1, 2, 3, 4, 5, 6, 7])
2303 }
2304}
2305#[doc = "Add returning High Narrow (high half)."]
2306#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_high_u64)"]
2307#[inline]
2308#[target_feature(enable = "neon")]
2309#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2310#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddhn))]
2311#[cfg_attr(
2312 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2313 assert_instr(addhn2)
2314)]
2315#[cfg_attr(
2316 not(target_arch = "arm"),
2317 stable(feature = "neon_intrinsics", since = "1.59.0")
2318)]
2319#[cfg_attr(
2320 target_arch = "arm",
2321 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2322)]
2323pub fn vaddhn_high_u64(r: uint32x2_t, a: uint64x2_t, b: uint64x2_t) -> uint32x4_t {
2324 unsafe {
2325 let x = simd_cast(simd_shr(simd_add(a, b), uint64x2_t::splat(32)));
2326 simd_shuffle!(r, x, [0, 1, 2, 3])
2327 }
2328}
2329#[doc = "Add returning High Narrow."]
2330#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_s16)"]
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_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t {
2348 unsafe { simd_cast(simd_shr(simd_add(a, b), int16x8_t::splat(8))) }
2349}
2350#[doc = "Add returning High Narrow."]
2351#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_s32)"]
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_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t {
2369 unsafe { simd_cast(simd_shr(simd_add(a, b), int32x4_t::splat(16))) }
2370}
2371#[doc = "Add returning High Narrow."]
2372#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_s64)"]
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_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t {
2390 unsafe { simd_cast(simd_shr(simd_add(a, b), int64x2_t::splat(32))) }
2391}
2392#[doc = "Add returning High Narrow."]
2393#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_u16)"]
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_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
2411 unsafe { simd_cast(simd_shr(simd_add(a, b), uint16x8_t::splat(8))) }
2412}
2413#[doc = "Add returning High Narrow."]
2414#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_u32)"]
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(vaddhn))]
2419#[cfg_attr(
2420 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2421 assert_instr(addhn)
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 vaddhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
2432 unsafe { simd_cast(simd_shr(simd_add(a, b), uint32x4_t::splat(16))) }
2433}
2434#[doc = "Add returning High Narrow."]
2435#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddhn_u64)"]
2436#[inline]
2437#[target_feature(enable = "neon")]
2438#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2439#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddhn))]
2440#[cfg_attr(
2441 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2442 assert_instr(addhn)
2443)]
2444#[cfg_attr(
2445 not(target_arch = "arm"),
2446 stable(feature = "neon_intrinsics", since = "1.59.0")
2447)]
2448#[cfg_attr(
2449 target_arch = "arm",
2450 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2451)]
2452pub fn vaddhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
2453 unsafe { simd_cast(simd_shr(simd_add(a, b), uint64x2_t::splat(32))) }
2454}
2455#[doc = "Signed Add Long (vector, high half)."]
2456#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_high_s16)"]
2457#[inline]
2458#[target_feature(enable = "neon")]
2459#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2460#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2461#[cfg_attr(
2462 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2463 assert_instr(saddl2)
2464)]
2465#[cfg_attr(
2466 not(target_arch = "arm"),
2467 stable(feature = "neon_intrinsics", since = "1.59.0")
2468)]
2469#[cfg_attr(
2470 target_arch = "arm",
2471 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2472)]
2473pub fn vaddl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
2474 unsafe {
2475 let a: int16x4_t = simd_shuffle!(a, a, [4, 5, 6, 7]);
2476 let b: int16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
2477 let a: int32x4_t = simd_cast(a);
2478 let b: int32x4_t = simd_cast(b);
2479 simd_add(a, b)
2480 }
2481}
2482#[doc = "Signed Add Long (vector, high half)."]
2483#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_high_s32)"]
2484#[inline]
2485#[target_feature(enable = "neon")]
2486#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2487#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2488#[cfg_attr(
2489 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2490 assert_instr(saddl2)
2491)]
2492#[cfg_attr(
2493 not(target_arch = "arm"),
2494 stable(feature = "neon_intrinsics", since = "1.59.0")
2495)]
2496#[cfg_attr(
2497 target_arch = "arm",
2498 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2499)]
2500pub fn vaddl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {
2501 unsafe {
2502 let a: int32x2_t = simd_shuffle!(a, a, [2, 3]);
2503 let b: int32x2_t = simd_shuffle!(b, b, [2, 3]);
2504 let a: int64x2_t = simd_cast(a);
2505 let b: int64x2_t = simd_cast(b);
2506 simd_add(a, b)
2507 }
2508}
2509#[doc = "Signed Add Long (vector, high half)."]
2510#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_high_s8)"]
2511#[inline]
2512#[target_feature(enable = "neon")]
2513#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2514#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2515#[cfg_attr(
2516 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2517 assert_instr(saddl2)
2518)]
2519#[cfg_attr(
2520 not(target_arch = "arm"),
2521 stable(feature = "neon_intrinsics", since = "1.59.0")
2522)]
2523#[cfg_attr(
2524 target_arch = "arm",
2525 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2526)]
2527pub fn vaddl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
2528 unsafe {
2529 let a: int8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
2530 let b: int8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
2531 let a: int16x8_t = simd_cast(a);
2532 let b: int16x8_t = simd_cast(b);
2533 simd_add(a, b)
2534 }
2535}
2536#[doc = "Signed Add Long (vector, high half)."]
2537#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_high_u16)"]
2538#[inline]
2539#[target_feature(enable = "neon")]
2540#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2541#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2542#[cfg_attr(
2543 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2544 assert_instr(uaddl2)
2545)]
2546#[cfg_attr(
2547 not(target_arch = "arm"),
2548 stable(feature = "neon_intrinsics", since = "1.59.0")
2549)]
2550#[cfg_attr(
2551 target_arch = "arm",
2552 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2553)]
2554pub fn vaddl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
2555 unsafe {
2556 let a: uint16x4_t = simd_shuffle!(a, a, [4, 5, 6, 7]);
2557 let b: uint16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
2558 let a: uint32x4_t = simd_cast(a);
2559 let b: uint32x4_t = simd_cast(b);
2560 simd_add(a, b)
2561 }
2562}
2563#[doc = "Signed Add Long (vector, high half)."]
2564#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_high_u32)"]
2565#[inline]
2566#[target_feature(enable = "neon")]
2567#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2568#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2569#[cfg_attr(
2570 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2571 assert_instr(uaddl2)
2572)]
2573#[cfg_attr(
2574 not(target_arch = "arm"),
2575 stable(feature = "neon_intrinsics", since = "1.59.0")
2576)]
2577#[cfg_attr(
2578 target_arch = "arm",
2579 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2580)]
2581pub fn vaddl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {
2582 unsafe {
2583 let a: uint32x2_t = simd_shuffle!(a, a, [2, 3]);
2584 let b: uint32x2_t = simd_shuffle!(b, b, [2, 3]);
2585 let a: uint64x2_t = simd_cast(a);
2586 let b: uint64x2_t = simd_cast(b);
2587 simd_add(a, b)
2588 }
2589}
2590#[doc = "Signed Add Long (vector, high half)."]
2591#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_high_u8)"]
2592#[inline]
2593#[target_feature(enable = "neon")]
2594#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2595#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2596#[cfg_attr(
2597 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2598 assert_instr(uaddl2)
2599)]
2600#[cfg_attr(
2601 not(target_arch = "arm"),
2602 stable(feature = "neon_intrinsics", since = "1.59.0")
2603)]
2604#[cfg_attr(
2605 target_arch = "arm",
2606 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2607)]
2608pub fn vaddl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
2609 unsafe {
2610 let a: uint8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
2611 let b: uint8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
2612 let a: uint16x8_t = simd_cast(a);
2613 let b: uint16x8_t = simd_cast(b);
2614 simd_add(a, b)
2615 }
2616}
2617#[doc = "Add Long (vector)."]
2618#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_s16)"]
2619#[inline]
2620#[target_feature(enable = "neon")]
2621#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2622#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2623#[cfg_attr(
2624 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2625 assert_instr(saddl)
2626)]
2627#[cfg_attr(
2628 not(target_arch = "arm"),
2629 stable(feature = "neon_intrinsics", since = "1.59.0")
2630)]
2631#[cfg_attr(
2632 target_arch = "arm",
2633 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2634)]
2635pub fn vaddl_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t {
2636 unsafe {
2637 let a: int32x4_t = simd_cast(a);
2638 let b: int32x4_t = simd_cast(b);
2639 simd_add(a, b)
2640 }
2641}
2642#[doc = "Add Long (vector)."]
2643#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_s32)"]
2644#[inline]
2645#[target_feature(enable = "neon")]
2646#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2647#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2648#[cfg_attr(
2649 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2650 assert_instr(saddl)
2651)]
2652#[cfg_attr(
2653 not(target_arch = "arm"),
2654 stable(feature = "neon_intrinsics", since = "1.59.0")
2655)]
2656#[cfg_attr(
2657 target_arch = "arm",
2658 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2659)]
2660pub fn vaddl_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t {
2661 unsafe {
2662 let a: int64x2_t = simd_cast(a);
2663 let b: int64x2_t = simd_cast(b);
2664 simd_add(a, b)
2665 }
2666}
2667#[doc = "Add Long (vector)."]
2668#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_s8)"]
2669#[inline]
2670#[target_feature(enable = "neon")]
2671#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2672#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2673#[cfg_attr(
2674 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2675 assert_instr(saddl)
2676)]
2677#[cfg_attr(
2678 not(target_arch = "arm"),
2679 stable(feature = "neon_intrinsics", since = "1.59.0")
2680)]
2681#[cfg_attr(
2682 target_arch = "arm",
2683 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2684)]
2685pub fn vaddl_s8(a: int8x8_t, b: int8x8_t) -> int16x8_t {
2686 unsafe {
2687 let a: int16x8_t = simd_cast(a);
2688 let b: int16x8_t = simd_cast(b);
2689 simd_add(a, b)
2690 }
2691}
2692#[doc = "Add Long (vector)."]
2693#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_u16)"]
2694#[inline]
2695#[target_feature(enable = "neon")]
2696#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2697#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2698#[cfg_attr(
2699 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2700 assert_instr(uaddl)
2701)]
2702#[cfg_attr(
2703 not(target_arch = "arm"),
2704 stable(feature = "neon_intrinsics", since = "1.59.0")
2705)]
2706#[cfg_attr(
2707 target_arch = "arm",
2708 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2709)]
2710pub fn vaddl_u16(a: uint16x4_t, b: uint16x4_t) -> uint32x4_t {
2711 unsafe {
2712 let a: uint32x4_t = simd_cast(a);
2713 let b: uint32x4_t = simd_cast(b);
2714 simd_add(a, b)
2715 }
2716}
2717#[doc = "Add Long (vector)."]
2718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_u32)"]
2719#[inline]
2720#[target_feature(enable = "neon")]
2721#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2722#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2723#[cfg_attr(
2724 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2725 assert_instr(uaddl)
2726)]
2727#[cfg_attr(
2728 not(target_arch = "arm"),
2729 stable(feature = "neon_intrinsics", since = "1.59.0")
2730)]
2731#[cfg_attr(
2732 target_arch = "arm",
2733 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2734)]
2735pub fn vaddl_u32(a: uint32x2_t, b: uint32x2_t) -> uint64x2_t {
2736 unsafe {
2737 let a: uint64x2_t = simd_cast(a);
2738 let b: uint64x2_t = simd_cast(b);
2739 simd_add(a, b)
2740 }
2741}
2742#[doc = "Add Long (vector)."]
2743#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddl_u8)"]
2744#[inline]
2745#[target_feature(enable = "neon")]
2746#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2747#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddl))]
2748#[cfg_attr(
2749 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2750 assert_instr(uaddl)
2751)]
2752#[cfg_attr(
2753 not(target_arch = "arm"),
2754 stable(feature = "neon_intrinsics", since = "1.59.0")
2755)]
2756#[cfg_attr(
2757 target_arch = "arm",
2758 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2759)]
2760pub fn vaddl_u8(a: uint8x8_t, b: uint8x8_t) -> uint16x8_t {
2761 unsafe {
2762 let a: uint16x8_t = simd_cast(a);
2763 let b: uint16x8_t = simd_cast(b);
2764 simd_add(a, b)
2765 }
2766}
2767#[doc = "Bitwise exclusive OR"]
2768#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddq_p128)"]
2769#[inline]
2770#[target_feature(enable = "neon")]
2771#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2772#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
2773#[cfg_attr(
2774 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2775 assert_instr(nop)
2776)]
2777#[cfg_attr(
2778 not(target_arch = "arm"),
2779 stable(feature = "neon_intrinsics", since = "1.59.0")
2780)]
2781#[cfg_attr(
2782 target_arch = "arm",
2783 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2784)]
2785pub fn vaddq_p128(a: p128, b: p128) -> p128 {
2786 a ^ b
2787}
2788#[doc = "Add Wide (high half)."]
2789#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_high_s16)"]
2790#[inline]
2791#[target_feature(enable = "neon")]
2792#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2793#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2794#[cfg_attr(
2795 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2796 assert_instr(saddw2)
2797)]
2798#[cfg_attr(
2799 not(target_arch = "arm"),
2800 stable(feature = "neon_intrinsics", since = "1.59.0")
2801)]
2802#[cfg_attr(
2803 target_arch = "arm",
2804 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2805)]
2806pub fn vaddw_high_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {
2807 unsafe {
2808 let b: int16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
2809 let b: int32x4_t = simd_cast(b);
2810 simd_add(a, b)
2811 }
2812}
2813#[doc = "Add Wide (high half)."]
2814#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_high_s32)"]
2815#[inline]
2816#[target_feature(enable = "neon")]
2817#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2818#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2819#[cfg_attr(
2820 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2821 assert_instr(saddw2)
2822)]
2823#[cfg_attr(
2824 not(target_arch = "arm"),
2825 stable(feature = "neon_intrinsics", since = "1.59.0")
2826)]
2827#[cfg_attr(
2828 target_arch = "arm",
2829 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2830)]
2831pub fn vaddw_high_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {
2832 unsafe {
2833 let b: int32x2_t = simd_shuffle!(b, b, [2, 3]);
2834 let b: int64x2_t = simd_cast(b);
2835 simd_add(a, b)
2836 }
2837}
2838#[doc = "Add Wide (high half)."]
2839#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_high_s8)"]
2840#[inline]
2841#[target_feature(enable = "neon")]
2842#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2843#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2844#[cfg_attr(
2845 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2846 assert_instr(saddw2)
2847)]
2848#[cfg_attr(
2849 not(target_arch = "arm"),
2850 stable(feature = "neon_intrinsics", since = "1.59.0")
2851)]
2852#[cfg_attr(
2853 target_arch = "arm",
2854 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2855)]
2856pub fn vaddw_high_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {
2857 unsafe {
2858 let b: int8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
2859 let b: int16x8_t = simd_cast(b);
2860 simd_add(a, b)
2861 }
2862}
2863#[doc = "Add Wide (high half)."]
2864#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_high_u16)"]
2865#[inline]
2866#[target_feature(enable = "neon")]
2867#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2868#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2869#[cfg_attr(
2870 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2871 assert_instr(uaddw2)
2872)]
2873#[cfg_attr(
2874 not(target_arch = "arm"),
2875 stable(feature = "neon_intrinsics", since = "1.59.0")
2876)]
2877#[cfg_attr(
2878 target_arch = "arm",
2879 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2880)]
2881pub fn vaddw_high_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {
2882 unsafe {
2883 let b: uint16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
2884 let b: uint32x4_t = simd_cast(b);
2885 simd_add(a, b)
2886 }
2887}
2888#[doc = "Add Wide (high half)."]
2889#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_high_u32)"]
2890#[inline]
2891#[target_feature(enable = "neon")]
2892#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2893#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2894#[cfg_attr(
2895 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2896 assert_instr(uaddw2)
2897)]
2898#[cfg_attr(
2899 not(target_arch = "arm"),
2900 stable(feature = "neon_intrinsics", since = "1.59.0")
2901)]
2902#[cfg_attr(
2903 target_arch = "arm",
2904 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2905)]
2906pub fn vaddw_high_u32(a: uint64x2_t, b: uint32x4_t) -> uint64x2_t {
2907 unsafe {
2908 let b: uint32x2_t = simd_shuffle!(b, b, [2, 3]);
2909 let b: uint64x2_t = simd_cast(b);
2910 simd_add(a, b)
2911 }
2912}
2913#[doc = "Add Wide (high half)."]
2914#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_high_u8)"]
2915#[inline]
2916#[target_feature(enable = "neon")]
2917#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2918#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2919#[cfg_attr(
2920 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2921 assert_instr(uaddw2)
2922)]
2923#[cfg_attr(
2924 not(target_arch = "arm"),
2925 stable(feature = "neon_intrinsics", since = "1.59.0")
2926)]
2927#[cfg_attr(
2928 target_arch = "arm",
2929 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2930)]
2931pub fn vaddw_high_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {
2932 unsafe {
2933 let b: uint8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
2934 let b: uint16x8_t = simd_cast(b);
2935 simd_add(a, b)
2936 }
2937}
2938#[doc = "Add Wide"]
2939#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_s16)"]
2940#[inline]
2941#[target_feature(enable = "neon")]
2942#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2943#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2944#[cfg_attr(
2945 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2946 assert_instr(saddw)
2947)]
2948#[cfg_attr(
2949 not(target_arch = "arm"),
2950 stable(feature = "neon_intrinsics", since = "1.59.0")
2951)]
2952#[cfg_attr(
2953 target_arch = "arm",
2954 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2955)]
2956pub fn vaddw_s16(a: int32x4_t, b: int16x4_t) -> int32x4_t {
2957 unsafe {
2958 let b: int32x4_t = simd_cast(b);
2959 simd_add(a, b)
2960 }
2961}
2962#[doc = "Add Wide"]
2963#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_s32)"]
2964#[inline]
2965#[target_feature(enable = "neon")]
2966#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2967#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2968#[cfg_attr(
2969 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2970 assert_instr(saddw)
2971)]
2972#[cfg_attr(
2973 not(target_arch = "arm"),
2974 stable(feature = "neon_intrinsics", since = "1.59.0")
2975)]
2976#[cfg_attr(
2977 target_arch = "arm",
2978 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
2979)]
2980pub fn vaddw_s32(a: int64x2_t, b: int32x2_t) -> int64x2_t {
2981 unsafe {
2982 let b: int64x2_t = simd_cast(b);
2983 simd_add(a, b)
2984 }
2985}
2986#[doc = "Add Wide"]
2987#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_s8)"]
2988#[inline]
2989#[target_feature(enable = "neon")]
2990#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
2991#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
2992#[cfg_attr(
2993 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
2994 assert_instr(saddw)
2995)]
2996#[cfg_attr(
2997 not(target_arch = "arm"),
2998 stable(feature = "neon_intrinsics", since = "1.59.0")
2999)]
3000#[cfg_attr(
3001 target_arch = "arm",
3002 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3003)]
3004pub fn vaddw_s8(a: int16x8_t, b: int8x8_t) -> int16x8_t {
3005 unsafe {
3006 let b: int16x8_t = simd_cast(b);
3007 simd_add(a, b)
3008 }
3009}
3010#[doc = "Add Wide"]
3011#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_u16)"]
3012#[inline]
3013#[target_feature(enable = "neon")]
3014#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3015#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
3016#[cfg_attr(
3017 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3018 assert_instr(uaddw)
3019)]
3020#[cfg_attr(
3021 not(target_arch = "arm"),
3022 stable(feature = "neon_intrinsics", since = "1.59.0")
3023)]
3024#[cfg_attr(
3025 target_arch = "arm",
3026 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3027)]
3028pub fn vaddw_u16(a: uint32x4_t, b: uint16x4_t) -> uint32x4_t {
3029 unsafe {
3030 let b: uint32x4_t = simd_cast(b);
3031 simd_add(a, b)
3032 }
3033}
3034#[doc = "Add Wide"]
3035#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_u32)"]
3036#[inline]
3037#[target_feature(enable = "neon")]
3038#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3039#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
3040#[cfg_attr(
3041 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3042 assert_instr(uaddw)
3043)]
3044#[cfg_attr(
3045 not(target_arch = "arm"),
3046 stable(feature = "neon_intrinsics", since = "1.59.0")
3047)]
3048#[cfg_attr(
3049 target_arch = "arm",
3050 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3051)]
3052pub fn vaddw_u32(a: uint64x2_t, b: uint32x2_t) -> uint64x2_t {
3053 unsafe {
3054 let b: uint64x2_t = simd_cast(b);
3055 simd_add(a, b)
3056 }
3057}
3058#[doc = "Add Wide"]
3059#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddw_u8)"]
3060#[inline]
3061#[target_feature(enable = "neon")]
3062#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3063#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vaddw))]
3064#[cfg_attr(
3065 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3066 assert_instr(uaddw)
3067)]
3068#[cfg_attr(
3069 not(target_arch = "arm"),
3070 stable(feature = "neon_intrinsics", since = "1.59.0")
3071)]
3072#[cfg_attr(
3073 target_arch = "arm",
3074 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3075)]
3076pub fn vaddw_u8(a: uint16x8_t, b: uint8x8_t) -> uint16x8_t {
3077 unsafe {
3078 let b: uint16x8_t = simd_cast(b);
3079 simd_add(a, b)
3080 }
3081}
3082#[doc = "AES single round encryption."]
3083#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaesdq_u8)"]
3084#[inline]
3085#[target_feature(enable = "aes")]
3086#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
3087#[cfg_attr(test, assert_instr(aesd))]
3088#[cfg_attr(
3089 target_arch = "arm",
3090 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3091)]
3092#[cfg_attr(
3093 not(target_arch = "arm"),
3094 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
3095)]
3096pub fn vaesdq_u8(data: uint8x16_t, key: uint8x16_t) -> uint8x16_t {
3097 unsafe extern "unadjusted" {
3098 #[cfg_attr(
3099 any(target_arch = "aarch64", target_arch = "arm64ec"),
3100 link_name = "llvm.aarch64.crypto.aesd"
3101 )]
3102 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.aesd")]
3103 fn _vaesdq_u8(data: uint8x16_t, key: uint8x16_t) -> uint8x16_t;
3104 }
3105 unsafe { _vaesdq_u8(data, key) }
3106}
3107#[doc = "AES single round encryption."]
3108#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaeseq_u8)"]
3109#[inline]
3110#[target_feature(enable = "aes")]
3111#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
3112#[cfg_attr(test, assert_instr(aese))]
3113#[cfg_attr(
3114 target_arch = "arm",
3115 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3116)]
3117#[cfg_attr(
3118 not(target_arch = "arm"),
3119 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
3120)]
3121pub fn vaeseq_u8(data: uint8x16_t, key: uint8x16_t) -> uint8x16_t {
3122 unsafe extern "unadjusted" {
3123 #[cfg_attr(
3124 any(target_arch = "aarch64", target_arch = "arm64ec"),
3125 link_name = "llvm.aarch64.crypto.aese"
3126 )]
3127 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.aese")]
3128 fn _vaeseq_u8(data: uint8x16_t, key: uint8x16_t) -> uint8x16_t;
3129 }
3130 unsafe { _vaeseq_u8(data, key) }
3131}
3132#[doc = "AES inverse mix columns."]
3133#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaesimcq_u8)"]
3134#[inline]
3135#[target_feature(enable = "aes")]
3136#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
3137#[cfg_attr(test, assert_instr(aesimc))]
3138#[cfg_attr(
3139 target_arch = "arm",
3140 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3141)]
3142#[cfg_attr(
3143 not(target_arch = "arm"),
3144 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
3145)]
3146pub fn vaesimcq_u8(data: uint8x16_t) -> uint8x16_t {
3147 unsafe extern "unadjusted" {
3148 #[cfg_attr(
3149 any(target_arch = "aarch64", target_arch = "arm64ec"),
3150 link_name = "llvm.aarch64.crypto.aesimc"
3151 )]
3152 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.aesimc")]
3153 fn _vaesimcq_u8(data: uint8x16_t) -> uint8x16_t;
3154 }
3155 unsafe { _vaesimcq_u8(data) }
3156}
3157#[doc = "AES mix columns."]
3158#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaesmcq_u8)"]
3159#[inline]
3160#[target_feature(enable = "aes")]
3161#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
3162#[cfg_attr(test, assert_instr(aesmc))]
3163#[cfg_attr(
3164 target_arch = "arm",
3165 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3166)]
3167#[cfg_attr(
3168 not(target_arch = "arm"),
3169 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
3170)]
3171pub fn vaesmcq_u8(data: uint8x16_t) -> uint8x16_t {
3172 unsafe extern "unadjusted" {
3173 #[cfg_attr(
3174 any(target_arch = "aarch64", target_arch = "arm64ec"),
3175 link_name = "llvm.aarch64.crypto.aesmc"
3176 )]
3177 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.aesmc")]
3178 fn _vaesmcq_u8(data: uint8x16_t) -> uint8x16_t;
3179 }
3180 unsafe { _vaesmcq_u8(data) }
3181}
3182#[doc = "Vector bitwise and"]
3183#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vand_s8)"]
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_s8(a: int8x8_t, b: int8x8_t) -> int8x8_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_s8)"]
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_s8(a: int8x16_t, b: int8x16_t) -> int8x16_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_s16)"]
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_s16(a: int16x4_t, b: int16x4_t) -> int16x4_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_s16)"]
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_s16(a: int16x8_t, b: int16x8_t) -> int16x8_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_s32)"]
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_s32(a: int32x2_t, b: int32x2_t) -> int32x2_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_s32)"]
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_s32(a: int32x4_t, b: int32x4_t) -> int32x4_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_s64)"]
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_s64(a: int64x1_t, b: int64x1_t) -> int64x1_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_s64)"]
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_s64(a: int64x2_t, b: int64x2_t) -> int64x2_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_u8)"]
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_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_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_u8)"]
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_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_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_u16)"]
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_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_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_u16)"]
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_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_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_u32)"]
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_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_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_u32)"]
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_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
3474 unsafe { simd_and(a, b) }
3475}
3476#[doc = "Vector bitwise and"]
3477#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vand_u64)"]
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(vand))]
3482#[cfg_attr(
3483 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3484 assert_instr(and)
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 vand_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
3495 unsafe { simd_and(a, b) }
3496}
3497#[doc = "Vector bitwise and"]
3498#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vandq_u64)"]
3499#[inline]
3500#[target_feature(enable = "neon")]
3501#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3502#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vand))]
3503#[cfg_attr(
3504 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3505 assert_instr(and)
3506)]
3507#[cfg_attr(
3508 not(target_arch = "arm"),
3509 stable(feature = "neon_intrinsics", since = "1.59.0")
3510)]
3511#[cfg_attr(
3512 target_arch = "arm",
3513 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3514)]
3515pub fn vandq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
3516 unsafe { simd_and(a, b) }
3517}
3518#[doc = "Vector bitwise bit clear."]
3519#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbic_s16)"]
3520#[inline]
3521#[target_feature(enable = "neon")]
3522#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3523#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3524#[cfg_attr(
3525 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3526 assert_instr(bic)
3527)]
3528#[cfg_attr(
3529 not(target_arch = "arm"),
3530 stable(feature = "neon_intrinsics", since = "1.59.0")
3531)]
3532#[cfg_attr(
3533 target_arch = "arm",
3534 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3535)]
3536pub fn vbic_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
3537 let c = int16x4_t::splat(-1);
3538 unsafe { simd_and(simd_xor(b, c), a) }
3539}
3540#[doc = "Vector bitwise bit clear."]
3541#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbic_s32)"]
3542#[inline]
3543#[target_feature(enable = "neon")]
3544#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3545#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3546#[cfg_attr(
3547 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3548 assert_instr(bic)
3549)]
3550#[cfg_attr(
3551 not(target_arch = "arm"),
3552 stable(feature = "neon_intrinsics", since = "1.59.0")
3553)]
3554#[cfg_attr(
3555 target_arch = "arm",
3556 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3557)]
3558pub fn vbic_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
3559 let c = int32x2_t::splat(-1);
3560 unsafe { simd_and(simd_xor(b, c), a) }
3561}
3562#[doc = "Vector bitwise bit clear."]
3563#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbic_s64)"]
3564#[inline]
3565#[target_feature(enable = "neon")]
3566#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3567#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3568#[cfg_attr(
3569 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3570 assert_instr(bic)
3571)]
3572#[cfg_attr(
3573 not(target_arch = "arm"),
3574 stable(feature = "neon_intrinsics", since = "1.59.0")
3575)]
3576#[cfg_attr(
3577 target_arch = "arm",
3578 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3579)]
3580pub fn vbic_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
3581 let c = int64x1_t::splat(-1);
3582 unsafe { simd_and(simd_xor(b, c), a) }
3583}
3584#[doc = "Vector bitwise bit clear."]
3585#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbic_s8)"]
3586#[inline]
3587#[target_feature(enable = "neon")]
3588#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3589#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3590#[cfg_attr(
3591 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3592 assert_instr(bic)
3593)]
3594#[cfg_attr(
3595 not(target_arch = "arm"),
3596 stable(feature = "neon_intrinsics", since = "1.59.0")
3597)]
3598#[cfg_attr(
3599 target_arch = "arm",
3600 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3601)]
3602pub fn vbic_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
3603 let c = int8x8_t::splat(-1);
3604 unsafe { simd_and(simd_xor(b, c), a) }
3605}
3606#[doc = "Vector bitwise bit clear."]
3607#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbicq_s16)"]
3608#[inline]
3609#[target_feature(enable = "neon")]
3610#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3611#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3612#[cfg_attr(
3613 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3614 assert_instr(bic)
3615)]
3616#[cfg_attr(
3617 not(target_arch = "arm"),
3618 stable(feature = "neon_intrinsics", since = "1.59.0")
3619)]
3620#[cfg_attr(
3621 target_arch = "arm",
3622 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3623)]
3624pub fn vbicq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
3625 let c = int16x8_t::splat(-1);
3626 unsafe { simd_and(simd_xor(b, c), a) }
3627}
3628#[doc = "Vector bitwise bit clear."]
3629#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbicq_s32)"]
3630#[inline]
3631#[target_feature(enable = "neon")]
3632#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3633#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3634#[cfg_attr(
3635 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3636 assert_instr(bic)
3637)]
3638#[cfg_attr(
3639 not(target_arch = "arm"),
3640 stable(feature = "neon_intrinsics", since = "1.59.0")
3641)]
3642#[cfg_attr(
3643 target_arch = "arm",
3644 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3645)]
3646pub fn vbicq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
3647 let c = int32x4_t::splat(-1);
3648 unsafe { simd_and(simd_xor(b, c), a) }
3649}
3650#[doc = "Vector bitwise bit clear."]
3651#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbicq_s64)"]
3652#[inline]
3653#[target_feature(enable = "neon")]
3654#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3655#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3656#[cfg_attr(
3657 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3658 assert_instr(bic)
3659)]
3660#[cfg_attr(
3661 not(target_arch = "arm"),
3662 stable(feature = "neon_intrinsics", since = "1.59.0")
3663)]
3664#[cfg_attr(
3665 target_arch = "arm",
3666 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3667)]
3668pub fn vbicq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
3669 let c = int64x2_t::splat(-1);
3670 unsafe { simd_and(simd_xor(b, c), a) }
3671}
3672#[doc = "Vector bitwise bit clear."]
3673#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbicq_s8)"]
3674#[inline]
3675#[target_feature(enable = "neon")]
3676#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3677#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3678#[cfg_attr(
3679 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3680 assert_instr(bic)
3681)]
3682#[cfg_attr(
3683 not(target_arch = "arm"),
3684 stable(feature = "neon_intrinsics", since = "1.59.0")
3685)]
3686#[cfg_attr(
3687 target_arch = "arm",
3688 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3689)]
3690pub fn vbicq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
3691 let c = int8x16_t::splat(-1);
3692 unsafe { simd_and(simd_xor(b, c), a) }
3693}
3694#[doc = "Vector bitwise bit clear."]
3695#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbic_u16)"]
3696#[inline]
3697#[target_feature(enable = "neon")]
3698#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3699#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3700#[cfg_attr(
3701 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3702 assert_instr(bic)
3703)]
3704#[cfg_attr(
3705 not(target_arch = "arm"),
3706 stable(feature = "neon_intrinsics", since = "1.59.0")
3707)]
3708#[cfg_attr(
3709 target_arch = "arm",
3710 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3711)]
3712pub fn vbic_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
3713 let c = int16x4_t::splat(-1);
3714 unsafe { simd_and(simd_xor(b, transmute(c)), a) }
3715}
3716#[doc = "Vector bitwise bit clear."]
3717#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbic_u32)"]
3718#[inline]
3719#[target_feature(enable = "neon")]
3720#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3721#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3722#[cfg_attr(
3723 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3724 assert_instr(bic)
3725)]
3726#[cfg_attr(
3727 not(target_arch = "arm"),
3728 stable(feature = "neon_intrinsics", since = "1.59.0")
3729)]
3730#[cfg_attr(
3731 target_arch = "arm",
3732 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3733)]
3734pub fn vbic_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
3735 let c = int32x2_t::splat(-1);
3736 unsafe { simd_and(simd_xor(b, transmute(c)), a) }
3737}
3738#[doc = "Vector bitwise bit clear."]
3739#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbic_u64)"]
3740#[inline]
3741#[target_feature(enable = "neon")]
3742#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3743#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3744#[cfg_attr(
3745 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3746 assert_instr(bic)
3747)]
3748#[cfg_attr(
3749 not(target_arch = "arm"),
3750 stable(feature = "neon_intrinsics", since = "1.59.0")
3751)]
3752#[cfg_attr(
3753 target_arch = "arm",
3754 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3755)]
3756pub fn vbic_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
3757 let c = int64x1_t::splat(-1);
3758 unsafe { simd_and(simd_xor(b, transmute(c)), a) }
3759}
3760#[doc = "Vector bitwise bit clear."]
3761#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbic_u8)"]
3762#[inline]
3763#[target_feature(enable = "neon")]
3764#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3765#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3766#[cfg_attr(
3767 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3768 assert_instr(bic)
3769)]
3770#[cfg_attr(
3771 not(target_arch = "arm"),
3772 stable(feature = "neon_intrinsics", since = "1.59.0")
3773)]
3774#[cfg_attr(
3775 target_arch = "arm",
3776 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3777)]
3778pub fn vbic_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
3779 let c = int8x8_t::splat(-1);
3780 unsafe { simd_and(simd_xor(b, transmute(c)), a) }
3781}
3782#[doc = "Vector bitwise bit clear."]
3783#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbicq_u16)"]
3784#[inline]
3785#[target_feature(enable = "neon")]
3786#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3787#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3788#[cfg_attr(
3789 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3790 assert_instr(bic)
3791)]
3792#[cfg_attr(
3793 not(target_arch = "arm"),
3794 stable(feature = "neon_intrinsics", since = "1.59.0")
3795)]
3796#[cfg_attr(
3797 target_arch = "arm",
3798 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3799)]
3800pub fn vbicq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
3801 let c = int16x8_t::splat(-1);
3802 unsafe { simd_and(simd_xor(b, transmute(c)), a) }
3803}
3804#[doc = "Vector bitwise bit clear."]
3805#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbicq_u32)"]
3806#[inline]
3807#[target_feature(enable = "neon")]
3808#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3809#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3810#[cfg_attr(
3811 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3812 assert_instr(bic)
3813)]
3814#[cfg_attr(
3815 not(target_arch = "arm"),
3816 stable(feature = "neon_intrinsics", since = "1.59.0")
3817)]
3818#[cfg_attr(
3819 target_arch = "arm",
3820 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3821)]
3822pub fn vbicq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
3823 let c = int32x4_t::splat(-1);
3824 unsafe { simd_and(simd_xor(b, transmute(c)), a) }
3825}
3826#[doc = "Vector bitwise bit clear."]
3827#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbicq_u64)"]
3828#[inline]
3829#[target_feature(enable = "neon")]
3830#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3831#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3832#[cfg_attr(
3833 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3834 assert_instr(bic)
3835)]
3836#[cfg_attr(
3837 not(target_arch = "arm"),
3838 stable(feature = "neon_intrinsics", since = "1.59.0")
3839)]
3840#[cfg_attr(
3841 target_arch = "arm",
3842 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3843)]
3844pub fn vbicq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
3845 let c = int64x2_t::splat(-1);
3846 unsafe { simd_and(simd_xor(b, transmute(c)), a) }
3847}
3848#[doc = "Vector bitwise bit clear."]
3849#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbicq_u8)"]
3850#[inline]
3851#[target_feature(enable = "neon")]
3852#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3853#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbic))]
3854#[cfg_attr(
3855 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3856 assert_instr(bic)
3857)]
3858#[cfg_attr(
3859 not(target_arch = "arm"),
3860 stable(feature = "neon_intrinsics", since = "1.59.0")
3861)]
3862#[cfg_attr(
3863 target_arch = "arm",
3864 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3865)]
3866pub fn vbicq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
3867 let c = int8x16_t::splat(-1);
3868 unsafe { simd_and(simd_xor(b, transmute(c)), a) }
3869}
3870#[doc = "Bitwise Select."]
3871#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_f16)"]
3872#[inline]
3873#[target_feature(enable = "neon,fp16")]
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 = "stdarch_neon_fp16", since = "1.94.0")
3883)]
3884#[cfg_attr(
3885 target_arch = "arm",
3886 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3887)]
3888#[cfg(not(target_arch = "arm64ec"))]
3889pub fn vbsl_f16(a: uint16x4_t, b: float16x4_t, c: float16x4_t) -> float16x4_t {
3890 let not = int16x4_t::splat(-1);
3891 unsafe {
3892 transmute(simd_or(
3893 simd_and(a, transmute(b)),
3894 simd_and(simd_xor(a, transmute(not)), transmute(c)),
3895 ))
3896 }
3897}
3898#[doc = "Bitwise Select."]
3899#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_f16)"]
3900#[inline]
3901#[target_feature(enable = "neon,fp16")]
3902#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3903#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
3904#[cfg_attr(
3905 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3906 assert_instr(bsl)
3907)]
3908#[cfg_attr(
3909 not(target_arch = "arm"),
3910 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
3911)]
3912#[cfg_attr(
3913 target_arch = "arm",
3914 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3915)]
3916#[cfg(not(target_arch = "arm64ec"))]
3917pub fn vbslq_f16(a: uint16x8_t, b: float16x8_t, c: float16x8_t) -> float16x8_t {
3918 let not = int16x8_t::splat(-1);
3919 unsafe {
3920 transmute(simd_or(
3921 simd_and(a, transmute(b)),
3922 simd_and(simd_xor(a, transmute(not)), transmute(c)),
3923 ))
3924 }
3925}
3926#[doc = "Bitwise Select."]
3927#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_f32)"]
3928#[inline]
3929#[target_feature(enable = "neon")]
3930#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3931#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
3932#[cfg_attr(
3933 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3934 assert_instr(bsl)
3935)]
3936#[cfg_attr(
3937 not(target_arch = "arm"),
3938 stable(feature = "neon_intrinsics", since = "1.59.0")
3939)]
3940#[cfg_attr(
3941 target_arch = "arm",
3942 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3943)]
3944pub fn vbsl_f32(a: uint32x2_t, b: float32x2_t, c: float32x2_t) -> float32x2_t {
3945 let not = int32x2_t::splat(-1);
3946 unsafe {
3947 transmute(simd_or(
3948 simd_and(a, transmute(b)),
3949 simd_and(simd_xor(a, transmute(not)), transmute(c)),
3950 ))
3951 }
3952}
3953#[doc = "Bitwise Select."]
3954#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_p16)"]
3955#[inline]
3956#[target_feature(enable = "neon")]
3957#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3958#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
3959#[cfg_attr(
3960 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3961 assert_instr(bsl)
3962)]
3963#[cfg_attr(
3964 not(target_arch = "arm"),
3965 stable(feature = "neon_intrinsics", since = "1.59.0")
3966)]
3967#[cfg_attr(
3968 target_arch = "arm",
3969 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3970)]
3971pub fn vbsl_p16(a: uint16x4_t, b: poly16x4_t, c: poly16x4_t) -> poly16x4_t {
3972 let not = int16x4_t::splat(-1);
3973 unsafe {
3974 transmute(simd_or(
3975 simd_and(a, transmute(b)),
3976 simd_and(simd_xor(a, transmute(not)), transmute(c)),
3977 ))
3978 }
3979}
3980#[doc = "Bitwise Select."]
3981#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_p8)"]
3982#[inline]
3983#[target_feature(enable = "neon")]
3984#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
3985#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
3986#[cfg_attr(
3987 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
3988 assert_instr(bsl)
3989)]
3990#[cfg_attr(
3991 not(target_arch = "arm"),
3992 stable(feature = "neon_intrinsics", since = "1.59.0")
3993)]
3994#[cfg_attr(
3995 target_arch = "arm",
3996 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
3997)]
3998pub fn vbsl_p8(a: uint8x8_t, b: poly8x8_t, c: poly8x8_t) -> poly8x8_t {
3999 let not = int8x8_t::splat(-1);
4000 unsafe {
4001 transmute(simd_or(
4002 simd_and(a, transmute(b)),
4003 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4004 ))
4005 }
4006}
4007#[doc = "Bitwise Select."]
4008#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_s16)"]
4009#[inline]
4010#[target_feature(enable = "neon")]
4011#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4012#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4013#[cfg_attr(
4014 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4015 assert_instr(bsl)
4016)]
4017#[cfg_attr(
4018 not(target_arch = "arm"),
4019 stable(feature = "neon_intrinsics", since = "1.59.0")
4020)]
4021#[cfg_attr(
4022 target_arch = "arm",
4023 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4024)]
4025pub fn vbsl_s16(a: uint16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
4026 let not = int16x4_t::splat(-1);
4027 unsafe {
4028 transmute(simd_or(
4029 simd_and(a, transmute(b)),
4030 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4031 ))
4032 }
4033}
4034#[doc = "Bitwise Select."]
4035#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_s32)"]
4036#[inline]
4037#[target_feature(enable = "neon")]
4038#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4039#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4040#[cfg_attr(
4041 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4042 assert_instr(bsl)
4043)]
4044#[cfg_attr(
4045 not(target_arch = "arm"),
4046 stable(feature = "neon_intrinsics", since = "1.59.0")
4047)]
4048#[cfg_attr(
4049 target_arch = "arm",
4050 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4051)]
4052pub fn vbsl_s32(a: uint32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
4053 let not = int32x2_t::splat(-1);
4054 unsafe {
4055 transmute(simd_or(
4056 simd_and(a, transmute(b)),
4057 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4058 ))
4059 }
4060}
4061#[doc = "Bitwise Select."]
4062#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_s64)"]
4063#[inline]
4064#[target_feature(enable = "neon")]
4065#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4066#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4067#[cfg_attr(
4068 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4069 assert_instr(bsl)
4070)]
4071#[cfg_attr(
4072 not(target_arch = "arm"),
4073 stable(feature = "neon_intrinsics", since = "1.59.0")
4074)]
4075#[cfg_attr(
4076 target_arch = "arm",
4077 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4078)]
4079pub fn vbsl_s64(a: uint64x1_t, b: int64x1_t, c: int64x1_t) -> int64x1_t {
4080 let not = int64x1_t::splat(-1);
4081 unsafe {
4082 transmute(simd_or(
4083 simd_and(a, transmute(b)),
4084 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4085 ))
4086 }
4087}
4088#[doc = "Bitwise Select."]
4089#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_s8)"]
4090#[inline]
4091#[target_feature(enable = "neon")]
4092#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4093#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4094#[cfg_attr(
4095 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4096 assert_instr(bsl)
4097)]
4098#[cfg_attr(
4099 not(target_arch = "arm"),
4100 stable(feature = "neon_intrinsics", since = "1.59.0")
4101)]
4102#[cfg_attr(
4103 target_arch = "arm",
4104 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4105)]
4106pub fn vbsl_s8(a: uint8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
4107 let not = int8x8_t::splat(-1);
4108 unsafe {
4109 transmute(simd_or(
4110 simd_and(a, transmute(b)),
4111 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4112 ))
4113 }
4114}
4115#[doc = "Bitwise Select."]
4116#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_f32)"]
4117#[inline]
4118#[target_feature(enable = "neon")]
4119#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4120#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4121#[cfg_attr(
4122 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4123 assert_instr(bsl)
4124)]
4125#[cfg_attr(
4126 not(target_arch = "arm"),
4127 stable(feature = "neon_intrinsics", since = "1.59.0")
4128)]
4129#[cfg_attr(
4130 target_arch = "arm",
4131 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4132)]
4133pub fn vbslq_f32(a: uint32x4_t, b: float32x4_t, c: float32x4_t) -> float32x4_t {
4134 let not = int32x4_t::splat(-1);
4135 unsafe {
4136 transmute(simd_or(
4137 simd_and(a, transmute(b)),
4138 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4139 ))
4140 }
4141}
4142#[doc = "Bitwise Select."]
4143#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_p16)"]
4144#[inline]
4145#[target_feature(enable = "neon")]
4146#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4147#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4148#[cfg_attr(
4149 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4150 assert_instr(bsl)
4151)]
4152#[cfg_attr(
4153 not(target_arch = "arm"),
4154 stable(feature = "neon_intrinsics", since = "1.59.0")
4155)]
4156#[cfg_attr(
4157 target_arch = "arm",
4158 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4159)]
4160pub fn vbslq_p16(a: uint16x8_t, b: poly16x8_t, c: poly16x8_t) -> poly16x8_t {
4161 let not = int16x8_t::splat(-1);
4162 unsafe {
4163 transmute(simd_or(
4164 simd_and(a, transmute(b)),
4165 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4166 ))
4167 }
4168}
4169#[doc = "Bitwise Select."]
4170#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_p8)"]
4171#[inline]
4172#[target_feature(enable = "neon")]
4173#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4174#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4175#[cfg_attr(
4176 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4177 assert_instr(bsl)
4178)]
4179#[cfg_attr(
4180 not(target_arch = "arm"),
4181 stable(feature = "neon_intrinsics", since = "1.59.0")
4182)]
4183#[cfg_attr(
4184 target_arch = "arm",
4185 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4186)]
4187pub fn vbslq_p8(a: uint8x16_t, b: poly8x16_t, c: poly8x16_t) -> poly8x16_t {
4188 let not = int8x16_t::splat(-1);
4189 unsafe {
4190 transmute(simd_or(
4191 simd_and(a, transmute(b)),
4192 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4193 ))
4194 }
4195}
4196#[doc = "Bitwise Select."]
4197#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_s16)"]
4198#[inline]
4199#[target_feature(enable = "neon")]
4200#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4201#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4202#[cfg_attr(
4203 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4204 assert_instr(bsl)
4205)]
4206#[cfg_attr(
4207 not(target_arch = "arm"),
4208 stable(feature = "neon_intrinsics", since = "1.59.0")
4209)]
4210#[cfg_attr(
4211 target_arch = "arm",
4212 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4213)]
4214pub fn vbslq_s16(a: uint16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
4215 let not = int16x8_t::splat(-1);
4216 unsafe {
4217 transmute(simd_or(
4218 simd_and(a, transmute(b)),
4219 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4220 ))
4221 }
4222}
4223#[doc = "Bitwise Select."]
4224#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_s32)"]
4225#[inline]
4226#[target_feature(enable = "neon")]
4227#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4228#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4229#[cfg_attr(
4230 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4231 assert_instr(bsl)
4232)]
4233#[cfg_attr(
4234 not(target_arch = "arm"),
4235 stable(feature = "neon_intrinsics", since = "1.59.0")
4236)]
4237#[cfg_attr(
4238 target_arch = "arm",
4239 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4240)]
4241pub fn vbslq_s32(a: uint32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
4242 let not = int32x4_t::splat(-1);
4243 unsafe {
4244 transmute(simd_or(
4245 simd_and(a, transmute(b)),
4246 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4247 ))
4248 }
4249}
4250#[doc = "Bitwise Select."]
4251#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_s64)"]
4252#[inline]
4253#[target_feature(enable = "neon")]
4254#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4255#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4256#[cfg_attr(
4257 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4258 assert_instr(bsl)
4259)]
4260#[cfg_attr(
4261 not(target_arch = "arm"),
4262 stable(feature = "neon_intrinsics", since = "1.59.0")
4263)]
4264#[cfg_attr(
4265 target_arch = "arm",
4266 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4267)]
4268pub fn vbslq_s64(a: uint64x2_t, b: int64x2_t, c: int64x2_t) -> int64x2_t {
4269 let not = int64x2_t::splat(-1);
4270 unsafe {
4271 transmute(simd_or(
4272 simd_and(a, transmute(b)),
4273 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4274 ))
4275 }
4276}
4277#[doc = "Bitwise Select."]
4278#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_s8)"]
4279#[inline]
4280#[target_feature(enable = "neon")]
4281#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4282#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4283#[cfg_attr(
4284 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4285 assert_instr(bsl)
4286)]
4287#[cfg_attr(
4288 not(target_arch = "arm"),
4289 stable(feature = "neon_intrinsics", since = "1.59.0")
4290)]
4291#[cfg_attr(
4292 target_arch = "arm",
4293 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4294)]
4295pub fn vbslq_s8(a: uint8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t {
4296 let not = int8x16_t::splat(-1);
4297 unsafe {
4298 transmute(simd_or(
4299 simd_and(a, transmute(b)),
4300 simd_and(simd_xor(a, transmute(not)), transmute(c)),
4301 ))
4302 }
4303}
4304#[doc = "Bitwise Select."]
4305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_u16)"]
4306#[inline]
4307#[target_feature(enable = "neon")]
4308#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4309#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4310#[cfg_attr(
4311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4312 assert_instr(bsl)
4313)]
4314#[cfg_attr(
4315 not(target_arch = "arm"),
4316 stable(feature = "neon_intrinsics", since = "1.59.0")
4317)]
4318#[cfg_attr(
4319 target_arch = "arm",
4320 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4321)]
4322pub fn vbsl_u16(a: uint16x4_t, b: uint16x4_t, c: uint16x4_t) -> uint16x4_t {
4323 let not = int16x4_t::splat(-1);
4324 unsafe {
4325 transmute(simd_or(
4326 simd_and(a, b),
4327 simd_and(simd_xor(a, transmute(not)), c),
4328 ))
4329 }
4330}
4331#[doc = "Bitwise Select."]
4332#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_u32)"]
4333#[inline]
4334#[target_feature(enable = "neon")]
4335#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4336#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4337#[cfg_attr(
4338 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4339 assert_instr(bsl)
4340)]
4341#[cfg_attr(
4342 not(target_arch = "arm"),
4343 stable(feature = "neon_intrinsics", since = "1.59.0")
4344)]
4345#[cfg_attr(
4346 target_arch = "arm",
4347 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4348)]
4349pub fn vbsl_u32(a: uint32x2_t, b: uint32x2_t, c: uint32x2_t) -> uint32x2_t {
4350 let not = int32x2_t::splat(-1);
4351 unsafe {
4352 transmute(simd_or(
4353 simd_and(a, b),
4354 simd_and(simd_xor(a, transmute(not)), c),
4355 ))
4356 }
4357}
4358#[doc = "Bitwise Select."]
4359#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_u64)"]
4360#[inline]
4361#[target_feature(enable = "neon")]
4362#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4363#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4364#[cfg_attr(
4365 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4366 assert_instr(bsl)
4367)]
4368#[cfg_attr(
4369 not(target_arch = "arm"),
4370 stable(feature = "neon_intrinsics", since = "1.59.0")
4371)]
4372#[cfg_attr(
4373 target_arch = "arm",
4374 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4375)]
4376pub fn vbsl_u64(a: uint64x1_t, b: uint64x1_t, c: uint64x1_t) -> uint64x1_t {
4377 let not = int64x1_t::splat(-1);
4378 unsafe {
4379 transmute(simd_or(
4380 simd_and(a, b),
4381 simd_and(simd_xor(a, transmute(not)), c),
4382 ))
4383 }
4384}
4385#[doc = "Bitwise Select."]
4386#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbsl_u8)"]
4387#[inline]
4388#[target_feature(enable = "neon")]
4389#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4390#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4391#[cfg_attr(
4392 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4393 assert_instr(bsl)
4394)]
4395#[cfg_attr(
4396 not(target_arch = "arm"),
4397 stable(feature = "neon_intrinsics", since = "1.59.0")
4398)]
4399#[cfg_attr(
4400 target_arch = "arm",
4401 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4402)]
4403pub fn vbsl_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
4404 let not = int8x8_t::splat(-1);
4405 unsafe {
4406 transmute(simd_or(
4407 simd_and(a, b),
4408 simd_and(simd_xor(a, transmute(not)), c),
4409 ))
4410 }
4411}
4412#[doc = "Bitwise Select."]
4413#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_u16)"]
4414#[inline]
4415#[target_feature(enable = "neon")]
4416#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4417#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4418#[cfg_attr(
4419 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4420 assert_instr(bsl)
4421)]
4422#[cfg_attr(
4423 not(target_arch = "arm"),
4424 stable(feature = "neon_intrinsics", since = "1.59.0")
4425)]
4426#[cfg_attr(
4427 target_arch = "arm",
4428 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4429)]
4430pub fn vbslq_u16(a: uint16x8_t, b: uint16x8_t, c: uint16x8_t) -> uint16x8_t {
4431 let not = int16x8_t::splat(-1);
4432 unsafe {
4433 transmute(simd_or(
4434 simd_and(a, b),
4435 simd_and(simd_xor(a, transmute(not)), c),
4436 ))
4437 }
4438}
4439#[doc = "Bitwise Select."]
4440#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_u32)"]
4441#[inline]
4442#[target_feature(enable = "neon")]
4443#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4444#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4445#[cfg_attr(
4446 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4447 assert_instr(bsl)
4448)]
4449#[cfg_attr(
4450 not(target_arch = "arm"),
4451 stable(feature = "neon_intrinsics", since = "1.59.0")
4452)]
4453#[cfg_attr(
4454 target_arch = "arm",
4455 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4456)]
4457pub fn vbslq_u32(a: uint32x4_t, b: uint32x4_t, c: uint32x4_t) -> uint32x4_t {
4458 let not = int32x4_t::splat(-1);
4459 unsafe {
4460 transmute(simd_or(
4461 simd_and(a, b),
4462 simd_and(simd_xor(a, transmute(not)), c),
4463 ))
4464 }
4465}
4466#[doc = "Bitwise Select."]
4467#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_u64)"]
4468#[inline]
4469#[target_feature(enable = "neon")]
4470#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4471#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4472#[cfg_attr(
4473 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4474 assert_instr(bsl)
4475)]
4476#[cfg_attr(
4477 not(target_arch = "arm"),
4478 stable(feature = "neon_intrinsics", since = "1.59.0")
4479)]
4480#[cfg_attr(
4481 target_arch = "arm",
4482 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4483)]
4484pub fn vbslq_u64(a: uint64x2_t, b: uint64x2_t, c: uint64x2_t) -> uint64x2_t {
4485 let not = int64x2_t::splat(-1);
4486 unsafe {
4487 transmute(simd_or(
4488 simd_and(a, b),
4489 simd_and(simd_xor(a, transmute(not)), c),
4490 ))
4491 }
4492}
4493#[doc = "Bitwise Select."]
4494#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vbslq_u8)"]
4495#[inline]
4496#[target_feature(enable = "neon")]
4497#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4498#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vbsl))]
4499#[cfg_attr(
4500 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4501 assert_instr(bsl)
4502)]
4503#[cfg_attr(
4504 not(target_arch = "arm"),
4505 stable(feature = "neon_intrinsics", since = "1.59.0")
4506)]
4507#[cfg_attr(
4508 target_arch = "arm",
4509 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4510)]
4511pub fn vbslq_u8(a: uint8x16_t, b: uint8x16_t, c: uint8x16_t) -> uint8x16_t {
4512 let not = int8x16_t::splat(-1);
4513 unsafe {
4514 transmute(simd_or(
4515 simd_and(a, b),
4516 simd_and(simd_xor(a, transmute(not)), c),
4517 ))
4518 }
4519}
4520#[doc = "Floating-point absolute compare greater than or equal"]
4521#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcage_f16)"]
4522#[inline]
4523#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4524#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacge.f16"))]
4525#[cfg_attr(
4526 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4527 assert_instr(facge)
4528)]
4529#[target_feature(enable = "neon,fp16")]
4530#[cfg_attr(
4531 not(target_arch = "arm"),
4532 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
4533)]
4534#[cfg_attr(
4535 target_arch = "arm",
4536 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4537)]
4538#[cfg(not(target_arch = "arm64ec"))]
4539pub fn vcage_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t {
4540 unsafe extern "unadjusted" {
4541 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vacge.v4i16.v4f16")]
4542 #[cfg_attr(
4543 any(target_arch = "aarch64", target_arch = "arm64ec"),
4544 link_name = "llvm.aarch64.neon.facge.v4i16.v4f16"
4545 )]
4546 fn _vcage_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t;
4547 }
4548 unsafe { _vcage_f16(a, b) }
4549}
4550#[doc = "Floating-point absolute compare greater than or equal"]
4551#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcageq_f16)"]
4552#[inline]
4553#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4554#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacge.f16"))]
4555#[cfg_attr(
4556 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4557 assert_instr(facge)
4558)]
4559#[target_feature(enable = "neon,fp16")]
4560#[cfg_attr(
4561 not(target_arch = "arm"),
4562 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
4563)]
4564#[cfg_attr(
4565 target_arch = "arm",
4566 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4567)]
4568#[cfg(not(target_arch = "arm64ec"))]
4569pub fn vcageq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t {
4570 unsafe extern "unadjusted" {
4571 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vacge.v8i16.v8f16")]
4572 #[cfg_attr(
4573 any(target_arch = "aarch64", target_arch = "arm64ec"),
4574 link_name = "llvm.aarch64.neon.facge.v8i16.v8f16"
4575 )]
4576 fn _vcageq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t;
4577 }
4578 unsafe { _vcageq_f16(a, b) }
4579}
4580#[doc = "Floating-point absolute compare greater than or equal"]
4581#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcage_f32)"]
4582#[inline]
4583#[target_feature(enable = "neon")]
4584#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4585#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacge.f32"))]
4586#[cfg_attr(
4587 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4588 assert_instr(facge)
4589)]
4590#[cfg_attr(
4591 not(target_arch = "arm"),
4592 stable(feature = "neon_intrinsics", since = "1.59.0")
4593)]
4594#[cfg_attr(
4595 target_arch = "arm",
4596 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4597)]
4598pub fn vcage_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t {
4599 unsafe extern "unadjusted" {
4600 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vacge.v2i32.v2f32")]
4601 #[cfg_attr(
4602 any(target_arch = "aarch64", target_arch = "arm64ec"),
4603 link_name = "llvm.aarch64.neon.facge.v2i32.v2f32"
4604 )]
4605 fn _vcage_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t;
4606 }
4607 unsafe { _vcage_f32(a, b) }
4608}
4609#[doc = "Floating-point absolute compare greater than or equal"]
4610#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcageq_f32)"]
4611#[inline]
4612#[target_feature(enable = "neon")]
4613#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4614#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacge.f32"))]
4615#[cfg_attr(
4616 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4617 assert_instr(facge)
4618)]
4619#[cfg_attr(
4620 not(target_arch = "arm"),
4621 stable(feature = "neon_intrinsics", since = "1.59.0")
4622)]
4623#[cfg_attr(
4624 target_arch = "arm",
4625 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4626)]
4627pub fn vcageq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t {
4628 unsafe extern "unadjusted" {
4629 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vacge.v4i32.v4f32")]
4630 #[cfg_attr(
4631 any(target_arch = "aarch64", target_arch = "arm64ec"),
4632 link_name = "llvm.aarch64.neon.facge.v4i32.v4f32"
4633 )]
4634 fn _vcageq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t;
4635 }
4636 unsafe { _vcageq_f32(a, b) }
4637}
4638#[doc = "Floating-point absolute compare greater than"]
4639#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcagt_f16)"]
4640#[inline]
4641#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4642#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacgt.f16"))]
4643#[cfg_attr(
4644 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4645 assert_instr(facgt)
4646)]
4647#[target_feature(enable = "neon,fp16")]
4648#[cfg_attr(
4649 not(target_arch = "arm"),
4650 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
4651)]
4652#[cfg_attr(
4653 target_arch = "arm",
4654 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4655)]
4656#[cfg(not(target_arch = "arm64ec"))]
4657pub fn vcagt_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t {
4658 unsafe extern "unadjusted" {
4659 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vacgt.v4i16.v4f16")]
4660 #[cfg_attr(
4661 any(target_arch = "aarch64", target_arch = "arm64ec"),
4662 link_name = "llvm.aarch64.neon.facgt.v4i16.v4f16"
4663 )]
4664 fn _vcagt_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t;
4665 }
4666 unsafe { _vcagt_f16(a, b) }
4667}
4668#[doc = "Floating-point absolute compare greater than"]
4669#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcagtq_f16)"]
4670#[inline]
4671#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4672#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacgt.f16"))]
4673#[cfg_attr(
4674 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4675 assert_instr(facgt)
4676)]
4677#[target_feature(enable = "neon,fp16")]
4678#[cfg_attr(
4679 not(target_arch = "arm"),
4680 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
4681)]
4682#[cfg_attr(
4683 target_arch = "arm",
4684 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4685)]
4686#[cfg(not(target_arch = "arm64ec"))]
4687pub fn vcagtq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t {
4688 unsafe extern "unadjusted" {
4689 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vacgt.v8i16.v8f16")]
4690 #[cfg_attr(
4691 any(target_arch = "aarch64", target_arch = "arm64ec"),
4692 link_name = "llvm.aarch64.neon.facgt.v8i16.v8f16"
4693 )]
4694 fn _vcagtq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t;
4695 }
4696 unsafe { _vcagtq_f16(a, b) }
4697}
4698#[doc = "Floating-point absolute compare greater than"]
4699#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcagt_f32)"]
4700#[inline]
4701#[target_feature(enable = "neon")]
4702#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4703#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacgt.f32"))]
4704#[cfg_attr(
4705 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4706 assert_instr(facgt)
4707)]
4708#[cfg_attr(
4709 not(target_arch = "arm"),
4710 stable(feature = "neon_intrinsics", since = "1.59.0")
4711)]
4712#[cfg_attr(
4713 target_arch = "arm",
4714 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4715)]
4716pub fn vcagt_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t {
4717 unsafe extern "unadjusted" {
4718 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vacgt.v2i32.v2f32")]
4719 #[cfg_attr(
4720 any(target_arch = "aarch64", target_arch = "arm64ec"),
4721 link_name = "llvm.aarch64.neon.facgt.v2i32.v2f32"
4722 )]
4723 fn _vcagt_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t;
4724 }
4725 unsafe { _vcagt_f32(a, b) }
4726}
4727#[doc = "Floating-point absolute compare greater than"]
4728#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcagtq_f32)"]
4729#[inline]
4730#[target_feature(enable = "neon")]
4731#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4732#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacgt.f32"))]
4733#[cfg_attr(
4734 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4735 assert_instr(facgt)
4736)]
4737#[cfg_attr(
4738 not(target_arch = "arm"),
4739 stable(feature = "neon_intrinsics", since = "1.59.0")
4740)]
4741#[cfg_attr(
4742 target_arch = "arm",
4743 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4744)]
4745pub fn vcagtq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t {
4746 unsafe extern "unadjusted" {
4747 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vacgt.v4i32.v4f32")]
4748 #[cfg_attr(
4749 any(target_arch = "aarch64", target_arch = "arm64ec"),
4750 link_name = "llvm.aarch64.neon.facgt.v4i32.v4f32"
4751 )]
4752 fn _vcagtq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t;
4753 }
4754 unsafe { _vcagtq_f32(a, b) }
4755}
4756#[doc = "Floating-point absolute compare less than or equal"]
4757#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcale_f16)"]
4758#[inline]
4759#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4760#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacge.f16"))]
4761#[cfg_attr(
4762 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4763 assert_instr(facge)
4764)]
4765#[target_feature(enable = "neon,fp16")]
4766#[cfg_attr(
4767 not(target_arch = "arm"),
4768 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
4769)]
4770#[cfg_attr(
4771 target_arch = "arm",
4772 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4773)]
4774#[cfg(not(target_arch = "arm64ec"))]
4775pub fn vcale_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t {
4776 vcage_f16(b, a)
4777}
4778#[doc = "Floating-point absolute compare less than or equal"]
4779#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcaleq_f16)"]
4780#[inline]
4781#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4782#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacge.f16"))]
4783#[cfg_attr(
4784 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4785 assert_instr(facge)
4786)]
4787#[target_feature(enable = "neon,fp16")]
4788#[cfg_attr(
4789 not(target_arch = "arm"),
4790 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
4791)]
4792#[cfg_attr(
4793 target_arch = "arm",
4794 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4795)]
4796#[cfg(not(target_arch = "arm64ec"))]
4797pub fn vcaleq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t {
4798 vcageq_f16(b, a)
4799}
4800#[doc = "Floating-point absolute compare less than or equal"]
4801#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcale_f32)"]
4802#[inline]
4803#[target_feature(enable = "neon")]
4804#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4805#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacge.f32"))]
4806#[cfg_attr(
4807 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4808 assert_instr(facge)
4809)]
4810#[cfg_attr(
4811 not(target_arch = "arm"),
4812 stable(feature = "neon_intrinsics", since = "1.59.0")
4813)]
4814#[cfg_attr(
4815 target_arch = "arm",
4816 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4817)]
4818pub fn vcale_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t {
4819 vcage_f32(b, a)
4820}
4821#[doc = "Floating-point absolute compare less than or equal"]
4822#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcaleq_f32)"]
4823#[inline]
4824#[target_feature(enable = "neon")]
4825#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4826#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacge.f32"))]
4827#[cfg_attr(
4828 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4829 assert_instr(facge)
4830)]
4831#[cfg_attr(
4832 not(target_arch = "arm"),
4833 stable(feature = "neon_intrinsics", since = "1.59.0")
4834)]
4835#[cfg_attr(
4836 target_arch = "arm",
4837 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4838)]
4839pub fn vcaleq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t {
4840 vcageq_f32(b, a)
4841}
4842#[doc = "Floating-point absolute compare less than"]
4843#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcalt_f16)"]
4844#[inline]
4845#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4846#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacgt.f16"))]
4847#[cfg_attr(
4848 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4849 assert_instr(facgt)
4850)]
4851#[target_feature(enable = "neon,fp16")]
4852#[cfg_attr(
4853 not(target_arch = "arm"),
4854 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
4855)]
4856#[cfg_attr(
4857 target_arch = "arm",
4858 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4859)]
4860#[cfg(not(target_arch = "arm64ec"))]
4861pub fn vcalt_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t {
4862 vcagt_f16(b, a)
4863}
4864#[doc = "Floating-point absolute compare less than"]
4865#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcaltq_f16)"]
4866#[inline]
4867#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4868#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacgt.f16"))]
4869#[cfg_attr(
4870 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4871 assert_instr(facgt)
4872)]
4873#[target_feature(enable = "neon,fp16")]
4874#[cfg_attr(
4875 not(target_arch = "arm"),
4876 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
4877)]
4878#[cfg_attr(
4879 target_arch = "arm",
4880 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4881)]
4882#[cfg(not(target_arch = "arm64ec"))]
4883pub fn vcaltq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t {
4884 vcagtq_f16(b, a)
4885}
4886#[doc = "Floating-point absolute compare less than"]
4887#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcalt_f32)"]
4888#[inline]
4889#[target_feature(enable = "neon")]
4890#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4891#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacgt.f32"))]
4892#[cfg_attr(
4893 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4894 assert_instr(facgt)
4895)]
4896#[cfg_attr(
4897 not(target_arch = "arm"),
4898 stable(feature = "neon_intrinsics", since = "1.59.0")
4899)]
4900#[cfg_attr(
4901 target_arch = "arm",
4902 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4903)]
4904pub fn vcalt_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t {
4905 vcagt_f32(b, a)
4906}
4907#[doc = "Floating-point absolute compare less than"]
4908#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcaltq_f32)"]
4909#[inline]
4910#[target_feature(enable = "neon")]
4911#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
4912#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vacgt.f32"))]
4913#[cfg_attr(
4914 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4915 assert_instr(facgt)
4916)]
4917#[cfg_attr(
4918 not(target_arch = "arm"),
4919 stable(feature = "neon_intrinsics", since = "1.59.0")
4920)]
4921#[cfg_attr(
4922 target_arch = "arm",
4923 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4924)]
4925pub fn vcaltq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t {
4926 vcagtq_f32(b, a)
4927}
4928#[doc = "Floating-point compare equal"]
4929#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceq_f16)"]
4930#[inline]
4931#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4932#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.f16"))]
4933#[cfg_attr(
4934 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4935 assert_instr(fcmeq)
4936)]
4937#[target_feature(enable = "neon,fp16")]
4938#[cfg_attr(
4939 not(target_arch = "arm"),
4940 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
4941)]
4942#[cfg_attr(
4943 target_arch = "arm",
4944 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4945)]
4946#[cfg(not(target_arch = "arm64ec"))]
4947pub fn vceq_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t {
4948 unsafe { simd_eq(a, b) }
4949}
4950#[doc = "Floating-point compare equal"]
4951#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceqq_f16)"]
4952#[inline]
4953#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
4954#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.f16"))]
4955#[cfg_attr(
4956 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4957 assert_instr(fcmeq)
4958)]
4959#[target_feature(enable = "neon,fp16")]
4960#[cfg_attr(
4961 not(target_arch = "arm"),
4962 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
4963)]
4964#[cfg_attr(
4965 target_arch = "arm",
4966 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
4967)]
4968#[cfg(not(target_arch = "arm64ec"))]
4969pub fn vceqq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t {
4970 unsafe { simd_eq(a, b) }
4971}
4972#[doc = "Floating-point compare equal"]
4973#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceq_f32)"]
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.f32"))]
4978#[cfg_attr(
4979 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
4980 assert_instr(fcmeq)
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_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t {
4991 unsafe { simd_eq(a, b) }
4992}
4993#[doc = "Floating-point compare equal"]
4994#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceqq_f32)"]
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.f32"))]
4999#[cfg_attr(
5000 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5001 assert_instr(fcmeq)
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_f32(a: float32x4_t, b: float32x4_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_s8)"]
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_s8(a: int8x8_t, b: int8x8_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_s8)"]
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_s8(a: int8x16_t, b: int8x16_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_s16)"]
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_s16(a: int16x4_t, b: int16x4_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_s16)"]
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_s16(a: int16x8_t, b: int16x8_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_s32)"]
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_s32(a: int32x2_t, b: int32x2_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_s32)"]
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_s32(a: int32x4_t, b: int32x4_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_u8)"]
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_u8(a: uint8x8_t, b: uint8x8_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_u8)"]
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_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
5180 unsafe { simd_eq(a, b) }
5181}
5182#[doc = "Compare bitwise Equal (vector)"]
5183#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceq_u16)"]
5184#[inline]
5185#[target_feature(enable = "neon")]
5186#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5187#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i16"))]
5188#[cfg_attr(
5189 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5190 assert_instr(cmeq)
5191)]
5192#[cfg_attr(
5193 not(target_arch = "arm"),
5194 stable(feature = "neon_intrinsics", since = "1.59.0")
5195)]
5196#[cfg_attr(
5197 target_arch = "arm",
5198 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5199)]
5200pub fn vceq_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
5201 unsafe { simd_eq(a, b) }
5202}
5203#[doc = "Compare bitwise Equal (vector)"]
5204#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceqq_u16)"]
5205#[inline]
5206#[target_feature(enable = "neon")]
5207#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5208#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i16"))]
5209#[cfg_attr(
5210 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5211 assert_instr(cmeq)
5212)]
5213#[cfg_attr(
5214 not(target_arch = "arm"),
5215 stable(feature = "neon_intrinsics", since = "1.59.0")
5216)]
5217#[cfg_attr(
5218 target_arch = "arm",
5219 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5220)]
5221pub fn vceqq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
5222 unsafe { simd_eq(a, b) }
5223}
5224#[doc = "Compare bitwise Equal (vector)"]
5225#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceq_u32)"]
5226#[inline]
5227#[target_feature(enable = "neon")]
5228#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5229#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i32"))]
5230#[cfg_attr(
5231 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5232 assert_instr(cmeq)
5233)]
5234#[cfg_attr(
5235 not(target_arch = "arm"),
5236 stable(feature = "neon_intrinsics", since = "1.59.0")
5237)]
5238#[cfg_attr(
5239 target_arch = "arm",
5240 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5241)]
5242pub fn vceq_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
5243 unsafe { simd_eq(a, b) }
5244}
5245#[doc = "Compare bitwise Equal (vector)"]
5246#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceqq_u32)"]
5247#[inline]
5248#[target_feature(enable = "neon")]
5249#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5250#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i32"))]
5251#[cfg_attr(
5252 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5253 assert_instr(cmeq)
5254)]
5255#[cfg_attr(
5256 not(target_arch = "arm"),
5257 stable(feature = "neon_intrinsics", since = "1.59.0")
5258)]
5259#[cfg_attr(
5260 target_arch = "arm",
5261 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5262)]
5263pub fn vceqq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
5264 unsafe { simd_eq(a, b) }
5265}
5266#[doc = "Compare bitwise Equal (vector)"]
5267#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceq_p8)"]
5268#[inline]
5269#[target_feature(enable = "neon")]
5270#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5271#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i8"))]
5272#[cfg_attr(
5273 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5274 assert_instr(cmeq)
5275)]
5276#[cfg_attr(
5277 not(target_arch = "arm"),
5278 stable(feature = "neon_intrinsics", since = "1.59.0")
5279)]
5280#[cfg_attr(
5281 target_arch = "arm",
5282 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5283)]
5284pub fn vceq_p8(a: poly8x8_t, b: poly8x8_t) -> uint8x8_t {
5285 unsafe { simd_eq(a, b) }
5286}
5287#[doc = "Compare bitwise Equal (vector)"]
5288#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vceqq_p8)"]
5289#[inline]
5290#[target_feature(enable = "neon")]
5291#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5292#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vceq.i8"))]
5293#[cfg_attr(
5294 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5295 assert_instr(cmeq)
5296)]
5297#[cfg_attr(
5298 not(target_arch = "arm"),
5299 stable(feature = "neon_intrinsics", since = "1.59.0")
5300)]
5301#[cfg_attr(
5302 target_arch = "arm",
5303 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5304)]
5305pub fn vceqq_p8(a: poly8x16_t, b: poly8x16_t) -> uint8x16_t {
5306 unsafe { simd_eq(a, b) }
5307}
5308#[doc = "Floating-point compare greater than or equal"]
5309#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcge_f16)"]
5310#[inline]
5311#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
5312#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f16"))]
5313#[cfg_attr(
5314 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5315 assert_instr(fcmge)
5316)]
5317#[target_feature(enable = "neon,fp16")]
5318#[cfg_attr(
5319 not(target_arch = "arm"),
5320 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
5321)]
5322#[cfg_attr(
5323 target_arch = "arm",
5324 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5325)]
5326#[cfg(not(target_arch = "arm64ec"))]
5327pub fn vcge_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t {
5328 unsafe { simd_ge(a, b) }
5329}
5330#[doc = "Floating-point compare greater than or equal"]
5331#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgeq_f16)"]
5332#[inline]
5333#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
5334#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f16"))]
5335#[cfg_attr(
5336 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5337 assert_instr(fcmge)
5338)]
5339#[target_feature(enable = "neon,fp16")]
5340#[cfg_attr(
5341 not(target_arch = "arm"),
5342 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
5343)]
5344#[cfg_attr(
5345 target_arch = "arm",
5346 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5347)]
5348#[cfg(not(target_arch = "arm64ec"))]
5349pub fn vcgeq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t {
5350 unsafe { simd_ge(a, b) }
5351}
5352#[doc = "Floating-point compare greater than or equal"]
5353#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcge_f32)"]
5354#[inline]
5355#[target_feature(enable = "neon")]
5356#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5357#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f32"))]
5358#[cfg_attr(
5359 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5360 assert_instr(fcmge)
5361)]
5362#[cfg_attr(
5363 not(target_arch = "arm"),
5364 stable(feature = "neon_intrinsics", since = "1.59.0")
5365)]
5366#[cfg_attr(
5367 target_arch = "arm",
5368 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5369)]
5370pub fn vcge_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t {
5371 unsafe { simd_ge(a, b) }
5372}
5373#[doc = "Floating-point compare greater than or equal"]
5374#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgeq_f32)"]
5375#[inline]
5376#[target_feature(enable = "neon")]
5377#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5378#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f32"))]
5379#[cfg_attr(
5380 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5381 assert_instr(fcmge)
5382)]
5383#[cfg_attr(
5384 not(target_arch = "arm"),
5385 stable(feature = "neon_intrinsics", since = "1.59.0")
5386)]
5387#[cfg_attr(
5388 target_arch = "arm",
5389 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5390)]
5391pub fn vcgeq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t {
5392 unsafe { simd_ge(a, b) }
5393}
5394#[doc = "Compare signed greater than or equal"]
5395#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcge_s8)"]
5396#[inline]
5397#[target_feature(enable = "neon")]
5398#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5399#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s8"))]
5400#[cfg_attr(
5401 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5402 assert_instr(cmge)
5403)]
5404#[cfg_attr(
5405 not(target_arch = "arm"),
5406 stable(feature = "neon_intrinsics", since = "1.59.0")
5407)]
5408#[cfg_attr(
5409 target_arch = "arm",
5410 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5411)]
5412pub fn vcge_s8(a: int8x8_t, b: int8x8_t) -> uint8x8_t {
5413 unsafe { simd_ge(a, b) }
5414}
5415#[doc = "Compare signed greater than or equal"]
5416#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgeq_s8)"]
5417#[inline]
5418#[target_feature(enable = "neon")]
5419#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5420#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s8"))]
5421#[cfg_attr(
5422 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5423 assert_instr(cmge)
5424)]
5425#[cfg_attr(
5426 not(target_arch = "arm"),
5427 stable(feature = "neon_intrinsics", since = "1.59.0")
5428)]
5429#[cfg_attr(
5430 target_arch = "arm",
5431 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5432)]
5433pub fn vcgeq_s8(a: int8x16_t, b: int8x16_t) -> uint8x16_t {
5434 unsafe { simd_ge(a, b) }
5435}
5436#[doc = "Compare signed greater than or equal"]
5437#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcge_s16)"]
5438#[inline]
5439#[target_feature(enable = "neon")]
5440#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5441#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s16"))]
5442#[cfg_attr(
5443 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5444 assert_instr(cmge)
5445)]
5446#[cfg_attr(
5447 not(target_arch = "arm"),
5448 stable(feature = "neon_intrinsics", since = "1.59.0")
5449)]
5450#[cfg_attr(
5451 target_arch = "arm",
5452 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5453)]
5454pub fn vcge_s16(a: int16x4_t, b: int16x4_t) -> uint16x4_t {
5455 unsafe { simd_ge(a, b) }
5456}
5457#[doc = "Compare signed greater than or equal"]
5458#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgeq_s16)"]
5459#[inline]
5460#[target_feature(enable = "neon")]
5461#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5462#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s16"))]
5463#[cfg_attr(
5464 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5465 assert_instr(cmge)
5466)]
5467#[cfg_attr(
5468 not(target_arch = "arm"),
5469 stable(feature = "neon_intrinsics", since = "1.59.0")
5470)]
5471#[cfg_attr(
5472 target_arch = "arm",
5473 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5474)]
5475pub fn vcgeq_s16(a: int16x8_t, b: int16x8_t) -> uint16x8_t {
5476 unsafe { simd_ge(a, b) }
5477}
5478#[doc = "Compare signed greater than or equal"]
5479#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcge_s32)"]
5480#[inline]
5481#[target_feature(enable = "neon")]
5482#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5483#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s32"))]
5484#[cfg_attr(
5485 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5486 assert_instr(cmge)
5487)]
5488#[cfg_attr(
5489 not(target_arch = "arm"),
5490 stable(feature = "neon_intrinsics", since = "1.59.0")
5491)]
5492#[cfg_attr(
5493 target_arch = "arm",
5494 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5495)]
5496pub fn vcge_s32(a: int32x2_t, b: int32x2_t) -> uint32x2_t {
5497 unsafe { simd_ge(a, b) }
5498}
5499#[doc = "Compare signed greater than or equal"]
5500#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgeq_s32)"]
5501#[inline]
5502#[target_feature(enable = "neon")]
5503#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5504#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s32"))]
5505#[cfg_attr(
5506 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5507 assert_instr(cmge)
5508)]
5509#[cfg_attr(
5510 not(target_arch = "arm"),
5511 stable(feature = "neon_intrinsics", since = "1.59.0")
5512)]
5513#[cfg_attr(
5514 target_arch = "arm",
5515 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5516)]
5517pub fn vcgeq_s32(a: int32x4_t, b: int32x4_t) -> uint32x4_t {
5518 unsafe { simd_ge(a, b) }
5519}
5520#[doc = "Compare unsigned greater than or equal"]
5521#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcge_u8)"]
5522#[inline]
5523#[target_feature(enable = "neon")]
5524#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5525#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u8"))]
5526#[cfg_attr(
5527 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5528 assert_instr(cmhs)
5529)]
5530#[cfg_attr(
5531 not(target_arch = "arm"),
5532 stable(feature = "neon_intrinsics", since = "1.59.0")
5533)]
5534#[cfg_attr(
5535 target_arch = "arm",
5536 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5537)]
5538pub fn vcge_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
5539 unsafe { simd_ge(a, b) }
5540}
5541#[doc = "Compare unsigned greater than or equal"]
5542#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgeq_u8)"]
5543#[inline]
5544#[target_feature(enable = "neon")]
5545#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5546#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u8"))]
5547#[cfg_attr(
5548 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5549 assert_instr(cmhs)
5550)]
5551#[cfg_attr(
5552 not(target_arch = "arm"),
5553 stable(feature = "neon_intrinsics", since = "1.59.0")
5554)]
5555#[cfg_attr(
5556 target_arch = "arm",
5557 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5558)]
5559pub fn vcgeq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
5560 unsafe { simd_ge(a, b) }
5561}
5562#[doc = "Compare unsigned greater than or equal"]
5563#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcge_u16)"]
5564#[inline]
5565#[target_feature(enable = "neon")]
5566#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5567#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u16"))]
5568#[cfg_attr(
5569 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5570 assert_instr(cmhs)
5571)]
5572#[cfg_attr(
5573 not(target_arch = "arm"),
5574 stable(feature = "neon_intrinsics", since = "1.59.0")
5575)]
5576#[cfg_attr(
5577 target_arch = "arm",
5578 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5579)]
5580pub fn vcge_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
5581 unsafe { simd_ge(a, b) }
5582}
5583#[doc = "Compare unsigned greater than or equal"]
5584#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgeq_u16)"]
5585#[inline]
5586#[target_feature(enable = "neon")]
5587#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5588#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u16"))]
5589#[cfg_attr(
5590 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5591 assert_instr(cmhs)
5592)]
5593#[cfg_attr(
5594 not(target_arch = "arm"),
5595 stable(feature = "neon_intrinsics", since = "1.59.0")
5596)]
5597#[cfg_attr(
5598 target_arch = "arm",
5599 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5600)]
5601pub fn vcgeq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
5602 unsafe { simd_ge(a, b) }
5603}
5604#[doc = "Compare unsigned greater than or equal"]
5605#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcge_u32)"]
5606#[inline]
5607#[target_feature(enable = "neon")]
5608#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5609#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u32"))]
5610#[cfg_attr(
5611 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5612 assert_instr(cmhs)
5613)]
5614#[cfg_attr(
5615 not(target_arch = "arm"),
5616 stable(feature = "neon_intrinsics", since = "1.59.0")
5617)]
5618#[cfg_attr(
5619 target_arch = "arm",
5620 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5621)]
5622pub fn vcge_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
5623 unsafe { simd_ge(a, b) }
5624}
5625#[doc = "Compare unsigned greater than or equal"]
5626#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgeq_u32)"]
5627#[inline]
5628#[target_feature(enable = "neon")]
5629#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5630#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u32"))]
5631#[cfg_attr(
5632 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5633 assert_instr(cmhs)
5634)]
5635#[cfg_attr(
5636 not(target_arch = "arm"),
5637 stable(feature = "neon_intrinsics", since = "1.59.0")
5638)]
5639#[cfg_attr(
5640 target_arch = "arm",
5641 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5642)]
5643pub fn vcgeq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
5644 unsafe { simd_ge(a, b) }
5645}
5646#[doc = "Floating-point compare greater than or equal to zero"]
5647#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgez_f16)"]
5648#[inline]
5649#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
5650#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f16"))]
5651#[cfg_attr(
5652 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5653 assert_instr(fcmge)
5654)]
5655#[target_feature(enable = "neon,fp16")]
5656#[cfg_attr(
5657 not(target_arch = "arm"),
5658 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
5659)]
5660#[cfg_attr(
5661 target_arch = "arm",
5662 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5663)]
5664#[cfg(not(target_arch = "arm64ec"))]
5665pub fn vcgez_f16(a: float16x4_t) -> uint16x4_t {
5666 let b: f16x4 = f16x4::new(0.0, 0.0, 0.0, 0.0);
5667 unsafe { simd_ge(a, transmute(b)) }
5668}
5669#[doc = "Floating-point compare greater than or equal to zero"]
5670#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgezq_f16)"]
5671#[inline]
5672#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
5673#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f16"))]
5674#[cfg_attr(
5675 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5676 assert_instr(fcmge)
5677)]
5678#[target_feature(enable = "neon,fp16")]
5679#[cfg_attr(
5680 not(target_arch = "arm"),
5681 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
5682)]
5683#[cfg_attr(
5684 target_arch = "arm",
5685 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5686)]
5687#[cfg(not(target_arch = "arm64ec"))]
5688pub fn vcgezq_f16(a: float16x8_t) -> uint16x8_t {
5689 let b: f16x8 = f16x8::new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
5690 unsafe { simd_ge(a, transmute(b)) }
5691}
5692#[doc = "Floating-point compare greater than"]
5693#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgt_f16)"]
5694#[inline]
5695#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
5696#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.f16"))]
5697#[cfg_attr(
5698 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5699 assert_instr(fcmgt)
5700)]
5701#[target_feature(enable = "neon,fp16")]
5702#[cfg_attr(
5703 not(target_arch = "arm"),
5704 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
5705)]
5706#[cfg_attr(
5707 target_arch = "arm",
5708 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5709)]
5710#[cfg(not(target_arch = "arm64ec"))]
5711pub fn vcgt_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t {
5712 unsafe { simd_gt(a, b) }
5713}
5714#[doc = "Floating-point compare greater than"]
5715#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtq_f16)"]
5716#[inline]
5717#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
5718#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.f16"))]
5719#[cfg_attr(
5720 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5721 assert_instr(fcmgt)
5722)]
5723#[target_feature(enable = "neon,fp16")]
5724#[cfg_attr(
5725 not(target_arch = "arm"),
5726 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
5727)]
5728#[cfg_attr(
5729 target_arch = "arm",
5730 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5731)]
5732#[cfg(not(target_arch = "arm64ec"))]
5733pub fn vcgtq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t {
5734 unsafe { simd_gt(a, b) }
5735}
5736#[doc = "Floating-point compare greater than"]
5737#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgt_f32)"]
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.f32"))]
5742#[cfg_attr(
5743 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5744 assert_instr(fcmgt)
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_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t {
5755 unsafe { simd_gt(a, b) }
5756}
5757#[doc = "Floating-point compare greater than"]
5758#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtq_f32)"]
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.f32"))]
5763#[cfg_attr(
5764 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5765 assert_instr(fcmgt)
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_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t {
5776 unsafe { simd_gt(a, b) }
5777}
5778#[doc = "Compare signed greater than"]
5779#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgt_s8)"]
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.s8"))]
5784#[cfg_attr(
5785 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5786 assert_instr(cmgt)
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_s8(a: int8x8_t, b: int8x8_t) -> uint8x8_t {
5797 unsafe { simd_gt(a, b) }
5798}
5799#[doc = "Compare signed greater than"]
5800#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtq_s8)"]
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.s8"))]
5805#[cfg_attr(
5806 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5807 assert_instr(cmgt)
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_s8(a: int8x16_t, b: int8x16_t) -> uint8x16_t {
5818 unsafe { simd_gt(a, b) }
5819}
5820#[doc = "Compare signed greater than"]
5821#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgt_s16)"]
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.s16"))]
5826#[cfg_attr(
5827 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5828 assert_instr(cmgt)
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_s16(a: int16x4_t, b: int16x4_t) -> uint16x4_t {
5839 unsafe { simd_gt(a, b) }
5840}
5841#[doc = "Compare signed greater than"]
5842#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtq_s16)"]
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.s16"))]
5847#[cfg_attr(
5848 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5849 assert_instr(cmgt)
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_s16(a: int16x8_t, b: int16x8_t) -> uint16x8_t {
5860 unsafe { simd_gt(a, b) }
5861}
5862#[doc = "Compare signed greater than"]
5863#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgt_s32)"]
5864#[inline]
5865#[target_feature(enable = "neon")]
5866#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5867#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s32"))]
5868#[cfg_attr(
5869 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5870 assert_instr(cmgt)
5871)]
5872#[cfg_attr(
5873 not(target_arch = "arm"),
5874 stable(feature = "neon_intrinsics", since = "1.59.0")
5875)]
5876#[cfg_attr(
5877 target_arch = "arm",
5878 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5879)]
5880pub fn vcgt_s32(a: int32x2_t, b: int32x2_t) -> uint32x2_t {
5881 unsafe { simd_gt(a, b) }
5882}
5883#[doc = "Compare signed greater than"]
5884#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtq_s32)"]
5885#[inline]
5886#[target_feature(enable = "neon")]
5887#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5888#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s32"))]
5889#[cfg_attr(
5890 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5891 assert_instr(cmgt)
5892)]
5893#[cfg_attr(
5894 not(target_arch = "arm"),
5895 stable(feature = "neon_intrinsics", since = "1.59.0")
5896)]
5897#[cfg_attr(
5898 target_arch = "arm",
5899 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5900)]
5901pub fn vcgtq_s32(a: int32x4_t, b: int32x4_t) -> uint32x4_t {
5902 unsafe { simd_gt(a, b) }
5903}
5904#[doc = "Compare unsigned greater than"]
5905#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgt_u8)"]
5906#[inline]
5907#[target_feature(enable = "neon")]
5908#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5909#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u8"))]
5910#[cfg_attr(
5911 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5912 assert_instr(cmhi)
5913)]
5914#[cfg_attr(
5915 not(target_arch = "arm"),
5916 stable(feature = "neon_intrinsics", since = "1.59.0")
5917)]
5918#[cfg_attr(
5919 target_arch = "arm",
5920 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5921)]
5922pub fn vcgt_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
5923 unsafe { simd_gt(a, b) }
5924}
5925#[doc = "Compare unsigned greater than"]
5926#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtq_u8)"]
5927#[inline]
5928#[target_feature(enable = "neon")]
5929#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5930#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u8"))]
5931#[cfg_attr(
5932 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5933 assert_instr(cmhi)
5934)]
5935#[cfg_attr(
5936 not(target_arch = "arm"),
5937 stable(feature = "neon_intrinsics", since = "1.59.0")
5938)]
5939#[cfg_attr(
5940 target_arch = "arm",
5941 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5942)]
5943pub fn vcgtq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
5944 unsafe { simd_gt(a, b) }
5945}
5946#[doc = "Compare unsigned greater than"]
5947#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgt_u16)"]
5948#[inline]
5949#[target_feature(enable = "neon")]
5950#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5951#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u16"))]
5952#[cfg_attr(
5953 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5954 assert_instr(cmhi)
5955)]
5956#[cfg_attr(
5957 not(target_arch = "arm"),
5958 stable(feature = "neon_intrinsics", since = "1.59.0")
5959)]
5960#[cfg_attr(
5961 target_arch = "arm",
5962 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5963)]
5964pub fn vcgt_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
5965 unsafe { simd_gt(a, b) }
5966}
5967#[doc = "Compare unsigned greater than"]
5968#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtq_u16)"]
5969#[inline]
5970#[target_feature(enable = "neon")]
5971#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5972#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u16"))]
5973#[cfg_attr(
5974 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5975 assert_instr(cmhi)
5976)]
5977#[cfg_attr(
5978 not(target_arch = "arm"),
5979 stable(feature = "neon_intrinsics", since = "1.59.0")
5980)]
5981#[cfg_attr(
5982 target_arch = "arm",
5983 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
5984)]
5985pub fn vcgtq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
5986 unsafe { simd_gt(a, b) }
5987}
5988#[doc = "Compare unsigned greater than"]
5989#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgt_u32)"]
5990#[inline]
5991#[target_feature(enable = "neon")]
5992#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
5993#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u32"))]
5994#[cfg_attr(
5995 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
5996 assert_instr(cmhi)
5997)]
5998#[cfg_attr(
5999 not(target_arch = "arm"),
6000 stable(feature = "neon_intrinsics", since = "1.59.0")
6001)]
6002#[cfg_attr(
6003 target_arch = "arm",
6004 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6005)]
6006pub fn vcgt_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
6007 unsafe { simd_gt(a, b) }
6008}
6009#[doc = "Compare unsigned greater than"]
6010#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtq_u32)"]
6011#[inline]
6012#[target_feature(enable = "neon")]
6013#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6014#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u32"))]
6015#[cfg_attr(
6016 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6017 assert_instr(cmhi)
6018)]
6019#[cfg_attr(
6020 not(target_arch = "arm"),
6021 stable(feature = "neon_intrinsics", since = "1.59.0")
6022)]
6023#[cfg_attr(
6024 target_arch = "arm",
6025 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6026)]
6027pub fn vcgtq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
6028 unsafe { simd_gt(a, b) }
6029}
6030#[doc = "Floating-point compare greater than zero"]
6031#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtz_f16)"]
6032#[inline]
6033#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
6034#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.f16"))]
6035#[cfg_attr(
6036 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6037 assert_instr(fcmgt)
6038)]
6039#[target_feature(enable = "neon,fp16")]
6040#[cfg_attr(
6041 not(target_arch = "arm"),
6042 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
6043)]
6044#[cfg_attr(
6045 target_arch = "arm",
6046 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6047)]
6048#[cfg(not(target_arch = "arm64ec"))]
6049pub fn vcgtz_f16(a: float16x4_t) -> uint16x4_t {
6050 let b: f16x4 = f16x4::new(0.0, 0.0, 0.0, 0.0);
6051 unsafe { simd_gt(a, transmute(b)) }
6052}
6053#[doc = "Floating-point compare greater than zero"]
6054#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcgtzq_f16)"]
6055#[inline]
6056#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
6057#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.f16"))]
6058#[cfg_attr(
6059 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6060 assert_instr(fcmgt)
6061)]
6062#[target_feature(enable = "neon,fp16")]
6063#[cfg_attr(
6064 not(target_arch = "arm"),
6065 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
6066)]
6067#[cfg_attr(
6068 target_arch = "arm",
6069 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6070)]
6071#[cfg(not(target_arch = "arm64ec"))]
6072pub fn vcgtzq_f16(a: float16x8_t) -> uint16x8_t {
6073 let b: f16x8 = f16x8::new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
6074 unsafe { simd_gt(a, transmute(b)) }
6075}
6076#[doc = "Floating-point compare less than or equal"]
6077#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcle_f16)"]
6078#[inline]
6079#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
6080#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f16"))]
6081#[cfg_attr(
6082 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6083 assert_instr(fcmge)
6084)]
6085#[target_feature(enable = "neon,fp16")]
6086#[cfg_attr(
6087 not(target_arch = "arm"),
6088 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
6089)]
6090#[cfg_attr(
6091 target_arch = "arm",
6092 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6093)]
6094#[cfg(not(target_arch = "arm64ec"))]
6095pub fn vcle_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t {
6096 unsafe { simd_le(a, b) }
6097}
6098#[doc = "Floating-point compare less than or equal"]
6099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcleq_f16)"]
6100#[inline]
6101#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
6102#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f16"))]
6103#[cfg_attr(
6104 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6105 assert_instr(fcmge)
6106)]
6107#[target_feature(enable = "neon,fp16")]
6108#[cfg_attr(
6109 not(target_arch = "arm"),
6110 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
6111)]
6112#[cfg_attr(
6113 target_arch = "arm",
6114 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6115)]
6116#[cfg(not(target_arch = "arm64ec"))]
6117pub fn vcleq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t {
6118 unsafe { simd_le(a, b) }
6119}
6120#[doc = "Floating-point compare less than or equal"]
6121#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcle_f32)"]
6122#[inline]
6123#[target_feature(enable = "neon")]
6124#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6125#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f32"))]
6126#[cfg_attr(
6127 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6128 assert_instr(fcmge)
6129)]
6130#[cfg_attr(
6131 not(target_arch = "arm"),
6132 stable(feature = "neon_intrinsics", since = "1.59.0")
6133)]
6134#[cfg_attr(
6135 target_arch = "arm",
6136 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6137)]
6138pub fn vcle_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t {
6139 unsafe { simd_le(a, b) }
6140}
6141#[doc = "Floating-point compare less than or equal"]
6142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcleq_f32)"]
6143#[inline]
6144#[target_feature(enable = "neon")]
6145#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6146#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.f32"))]
6147#[cfg_attr(
6148 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6149 assert_instr(fcmge)
6150)]
6151#[cfg_attr(
6152 not(target_arch = "arm"),
6153 stable(feature = "neon_intrinsics", since = "1.59.0")
6154)]
6155#[cfg_attr(
6156 target_arch = "arm",
6157 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6158)]
6159pub fn vcleq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t {
6160 unsafe { simd_le(a, b) }
6161}
6162#[doc = "Compare signed less than or equal"]
6163#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcle_s8)"]
6164#[inline]
6165#[target_feature(enable = "neon")]
6166#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6167#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s8"))]
6168#[cfg_attr(
6169 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6170 assert_instr(cmge)
6171)]
6172#[cfg_attr(
6173 not(target_arch = "arm"),
6174 stable(feature = "neon_intrinsics", since = "1.59.0")
6175)]
6176#[cfg_attr(
6177 target_arch = "arm",
6178 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6179)]
6180pub fn vcle_s8(a: int8x8_t, b: int8x8_t) -> uint8x8_t {
6181 unsafe { simd_le(a, b) }
6182}
6183#[doc = "Compare signed less than or equal"]
6184#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcleq_s8)"]
6185#[inline]
6186#[target_feature(enable = "neon")]
6187#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6188#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s8"))]
6189#[cfg_attr(
6190 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6191 assert_instr(cmge)
6192)]
6193#[cfg_attr(
6194 not(target_arch = "arm"),
6195 stable(feature = "neon_intrinsics", since = "1.59.0")
6196)]
6197#[cfg_attr(
6198 target_arch = "arm",
6199 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6200)]
6201pub fn vcleq_s8(a: int8x16_t, b: int8x16_t) -> uint8x16_t {
6202 unsafe { simd_le(a, b) }
6203}
6204#[doc = "Compare signed less than or equal"]
6205#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcle_s16)"]
6206#[inline]
6207#[target_feature(enable = "neon")]
6208#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6209#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s16"))]
6210#[cfg_attr(
6211 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6212 assert_instr(cmge)
6213)]
6214#[cfg_attr(
6215 not(target_arch = "arm"),
6216 stable(feature = "neon_intrinsics", since = "1.59.0")
6217)]
6218#[cfg_attr(
6219 target_arch = "arm",
6220 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6221)]
6222pub fn vcle_s16(a: int16x4_t, b: int16x4_t) -> uint16x4_t {
6223 unsafe { simd_le(a, b) }
6224}
6225#[doc = "Compare signed less than or equal"]
6226#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcleq_s16)"]
6227#[inline]
6228#[target_feature(enable = "neon")]
6229#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6230#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s16"))]
6231#[cfg_attr(
6232 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6233 assert_instr(cmge)
6234)]
6235#[cfg_attr(
6236 not(target_arch = "arm"),
6237 stable(feature = "neon_intrinsics", since = "1.59.0")
6238)]
6239#[cfg_attr(
6240 target_arch = "arm",
6241 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6242)]
6243pub fn vcleq_s16(a: int16x8_t, b: int16x8_t) -> uint16x8_t {
6244 unsafe { simd_le(a, b) }
6245}
6246#[doc = "Compare signed less than or equal"]
6247#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcle_s32)"]
6248#[inline]
6249#[target_feature(enable = "neon")]
6250#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6251#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s32"))]
6252#[cfg_attr(
6253 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6254 assert_instr(cmge)
6255)]
6256#[cfg_attr(
6257 not(target_arch = "arm"),
6258 stable(feature = "neon_intrinsics", since = "1.59.0")
6259)]
6260#[cfg_attr(
6261 target_arch = "arm",
6262 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6263)]
6264pub fn vcle_s32(a: int32x2_t, b: int32x2_t) -> uint32x2_t {
6265 unsafe { simd_le(a, b) }
6266}
6267#[doc = "Compare signed less than or equal"]
6268#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcleq_s32)"]
6269#[inline]
6270#[target_feature(enable = "neon")]
6271#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6272#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.s32"))]
6273#[cfg_attr(
6274 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6275 assert_instr(cmge)
6276)]
6277#[cfg_attr(
6278 not(target_arch = "arm"),
6279 stable(feature = "neon_intrinsics", since = "1.59.0")
6280)]
6281#[cfg_attr(
6282 target_arch = "arm",
6283 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6284)]
6285pub fn vcleq_s32(a: int32x4_t, b: int32x4_t) -> uint32x4_t {
6286 unsafe { simd_le(a, b) }
6287}
6288#[doc = "Compare unsigned less than or equal"]
6289#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcle_u8)"]
6290#[inline]
6291#[target_feature(enable = "neon")]
6292#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6293#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u8"))]
6294#[cfg_attr(
6295 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6296 assert_instr(cmhs)
6297)]
6298#[cfg_attr(
6299 not(target_arch = "arm"),
6300 stable(feature = "neon_intrinsics", since = "1.59.0")
6301)]
6302#[cfg_attr(
6303 target_arch = "arm",
6304 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6305)]
6306pub fn vcle_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
6307 unsafe { simd_le(a, b) }
6308}
6309#[doc = "Compare unsigned less than or equal"]
6310#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcleq_u8)"]
6311#[inline]
6312#[target_feature(enable = "neon")]
6313#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6314#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u8"))]
6315#[cfg_attr(
6316 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6317 assert_instr(cmhs)
6318)]
6319#[cfg_attr(
6320 not(target_arch = "arm"),
6321 stable(feature = "neon_intrinsics", since = "1.59.0")
6322)]
6323#[cfg_attr(
6324 target_arch = "arm",
6325 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6326)]
6327pub fn vcleq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
6328 unsafe { simd_le(a, b) }
6329}
6330#[doc = "Compare unsigned less than or equal"]
6331#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcle_u16)"]
6332#[inline]
6333#[target_feature(enable = "neon")]
6334#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6335#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u16"))]
6336#[cfg_attr(
6337 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6338 assert_instr(cmhs)
6339)]
6340#[cfg_attr(
6341 not(target_arch = "arm"),
6342 stable(feature = "neon_intrinsics", since = "1.59.0")
6343)]
6344#[cfg_attr(
6345 target_arch = "arm",
6346 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6347)]
6348pub fn vcle_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
6349 unsafe { simd_le(a, b) }
6350}
6351#[doc = "Compare unsigned less than or equal"]
6352#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcleq_u16)"]
6353#[inline]
6354#[target_feature(enable = "neon")]
6355#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6356#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u16"))]
6357#[cfg_attr(
6358 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6359 assert_instr(cmhs)
6360)]
6361#[cfg_attr(
6362 not(target_arch = "arm"),
6363 stable(feature = "neon_intrinsics", since = "1.59.0")
6364)]
6365#[cfg_attr(
6366 target_arch = "arm",
6367 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6368)]
6369pub fn vcleq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
6370 unsafe { simd_le(a, b) }
6371}
6372#[doc = "Compare unsigned less than or equal"]
6373#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcle_u32)"]
6374#[inline]
6375#[target_feature(enable = "neon")]
6376#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6377#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u32"))]
6378#[cfg_attr(
6379 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6380 assert_instr(cmhs)
6381)]
6382#[cfg_attr(
6383 not(target_arch = "arm"),
6384 stable(feature = "neon_intrinsics", since = "1.59.0")
6385)]
6386#[cfg_attr(
6387 target_arch = "arm",
6388 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6389)]
6390pub fn vcle_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
6391 unsafe { simd_le(a, b) }
6392}
6393#[doc = "Compare unsigned less than or equal"]
6394#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcleq_u32)"]
6395#[inline]
6396#[target_feature(enable = "neon")]
6397#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6398#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcge.u32"))]
6399#[cfg_attr(
6400 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6401 assert_instr(cmhs)
6402)]
6403#[cfg_attr(
6404 not(target_arch = "arm"),
6405 stable(feature = "neon_intrinsics", since = "1.59.0")
6406)]
6407#[cfg_attr(
6408 target_arch = "arm",
6409 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6410)]
6411pub fn vcleq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
6412 unsafe { simd_le(a, b) }
6413}
6414#[doc = "Floating-point compare less than or equal to zero"]
6415#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclez_f16)"]
6416#[inline]
6417#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
6418#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcle.f16"))]
6419#[cfg_attr(
6420 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6421 assert_instr(fcmle)
6422)]
6423#[target_feature(enable = "neon,fp16")]
6424#[cfg_attr(
6425 not(target_arch = "arm"),
6426 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
6427)]
6428#[cfg_attr(
6429 target_arch = "arm",
6430 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6431)]
6432#[cfg(not(target_arch = "arm64ec"))]
6433pub fn vclez_f16(a: float16x4_t) -> uint16x4_t {
6434 let b: f16x4 = f16x4::new(0.0, 0.0, 0.0, 0.0);
6435 unsafe { simd_le(a, transmute(b)) }
6436}
6437#[doc = "Floating-point compare less than or equal to zero"]
6438#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclezq_f16)"]
6439#[inline]
6440#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
6441#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcle.f16"))]
6442#[cfg_attr(
6443 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6444 assert_instr(fcmle)
6445)]
6446#[target_feature(enable = "neon,fp16")]
6447#[cfg_attr(
6448 not(target_arch = "arm"),
6449 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
6450)]
6451#[cfg_attr(
6452 target_arch = "arm",
6453 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6454)]
6455#[cfg(not(target_arch = "arm64ec"))]
6456pub fn vclezq_f16(a: float16x8_t) -> uint16x8_t {
6457 let b: f16x8 = f16x8::new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
6458 unsafe { simd_le(a, transmute(b)) }
6459}
6460#[doc = "Count leading sign bits"]
6461#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcls_s8)"]
6462#[inline]
6463#[target_feature(enable = "neon")]
6464#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6465#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcls.s8"))]
6466#[cfg_attr(
6467 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6468 assert_instr(cls)
6469)]
6470#[cfg_attr(
6471 not(target_arch = "arm"),
6472 stable(feature = "neon_intrinsics", since = "1.59.0")
6473)]
6474#[cfg_attr(
6475 target_arch = "arm",
6476 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6477)]
6478pub fn vcls_s8(a: int8x8_t) -> int8x8_t {
6479 unsafe extern "unadjusted" {
6480 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vcls.v8i8")]
6481 #[cfg_attr(
6482 any(target_arch = "aarch64", target_arch = "arm64ec"),
6483 link_name = "llvm.aarch64.neon.cls.v8i8"
6484 )]
6485 fn _vcls_s8(a: int8x8_t) -> int8x8_t;
6486 }
6487 unsafe { _vcls_s8(a) }
6488}
6489#[doc = "Count leading sign bits"]
6490#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclsq_s8)"]
6491#[inline]
6492#[target_feature(enable = "neon")]
6493#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6494#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcls.s8"))]
6495#[cfg_attr(
6496 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6497 assert_instr(cls)
6498)]
6499#[cfg_attr(
6500 not(target_arch = "arm"),
6501 stable(feature = "neon_intrinsics", since = "1.59.0")
6502)]
6503#[cfg_attr(
6504 target_arch = "arm",
6505 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6506)]
6507pub fn vclsq_s8(a: int8x16_t) -> int8x16_t {
6508 unsafe extern "unadjusted" {
6509 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vcls.v16i8")]
6510 #[cfg_attr(
6511 any(target_arch = "aarch64", target_arch = "arm64ec"),
6512 link_name = "llvm.aarch64.neon.cls.v16i8"
6513 )]
6514 fn _vclsq_s8(a: int8x16_t) -> int8x16_t;
6515 }
6516 unsafe { _vclsq_s8(a) }
6517}
6518#[doc = "Count leading sign bits"]
6519#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcls_s16)"]
6520#[inline]
6521#[target_feature(enable = "neon")]
6522#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6523#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcls.s16"))]
6524#[cfg_attr(
6525 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6526 assert_instr(cls)
6527)]
6528#[cfg_attr(
6529 not(target_arch = "arm"),
6530 stable(feature = "neon_intrinsics", since = "1.59.0")
6531)]
6532#[cfg_attr(
6533 target_arch = "arm",
6534 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6535)]
6536pub fn vcls_s16(a: int16x4_t) -> int16x4_t {
6537 unsafe extern "unadjusted" {
6538 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vcls.v4i16")]
6539 #[cfg_attr(
6540 any(target_arch = "aarch64", target_arch = "arm64ec"),
6541 link_name = "llvm.aarch64.neon.cls.v4i16"
6542 )]
6543 fn _vcls_s16(a: int16x4_t) -> int16x4_t;
6544 }
6545 unsafe { _vcls_s16(a) }
6546}
6547#[doc = "Count leading sign bits"]
6548#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclsq_s16)"]
6549#[inline]
6550#[target_feature(enable = "neon")]
6551#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6552#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcls.s16"))]
6553#[cfg_attr(
6554 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6555 assert_instr(cls)
6556)]
6557#[cfg_attr(
6558 not(target_arch = "arm"),
6559 stable(feature = "neon_intrinsics", since = "1.59.0")
6560)]
6561#[cfg_attr(
6562 target_arch = "arm",
6563 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6564)]
6565pub fn vclsq_s16(a: int16x8_t) -> int16x8_t {
6566 unsafe extern "unadjusted" {
6567 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vcls.v8i16")]
6568 #[cfg_attr(
6569 any(target_arch = "aarch64", target_arch = "arm64ec"),
6570 link_name = "llvm.aarch64.neon.cls.v8i16"
6571 )]
6572 fn _vclsq_s16(a: int16x8_t) -> int16x8_t;
6573 }
6574 unsafe { _vclsq_s16(a) }
6575}
6576#[doc = "Count leading sign bits"]
6577#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcls_s32)"]
6578#[inline]
6579#[target_feature(enable = "neon")]
6580#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6581#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcls.s32"))]
6582#[cfg_attr(
6583 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6584 assert_instr(cls)
6585)]
6586#[cfg_attr(
6587 not(target_arch = "arm"),
6588 stable(feature = "neon_intrinsics", since = "1.59.0")
6589)]
6590#[cfg_attr(
6591 target_arch = "arm",
6592 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6593)]
6594pub fn vcls_s32(a: int32x2_t) -> int32x2_t {
6595 unsafe extern "unadjusted" {
6596 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vcls.v2i32")]
6597 #[cfg_attr(
6598 any(target_arch = "aarch64", target_arch = "arm64ec"),
6599 link_name = "llvm.aarch64.neon.cls.v2i32"
6600 )]
6601 fn _vcls_s32(a: int32x2_t) -> int32x2_t;
6602 }
6603 unsafe { _vcls_s32(a) }
6604}
6605#[doc = "Count leading sign bits"]
6606#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclsq_s32)"]
6607#[inline]
6608#[target_feature(enable = "neon")]
6609#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6610#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcls.s32"))]
6611#[cfg_attr(
6612 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6613 assert_instr(cls)
6614)]
6615#[cfg_attr(
6616 not(target_arch = "arm"),
6617 stable(feature = "neon_intrinsics", since = "1.59.0")
6618)]
6619#[cfg_attr(
6620 target_arch = "arm",
6621 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6622)]
6623pub fn vclsq_s32(a: int32x4_t) -> int32x4_t {
6624 unsafe extern "unadjusted" {
6625 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vcls.v4i32")]
6626 #[cfg_attr(
6627 any(target_arch = "aarch64", target_arch = "arm64ec"),
6628 link_name = "llvm.aarch64.neon.cls.v4i32"
6629 )]
6630 fn _vclsq_s32(a: int32x4_t) -> int32x4_t;
6631 }
6632 unsafe { _vclsq_s32(a) }
6633}
6634#[doc = "Count leading sign bits"]
6635#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcls_u8)"]
6636#[inline]
6637#[target_feature(enable = "neon")]
6638#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6639#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcls))]
6640#[cfg_attr(
6641 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6642 assert_instr(cls)
6643)]
6644#[cfg_attr(
6645 not(target_arch = "arm"),
6646 stable(feature = "neon_intrinsics", since = "1.59.0")
6647)]
6648#[cfg_attr(
6649 target_arch = "arm",
6650 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6651)]
6652pub fn vcls_u8(a: uint8x8_t) -> int8x8_t {
6653 unsafe { vcls_s8(transmute(a)) }
6654}
6655#[doc = "Count leading sign bits"]
6656#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclsq_u8)"]
6657#[inline]
6658#[target_feature(enable = "neon")]
6659#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6660#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcls))]
6661#[cfg_attr(
6662 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6663 assert_instr(cls)
6664)]
6665#[cfg_attr(
6666 not(target_arch = "arm"),
6667 stable(feature = "neon_intrinsics", since = "1.59.0")
6668)]
6669#[cfg_attr(
6670 target_arch = "arm",
6671 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6672)]
6673pub fn vclsq_u8(a: uint8x16_t) -> int8x16_t {
6674 unsafe { vclsq_s8(transmute(a)) }
6675}
6676#[doc = "Count leading sign bits"]
6677#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcls_u16)"]
6678#[inline]
6679#[target_feature(enable = "neon")]
6680#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6681#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcls))]
6682#[cfg_attr(
6683 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6684 assert_instr(cls)
6685)]
6686#[cfg_attr(
6687 not(target_arch = "arm"),
6688 stable(feature = "neon_intrinsics", since = "1.59.0")
6689)]
6690#[cfg_attr(
6691 target_arch = "arm",
6692 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6693)]
6694pub fn vcls_u16(a: uint16x4_t) -> int16x4_t {
6695 unsafe { vcls_s16(transmute(a)) }
6696}
6697#[doc = "Count leading sign bits"]
6698#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclsq_u16)"]
6699#[inline]
6700#[target_feature(enable = "neon")]
6701#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6702#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcls))]
6703#[cfg_attr(
6704 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6705 assert_instr(cls)
6706)]
6707#[cfg_attr(
6708 not(target_arch = "arm"),
6709 stable(feature = "neon_intrinsics", since = "1.59.0")
6710)]
6711#[cfg_attr(
6712 target_arch = "arm",
6713 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6714)]
6715pub fn vclsq_u16(a: uint16x8_t) -> int16x8_t {
6716 unsafe { vclsq_s16(transmute(a)) }
6717}
6718#[doc = "Count leading sign bits"]
6719#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcls_u32)"]
6720#[inline]
6721#[target_feature(enable = "neon")]
6722#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6723#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcls))]
6724#[cfg_attr(
6725 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6726 assert_instr(cls)
6727)]
6728#[cfg_attr(
6729 not(target_arch = "arm"),
6730 stable(feature = "neon_intrinsics", since = "1.59.0")
6731)]
6732#[cfg_attr(
6733 target_arch = "arm",
6734 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6735)]
6736pub fn vcls_u32(a: uint32x2_t) -> int32x2_t {
6737 unsafe { vcls_s32(transmute(a)) }
6738}
6739#[doc = "Count leading sign bits"]
6740#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclsq_u32)"]
6741#[inline]
6742#[target_feature(enable = "neon")]
6743#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6744#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcls))]
6745#[cfg_attr(
6746 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6747 assert_instr(cls)
6748)]
6749#[cfg_attr(
6750 not(target_arch = "arm"),
6751 stable(feature = "neon_intrinsics", since = "1.59.0")
6752)]
6753#[cfg_attr(
6754 target_arch = "arm",
6755 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6756)]
6757pub fn vclsq_u32(a: uint32x4_t) -> int32x4_t {
6758 unsafe { vclsq_s32(transmute(a)) }
6759}
6760#[doc = "Floating-point compare less than"]
6761#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclt_f16)"]
6762#[inline]
6763#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
6764#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.f16"))]
6765#[cfg_attr(
6766 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6767 assert_instr(fcmgt)
6768)]
6769#[target_feature(enable = "neon,fp16")]
6770#[cfg_attr(
6771 not(target_arch = "arm"),
6772 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
6773)]
6774#[cfg_attr(
6775 target_arch = "arm",
6776 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6777)]
6778#[cfg(not(target_arch = "arm64ec"))]
6779pub fn vclt_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t {
6780 unsafe { simd_lt(a, b) }
6781}
6782#[doc = "Floating-point compare less than"]
6783#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltq_f16)"]
6784#[inline]
6785#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
6786#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.f16"))]
6787#[cfg_attr(
6788 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6789 assert_instr(fcmgt)
6790)]
6791#[target_feature(enable = "neon,fp16")]
6792#[cfg_attr(
6793 not(target_arch = "arm"),
6794 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
6795)]
6796#[cfg_attr(
6797 target_arch = "arm",
6798 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6799)]
6800#[cfg(not(target_arch = "arm64ec"))]
6801pub fn vcltq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t {
6802 unsafe { simd_lt(a, b) }
6803}
6804#[doc = "Floating-point compare less than"]
6805#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclt_f32)"]
6806#[inline]
6807#[target_feature(enable = "neon")]
6808#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6809#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.f32"))]
6810#[cfg_attr(
6811 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6812 assert_instr(fcmgt)
6813)]
6814#[cfg_attr(
6815 not(target_arch = "arm"),
6816 stable(feature = "neon_intrinsics", since = "1.59.0")
6817)]
6818#[cfg_attr(
6819 target_arch = "arm",
6820 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6821)]
6822pub fn vclt_f32(a: float32x2_t, b: float32x2_t) -> uint32x2_t {
6823 unsafe { simd_lt(a, b) }
6824}
6825#[doc = "Floating-point compare less than"]
6826#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltq_f32)"]
6827#[inline]
6828#[target_feature(enable = "neon")]
6829#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6830#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.f32"))]
6831#[cfg_attr(
6832 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6833 assert_instr(fcmgt)
6834)]
6835#[cfg_attr(
6836 not(target_arch = "arm"),
6837 stable(feature = "neon_intrinsics", since = "1.59.0")
6838)]
6839#[cfg_attr(
6840 target_arch = "arm",
6841 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6842)]
6843pub fn vcltq_f32(a: float32x4_t, b: float32x4_t) -> uint32x4_t {
6844 unsafe { simd_lt(a, b) }
6845}
6846#[doc = "Compare signed less than"]
6847#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclt_s8)"]
6848#[inline]
6849#[target_feature(enable = "neon")]
6850#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6851#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s8"))]
6852#[cfg_attr(
6853 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6854 assert_instr(cmgt)
6855)]
6856#[cfg_attr(
6857 not(target_arch = "arm"),
6858 stable(feature = "neon_intrinsics", since = "1.59.0")
6859)]
6860#[cfg_attr(
6861 target_arch = "arm",
6862 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6863)]
6864pub fn vclt_s8(a: int8x8_t, b: int8x8_t) -> uint8x8_t {
6865 unsafe { simd_lt(a, b) }
6866}
6867#[doc = "Compare signed less than"]
6868#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltq_s8)"]
6869#[inline]
6870#[target_feature(enable = "neon")]
6871#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6872#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s8"))]
6873#[cfg_attr(
6874 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6875 assert_instr(cmgt)
6876)]
6877#[cfg_attr(
6878 not(target_arch = "arm"),
6879 stable(feature = "neon_intrinsics", since = "1.59.0")
6880)]
6881#[cfg_attr(
6882 target_arch = "arm",
6883 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6884)]
6885pub fn vcltq_s8(a: int8x16_t, b: int8x16_t) -> uint8x16_t {
6886 unsafe { simd_lt(a, b) }
6887}
6888#[doc = "Compare signed less than"]
6889#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclt_s16)"]
6890#[inline]
6891#[target_feature(enable = "neon")]
6892#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6893#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s16"))]
6894#[cfg_attr(
6895 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6896 assert_instr(cmgt)
6897)]
6898#[cfg_attr(
6899 not(target_arch = "arm"),
6900 stable(feature = "neon_intrinsics", since = "1.59.0")
6901)]
6902#[cfg_attr(
6903 target_arch = "arm",
6904 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6905)]
6906pub fn vclt_s16(a: int16x4_t, b: int16x4_t) -> uint16x4_t {
6907 unsafe { simd_lt(a, b) }
6908}
6909#[doc = "Compare signed less than"]
6910#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltq_s16)"]
6911#[inline]
6912#[target_feature(enable = "neon")]
6913#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6914#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s16"))]
6915#[cfg_attr(
6916 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6917 assert_instr(cmgt)
6918)]
6919#[cfg_attr(
6920 not(target_arch = "arm"),
6921 stable(feature = "neon_intrinsics", since = "1.59.0")
6922)]
6923#[cfg_attr(
6924 target_arch = "arm",
6925 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6926)]
6927pub fn vcltq_s16(a: int16x8_t, b: int16x8_t) -> uint16x8_t {
6928 unsafe { simd_lt(a, b) }
6929}
6930#[doc = "Compare signed less than"]
6931#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclt_s32)"]
6932#[inline]
6933#[target_feature(enable = "neon")]
6934#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6935#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s32"))]
6936#[cfg_attr(
6937 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6938 assert_instr(cmgt)
6939)]
6940#[cfg_attr(
6941 not(target_arch = "arm"),
6942 stable(feature = "neon_intrinsics", since = "1.59.0")
6943)]
6944#[cfg_attr(
6945 target_arch = "arm",
6946 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6947)]
6948pub fn vclt_s32(a: int32x2_t, b: int32x2_t) -> uint32x2_t {
6949 unsafe { simd_lt(a, b) }
6950}
6951#[doc = "Compare signed less than"]
6952#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltq_s32)"]
6953#[inline]
6954#[target_feature(enable = "neon")]
6955#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6956#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.s32"))]
6957#[cfg_attr(
6958 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6959 assert_instr(cmgt)
6960)]
6961#[cfg_attr(
6962 not(target_arch = "arm"),
6963 stable(feature = "neon_intrinsics", since = "1.59.0")
6964)]
6965#[cfg_attr(
6966 target_arch = "arm",
6967 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6968)]
6969pub fn vcltq_s32(a: int32x4_t, b: int32x4_t) -> uint32x4_t {
6970 unsafe { simd_lt(a, b) }
6971}
6972#[doc = "Compare unsigned less than"]
6973#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclt_u8)"]
6974#[inline]
6975#[target_feature(enable = "neon")]
6976#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6977#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u8"))]
6978#[cfg_attr(
6979 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
6980 assert_instr(cmhi)
6981)]
6982#[cfg_attr(
6983 not(target_arch = "arm"),
6984 stable(feature = "neon_intrinsics", since = "1.59.0")
6985)]
6986#[cfg_attr(
6987 target_arch = "arm",
6988 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
6989)]
6990pub fn vclt_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
6991 unsafe { simd_lt(a, b) }
6992}
6993#[doc = "Compare unsigned less than"]
6994#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltq_u8)"]
6995#[inline]
6996#[target_feature(enable = "neon")]
6997#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
6998#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u8"))]
6999#[cfg_attr(
7000 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7001 assert_instr(cmhi)
7002)]
7003#[cfg_attr(
7004 not(target_arch = "arm"),
7005 stable(feature = "neon_intrinsics", since = "1.59.0")
7006)]
7007#[cfg_attr(
7008 target_arch = "arm",
7009 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7010)]
7011pub fn vcltq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
7012 unsafe { simd_lt(a, b) }
7013}
7014#[doc = "Compare unsigned less than"]
7015#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclt_u16)"]
7016#[inline]
7017#[target_feature(enable = "neon")]
7018#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7019#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u16"))]
7020#[cfg_attr(
7021 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7022 assert_instr(cmhi)
7023)]
7024#[cfg_attr(
7025 not(target_arch = "arm"),
7026 stable(feature = "neon_intrinsics", since = "1.59.0")
7027)]
7028#[cfg_attr(
7029 target_arch = "arm",
7030 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7031)]
7032pub fn vclt_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
7033 unsafe { simd_lt(a, b) }
7034}
7035#[doc = "Compare unsigned less than"]
7036#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltq_u16)"]
7037#[inline]
7038#[target_feature(enable = "neon")]
7039#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7040#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u16"))]
7041#[cfg_attr(
7042 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7043 assert_instr(cmhi)
7044)]
7045#[cfg_attr(
7046 not(target_arch = "arm"),
7047 stable(feature = "neon_intrinsics", since = "1.59.0")
7048)]
7049#[cfg_attr(
7050 target_arch = "arm",
7051 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7052)]
7053pub fn vcltq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
7054 unsafe { simd_lt(a, b) }
7055}
7056#[doc = "Compare unsigned less than"]
7057#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclt_u32)"]
7058#[inline]
7059#[target_feature(enable = "neon")]
7060#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7061#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u32"))]
7062#[cfg_attr(
7063 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7064 assert_instr(cmhi)
7065)]
7066#[cfg_attr(
7067 not(target_arch = "arm"),
7068 stable(feature = "neon_intrinsics", since = "1.59.0")
7069)]
7070#[cfg_attr(
7071 target_arch = "arm",
7072 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7073)]
7074pub fn vclt_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
7075 unsafe { simd_lt(a, b) }
7076}
7077#[doc = "Compare unsigned less than"]
7078#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltq_u32)"]
7079#[inline]
7080#[target_feature(enable = "neon")]
7081#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7082#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcgt.u32"))]
7083#[cfg_attr(
7084 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7085 assert_instr(cmhi)
7086)]
7087#[cfg_attr(
7088 not(target_arch = "arm"),
7089 stable(feature = "neon_intrinsics", since = "1.59.0")
7090)]
7091#[cfg_attr(
7092 target_arch = "arm",
7093 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7094)]
7095pub fn vcltq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
7096 unsafe { simd_lt(a, b) }
7097}
7098#[doc = "Floating-point compare less than"]
7099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltz_f16)"]
7100#[inline]
7101#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
7102#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclt.f16"))]
7103#[cfg_attr(
7104 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7105 assert_instr(fcmlt)
7106)]
7107#[target_feature(enable = "neon,fp16")]
7108#[cfg_attr(
7109 not(target_arch = "arm"),
7110 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
7111)]
7112#[cfg_attr(
7113 target_arch = "arm",
7114 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7115)]
7116#[cfg(not(target_arch = "arm64ec"))]
7117pub fn vcltz_f16(a: float16x4_t) -> uint16x4_t {
7118 let b: f16x4 = f16x4::new(0.0, 0.0, 0.0, 0.0);
7119 unsafe { simd_lt(a, transmute(b)) }
7120}
7121#[doc = "Floating-point compare less than"]
7122#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcltzq_f16)"]
7123#[inline]
7124#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
7125#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclt.f16"))]
7126#[cfg_attr(
7127 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7128 assert_instr(fcmlt)
7129)]
7130#[target_feature(enable = "neon,fp16")]
7131#[cfg_attr(
7132 not(target_arch = "arm"),
7133 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
7134)]
7135#[cfg_attr(
7136 target_arch = "arm",
7137 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7138)]
7139#[cfg(not(target_arch = "arm64ec"))]
7140pub fn vcltzq_f16(a: float16x8_t) -> uint16x8_t {
7141 let b: f16x8 = f16x8::new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
7142 unsafe { simd_lt(a, transmute(b)) }
7143}
7144#[doc = "Count leading zero bits"]
7145#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclz_s8)"]
7146#[inline]
7147#[target_feature(enable = "neon")]
7148#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7149#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i8"))]
7150#[cfg_attr(
7151 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7152 assert_instr(clz)
7153)]
7154#[cfg_attr(
7155 not(target_arch = "arm"),
7156 stable(feature = "neon_intrinsics", since = "1.59.0")
7157)]
7158#[cfg_attr(
7159 target_arch = "arm",
7160 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7161)]
7162pub fn vclz_s8(a: int8x8_t) -> int8x8_t {
7163 unsafe { simd_ctlz(a) }
7164}
7165#[doc = "Count leading zero bits"]
7166#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclzq_s8)"]
7167#[inline]
7168#[target_feature(enable = "neon")]
7169#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7170#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i8"))]
7171#[cfg_attr(
7172 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7173 assert_instr(clz)
7174)]
7175#[cfg_attr(
7176 not(target_arch = "arm"),
7177 stable(feature = "neon_intrinsics", since = "1.59.0")
7178)]
7179#[cfg_attr(
7180 target_arch = "arm",
7181 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7182)]
7183pub fn vclzq_s8(a: int8x16_t) -> int8x16_t {
7184 unsafe { simd_ctlz(a) }
7185}
7186#[doc = "Count leading zero bits"]
7187#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclz_s16)"]
7188#[inline]
7189#[target_feature(enable = "neon")]
7190#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7191#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i16"))]
7192#[cfg_attr(
7193 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7194 assert_instr(clz)
7195)]
7196#[cfg_attr(
7197 not(target_arch = "arm"),
7198 stable(feature = "neon_intrinsics", since = "1.59.0")
7199)]
7200#[cfg_attr(
7201 target_arch = "arm",
7202 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7203)]
7204pub fn vclz_s16(a: int16x4_t) -> int16x4_t {
7205 unsafe { simd_ctlz(a) }
7206}
7207#[doc = "Count leading zero bits"]
7208#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclzq_s16)"]
7209#[inline]
7210#[target_feature(enable = "neon")]
7211#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7212#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i16"))]
7213#[cfg_attr(
7214 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7215 assert_instr(clz)
7216)]
7217#[cfg_attr(
7218 not(target_arch = "arm"),
7219 stable(feature = "neon_intrinsics", since = "1.59.0")
7220)]
7221#[cfg_attr(
7222 target_arch = "arm",
7223 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7224)]
7225pub fn vclzq_s16(a: int16x8_t) -> int16x8_t {
7226 unsafe { simd_ctlz(a) }
7227}
7228#[doc = "Count leading zero bits"]
7229#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclz_s32)"]
7230#[inline]
7231#[target_feature(enable = "neon")]
7232#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7233#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i32"))]
7234#[cfg_attr(
7235 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7236 assert_instr(clz)
7237)]
7238#[cfg_attr(
7239 not(target_arch = "arm"),
7240 stable(feature = "neon_intrinsics", since = "1.59.0")
7241)]
7242#[cfg_attr(
7243 target_arch = "arm",
7244 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7245)]
7246pub fn vclz_s32(a: int32x2_t) -> int32x2_t {
7247 unsafe { simd_ctlz(a) }
7248}
7249#[doc = "Count leading zero bits"]
7250#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclzq_s32)"]
7251#[inline]
7252#[target_feature(enable = "neon")]
7253#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7254#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i32"))]
7255#[cfg_attr(
7256 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7257 assert_instr(clz)
7258)]
7259#[cfg_attr(
7260 not(target_arch = "arm"),
7261 stable(feature = "neon_intrinsics", since = "1.59.0")
7262)]
7263#[cfg_attr(
7264 target_arch = "arm",
7265 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7266)]
7267pub fn vclzq_s32(a: int32x4_t) -> int32x4_t {
7268 unsafe { simd_ctlz(a) }
7269}
7270#[doc = "Count leading zero bits"]
7271#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclz_u16)"]
7272#[inline]
7273#[cfg(target_endian = "little")]
7274#[target_feature(enable = "neon")]
7275#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7276#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i16"))]
7277#[cfg_attr(
7278 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7279 assert_instr(clz)
7280)]
7281#[cfg_attr(
7282 not(target_arch = "arm"),
7283 stable(feature = "neon_intrinsics", since = "1.59.0")
7284)]
7285#[cfg_attr(
7286 target_arch = "arm",
7287 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7288)]
7289pub fn vclz_u16(a: uint16x4_t) -> uint16x4_t {
7290 unsafe { transmute(vclz_s16(transmute(a))) }
7291}
7292#[doc = "Count leading zero bits"]
7293#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclz_u16)"]
7294#[inline]
7295#[cfg(target_endian = "big")]
7296#[target_feature(enable = "neon")]
7297#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7298#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i16"))]
7299#[cfg_attr(
7300 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7301 assert_instr(clz)
7302)]
7303#[cfg_attr(
7304 not(target_arch = "arm"),
7305 stable(feature = "neon_intrinsics", since = "1.59.0")
7306)]
7307#[cfg_attr(
7308 target_arch = "arm",
7309 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7310)]
7311pub fn vclz_u16(a: uint16x4_t) -> uint16x4_t {
7312 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
7313 unsafe {
7314 let ret_val: uint16x4_t = transmute(vclz_s16(transmute(a)));
7315 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
7316 }
7317}
7318#[doc = "Count leading zero bits"]
7319#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclzq_u16)"]
7320#[inline]
7321#[cfg(target_endian = "little")]
7322#[target_feature(enable = "neon")]
7323#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7324#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i16"))]
7325#[cfg_attr(
7326 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7327 assert_instr(clz)
7328)]
7329#[cfg_attr(
7330 not(target_arch = "arm"),
7331 stable(feature = "neon_intrinsics", since = "1.59.0")
7332)]
7333#[cfg_attr(
7334 target_arch = "arm",
7335 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7336)]
7337pub fn vclzq_u16(a: uint16x8_t) -> uint16x8_t {
7338 unsafe { transmute(vclzq_s16(transmute(a))) }
7339}
7340#[doc = "Count leading zero bits"]
7341#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclzq_u16)"]
7342#[inline]
7343#[cfg(target_endian = "big")]
7344#[target_feature(enable = "neon")]
7345#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7346#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i16"))]
7347#[cfg_attr(
7348 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7349 assert_instr(clz)
7350)]
7351#[cfg_attr(
7352 not(target_arch = "arm"),
7353 stable(feature = "neon_intrinsics", since = "1.59.0")
7354)]
7355#[cfg_attr(
7356 target_arch = "arm",
7357 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7358)]
7359pub fn vclzq_u16(a: uint16x8_t) -> uint16x8_t {
7360 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
7361 unsafe {
7362 let ret_val: uint16x8_t = transmute(vclzq_s16(transmute(a)));
7363 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
7364 }
7365}
7366#[doc = "Count leading zero bits"]
7367#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclz_u32)"]
7368#[inline]
7369#[cfg(target_endian = "little")]
7370#[target_feature(enable = "neon")]
7371#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7372#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i32"))]
7373#[cfg_attr(
7374 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7375 assert_instr(clz)
7376)]
7377#[cfg_attr(
7378 not(target_arch = "arm"),
7379 stable(feature = "neon_intrinsics", since = "1.59.0")
7380)]
7381#[cfg_attr(
7382 target_arch = "arm",
7383 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7384)]
7385pub fn vclz_u32(a: uint32x2_t) -> uint32x2_t {
7386 unsafe { transmute(vclz_s32(transmute(a))) }
7387}
7388#[doc = "Count leading zero bits"]
7389#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclz_u32)"]
7390#[inline]
7391#[cfg(target_endian = "big")]
7392#[target_feature(enable = "neon")]
7393#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7394#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i32"))]
7395#[cfg_attr(
7396 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7397 assert_instr(clz)
7398)]
7399#[cfg_attr(
7400 not(target_arch = "arm"),
7401 stable(feature = "neon_intrinsics", since = "1.59.0")
7402)]
7403#[cfg_attr(
7404 target_arch = "arm",
7405 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7406)]
7407pub fn vclz_u32(a: uint32x2_t) -> uint32x2_t {
7408 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
7409 unsafe {
7410 let ret_val: uint32x2_t = transmute(vclz_s32(transmute(a)));
7411 simd_shuffle!(ret_val, ret_val, [1, 0])
7412 }
7413}
7414#[doc = "Count leading zero bits"]
7415#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclzq_u32)"]
7416#[inline]
7417#[cfg(target_endian = "little")]
7418#[target_feature(enable = "neon")]
7419#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7420#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i32"))]
7421#[cfg_attr(
7422 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7423 assert_instr(clz)
7424)]
7425#[cfg_attr(
7426 not(target_arch = "arm"),
7427 stable(feature = "neon_intrinsics", since = "1.59.0")
7428)]
7429#[cfg_attr(
7430 target_arch = "arm",
7431 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7432)]
7433pub fn vclzq_u32(a: uint32x4_t) -> uint32x4_t {
7434 unsafe { transmute(vclzq_s32(transmute(a))) }
7435}
7436#[doc = "Count leading zero bits"]
7437#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclzq_u32)"]
7438#[inline]
7439#[cfg(target_endian = "big")]
7440#[target_feature(enable = "neon")]
7441#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7442#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i32"))]
7443#[cfg_attr(
7444 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7445 assert_instr(clz)
7446)]
7447#[cfg_attr(
7448 not(target_arch = "arm"),
7449 stable(feature = "neon_intrinsics", since = "1.59.0")
7450)]
7451#[cfg_attr(
7452 target_arch = "arm",
7453 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7454)]
7455pub fn vclzq_u32(a: uint32x4_t) -> uint32x4_t {
7456 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
7457 unsafe {
7458 let ret_val: uint32x4_t = transmute(vclzq_s32(transmute(a)));
7459 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
7460 }
7461}
7462#[doc = "Count leading zero bits"]
7463#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclz_u8)"]
7464#[inline]
7465#[cfg(target_endian = "little")]
7466#[target_feature(enable = "neon")]
7467#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7468#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i8"))]
7469#[cfg_attr(
7470 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7471 assert_instr(clz)
7472)]
7473#[cfg_attr(
7474 not(target_arch = "arm"),
7475 stable(feature = "neon_intrinsics", since = "1.59.0")
7476)]
7477#[cfg_attr(
7478 target_arch = "arm",
7479 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7480)]
7481pub fn vclz_u8(a: uint8x8_t) -> uint8x8_t {
7482 unsafe { transmute(vclz_s8(transmute(a))) }
7483}
7484#[doc = "Count leading zero bits"]
7485#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclz_u8)"]
7486#[inline]
7487#[cfg(target_endian = "big")]
7488#[target_feature(enable = "neon")]
7489#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7490#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i8"))]
7491#[cfg_attr(
7492 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7493 assert_instr(clz)
7494)]
7495#[cfg_attr(
7496 not(target_arch = "arm"),
7497 stable(feature = "neon_intrinsics", since = "1.59.0")
7498)]
7499#[cfg_attr(
7500 target_arch = "arm",
7501 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7502)]
7503pub fn vclz_u8(a: uint8x8_t) -> uint8x8_t {
7504 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
7505 unsafe {
7506 let ret_val: uint8x8_t = transmute(vclz_s8(transmute(a)));
7507 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
7508 }
7509}
7510#[doc = "Count leading zero bits"]
7511#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclzq_u8)"]
7512#[inline]
7513#[cfg(target_endian = "little")]
7514#[target_feature(enable = "neon")]
7515#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7516#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i8"))]
7517#[cfg_attr(
7518 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7519 assert_instr(clz)
7520)]
7521#[cfg_attr(
7522 not(target_arch = "arm"),
7523 stable(feature = "neon_intrinsics", since = "1.59.0")
7524)]
7525#[cfg_attr(
7526 target_arch = "arm",
7527 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7528)]
7529pub fn vclzq_u8(a: uint8x16_t) -> uint8x16_t {
7530 unsafe { transmute(vclzq_s8(transmute(a))) }
7531}
7532#[doc = "Count leading zero bits"]
7533#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vclzq_u8)"]
7534#[inline]
7535#[cfg(target_endian = "big")]
7536#[target_feature(enable = "neon")]
7537#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7538#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vclz.i8"))]
7539#[cfg_attr(
7540 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7541 assert_instr(clz)
7542)]
7543#[cfg_attr(
7544 not(target_arch = "arm"),
7545 stable(feature = "neon_intrinsics", since = "1.59.0")
7546)]
7547#[cfg_attr(
7548 target_arch = "arm",
7549 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7550)]
7551pub fn vclzq_u8(a: uint8x16_t) -> uint8x16_t {
7552 let a: uint8x16_t =
7553 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
7554 unsafe {
7555 let ret_val: uint8x16_t = transmute(vclzq_s8(transmute(a)));
7556 simd_shuffle!(
7557 ret_val,
7558 ret_val,
7559 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
7560 )
7561 }
7562}
7563#[doc = "Population count per byte."]
7564#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcnt_s8)"]
7565#[inline]
7566#[target_feature(enable = "neon")]
7567#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7568#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7569#[cfg_attr(
7570 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7571 assert_instr(cnt)
7572)]
7573#[cfg_attr(
7574 not(target_arch = "arm"),
7575 stable(feature = "neon_intrinsics", since = "1.59.0")
7576)]
7577#[cfg_attr(
7578 target_arch = "arm",
7579 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7580)]
7581pub fn vcnt_s8(a: int8x8_t) -> int8x8_t {
7582 unsafe { simd_ctpop(a) }
7583}
7584#[doc = "Population count per byte."]
7585#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcntq_s8)"]
7586#[inline]
7587#[target_feature(enable = "neon")]
7588#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7589#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7590#[cfg_attr(
7591 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7592 assert_instr(cnt)
7593)]
7594#[cfg_attr(
7595 not(target_arch = "arm"),
7596 stable(feature = "neon_intrinsics", since = "1.59.0")
7597)]
7598#[cfg_attr(
7599 target_arch = "arm",
7600 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7601)]
7602pub fn vcntq_s8(a: int8x16_t) -> int8x16_t {
7603 unsafe { simd_ctpop(a) }
7604}
7605#[doc = "Population count per byte."]
7606#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcnt_u8)"]
7607#[inline]
7608#[cfg(target_endian = "little")]
7609#[target_feature(enable = "neon")]
7610#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7611#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7612#[cfg_attr(
7613 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7614 assert_instr(cnt)
7615)]
7616#[cfg_attr(
7617 not(target_arch = "arm"),
7618 stable(feature = "neon_intrinsics", since = "1.59.0")
7619)]
7620#[cfg_attr(
7621 target_arch = "arm",
7622 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7623)]
7624pub fn vcnt_u8(a: uint8x8_t) -> uint8x8_t {
7625 unsafe { transmute(vcnt_s8(transmute(a))) }
7626}
7627#[doc = "Population count per byte."]
7628#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcnt_u8)"]
7629#[inline]
7630#[cfg(target_endian = "big")]
7631#[target_feature(enable = "neon")]
7632#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7633#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7634#[cfg_attr(
7635 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7636 assert_instr(cnt)
7637)]
7638#[cfg_attr(
7639 not(target_arch = "arm"),
7640 stable(feature = "neon_intrinsics", since = "1.59.0")
7641)]
7642#[cfg_attr(
7643 target_arch = "arm",
7644 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7645)]
7646pub fn vcnt_u8(a: uint8x8_t) -> uint8x8_t {
7647 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
7648 unsafe {
7649 let ret_val: uint8x8_t = transmute(vcnt_s8(transmute(a)));
7650 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
7651 }
7652}
7653#[doc = "Population count per byte."]
7654#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcntq_u8)"]
7655#[inline]
7656#[cfg(target_endian = "little")]
7657#[target_feature(enable = "neon")]
7658#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7659#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7660#[cfg_attr(
7661 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7662 assert_instr(cnt)
7663)]
7664#[cfg_attr(
7665 not(target_arch = "arm"),
7666 stable(feature = "neon_intrinsics", since = "1.59.0")
7667)]
7668#[cfg_attr(
7669 target_arch = "arm",
7670 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7671)]
7672pub fn vcntq_u8(a: uint8x16_t) -> uint8x16_t {
7673 unsafe { transmute(vcntq_s8(transmute(a))) }
7674}
7675#[doc = "Population count per byte."]
7676#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcntq_u8)"]
7677#[inline]
7678#[cfg(target_endian = "big")]
7679#[target_feature(enable = "neon")]
7680#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7681#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7682#[cfg_attr(
7683 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7684 assert_instr(cnt)
7685)]
7686#[cfg_attr(
7687 not(target_arch = "arm"),
7688 stable(feature = "neon_intrinsics", since = "1.59.0")
7689)]
7690#[cfg_attr(
7691 target_arch = "arm",
7692 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7693)]
7694pub fn vcntq_u8(a: uint8x16_t) -> uint8x16_t {
7695 let a: uint8x16_t =
7696 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
7697 unsafe {
7698 let ret_val: uint8x16_t = transmute(vcntq_s8(transmute(a)));
7699 simd_shuffle!(
7700 ret_val,
7701 ret_val,
7702 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
7703 )
7704 }
7705}
7706#[doc = "Population count per byte."]
7707#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcnt_p8)"]
7708#[inline]
7709#[cfg(target_endian = "little")]
7710#[target_feature(enable = "neon")]
7711#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7712#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7713#[cfg_attr(
7714 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7715 assert_instr(cnt)
7716)]
7717#[cfg_attr(
7718 not(target_arch = "arm"),
7719 stable(feature = "neon_intrinsics", since = "1.59.0")
7720)]
7721#[cfg_attr(
7722 target_arch = "arm",
7723 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7724)]
7725pub fn vcnt_p8(a: poly8x8_t) -> poly8x8_t {
7726 unsafe { transmute(vcnt_s8(transmute(a))) }
7727}
7728#[doc = "Population count per byte."]
7729#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcnt_p8)"]
7730#[inline]
7731#[cfg(target_endian = "big")]
7732#[target_feature(enable = "neon")]
7733#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7734#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7735#[cfg_attr(
7736 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7737 assert_instr(cnt)
7738)]
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 vcnt_p8(a: poly8x8_t) -> poly8x8_t {
7748 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
7749 unsafe {
7750 let ret_val: poly8x8_t = transmute(vcnt_s8(transmute(a)));
7751 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
7752 }
7753}
7754#[doc = "Population count per byte."]
7755#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcntq_p8)"]
7756#[inline]
7757#[cfg(target_endian = "little")]
7758#[target_feature(enable = "neon")]
7759#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7760#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7761#[cfg_attr(
7762 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7763 assert_instr(cnt)
7764)]
7765#[cfg_attr(
7766 not(target_arch = "arm"),
7767 stable(feature = "neon_intrinsics", since = "1.59.0")
7768)]
7769#[cfg_attr(
7770 target_arch = "arm",
7771 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7772)]
7773pub fn vcntq_p8(a: poly8x16_t) -> poly8x16_t {
7774 unsafe { transmute(vcntq_s8(transmute(a))) }
7775}
7776#[doc = "Population count per byte."]
7777#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcntq_p8)"]
7778#[inline]
7779#[cfg(target_endian = "big")]
7780#[target_feature(enable = "neon")]
7781#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7782#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcnt))]
7783#[cfg_attr(
7784 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
7785 assert_instr(cnt)
7786)]
7787#[cfg_attr(
7788 not(target_arch = "arm"),
7789 stable(feature = "neon_intrinsics", since = "1.59.0")
7790)]
7791#[cfg_attr(
7792 target_arch = "arm",
7793 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7794)]
7795pub fn vcntq_p8(a: poly8x16_t) -> poly8x16_t {
7796 let a: poly8x16_t =
7797 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
7798 unsafe {
7799 let ret_val: poly8x16_t = transmute(vcntq_s8(transmute(a)));
7800 simd_shuffle!(
7801 ret_val,
7802 ret_val,
7803 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
7804 )
7805 }
7806}
7807#[doc = "Join two smaller vectors into a single larger vector"]
7808#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_f16)"]
7809#[inline]
7810#[target_feature(enable = "neon")]
7811#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7812#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
7813#[cfg_attr(
7814 not(target_arch = "arm"),
7815 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
7816)]
7817#[cfg_attr(
7818 target_arch = "arm",
7819 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7820)]
7821#[cfg(not(target_arch = "arm64ec"))]
7822#[cfg_attr(test, assert_instr(nop))]
7823pub fn vcombine_f16(a: float16x4_t, b: float16x4_t) -> float16x8_t {
7824 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]) }
7825}
7826#[doc = "Join two smaller vectors into a single larger vector"]
7827#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_f32)"]
7828#[inline]
7829#[target_feature(enable = "neon")]
7830#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7831#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7832#[cfg_attr(
7833 not(target_arch = "arm"),
7834 stable(feature = "neon_intrinsics", since = "1.59.0")
7835)]
7836#[cfg_attr(
7837 target_arch = "arm",
7838 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7839)]
7840pub fn vcombine_f32(a: float32x2_t, b: float32x2_t) -> float32x4_t {
7841 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3]) }
7842}
7843#[doc = "Join two smaller vectors into a single larger vector"]
7844#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_s8)"]
7845#[inline]
7846#[target_feature(enable = "neon")]
7847#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7848#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7849#[cfg_attr(
7850 not(target_arch = "arm"),
7851 stable(feature = "neon_intrinsics", since = "1.59.0")
7852)]
7853#[cfg_attr(
7854 target_arch = "arm",
7855 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7856)]
7857pub fn vcombine_s8(a: int8x8_t, b: int8x8_t) -> int8x16_t {
7858 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) }
7859}
7860#[doc = "Join two smaller vectors into a single larger vector"]
7861#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_s16)"]
7862#[inline]
7863#[target_feature(enable = "neon")]
7864#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7865#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7866#[cfg_attr(
7867 not(target_arch = "arm"),
7868 stable(feature = "neon_intrinsics", since = "1.59.0")
7869)]
7870#[cfg_attr(
7871 target_arch = "arm",
7872 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7873)]
7874pub fn vcombine_s16(a: int16x4_t, b: int16x4_t) -> int16x8_t {
7875 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]) }
7876}
7877#[doc = "Join two smaller vectors into a single larger vector"]
7878#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_s32)"]
7879#[inline]
7880#[target_feature(enable = "neon")]
7881#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7882#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7883#[cfg_attr(
7884 not(target_arch = "arm"),
7885 stable(feature = "neon_intrinsics", since = "1.59.0")
7886)]
7887#[cfg_attr(
7888 target_arch = "arm",
7889 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7890)]
7891pub fn vcombine_s32(a: int32x2_t, b: int32x2_t) -> int32x4_t {
7892 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3]) }
7893}
7894#[doc = "Join two smaller vectors into a single larger vector"]
7895#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_s64)"]
7896#[inline]
7897#[target_feature(enable = "neon")]
7898#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7899#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7900#[cfg_attr(
7901 not(target_arch = "arm"),
7902 stable(feature = "neon_intrinsics", since = "1.59.0")
7903)]
7904#[cfg_attr(
7905 target_arch = "arm",
7906 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7907)]
7908pub fn vcombine_s64(a: int64x1_t, b: int64x1_t) -> int64x2_t {
7909 unsafe { simd_shuffle!(a, b, [0, 1]) }
7910}
7911#[doc = "Join two smaller vectors into a single larger vector"]
7912#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_u8)"]
7913#[inline]
7914#[target_feature(enable = "neon")]
7915#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7916#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7917#[cfg_attr(
7918 not(target_arch = "arm"),
7919 stable(feature = "neon_intrinsics", since = "1.59.0")
7920)]
7921#[cfg_attr(
7922 target_arch = "arm",
7923 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7924)]
7925pub fn vcombine_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x16_t {
7926 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) }
7927}
7928#[doc = "Join two smaller vectors into a single larger vector"]
7929#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_u16)"]
7930#[inline]
7931#[target_feature(enable = "neon")]
7932#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7933#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7934#[cfg_attr(
7935 not(target_arch = "arm"),
7936 stable(feature = "neon_intrinsics", since = "1.59.0")
7937)]
7938#[cfg_attr(
7939 target_arch = "arm",
7940 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7941)]
7942pub fn vcombine_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x8_t {
7943 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]) }
7944}
7945#[doc = "Join two smaller vectors into a single larger vector"]
7946#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_u32)"]
7947#[inline]
7948#[target_feature(enable = "neon")]
7949#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7950#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7951#[cfg_attr(
7952 not(target_arch = "arm"),
7953 stable(feature = "neon_intrinsics", since = "1.59.0")
7954)]
7955#[cfg_attr(
7956 target_arch = "arm",
7957 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7958)]
7959pub fn vcombine_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x4_t {
7960 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3]) }
7961}
7962#[doc = "Join two smaller vectors into a single larger vector"]
7963#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_u64)"]
7964#[inline]
7965#[target_feature(enable = "neon")]
7966#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7967#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7968#[cfg_attr(
7969 not(target_arch = "arm"),
7970 stable(feature = "neon_intrinsics", since = "1.59.0")
7971)]
7972#[cfg_attr(
7973 target_arch = "arm",
7974 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7975)]
7976pub fn vcombine_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x2_t {
7977 unsafe { simd_shuffle!(a, b, [0, 1]) }
7978}
7979#[doc = "Join two smaller vectors into a single larger vector"]
7980#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_p8)"]
7981#[inline]
7982#[target_feature(enable = "neon")]
7983#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
7984#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
7985#[cfg_attr(
7986 not(target_arch = "arm"),
7987 stable(feature = "neon_intrinsics", since = "1.59.0")
7988)]
7989#[cfg_attr(
7990 target_arch = "arm",
7991 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
7992)]
7993pub fn vcombine_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x16_t {
7994 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) }
7995}
7996#[doc = "Join two smaller vectors into a single larger vector"]
7997#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_p16)"]
7998#[inline]
7999#[target_feature(enable = "neon")]
8000#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8001#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8002#[cfg_attr(
8003 not(target_arch = "arm"),
8004 stable(feature = "neon_intrinsics", since = "1.59.0")
8005)]
8006#[cfg_attr(
8007 target_arch = "arm",
8008 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8009)]
8010pub fn vcombine_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x8_t {
8011 unsafe { simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]) }
8012}
8013#[doc = "Join two smaller vectors into a single larger vector"]
8014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcombine_p64)"]
8015#[inline]
8016#[target_feature(enable = "neon")]
8017#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8018#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8019#[cfg_attr(
8020 not(target_arch = "arm"),
8021 stable(feature = "neon_intrinsics", since = "1.59.0")
8022)]
8023#[cfg_attr(
8024 target_arch = "arm",
8025 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8026)]
8027pub fn vcombine_p64(a: poly64x1_t, b: poly64x1_t) -> poly64x2_t {
8028 unsafe { simd_shuffle!(a, b, [0, 1]) }
8029}
8030#[doc = "Insert vector element from another vector element"]
8031#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_f16)"]
8032#[inline]
8033#[cfg(target_endian = "little")]
8034#[target_feature(enable = "neon")]
8035#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8036#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8037#[cfg_attr(
8038 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8039 assert_instr(nop)
8040)]
8041#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
8042#[cfg_attr(
8043 not(target_arch = "arm"),
8044 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
8045)]
8046#[cfg_attr(
8047 target_arch = "arm",
8048 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8049)]
8050#[cfg(not(target_arch = "arm64ec"))]
8051pub fn vcreate_f16(a: u64) -> float16x4_t {
8052 unsafe { transmute(a) }
8053}
8054#[doc = "Insert vector element from another vector element"]
8055#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_f16)"]
8056#[inline]
8057#[cfg(target_endian = "big")]
8058#[target_feature(enable = "neon")]
8059#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8060#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8061#[cfg_attr(
8062 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8063 assert_instr(nop)
8064)]
8065#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
8066#[cfg_attr(
8067 not(target_arch = "arm"),
8068 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
8069)]
8070#[cfg_attr(
8071 target_arch = "arm",
8072 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8073)]
8074#[cfg(not(target_arch = "arm64ec"))]
8075pub fn vcreate_f16(a: u64) -> float16x4_t {
8076 unsafe {
8077 let ret_val: float16x4_t = transmute(a);
8078 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
8079 }
8080}
8081#[doc = "Insert vector element from another vector element"]
8082#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_f32)"]
8083#[inline]
8084#[cfg(target_endian = "little")]
8085#[target_feature(enable = "neon")]
8086#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8087#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8088#[cfg_attr(
8089 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8090 assert_instr(nop)
8091)]
8092#[cfg_attr(
8093 not(target_arch = "arm"),
8094 stable(feature = "neon_intrinsics", since = "1.59.0")
8095)]
8096#[cfg_attr(
8097 target_arch = "arm",
8098 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8099)]
8100pub fn vcreate_f32(a: u64) -> float32x2_t {
8101 unsafe { transmute(a) }
8102}
8103#[doc = "Insert vector element from another vector element"]
8104#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_f32)"]
8105#[inline]
8106#[cfg(target_endian = "big")]
8107#[target_feature(enable = "neon")]
8108#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8109#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8110#[cfg_attr(
8111 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8112 assert_instr(nop)
8113)]
8114#[cfg_attr(
8115 not(target_arch = "arm"),
8116 stable(feature = "neon_intrinsics", since = "1.59.0")
8117)]
8118#[cfg_attr(
8119 target_arch = "arm",
8120 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8121)]
8122pub fn vcreate_f32(a: u64) -> float32x2_t {
8123 unsafe {
8124 let ret_val: float32x2_t = transmute(a);
8125 simd_shuffle!(ret_val, ret_val, [1, 0])
8126 }
8127}
8128#[doc = "Insert vector element from another vector element"]
8129#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_s8)"]
8130#[inline]
8131#[cfg(target_endian = "little")]
8132#[target_feature(enable = "neon")]
8133#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8134#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8135#[cfg_attr(
8136 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8137 assert_instr(nop)
8138)]
8139#[cfg_attr(
8140 not(target_arch = "arm"),
8141 stable(feature = "neon_intrinsics", since = "1.59.0")
8142)]
8143#[cfg_attr(
8144 target_arch = "arm",
8145 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8146)]
8147pub fn vcreate_s8(a: u64) -> int8x8_t {
8148 unsafe { transmute(a) }
8149}
8150#[doc = "Insert vector element from another vector element"]
8151#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_s8)"]
8152#[inline]
8153#[cfg(target_endian = "big")]
8154#[target_feature(enable = "neon")]
8155#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8156#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8157#[cfg_attr(
8158 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8159 assert_instr(nop)
8160)]
8161#[cfg_attr(
8162 not(target_arch = "arm"),
8163 stable(feature = "neon_intrinsics", since = "1.59.0")
8164)]
8165#[cfg_attr(
8166 target_arch = "arm",
8167 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8168)]
8169pub fn vcreate_s8(a: u64) -> int8x8_t {
8170 unsafe {
8171 let ret_val: int8x8_t = transmute(a);
8172 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
8173 }
8174}
8175#[doc = "Insert vector element from another vector element"]
8176#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_s16)"]
8177#[inline]
8178#[cfg(target_endian = "little")]
8179#[target_feature(enable = "neon")]
8180#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8181#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8182#[cfg_attr(
8183 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8184 assert_instr(nop)
8185)]
8186#[cfg_attr(
8187 not(target_arch = "arm"),
8188 stable(feature = "neon_intrinsics", since = "1.59.0")
8189)]
8190#[cfg_attr(
8191 target_arch = "arm",
8192 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8193)]
8194pub fn vcreate_s16(a: u64) -> int16x4_t {
8195 unsafe { transmute(a) }
8196}
8197#[doc = "Insert vector element from another vector element"]
8198#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_s16)"]
8199#[inline]
8200#[cfg(target_endian = "big")]
8201#[target_feature(enable = "neon")]
8202#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8203#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8204#[cfg_attr(
8205 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8206 assert_instr(nop)
8207)]
8208#[cfg_attr(
8209 not(target_arch = "arm"),
8210 stable(feature = "neon_intrinsics", since = "1.59.0")
8211)]
8212#[cfg_attr(
8213 target_arch = "arm",
8214 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8215)]
8216pub fn vcreate_s16(a: u64) -> int16x4_t {
8217 unsafe {
8218 let ret_val: int16x4_t = transmute(a);
8219 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
8220 }
8221}
8222#[doc = "Insert vector element from another vector element"]
8223#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_s32)"]
8224#[inline]
8225#[cfg(target_endian = "little")]
8226#[target_feature(enable = "neon")]
8227#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8228#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8229#[cfg_attr(
8230 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8231 assert_instr(nop)
8232)]
8233#[cfg_attr(
8234 not(target_arch = "arm"),
8235 stable(feature = "neon_intrinsics", since = "1.59.0")
8236)]
8237#[cfg_attr(
8238 target_arch = "arm",
8239 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8240)]
8241pub fn vcreate_s32(a: u64) -> int32x2_t {
8242 unsafe { transmute(a) }
8243}
8244#[doc = "Insert vector element from another vector element"]
8245#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_s32)"]
8246#[inline]
8247#[cfg(target_endian = "big")]
8248#[target_feature(enable = "neon")]
8249#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8250#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8251#[cfg_attr(
8252 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8253 assert_instr(nop)
8254)]
8255#[cfg_attr(
8256 not(target_arch = "arm"),
8257 stable(feature = "neon_intrinsics", since = "1.59.0")
8258)]
8259#[cfg_attr(
8260 target_arch = "arm",
8261 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8262)]
8263pub fn vcreate_s32(a: u64) -> int32x2_t {
8264 unsafe {
8265 let ret_val: int32x2_t = transmute(a);
8266 simd_shuffle!(ret_val, ret_val, [1, 0])
8267 }
8268}
8269#[doc = "Insert vector element from another vector element"]
8270#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_s64)"]
8271#[inline]
8272#[target_feature(enable = "neon")]
8273#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8274#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8275#[cfg_attr(
8276 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8277 assert_instr(nop)
8278)]
8279#[cfg_attr(
8280 not(target_arch = "arm"),
8281 stable(feature = "neon_intrinsics", since = "1.59.0")
8282)]
8283#[cfg_attr(
8284 target_arch = "arm",
8285 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8286)]
8287pub fn vcreate_s64(a: u64) -> int64x1_t {
8288 unsafe { transmute(a) }
8289}
8290#[doc = "Insert vector element from another vector element"]
8291#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_u8)"]
8292#[inline]
8293#[cfg(target_endian = "little")]
8294#[target_feature(enable = "neon")]
8295#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8296#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8297#[cfg_attr(
8298 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8299 assert_instr(nop)
8300)]
8301#[cfg_attr(
8302 not(target_arch = "arm"),
8303 stable(feature = "neon_intrinsics", since = "1.59.0")
8304)]
8305#[cfg_attr(
8306 target_arch = "arm",
8307 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8308)]
8309pub fn vcreate_u8(a: u64) -> uint8x8_t {
8310 unsafe { transmute(a) }
8311}
8312#[doc = "Insert vector element from another vector element"]
8313#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_u8)"]
8314#[inline]
8315#[cfg(target_endian = "big")]
8316#[target_feature(enable = "neon")]
8317#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8318#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8319#[cfg_attr(
8320 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8321 assert_instr(nop)
8322)]
8323#[cfg_attr(
8324 not(target_arch = "arm"),
8325 stable(feature = "neon_intrinsics", since = "1.59.0")
8326)]
8327#[cfg_attr(
8328 target_arch = "arm",
8329 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8330)]
8331pub fn vcreate_u8(a: u64) -> uint8x8_t {
8332 unsafe {
8333 let ret_val: uint8x8_t = transmute(a);
8334 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
8335 }
8336}
8337#[doc = "Insert vector element from another vector element"]
8338#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_u16)"]
8339#[inline]
8340#[cfg(target_endian = "little")]
8341#[target_feature(enable = "neon")]
8342#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8343#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8344#[cfg_attr(
8345 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8346 assert_instr(nop)
8347)]
8348#[cfg_attr(
8349 not(target_arch = "arm"),
8350 stable(feature = "neon_intrinsics", since = "1.59.0")
8351)]
8352#[cfg_attr(
8353 target_arch = "arm",
8354 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8355)]
8356pub fn vcreate_u16(a: u64) -> uint16x4_t {
8357 unsafe { transmute(a) }
8358}
8359#[doc = "Insert vector element from another vector element"]
8360#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_u16)"]
8361#[inline]
8362#[cfg(target_endian = "big")]
8363#[target_feature(enable = "neon")]
8364#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8365#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8366#[cfg_attr(
8367 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8368 assert_instr(nop)
8369)]
8370#[cfg_attr(
8371 not(target_arch = "arm"),
8372 stable(feature = "neon_intrinsics", since = "1.59.0")
8373)]
8374#[cfg_attr(
8375 target_arch = "arm",
8376 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8377)]
8378pub fn vcreate_u16(a: u64) -> uint16x4_t {
8379 unsafe {
8380 let ret_val: uint16x4_t = transmute(a);
8381 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
8382 }
8383}
8384#[doc = "Insert vector element from another vector element"]
8385#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_u32)"]
8386#[inline]
8387#[cfg(target_endian = "little")]
8388#[target_feature(enable = "neon")]
8389#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8390#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8391#[cfg_attr(
8392 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8393 assert_instr(nop)
8394)]
8395#[cfg_attr(
8396 not(target_arch = "arm"),
8397 stable(feature = "neon_intrinsics", since = "1.59.0")
8398)]
8399#[cfg_attr(
8400 target_arch = "arm",
8401 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8402)]
8403pub fn vcreate_u32(a: u64) -> uint32x2_t {
8404 unsafe { transmute(a) }
8405}
8406#[doc = "Insert vector element from another vector element"]
8407#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_u32)"]
8408#[inline]
8409#[cfg(target_endian = "big")]
8410#[target_feature(enable = "neon")]
8411#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8412#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8413#[cfg_attr(
8414 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8415 assert_instr(nop)
8416)]
8417#[cfg_attr(
8418 not(target_arch = "arm"),
8419 stable(feature = "neon_intrinsics", since = "1.59.0")
8420)]
8421#[cfg_attr(
8422 target_arch = "arm",
8423 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8424)]
8425pub fn vcreate_u32(a: u64) -> uint32x2_t {
8426 unsafe {
8427 let ret_val: uint32x2_t = transmute(a);
8428 simd_shuffle!(ret_val, ret_val, [1, 0])
8429 }
8430}
8431#[doc = "Insert vector element from another vector element"]
8432#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_u64)"]
8433#[inline]
8434#[target_feature(enable = "neon")]
8435#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8436#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8437#[cfg_attr(
8438 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8439 assert_instr(nop)
8440)]
8441#[cfg_attr(
8442 not(target_arch = "arm"),
8443 stable(feature = "neon_intrinsics", since = "1.59.0")
8444)]
8445#[cfg_attr(
8446 target_arch = "arm",
8447 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8448)]
8449pub fn vcreate_u64(a: u64) -> uint64x1_t {
8450 unsafe { transmute(a) }
8451}
8452#[doc = "Insert vector element from another vector element"]
8453#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_p8)"]
8454#[inline]
8455#[cfg(target_endian = "little")]
8456#[target_feature(enable = "neon")]
8457#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8458#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8459#[cfg_attr(
8460 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8461 assert_instr(nop)
8462)]
8463#[cfg_attr(
8464 not(target_arch = "arm"),
8465 stable(feature = "neon_intrinsics", since = "1.59.0")
8466)]
8467#[cfg_attr(
8468 target_arch = "arm",
8469 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8470)]
8471pub fn vcreate_p8(a: u64) -> poly8x8_t {
8472 unsafe { transmute(a) }
8473}
8474#[doc = "Insert vector element from another vector element"]
8475#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_p8)"]
8476#[inline]
8477#[cfg(target_endian = "big")]
8478#[target_feature(enable = "neon")]
8479#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8480#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8481#[cfg_attr(
8482 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8483 assert_instr(nop)
8484)]
8485#[cfg_attr(
8486 not(target_arch = "arm"),
8487 stable(feature = "neon_intrinsics", since = "1.59.0")
8488)]
8489#[cfg_attr(
8490 target_arch = "arm",
8491 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8492)]
8493pub fn vcreate_p8(a: u64) -> poly8x8_t {
8494 unsafe {
8495 let ret_val: poly8x8_t = transmute(a);
8496 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
8497 }
8498}
8499#[doc = "Insert vector element from another vector element"]
8500#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_p16)"]
8501#[inline]
8502#[cfg(target_endian = "little")]
8503#[target_feature(enable = "neon")]
8504#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8505#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8506#[cfg_attr(
8507 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8508 assert_instr(nop)
8509)]
8510#[cfg_attr(
8511 not(target_arch = "arm"),
8512 stable(feature = "neon_intrinsics", since = "1.59.0")
8513)]
8514#[cfg_attr(
8515 target_arch = "arm",
8516 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8517)]
8518pub fn vcreate_p16(a: u64) -> poly16x4_t {
8519 unsafe { transmute(a) }
8520}
8521#[doc = "Insert vector element from another vector element"]
8522#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_p16)"]
8523#[inline]
8524#[cfg(target_endian = "big")]
8525#[target_feature(enable = "neon")]
8526#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8527#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8528#[cfg_attr(
8529 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8530 assert_instr(nop)
8531)]
8532#[cfg_attr(
8533 not(target_arch = "arm"),
8534 stable(feature = "neon_intrinsics", since = "1.59.0")
8535)]
8536#[cfg_attr(
8537 target_arch = "arm",
8538 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8539)]
8540pub fn vcreate_p16(a: u64) -> poly16x4_t {
8541 unsafe {
8542 let ret_val: poly16x4_t = transmute(a);
8543 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
8544 }
8545}
8546#[doc = "Insert vector element from another vector element"]
8547#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcreate_p64)"]
8548#[inline]
8549#[target_feature(enable = "neon,aes")]
8550#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
8551#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
8552#[cfg_attr(
8553 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8554 assert_instr(nop)
8555)]
8556#[cfg_attr(
8557 not(target_arch = "arm"),
8558 stable(feature = "neon_intrinsics", since = "1.59.0")
8559)]
8560#[cfg_attr(
8561 target_arch = "arm",
8562 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8563)]
8564pub fn vcreate_p64(a: u64) -> poly64x1_t {
8565 unsafe { transmute(a) }
8566}
8567#[doc = "Floating-point convert to lower precision narrow"]
8568#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_f16_f32)"]
8569#[inline]
8570#[target_feature(enable = "neon")]
8571#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8572#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
8573#[cfg_attr(
8574 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8575 assert_instr(fcvtn)
8576)]
8577#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
8578#[cfg_attr(
8579 not(target_arch = "arm"),
8580 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
8581)]
8582#[cfg_attr(
8583 target_arch = "arm",
8584 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8585)]
8586#[cfg(not(target_arch = "arm64ec"))]
8587pub fn vcvt_f16_f32(a: float32x4_t) -> float16x4_t {
8588 unsafe { simd_cast(a) }
8589}
8590#[doc = "Fixed-point convert to floating-point"]
8591#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_f16_s16)"]
8592#[inline]
8593#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8594#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
8595#[cfg_attr(
8596 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8597 assert_instr(scvtf)
8598)]
8599#[target_feature(enable = "neon,fp16")]
8600#[cfg_attr(
8601 not(target_arch = "arm"),
8602 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
8603)]
8604#[cfg_attr(
8605 target_arch = "arm",
8606 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8607)]
8608#[cfg(not(target_arch = "arm64ec"))]
8609pub fn vcvt_f16_s16(a: int16x4_t) -> float16x4_t {
8610 unsafe { simd_cast(a) }
8611}
8612#[doc = "Fixed-point convert to floating-point"]
8613#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_f16_s16)"]
8614#[inline]
8615#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8616#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
8617#[cfg_attr(
8618 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8619 assert_instr(scvtf)
8620)]
8621#[target_feature(enable = "neon,fp16")]
8622#[cfg_attr(
8623 not(target_arch = "arm"),
8624 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
8625)]
8626#[cfg_attr(
8627 target_arch = "arm",
8628 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8629)]
8630#[cfg(not(target_arch = "arm64ec"))]
8631pub fn vcvtq_f16_s16(a: int16x8_t) -> float16x8_t {
8632 unsafe { simd_cast(a) }
8633}
8634#[doc = "Fixed-point convert to floating-point"]
8635#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_f16_u16)"]
8636#[inline]
8637#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8638#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
8639#[cfg_attr(
8640 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8641 assert_instr(ucvtf)
8642)]
8643#[target_feature(enable = "neon,fp16")]
8644#[cfg_attr(
8645 not(target_arch = "arm"),
8646 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
8647)]
8648#[cfg_attr(
8649 target_arch = "arm",
8650 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8651)]
8652#[cfg(not(target_arch = "arm64ec"))]
8653pub fn vcvt_f16_u16(a: uint16x4_t) -> float16x4_t {
8654 unsafe { simd_cast(a) }
8655}
8656#[doc = "Fixed-point convert to floating-point"]
8657#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_f16_u16)"]
8658#[inline]
8659#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8660#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
8661#[cfg_attr(
8662 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8663 assert_instr(ucvtf)
8664)]
8665#[target_feature(enable = "neon,fp16")]
8666#[cfg_attr(
8667 not(target_arch = "arm"),
8668 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
8669)]
8670#[cfg_attr(
8671 target_arch = "arm",
8672 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8673)]
8674#[cfg(not(target_arch = "arm64ec"))]
8675pub fn vcvtq_f16_u16(a: uint16x8_t) -> float16x8_t {
8676 unsafe { simd_cast(a) }
8677}
8678#[doc = "Floating-point convert to higher precision long"]
8679#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_f32_f16)"]
8680#[inline]
8681#[target_feature(enable = "neon")]
8682#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8683#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
8684#[cfg_attr(
8685 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8686 assert_instr(fcvtl)
8687)]
8688#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
8689#[cfg_attr(
8690 not(target_arch = "arm"),
8691 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
8692)]
8693#[cfg_attr(
8694 target_arch = "arm",
8695 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8696)]
8697#[cfg(not(target_arch = "arm64ec"))]
8698pub fn vcvt_f32_f16(a: float16x4_t) -> float32x4_t {
8699 unsafe { simd_cast(a) }
8700}
8701#[doc = "Fixed-point convert to floating-point"]
8702#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_f32_s32)"]
8703#[inline]
8704#[target_feature(enable = "neon")]
8705#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8706#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
8707#[cfg_attr(
8708 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8709 assert_instr(scvtf)
8710)]
8711#[cfg_attr(
8712 not(target_arch = "arm"),
8713 stable(feature = "neon_intrinsics", since = "1.59.0")
8714)]
8715#[cfg_attr(
8716 target_arch = "arm",
8717 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8718)]
8719pub fn vcvt_f32_s32(a: int32x2_t) -> float32x2_t {
8720 unsafe { simd_cast(a) }
8721}
8722#[doc = "Fixed-point convert to floating-point"]
8723#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_f32_s32)"]
8724#[inline]
8725#[target_feature(enable = "neon")]
8726#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8727#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
8728#[cfg_attr(
8729 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8730 assert_instr(scvtf)
8731)]
8732#[cfg_attr(
8733 not(target_arch = "arm"),
8734 stable(feature = "neon_intrinsics", since = "1.59.0")
8735)]
8736#[cfg_attr(
8737 target_arch = "arm",
8738 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8739)]
8740pub fn vcvtq_f32_s32(a: int32x4_t) -> float32x4_t {
8741 unsafe { simd_cast(a) }
8742}
8743#[doc = "Fixed-point convert to floating-point"]
8744#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_f32_u32)"]
8745#[inline]
8746#[target_feature(enable = "neon")]
8747#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8748#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
8749#[cfg_attr(
8750 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8751 assert_instr(ucvtf)
8752)]
8753#[cfg_attr(
8754 not(target_arch = "arm"),
8755 stable(feature = "neon_intrinsics", since = "1.59.0")
8756)]
8757#[cfg_attr(
8758 target_arch = "arm",
8759 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8760)]
8761pub fn vcvt_f32_u32(a: uint32x2_t) -> float32x2_t {
8762 unsafe { simd_cast(a) }
8763}
8764#[doc = "Fixed-point convert to floating-point"]
8765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_f32_u32)"]
8766#[inline]
8767#[target_feature(enable = "neon")]
8768#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
8769#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
8770#[cfg_attr(
8771 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8772 assert_instr(ucvtf)
8773)]
8774#[cfg_attr(
8775 not(target_arch = "arm"),
8776 stable(feature = "neon_intrinsics", since = "1.59.0")
8777)]
8778#[cfg_attr(
8779 target_arch = "arm",
8780 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8781)]
8782pub fn vcvtq_f32_u32(a: uint32x4_t) -> float32x4_t {
8783 unsafe { simd_cast(a) }
8784}
8785#[doc = "Fixed-point convert to floating-point"]
8786#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_f16_s16)"]
8787#[inline]
8788#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
8789#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcvt", N = 1))]
8790#[cfg_attr(
8791 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8792 assert_instr(scvtf, N = 1)
8793)]
8794#[rustc_legacy_const_generics(1)]
8795#[target_feature(enable = "neon,fp16")]
8796#[cfg_attr(
8797 not(target_arch = "arm"),
8798 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
8799)]
8800#[cfg_attr(
8801 target_arch = "arm",
8802 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8803)]
8804#[cfg(not(target_arch = "arm64ec"))]
8805pub fn vcvt_n_f16_s16<const N: i32>(a: int16x4_t) -> float16x4_t {
8806 static_assert!(N >= 1 && N <= 16);
8807 unsafe extern "unadjusted" {
8808 #[cfg_attr(
8809 target_arch = "arm",
8810 link_name = "llvm.arm.neon.vcvtfxs2fp.v4f16.v4i16"
8811 )]
8812 #[cfg_attr(
8813 any(target_arch = "aarch64", target_arch = "arm64ec"),
8814 link_name = "llvm.aarch64.neon.vcvtfxs2fp.v4f16.v4i16"
8815 )]
8816 fn _vcvt_n_f16_s16(a: int16x4_t, n: i32) -> float16x4_t;
8817 }
8818 unsafe { _vcvt_n_f16_s16(a, N) }
8819}
8820#[doc = "Fixed-point convert to floating-point"]
8821#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_f16_s16)"]
8822#[inline]
8823#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
8824#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcvt", N = 1))]
8825#[cfg_attr(
8826 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8827 assert_instr(scvtf, N = 1)
8828)]
8829#[rustc_legacy_const_generics(1)]
8830#[target_feature(enable = "neon,fp16")]
8831#[cfg_attr(
8832 not(target_arch = "arm"),
8833 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
8834)]
8835#[cfg_attr(
8836 target_arch = "arm",
8837 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8838)]
8839#[cfg(not(target_arch = "arm64ec"))]
8840pub fn vcvtq_n_f16_s16<const N: i32>(a: int16x8_t) -> float16x8_t {
8841 static_assert!(N >= 1 && N <= 16);
8842 unsafe extern "unadjusted" {
8843 #[cfg_attr(
8844 target_arch = "arm",
8845 link_name = "llvm.arm.neon.vcvtfxs2fp.v8f16.v8i16"
8846 )]
8847 #[cfg_attr(
8848 any(target_arch = "aarch64", target_arch = "arm64ec"),
8849 link_name = "llvm.aarch64.neon.vcvtfxs2fp.v8f16.v8i16"
8850 )]
8851 fn _vcvtq_n_f16_s16(a: int16x8_t, n: i32) -> float16x8_t;
8852 }
8853 unsafe { _vcvtq_n_f16_s16(a, N) }
8854}
8855#[doc = "Fixed-point convert to floating-point"]
8856#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_f16_u16)"]
8857#[inline]
8858#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
8859#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcvt", N = 1))]
8860#[cfg_attr(
8861 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8862 assert_instr(ucvtf, N = 1)
8863)]
8864#[rustc_legacy_const_generics(1)]
8865#[target_feature(enable = "neon,fp16")]
8866#[cfg_attr(
8867 not(target_arch = "arm"),
8868 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
8869)]
8870#[cfg_attr(
8871 target_arch = "arm",
8872 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8873)]
8874#[cfg(not(target_arch = "arm64ec"))]
8875pub fn vcvt_n_f16_u16<const N: i32>(a: uint16x4_t) -> float16x4_t {
8876 static_assert!(N >= 1 && N <= 16);
8877 unsafe extern "unadjusted" {
8878 #[cfg_attr(
8879 target_arch = "arm",
8880 link_name = "llvm.arm.neon.vcvtfxu2fp.v4f16.v4i16"
8881 )]
8882 #[cfg_attr(
8883 any(target_arch = "aarch64", target_arch = "arm64ec"),
8884 link_name = "llvm.aarch64.neon.vcvtfxu2fp.v4f16.v4i16"
8885 )]
8886 fn _vcvt_n_f16_u16(a: uint16x4_t, n: i32) -> float16x4_t;
8887 }
8888 unsafe { _vcvt_n_f16_u16(a, N) }
8889}
8890#[doc = "Fixed-point convert to floating-point"]
8891#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_f16_u16)"]
8892#[inline]
8893#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
8894#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcvt", N = 1))]
8895#[cfg_attr(
8896 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
8897 assert_instr(ucvtf, N = 1)
8898)]
8899#[rustc_legacy_const_generics(1)]
8900#[target_feature(enable = "neon,fp16")]
8901#[cfg_attr(
8902 not(target_arch = "arm"),
8903 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
8904)]
8905#[cfg_attr(
8906 target_arch = "arm",
8907 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
8908)]
8909#[cfg(not(target_arch = "arm64ec"))]
8910pub fn vcvtq_n_f16_u16<const N: i32>(a: uint16x8_t) -> float16x8_t {
8911 static_assert!(N >= 1 && N <= 16);
8912 unsafe extern "unadjusted" {
8913 #[cfg_attr(
8914 target_arch = "arm",
8915 link_name = "llvm.arm.neon.vcvtfxu2fp.v8f16.v8i16"
8916 )]
8917 #[cfg_attr(
8918 any(target_arch = "aarch64", target_arch = "arm64ec"),
8919 link_name = "llvm.aarch64.neon.vcvtfxu2fp.v8f16.v8i16"
8920 )]
8921 fn _vcvtq_n_f16_u16(a: uint16x8_t, n: i32) -> float16x8_t;
8922 }
8923 unsafe { _vcvtq_n_f16_u16(a, N) }
8924}
8925#[doc = "Fixed-point convert to floating-point"]
8926#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_f32_s32)"]
8927#[inline]
8928#[cfg(target_arch = "arm")]
8929#[target_feature(enable = "neon,v7")]
8930#[cfg_attr(test, assert_instr(vcvt, N = 2))]
8931#[rustc_legacy_const_generics(1)]
8932#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
8933pub fn vcvt_n_f32_s32<const N: i32>(a: int32x2_t) -> float32x2_t {
8934 static_assert!(N >= 1 && N <= 32);
8935 unsafe extern "unadjusted" {
8936 #[cfg_attr(
8937 target_arch = "arm",
8938 link_name = "llvm.arm.neon.vcvtfxs2fp.v2f32.v2i32"
8939 )]
8940 fn _vcvt_n_f32_s32(a: int32x2_t, n: i32) -> float32x2_t;
8941 }
8942 unsafe { _vcvt_n_f32_s32(a, N) }
8943}
8944#[doc = "Fixed-point convert to floating-point"]
8945#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_f32_s32)"]
8946#[inline]
8947#[cfg(target_arch = "arm")]
8948#[target_feature(enable = "neon,v7")]
8949#[cfg_attr(test, assert_instr(vcvt, N = 2))]
8950#[rustc_legacy_const_generics(1)]
8951#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
8952pub fn vcvtq_n_f32_s32<const N: i32>(a: int32x4_t) -> float32x4_t {
8953 static_assert!(N >= 1 && N <= 32);
8954 unsafe extern "unadjusted" {
8955 #[cfg_attr(
8956 target_arch = "arm",
8957 link_name = "llvm.arm.neon.vcvtfxs2fp.v4f32.v4i32"
8958 )]
8959 fn _vcvtq_n_f32_s32(a: int32x4_t, n: i32) -> float32x4_t;
8960 }
8961 unsafe { _vcvtq_n_f32_s32(a, N) }
8962}
8963#[doc = "Fixed-point convert to floating-point"]
8964#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_f32_s32)"]
8965#[inline]
8966#[target_feature(enable = "neon")]
8967#[cfg(not(target_arch = "arm"))]
8968#[cfg_attr(test, assert_instr(scvtf, N = 2))]
8969#[rustc_legacy_const_generics(1)]
8970#[stable(feature = "neon_intrinsics", since = "1.59.0")]
8971pub fn vcvt_n_f32_s32<const N: i32>(a: int32x2_t) -> float32x2_t {
8972 static_assert!(N >= 1 && N <= 32);
8973 unsafe extern "unadjusted" {
8974 #[cfg_attr(
8975 any(target_arch = "aarch64", target_arch = "arm64ec"),
8976 link_name = "llvm.aarch64.neon.vcvtfxs2fp.v2f32.v2i32"
8977 )]
8978 fn _vcvt_n_f32_s32(a: int32x2_t, n: i32) -> float32x2_t;
8979 }
8980 unsafe { _vcvt_n_f32_s32(a, N) }
8981}
8982#[doc = "Fixed-point convert to floating-point"]
8983#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_f32_s32)"]
8984#[inline]
8985#[target_feature(enable = "neon")]
8986#[cfg(not(target_arch = "arm"))]
8987#[cfg_attr(test, assert_instr(scvtf, N = 2))]
8988#[rustc_legacy_const_generics(1)]
8989#[stable(feature = "neon_intrinsics", since = "1.59.0")]
8990pub fn vcvtq_n_f32_s32<const N: i32>(a: int32x4_t) -> float32x4_t {
8991 static_assert!(N >= 1 && N <= 32);
8992 unsafe extern "unadjusted" {
8993 #[cfg_attr(
8994 any(target_arch = "aarch64", target_arch = "arm64ec"),
8995 link_name = "llvm.aarch64.neon.vcvtfxs2fp.v4f32.v4i32"
8996 )]
8997 fn _vcvtq_n_f32_s32(a: int32x4_t, n: i32) -> float32x4_t;
8998 }
8999 unsafe { _vcvtq_n_f32_s32(a, N) }
9000}
9001#[doc = "Fixed-point convert to floating-point"]
9002#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_f32_u32)"]
9003#[inline]
9004#[cfg(target_arch = "arm")]
9005#[target_feature(enable = "neon,v7")]
9006#[cfg_attr(test, assert_instr(vcvt, N = 2))]
9007#[rustc_legacy_const_generics(1)]
9008#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
9009pub fn vcvt_n_f32_u32<const N: i32>(a: uint32x2_t) -> float32x2_t {
9010 static_assert!(N >= 1 && N <= 32);
9011 unsafe extern "unadjusted" {
9012 #[cfg_attr(
9013 target_arch = "arm",
9014 link_name = "llvm.arm.neon.vcvtfxu2fp.v2f32.v2i32"
9015 )]
9016 fn _vcvt_n_f32_u32(a: uint32x2_t, n: i32) -> float32x2_t;
9017 }
9018 unsafe { _vcvt_n_f32_u32(a, N) }
9019}
9020#[doc = "Fixed-point convert to floating-point"]
9021#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_f32_u32)"]
9022#[inline]
9023#[cfg(target_arch = "arm")]
9024#[target_feature(enable = "neon,v7")]
9025#[cfg_attr(test, assert_instr(vcvt, N = 2))]
9026#[rustc_legacy_const_generics(1)]
9027#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
9028pub fn vcvtq_n_f32_u32<const N: i32>(a: uint32x4_t) -> float32x4_t {
9029 static_assert!(N >= 1 && N <= 32);
9030 unsafe extern "unadjusted" {
9031 #[cfg_attr(
9032 target_arch = "arm",
9033 link_name = "llvm.arm.neon.vcvtfxu2fp.v4f32.v4i32"
9034 )]
9035 fn _vcvtq_n_f32_u32(a: uint32x4_t, n: i32) -> float32x4_t;
9036 }
9037 unsafe { _vcvtq_n_f32_u32(a, N) }
9038}
9039#[doc = "Fixed-point convert to floating-point"]
9040#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_f32_u32)"]
9041#[inline]
9042#[target_feature(enable = "neon")]
9043#[cfg(not(target_arch = "arm"))]
9044#[cfg_attr(test, assert_instr(ucvtf, N = 2))]
9045#[rustc_legacy_const_generics(1)]
9046#[stable(feature = "neon_intrinsics", since = "1.59.0")]
9047pub fn vcvt_n_f32_u32<const N: i32>(a: uint32x2_t) -> float32x2_t {
9048 static_assert!(N >= 1 && N <= 32);
9049 unsafe extern "unadjusted" {
9050 #[cfg_attr(
9051 any(target_arch = "aarch64", target_arch = "arm64ec"),
9052 link_name = "llvm.aarch64.neon.vcvtfxu2fp.v2f32.v2i32"
9053 )]
9054 fn _vcvt_n_f32_u32(a: uint32x2_t, n: i32) -> float32x2_t;
9055 }
9056 unsafe { _vcvt_n_f32_u32(a, N) }
9057}
9058#[doc = "Fixed-point convert to floating-point"]
9059#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_f32_u32)"]
9060#[inline]
9061#[target_feature(enable = "neon")]
9062#[cfg(not(target_arch = "arm"))]
9063#[cfg_attr(test, assert_instr(ucvtf, N = 2))]
9064#[rustc_legacy_const_generics(1)]
9065#[stable(feature = "neon_intrinsics", since = "1.59.0")]
9066pub fn vcvtq_n_f32_u32<const N: i32>(a: uint32x4_t) -> float32x4_t {
9067 static_assert!(N >= 1 && N <= 32);
9068 unsafe extern "unadjusted" {
9069 #[cfg_attr(
9070 any(target_arch = "aarch64", target_arch = "arm64ec"),
9071 link_name = "llvm.aarch64.neon.vcvtfxu2fp.v4f32.v4i32"
9072 )]
9073 fn _vcvtq_n_f32_u32(a: uint32x4_t, n: i32) -> float32x4_t;
9074 }
9075 unsafe { _vcvtq_n_f32_u32(a, N) }
9076}
9077#[doc = "Floating-point convert to signed fixed-point"]
9078#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_s16_f16)"]
9079#[inline]
9080#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9081#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcvt", N = 1))]
9082#[cfg_attr(
9083 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9084 assert_instr(fcvtzs, N = 1)
9085)]
9086#[rustc_legacy_const_generics(1)]
9087#[target_feature(enable = "neon,fp16")]
9088#[cfg_attr(
9089 not(target_arch = "arm"),
9090 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
9091)]
9092#[cfg_attr(
9093 target_arch = "arm",
9094 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9095)]
9096#[cfg(not(target_arch = "arm64ec"))]
9097pub fn vcvt_n_s16_f16<const N: i32>(a: float16x4_t) -> int16x4_t {
9098 static_assert!(N >= 1 && N <= 16);
9099 unsafe extern "unadjusted" {
9100 #[cfg_attr(
9101 target_arch = "arm",
9102 link_name = "llvm.arm.neon.vcvtfp2fxs.v4i16.v4f16"
9103 )]
9104 #[cfg_attr(
9105 any(target_arch = "aarch64", target_arch = "arm64ec"),
9106 link_name = "llvm.aarch64.neon.vcvtfp2fxs.v4i16.v4f16"
9107 )]
9108 fn _vcvt_n_s16_f16(a: float16x4_t, n: i32) -> int16x4_t;
9109 }
9110 unsafe { _vcvt_n_s16_f16(a, N) }
9111}
9112#[doc = "Floating-point convert to signed fixed-point"]
9113#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_s16_f16)"]
9114#[inline]
9115#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9116#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcvt", N = 1))]
9117#[cfg_attr(
9118 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9119 assert_instr(fcvtzs, N = 1)
9120)]
9121#[rustc_legacy_const_generics(1)]
9122#[target_feature(enable = "neon,fp16")]
9123#[cfg_attr(
9124 not(target_arch = "arm"),
9125 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
9126)]
9127#[cfg_attr(
9128 target_arch = "arm",
9129 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9130)]
9131#[cfg(not(target_arch = "arm64ec"))]
9132pub fn vcvtq_n_s16_f16<const N: i32>(a: float16x8_t) -> int16x8_t {
9133 static_assert!(N >= 1 && N <= 16);
9134 unsafe extern "unadjusted" {
9135 #[cfg_attr(
9136 target_arch = "arm",
9137 link_name = "llvm.arm.neon.vcvtfp2fxs.v8i16.v8f16"
9138 )]
9139 #[cfg_attr(
9140 any(target_arch = "aarch64", target_arch = "arm64ec"),
9141 link_name = "llvm.aarch64.neon.vcvtfp2fxs.v8i16.v8f16"
9142 )]
9143 fn _vcvtq_n_s16_f16(a: float16x8_t, n: i32) -> int16x8_t;
9144 }
9145 unsafe { _vcvtq_n_s16_f16(a, N) }
9146}
9147#[doc = "Floating-point convert to fixed-point, rounding toward zero"]
9148#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_s32_f32)"]
9149#[inline]
9150#[cfg(target_arch = "arm")]
9151#[target_feature(enable = "neon,v7")]
9152#[cfg_attr(test, assert_instr(vcvt, N = 2))]
9153#[rustc_legacy_const_generics(1)]
9154#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
9155pub fn vcvt_n_s32_f32<const N: i32>(a: float32x2_t) -> int32x2_t {
9156 static_assert!(N >= 1 && N <= 32);
9157 unsafe extern "unadjusted" {
9158 #[cfg_attr(
9159 target_arch = "arm",
9160 link_name = "llvm.arm.neon.vcvtfp2fxs.v2i32.v2f32"
9161 )]
9162 fn _vcvt_n_s32_f32(a: float32x2_t, n: i32) -> int32x2_t;
9163 }
9164 unsafe { _vcvt_n_s32_f32(a, N) }
9165}
9166#[doc = "Floating-point convert to fixed-point, rounding toward zero"]
9167#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_s32_f32)"]
9168#[inline]
9169#[cfg(target_arch = "arm")]
9170#[target_feature(enable = "neon,v7")]
9171#[cfg_attr(test, assert_instr(vcvt, N = 2))]
9172#[rustc_legacy_const_generics(1)]
9173#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
9174pub fn vcvtq_n_s32_f32<const N: i32>(a: float32x4_t) -> int32x4_t {
9175 static_assert!(N >= 1 && N <= 32);
9176 unsafe extern "unadjusted" {
9177 #[cfg_attr(
9178 target_arch = "arm",
9179 link_name = "llvm.arm.neon.vcvtfp2fxs.v4i32.v4f32"
9180 )]
9181 fn _vcvtq_n_s32_f32(a: float32x4_t, n: i32) -> int32x4_t;
9182 }
9183 unsafe { _vcvtq_n_s32_f32(a, N) }
9184}
9185#[doc = "Floating-point convert to fixed-point, rounding toward zero"]
9186#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_s32_f32)"]
9187#[inline]
9188#[target_feature(enable = "neon")]
9189#[cfg(not(target_arch = "arm"))]
9190#[cfg_attr(test, assert_instr(fcvtzs, N = 2))]
9191#[rustc_legacy_const_generics(1)]
9192#[stable(feature = "neon_intrinsics", since = "1.59.0")]
9193pub fn vcvt_n_s32_f32<const N: i32>(a: float32x2_t) -> int32x2_t {
9194 static_assert!(N >= 1 && N <= 32);
9195 unsafe extern "unadjusted" {
9196 #[cfg_attr(
9197 any(target_arch = "aarch64", target_arch = "arm64ec"),
9198 link_name = "llvm.aarch64.neon.vcvtfp2fxs.v2i32.v2f32"
9199 )]
9200 fn _vcvt_n_s32_f32(a: float32x2_t, n: i32) -> int32x2_t;
9201 }
9202 unsafe { _vcvt_n_s32_f32(a, N) }
9203}
9204#[doc = "Floating-point convert to fixed-point, rounding toward zero"]
9205#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_s32_f32)"]
9206#[inline]
9207#[target_feature(enable = "neon")]
9208#[cfg(not(target_arch = "arm"))]
9209#[cfg_attr(test, assert_instr(fcvtzs, N = 2))]
9210#[rustc_legacy_const_generics(1)]
9211#[stable(feature = "neon_intrinsics", since = "1.59.0")]
9212pub fn vcvtq_n_s32_f32<const N: i32>(a: float32x4_t) -> int32x4_t {
9213 static_assert!(N >= 1 && N <= 32);
9214 unsafe extern "unadjusted" {
9215 #[cfg_attr(
9216 any(target_arch = "aarch64", target_arch = "arm64ec"),
9217 link_name = "llvm.aarch64.neon.vcvtfp2fxs.v4i32.v4f32"
9218 )]
9219 fn _vcvtq_n_s32_f32(a: float32x4_t, n: i32) -> int32x4_t;
9220 }
9221 unsafe { _vcvtq_n_s32_f32(a, N) }
9222}
9223#[doc = "Fixed-point convert to unsigned fixed-point, rounding toward zero"]
9224#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_u16_f16)"]
9225#[inline]
9226#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9227#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcvt", N = 1))]
9228#[cfg_attr(
9229 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9230 assert_instr(fcvtzu, N = 1)
9231)]
9232#[rustc_legacy_const_generics(1)]
9233#[target_feature(enable = "neon,fp16")]
9234#[cfg_attr(
9235 not(target_arch = "arm"),
9236 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
9237)]
9238#[cfg_attr(
9239 target_arch = "arm",
9240 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9241)]
9242#[cfg(not(target_arch = "arm64ec"))]
9243pub fn vcvt_n_u16_f16<const N: i32>(a: float16x4_t) -> uint16x4_t {
9244 static_assert!(N >= 1 && N <= 16);
9245 unsafe extern "unadjusted" {
9246 #[cfg_attr(
9247 target_arch = "arm",
9248 link_name = "llvm.arm.neon.vcvtfp2fxu.v4i16.v4f16"
9249 )]
9250 #[cfg_attr(
9251 any(target_arch = "aarch64", target_arch = "arm64ec"),
9252 link_name = "llvm.aarch64.neon.vcvtfp2fxu.v4i16.v4f16"
9253 )]
9254 fn _vcvt_n_u16_f16(a: float16x4_t, n: i32) -> uint16x4_t;
9255 }
9256 unsafe { _vcvt_n_u16_f16(a, N) }
9257}
9258#[doc = "Fixed-point convert to unsigned fixed-point, rounding toward zero"]
9259#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_u16_f16)"]
9260#[inline]
9261#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9262#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vcvt", N = 1))]
9263#[cfg_attr(
9264 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9265 assert_instr(fcvtzu, N = 1)
9266)]
9267#[rustc_legacy_const_generics(1)]
9268#[target_feature(enable = "neon,fp16")]
9269#[cfg_attr(
9270 not(target_arch = "arm"),
9271 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
9272)]
9273#[cfg_attr(
9274 target_arch = "arm",
9275 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9276)]
9277#[cfg(not(target_arch = "arm64ec"))]
9278pub fn vcvtq_n_u16_f16<const N: i32>(a: float16x8_t) -> uint16x8_t {
9279 static_assert!(N >= 1 && N <= 16);
9280 unsafe extern "unadjusted" {
9281 #[cfg_attr(
9282 target_arch = "arm",
9283 link_name = "llvm.arm.neon.vcvtfp2fxu.v8i16.v8f16"
9284 )]
9285 #[cfg_attr(
9286 any(target_arch = "aarch64", target_arch = "arm64ec"),
9287 link_name = "llvm.aarch64.neon.vcvtfp2fxu.v8i16.v8f16"
9288 )]
9289 fn _vcvtq_n_u16_f16(a: float16x8_t, n: i32) -> uint16x8_t;
9290 }
9291 unsafe { _vcvtq_n_u16_f16(a, N) }
9292}
9293#[doc = "Floating-point convert to fixed-point, rounding toward zero"]
9294#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_u32_f32)"]
9295#[inline]
9296#[cfg(target_arch = "arm")]
9297#[target_feature(enable = "neon,v7")]
9298#[cfg_attr(test, assert_instr(vcvt, N = 2))]
9299#[rustc_legacy_const_generics(1)]
9300#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
9301pub fn vcvt_n_u32_f32<const N: i32>(a: float32x2_t) -> uint32x2_t {
9302 static_assert!(N >= 1 && N <= 32);
9303 unsafe extern "unadjusted" {
9304 #[cfg_attr(
9305 target_arch = "arm",
9306 link_name = "llvm.arm.neon.vcvtfp2fxu.v2i32.v2f32"
9307 )]
9308 fn _vcvt_n_u32_f32(a: float32x2_t, n: i32) -> uint32x2_t;
9309 }
9310 unsafe { _vcvt_n_u32_f32(a, N) }
9311}
9312#[doc = "Floating-point convert to fixed-point, rounding toward zero"]
9313#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_u32_f32)"]
9314#[inline]
9315#[cfg(target_arch = "arm")]
9316#[target_feature(enable = "neon,v7")]
9317#[cfg_attr(test, assert_instr(vcvt, N = 2))]
9318#[rustc_legacy_const_generics(1)]
9319#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
9320pub fn vcvtq_n_u32_f32<const N: i32>(a: float32x4_t) -> uint32x4_t {
9321 static_assert!(N >= 1 && N <= 32);
9322 unsafe extern "unadjusted" {
9323 #[cfg_attr(
9324 target_arch = "arm",
9325 link_name = "llvm.arm.neon.vcvtfp2fxu.v4i32.v4f32"
9326 )]
9327 fn _vcvtq_n_u32_f32(a: float32x4_t, n: i32) -> uint32x4_t;
9328 }
9329 unsafe { _vcvtq_n_u32_f32(a, N) }
9330}
9331#[doc = "Floating-point convert to fixed-point, rounding toward zero"]
9332#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_n_u32_f32)"]
9333#[inline]
9334#[target_feature(enable = "neon")]
9335#[cfg(not(target_arch = "arm"))]
9336#[cfg_attr(test, assert_instr(fcvtzu, N = 2))]
9337#[rustc_legacy_const_generics(1)]
9338#[stable(feature = "neon_intrinsics", since = "1.59.0")]
9339pub fn vcvt_n_u32_f32<const N: i32>(a: float32x2_t) -> uint32x2_t {
9340 static_assert!(N >= 1 && N <= 32);
9341 unsafe extern "unadjusted" {
9342 #[cfg_attr(
9343 any(target_arch = "aarch64", target_arch = "arm64ec"),
9344 link_name = "llvm.aarch64.neon.vcvtfp2fxu.v2i32.v2f32"
9345 )]
9346 fn _vcvt_n_u32_f32(a: float32x2_t, n: i32) -> uint32x2_t;
9347 }
9348 unsafe { _vcvt_n_u32_f32(a, N) }
9349}
9350#[doc = "Floating-point convert to fixed-point, rounding toward zero"]
9351#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_n_u32_f32)"]
9352#[inline]
9353#[target_feature(enable = "neon")]
9354#[cfg(not(target_arch = "arm"))]
9355#[cfg_attr(test, assert_instr(fcvtzu, N = 2))]
9356#[rustc_legacy_const_generics(1)]
9357#[stable(feature = "neon_intrinsics", since = "1.59.0")]
9358pub fn vcvtq_n_u32_f32<const N: i32>(a: float32x4_t) -> uint32x4_t {
9359 static_assert!(N >= 1 && N <= 32);
9360 unsafe extern "unadjusted" {
9361 #[cfg_attr(
9362 any(target_arch = "aarch64", target_arch = "arm64ec"),
9363 link_name = "llvm.aarch64.neon.vcvtfp2fxu.v4i32.v4f32"
9364 )]
9365 fn _vcvtq_n_u32_f32(a: float32x4_t, n: i32) -> uint32x4_t;
9366 }
9367 unsafe { _vcvtq_n_u32_f32(a, N) }
9368}
9369#[doc = "Floating-point convert to signed fixed-point, rounding toward zero"]
9370#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_s16_f16)"]
9371#[inline]
9372#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9373#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
9374#[cfg_attr(
9375 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9376 assert_instr(fcvtzs)
9377)]
9378#[target_feature(enable = "neon,fp16")]
9379#[cfg_attr(
9380 not(target_arch = "arm"),
9381 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
9382)]
9383#[cfg_attr(
9384 target_arch = "arm",
9385 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9386)]
9387#[cfg(not(target_arch = "arm64ec"))]
9388pub fn vcvt_s16_f16(a: float16x4_t) -> int16x4_t {
9389 unsafe { simd_cast(a) }
9390}
9391#[doc = "Floating-point convert to signed fixed-point, rounding toward zero"]
9392#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_s16_f16)"]
9393#[inline]
9394#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9395#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
9396#[cfg_attr(
9397 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9398 assert_instr(fcvtzs)
9399)]
9400#[target_feature(enable = "neon,fp16")]
9401#[cfg_attr(
9402 not(target_arch = "arm"),
9403 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
9404)]
9405#[cfg_attr(
9406 target_arch = "arm",
9407 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9408)]
9409#[cfg(not(target_arch = "arm64ec"))]
9410pub fn vcvtq_s16_f16(a: float16x8_t) -> int16x8_t {
9411 unsafe { simd_cast(a) }
9412}
9413#[doc = "Floating-point convert to signed fixed-point, rounding toward zero"]
9414#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_s32_f32)"]
9415#[inline]
9416#[target_feature(enable = "neon")]
9417#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9418#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
9419#[cfg_attr(
9420 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9421 assert_instr(fcvtzs)
9422)]
9423#[cfg_attr(
9424 not(target_arch = "arm"),
9425 stable(feature = "neon_intrinsics", since = "1.59.0")
9426)]
9427#[cfg_attr(
9428 target_arch = "arm",
9429 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9430)]
9431pub fn vcvt_s32_f32(a: float32x2_t) -> int32x2_t {
9432 unsafe extern "unadjusted" {
9433 #[cfg_attr(target_arch = "arm", link_name = "llvm.fptosi.sat.v2i32.v2f32")]
9434 #[cfg_attr(
9435 any(target_arch = "aarch64", target_arch = "arm64ec"),
9436 link_name = "llvm.fptosi.sat.v2i32.v2f32"
9437 )]
9438 fn _vcvt_s32_f32(a: float32x2_t) -> int32x2_t;
9439 }
9440 unsafe { _vcvt_s32_f32(a) }
9441}
9442#[doc = "Floating-point convert to signed fixed-point, rounding toward zero"]
9443#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_s32_f32)"]
9444#[inline]
9445#[target_feature(enable = "neon")]
9446#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9447#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
9448#[cfg_attr(
9449 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9450 assert_instr(fcvtzs)
9451)]
9452#[cfg_attr(
9453 not(target_arch = "arm"),
9454 stable(feature = "neon_intrinsics", since = "1.59.0")
9455)]
9456#[cfg_attr(
9457 target_arch = "arm",
9458 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9459)]
9460pub fn vcvtq_s32_f32(a: float32x4_t) -> int32x4_t {
9461 unsafe extern "unadjusted" {
9462 #[cfg_attr(target_arch = "arm", link_name = "llvm.fptosi.sat.v4i32.v4f32")]
9463 #[cfg_attr(
9464 any(target_arch = "aarch64", target_arch = "arm64ec"),
9465 link_name = "llvm.fptosi.sat.v4i32.v4f32"
9466 )]
9467 fn _vcvtq_s32_f32(a: float32x4_t) -> int32x4_t;
9468 }
9469 unsafe { _vcvtq_s32_f32(a) }
9470}
9471#[doc = "Floating-point convert to unsigned fixed-point, rounding toward zero"]
9472#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_u16_f16)"]
9473#[inline]
9474#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9475#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
9476#[cfg_attr(
9477 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9478 assert_instr(fcvtzu)
9479)]
9480#[target_feature(enable = "neon,fp16")]
9481#[cfg_attr(
9482 not(target_arch = "arm"),
9483 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
9484)]
9485#[cfg_attr(
9486 target_arch = "arm",
9487 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9488)]
9489#[cfg(not(target_arch = "arm64ec"))]
9490pub fn vcvt_u16_f16(a: float16x4_t) -> uint16x4_t {
9491 unsafe { simd_cast(a) }
9492}
9493#[doc = "Floating-point convert to unsigned fixed-point, rounding toward zero"]
9494#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_u16_f16)"]
9495#[inline]
9496#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9497#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
9498#[cfg_attr(
9499 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9500 assert_instr(fcvtzu)
9501)]
9502#[target_feature(enable = "neon,fp16")]
9503#[cfg_attr(
9504 not(target_arch = "arm"),
9505 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
9506)]
9507#[cfg_attr(
9508 target_arch = "arm",
9509 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9510)]
9511#[cfg(not(target_arch = "arm64ec"))]
9512pub fn vcvtq_u16_f16(a: float16x8_t) -> uint16x8_t {
9513 unsafe { simd_cast(a) }
9514}
9515#[doc = "Floating-point convert to unsigned fixed-point, rounding toward zero"]
9516#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_u32_f32)"]
9517#[inline]
9518#[target_feature(enable = "neon")]
9519#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9520#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
9521#[cfg_attr(
9522 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9523 assert_instr(fcvtzu)
9524)]
9525#[cfg_attr(
9526 not(target_arch = "arm"),
9527 stable(feature = "neon_intrinsics", since = "1.59.0")
9528)]
9529#[cfg_attr(
9530 target_arch = "arm",
9531 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9532)]
9533pub fn vcvt_u32_f32(a: float32x2_t) -> uint32x2_t {
9534 unsafe extern "unadjusted" {
9535 #[cfg_attr(target_arch = "arm", link_name = "llvm.fptoui.sat.v2i32.v2f32")]
9536 #[cfg_attr(
9537 any(target_arch = "aarch64", target_arch = "arm64ec"),
9538 link_name = "llvm.fptoui.sat.v2i32.v2f32"
9539 )]
9540 fn _vcvt_u32_f32(a: float32x2_t) -> uint32x2_t;
9541 }
9542 unsafe { _vcvt_u32_f32(a) }
9543}
9544#[doc = "Floating-point convert to unsigned fixed-point, rounding toward zero"]
9545#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtq_u32_f32)"]
9546#[inline]
9547#[target_feature(enable = "neon")]
9548#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9549#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vcvt))]
9550#[cfg_attr(
9551 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9552 assert_instr(fcvtzu)
9553)]
9554#[cfg_attr(
9555 not(target_arch = "arm"),
9556 stable(feature = "neon_intrinsics", since = "1.59.0")
9557)]
9558#[cfg_attr(
9559 target_arch = "arm",
9560 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9561)]
9562pub fn vcvtq_u32_f32(a: float32x4_t) -> uint32x4_t {
9563 unsafe extern "unadjusted" {
9564 #[cfg_attr(target_arch = "arm", link_name = "llvm.fptoui.sat.v4i32.v4f32")]
9565 #[cfg_attr(
9566 any(target_arch = "aarch64", target_arch = "arm64ec"),
9567 link_name = "llvm.fptoui.sat.v4i32.v4f32"
9568 )]
9569 fn _vcvtq_u32_f32(a: float32x4_t) -> uint32x4_t;
9570 }
9571 unsafe { _vcvtq_u32_f32(a) }
9572}
9573#[doc = "Dot product arithmetic (indexed)"]
9574#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdot_lane_s32)"]
9575#[inline]
9576#[cfg(target_endian = "little")]
9577#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9578#[target_feature(enable = "neon,dotprod")]
9579#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsdot, LANE = 0))]
9580#[cfg_attr(
9581 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9582 assert_instr(sdot, LANE = 0)
9583)]
9584#[rustc_legacy_const_generics(3)]
9585#[cfg_attr(
9586 not(target_arch = "arm"),
9587 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9588)]
9589#[cfg_attr(
9590 target_arch = "arm",
9591 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9592)]
9593pub fn vdot_lane_s32<const LANE: i32>(a: int32x2_t, b: int8x8_t, c: int8x8_t) -> int32x2_t {
9594 static_assert_uimm_bits!(LANE, 1);
9595 unsafe {
9596 let c: int32x2_t = transmute(c);
9597 let c: int32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
9598 vdot_s32(a, b, transmute(c))
9599 }
9600}
9601#[doc = "Dot product arithmetic (indexed)"]
9602#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdot_lane_s32)"]
9603#[inline]
9604#[cfg(target_endian = "big")]
9605#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9606#[target_feature(enable = "neon,dotprod")]
9607#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsdot, LANE = 0))]
9608#[cfg_attr(
9609 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9610 assert_instr(sdot, LANE = 0)
9611)]
9612#[rustc_legacy_const_generics(3)]
9613#[cfg_attr(
9614 not(target_arch = "arm"),
9615 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9616)]
9617#[cfg_attr(
9618 target_arch = "arm",
9619 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9620)]
9621pub fn vdot_lane_s32<const LANE: i32>(a: int32x2_t, b: int8x8_t, c: int8x8_t) -> int32x2_t {
9622 static_assert_uimm_bits!(LANE, 1);
9623 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
9624 let b: int8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
9625 let c: int8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
9626 unsafe {
9627 let c: int32x2_t = transmute(c);
9628 let c: int32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
9629 let ret_val: int32x2_t = vdot_s32(a, b, transmute(c));
9630 simd_shuffle!(ret_val, ret_val, [1, 0])
9631 }
9632}
9633#[doc = "Dot product arithmetic (indexed)"]
9634#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdotq_lane_s32)"]
9635#[inline]
9636#[cfg(target_endian = "little")]
9637#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9638#[target_feature(enable = "neon,dotprod")]
9639#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsdot, LANE = 0))]
9640#[cfg_attr(
9641 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9642 assert_instr(sdot, LANE = 0)
9643)]
9644#[rustc_legacy_const_generics(3)]
9645#[cfg_attr(
9646 not(target_arch = "arm"),
9647 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9648)]
9649#[cfg_attr(
9650 target_arch = "arm",
9651 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9652)]
9653pub fn vdotq_lane_s32<const LANE: i32>(a: int32x4_t, b: int8x16_t, c: int8x8_t) -> int32x4_t {
9654 static_assert_uimm_bits!(LANE, 1);
9655 unsafe {
9656 let c: int32x2_t = transmute(c);
9657 let c: int32x4_t =
9658 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
9659 vdotq_s32(a, b, transmute(c))
9660 }
9661}
9662#[doc = "Dot product arithmetic (indexed)"]
9663#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdotq_lane_s32)"]
9664#[inline]
9665#[cfg(target_endian = "big")]
9666#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9667#[target_feature(enable = "neon,dotprod")]
9668#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsdot, LANE = 0))]
9669#[cfg_attr(
9670 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9671 assert_instr(sdot, LANE = 0)
9672)]
9673#[rustc_legacy_const_generics(3)]
9674#[cfg_attr(
9675 not(target_arch = "arm"),
9676 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9677)]
9678#[cfg_attr(
9679 target_arch = "arm",
9680 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9681)]
9682pub fn vdotq_lane_s32<const LANE: i32>(a: int32x4_t, b: int8x16_t, c: int8x8_t) -> int32x4_t {
9683 static_assert_uimm_bits!(LANE, 1);
9684 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
9685 let b: int8x16_t =
9686 unsafe { simd_shuffle!(b, b, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
9687 let c: int8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
9688 unsafe {
9689 let c: int32x2_t = transmute(c);
9690 let c: int32x4_t =
9691 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
9692 let ret_val: int32x4_t = vdotq_s32(a, b, transmute(c));
9693 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
9694 }
9695}
9696#[doc = "Dot product arithmetic (indexed)"]
9697#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdot_lane_u32)"]
9698#[inline]
9699#[cfg(target_endian = "little")]
9700#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9701#[target_feature(enable = "neon,dotprod")]
9702#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vudot, LANE = 0))]
9703#[cfg_attr(
9704 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9705 assert_instr(udot, LANE = 0)
9706)]
9707#[rustc_legacy_const_generics(3)]
9708#[cfg_attr(
9709 not(target_arch = "arm"),
9710 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9711)]
9712#[cfg_attr(
9713 target_arch = "arm",
9714 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9715)]
9716pub fn vdot_lane_u32<const LANE: i32>(a: uint32x2_t, b: uint8x8_t, c: uint8x8_t) -> uint32x2_t {
9717 static_assert_uimm_bits!(LANE, 1);
9718 unsafe {
9719 let c: uint32x2_t = transmute(c);
9720 let c: uint32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
9721 vdot_u32(a, b, transmute(c))
9722 }
9723}
9724#[doc = "Dot product arithmetic (indexed)"]
9725#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdot_lane_u32)"]
9726#[inline]
9727#[cfg(target_endian = "big")]
9728#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9729#[target_feature(enable = "neon,dotprod")]
9730#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vudot, LANE = 0))]
9731#[cfg_attr(
9732 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9733 assert_instr(udot, LANE = 0)
9734)]
9735#[rustc_legacy_const_generics(3)]
9736#[cfg_attr(
9737 not(target_arch = "arm"),
9738 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9739)]
9740#[cfg_attr(
9741 target_arch = "arm",
9742 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9743)]
9744pub fn vdot_lane_u32<const LANE: i32>(a: uint32x2_t, b: uint8x8_t, c: uint8x8_t) -> uint32x2_t {
9745 static_assert_uimm_bits!(LANE, 1);
9746 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
9747 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
9748 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
9749 unsafe {
9750 let c: uint32x2_t = transmute(c);
9751 let c: uint32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
9752 let ret_val: uint32x2_t = vdot_u32(a, b, transmute(c));
9753 simd_shuffle!(ret_val, ret_val, [1, 0])
9754 }
9755}
9756#[doc = "Dot product arithmetic (indexed)"]
9757#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdotq_lane_u32)"]
9758#[inline]
9759#[cfg(target_endian = "little")]
9760#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9761#[target_feature(enable = "neon,dotprod")]
9762#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vudot, LANE = 0))]
9763#[cfg_attr(
9764 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9765 assert_instr(udot, LANE = 0)
9766)]
9767#[rustc_legacy_const_generics(3)]
9768#[cfg_attr(
9769 not(target_arch = "arm"),
9770 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9771)]
9772#[cfg_attr(
9773 target_arch = "arm",
9774 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9775)]
9776pub fn vdotq_lane_u32<const LANE: i32>(a: uint32x4_t, b: uint8x16_t, c: uint8x8_t) -> uint32x4_t {
9777 static_assert_uimm_bits!(LANE, 1);
9778 unsafe {
9779 let c: uint32x2_t = transmute(c);
9780 let c: uint32x4_t =
9781 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
9782 vdotq_u32(a, b, transmute(c))
9783 }
9784}
9785#[doc = "Dot product arithmetic (indexed)"]
9786#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdotq_lane_u32)"]
9787#[inline]
9788#[cfg(target_endian = "big")]
9789#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9790#[target_feature(enable = "neon,dotprod")]
9791#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vudot, LANE = 0))]
9792#[cfg_attr(
9793 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9794 assert_instr(udot, LANE = 0)
9795)]
9796#[rustc_legacy_const_generics(3)]
9797#[cfg_attr(
9798 not(target_arch = "arm"),
9799 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9800)]
9801#[cfg_attr(
9802 target_arch = "arm",
9803 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9804)]
9805pub fn vdotq_lane_u32<const LANE: i32>(a: uint32x4_t, b: uint8x16_t, c: uint8x8_t) -> uint32x4_t {
9806 static_assert_uimm_bits!(LANE, 1);
9807 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
9808 let b: uint8x16_t =
9809 unsafe { simd_shuffle!(b, b, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
9810 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
9811 unsafe {
9812 let c: uint32x2_t = transmute(c);
9813 let c: uint32x4_t =
9814 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
9815 let ret_val: uint32x4_t = vdotq_u32(a, b, transmute(c));
9816 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
9817 }
9818}
9819#[doc = "Dot product arithmetic (vector)"]
9820#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdot_s32)"]
9821#[inline]
9822#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9823#[target_feature(enable = "neon,dotprod")]
9824#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsdot))]
9825#[cfg_attr(
9826 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9827 assert_instr(sdot)
9828)]
9829#[cfg_attr(
9830 not(target_arch = "arm"),
9831 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9832)]
9833#[cfg_attr(
9834 target_arch = "arm",
9835 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9836)]
9837pub fn vdot_s32(a: int32x2_t, b: int8x8_t, c: int8x8_t) -> int32x2_t {
9838 unsafe extern "unadjusted" {
9839 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sdot.v2i32.v8i8")]
9840 #[cfg_attr(
9841 any(target_arch = "aarch64", target_arch = "arm64ec"),
9842 link_name = "llvm.aarch64.neon.sdot.v2i32.v8i8"
9843 )]
9844 fn _vdot_s32(a: int32x2_t, b: int8x8_t, c: int8x8_t) -> int32x2_t;
9845 }
9846 unsafe { _vdot_s32(a, b, c) }
9847}
9848#[doc = "Dot product arithmetic (vector)"]
9849#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdotq_s32)"]
9850#[inline]
9851#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9852#[target_feature(enable = "neon,dotprod")]
9853#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsdot))]
9854#[cfg_attr(
9855 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9856 assert_instr(sdot)
9857)]
9858#[cfg_attr(
9859 not(target_arch = "arm"),
9860 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9861)]
9862#[cfg_attr(
9863 target_arch = "arm",
9864 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9865)]
9866pub fn vdotq_s32(a: int32x4_t, b: int8x16_t, c: int8x16_t) -> int32x4_t {
9867 unsafe extern "unadjusted" {
9868 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sdot.v4i32.v16i8")]
9869 #[cfg_attr(
9870 any(target_arch = "aarch64", target_arch = "arm64ec"),
9871 link_name = "llvm.aarch64.neon.sdot.v4i32.v16i8"
9872 )]
9873 fn _vdotq_s32(a: int32x4_t, b: int8x16_t, c: int8x16_t) -> int32x4_t;
9874 }
9875 unsafe { _vdotq_s32(a, b, c) }
9876}
9877#[doc = "Dot product arithmetic (vector)"]
9878#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdot_u32)"]
9879#[inline]
9880#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9881#[target_feature(enable = "neon,dotprod")]
9882#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vudot))]
9883#[cfg_attr(
9884 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9885 assert_instr(udot)
9886)]
9887#[cfg_attr(
9888 not(target_arch = "arm"),
9889 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9890)]
9891#[cfg_attr(
9892 target_arch = "arm",
9893 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9894)]
9895pub fn vdot_u32(a: uint32x2_t, b: uint8x8_t, c: uint8x8_t) -> uint32x2_t {
9896 unsafe extern "unadjusted" {
9897 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.udot.v2i32.v8i8")]
9898 #[cfg_attr(
9899 any(target_arch = "aarch64", target_arch = "arm64ec"),
9900 link_name = "llvm.aarch64.neon.udot.v2i32.v8i8"
9901 )]
9902 fn _vdot_u32(a: uint32x2_t, b: uint8x8_t, c: uint8x8_t) -> uint32x2_t;
9903 }
9904 unsafe { _vdot_u32(a, b, c) }
9905}
9906#[doc = "Dot product arithmetic (vector)"]
9907#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdotq_u32)"]
9908#[inline]
9909#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9910#[target_feature(enable = "neon,dotprod")]
9911#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vudot))]
9912#[cfg_attr(
9913 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9914 assert_instr(udot)
9915)]
9916#[cfg_attr(
9917 not(target_arch = "arm"),
9918 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
9919)]
9920#[cfg_attr(
9921 target_arch = "arm",
9922 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9923)]
9924pub fn vdotq_u32(a: uint32x4_t, b: uint8x16_t, c: uint8x16_t) -> uint32x4_t {
9925 unsafe extern "unadjusted" {
9926 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.udot.v4i32.v16i8")]
9927 #[cfg_attr(
9928 any(target_arch = "aarch64", target_arch = "arm64ec"),
9929 link_name = "llvm.aarch64.neon.udot.v4i32.v16i8"
9930 )]
9931 fn _vdotq_u32(a: uint32x4_t, b: uint8x16_t, c: uint8x16_t) -> uint32x4_t;
9932 }
9933 unsafe { _vdotq_u32(a, b, c) }
9934}
9935#[doc = "Set all vector lanes to the same value"]
9936#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_f16)"]
9937#[inline]
9938#[target_feature(enable = "neon")]
9939#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9940#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
9941#[cfg_attr(
9942 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9943 assert_instr(dup, N = 2)
9944)]
9945#[rustc_legacy_const_generics(1)]
9946#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
9947#[cfg_attr(
9948 not(target_arch = "arm"),
9949 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
9950)]
9951#[cfg_attr(
9952 target_arch = "arm",
9953 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9954)]
9955#[cfg(not(target_arch = "arm64ec"))]
9956pub fn vdup_lane_f16<const N: i32>(a: float16x4_t) -> float16x4_t {
9957 static_assert_uimm_bits!(N, 2);
9958 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
9959}
9960#[doc = "Set all vector lanes to the same value"]
9961#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_f16)"]
9962#[inline]
9963#[target_feature(enable = "neon")]
9964#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9965#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
9966#[cfg_attr(
9967 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9968 assert_instr(dup, N = 2)
9969)]
9970#[rustc_legacy_const_generics(1)]
9971#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
9972#[cfg_attr(
9973 not(target_arch = "arm"),
9974 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
9975)]
9976#[cfg_attr(
9977 target_arch = "arm",
9978 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
9979)]
9980#[cfg(not(target_arch = "arm64ec"))]
9981pub fn vdupq_lane_f16<const N: i32>(a: float16x4_t) -> float16x8_t {
9982 static_assert_uimm_bits!(N, 2);
9983 unsafe {
9984 simd_shuffle!(
9985 a,
9986 a,
9987 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
9988 )
9989 }
9990}
9991#[doc = "Set all vector lanes to the same value"]
9992#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_f32)"]
9993#[inline]
9994#[target_feature(enable = "neon")]
9995#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
9996#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
9997#[cfg_attr(
9998 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9999 assert_instr(dup, N = 1)
10000)]
10001#[rustc_legacy_const_generics(1)]
10002#[cfg_attr(
10003 not(target_arch = "arm"),
10004 stable(feature = "neon_intrinsics", since = "1.59.0")
10005)]
10006#[cfg_attr(
10007 target_arch = "arm",
10008 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10009)]
10010pub fn vdup_lane_f32<const N: i32>(a: float32x2_t) -> float32x2_t {
10011 static_assert_uimm_bits!(N, 1);
10012 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10013}
10014#[doc = "Set all vector lanes to the same value"]
10015#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_s32)"]
10016#[inline]
10017#[target_feature(enable = "neon")]
10018#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10019#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
10020#[cfg_attr(
10021 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10022 assert_instr(dup, N = 1)
10023)]
10024#[rustc_legacy_const_generics(1)]
10025#[cfg_attr(
10026 not(target_arch = "arm"),
10027 stable(feature = "neon_intrinsics", since = "1.59.0")
10028)]
10029#[cfg_attr(
10030 target_arch = "arm",
10031 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10032)]
10033pub fn vdup_lane_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
10034 static_assert_uimm_bits!(N, 1);
10035 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10036}
10037#[doc = "Set all vector lanes to the same value"]
10038#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_u32)"]
10039#[inline]
10040#[target_feature(enable = "neon")]
10041#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10042#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
10043#[cfg_attr(
10044 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10045 assert_instr(dup, N = 1)
10046)]
10047#[rustc_legacy_const_generics(1)]
10048#[cfg_attr(
10049 not(target_arch = "arm"),
10050 stable(feature = "neon_intrinsics", since = "1.59.0")
10051)]
10052#[cfg_attr(
10053 target_arch = "arm",
10054 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10055)]
10056pub fn vdup_lane_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
10057 static_assert_uimm_bits!(N, 1);
10058 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10059}
10060#[doc = "Set all vector lanes to the same value"]
10061#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_f32)"]
10062#[inline]
10063#[target_feature(enable = "neon")]
10064#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10065#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
10066#[cfg_attr(
10067 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10068 assert_instr(dup, N = 1)
10069)]
10070#[rustc_legacy_const_generics(1)]
10071#[cfg_attr(
10072 not(target_arch = "arm"),
10073 stable(feature = "neon_intrinsics", since = "1.59.0")
10074)]
10075#[cfg_attr(
10076 target_arch = "arm",
10077 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10078)]
10079pub fn vdupq_lane_f32<const N: i32>(a: float32x2_t) -> float32x4_t {
10080 static_assert_uimm_bits!(N, 1);
10081 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10082}
10083#[doc = "Set all vector lanes to the same value"]
10084#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_s32)"]
10085#[inline]
10086#[target_feature(enable = "neon")]
10087#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10088#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
10089#[cfg_attr(
10090 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10091 assert_instr(dup, N = 1)
10092)]
10093#[rustc_legacy_const_generics(1)]
10094#[cfg_attr(
10095 not(target_arch = "arm"),
10096 stable(feature = "neon_intrinsics", since = "1.59.0")
10097)]
10098#[cfg_attr(
10099 target_arch = "arm",
10100 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10101)]
10102pub fn vdupq_lane_s32<const N: i32>(a: int32x2_t) -> int32x4_t {
10103 static_assert_uimm_bits!(N, 1);
10104 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10105}
10106#[doc = "Set all vector lanes to the same value"]
10107#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_u32)"]
10108#[inline]
10109#[target_feature(enable = "neon")]
10110#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10111#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
10112#[cfg_attr(
10113 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10114 assert_instr(dup, N = 1)
10115)]
10116#[rustc_legacy_const_generics(1)]
10117#[cfg_attr(
10118 not(target_arch = "arm"),
10119 stable(feature = "neon_intrinsics", since = "1.59.0")
10120)]
10121#[cfg_attr(
10122 target_arch = "arm",
10123 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10124)]
10125pub fn vdupq_lane_u32<const N: i32>(a: uint32x2_t) -> uint32x4_t {
10126 static_assert_uimm_bits!(N, 1);
10127 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10128}
10129#[doc = "Set all vector lanes to the same value"]
10130#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_p16)"]
10131#[inline]
10132#[target_feature(enable = "neon")]
10133#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10134#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
10135#[cfg_attr(
10136 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10137 assert_instr(dup, N = 2)
10138)]
10139#[rustc_legacy_const_generics(1)]
10140#[cfg_attr(
10141 not(target_arch = "arm"),
10142 stable(feature = "neon_intrinsics", since = "1.59.0")
10143)]
10144#[cfg_attr(
10145 target_arch = "arm",
10146 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10147)]
10148pub fn vdup_lane_p16<const N: i32>(a: poly16x4_t) -> poly16x4_t {
10149 static_assert_uimm_bits!(N, 2);
10150 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10151}
10152#[doc = "Set all vector lanes to the same value"]
10153#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_s16)"]
10154#[inline]
10155#[target_feature(enable = "neon")]
10156#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10157#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
10158#[cfg_attr(
10159 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10160 assert_instr(dup, N = 2)
10161)]
10162#[rustc_legacy_const_generics(1)]
10163#[cfg_attr(
10164 not(target_arch = "arm"),
10165 stable(feature = "neon_intrinsics", since = "1.59.0")
10166)]
10167#[cfg_attr(
10168 target_arch = "arm",
10169 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10170)]
10171pub fn vdup_lane_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
10172 static_assert_uimm_bits!(N, 2);
10173 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10174}
10175#[doc = "Set all vector lanes to the same value"]
10176#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_u16)"]
10177#[inline]
10178#[target_feature(enable = "neon")]
10179#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10180#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
10181#[cfg_attr(
10182 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10183 assert_instr(dup, N = 2)
10184)]
10185#[rustc_legacy_const_generics(1)]
10186#[cfg_attr(
10187 not(target_arch = "arm"),
10188 stable(feature = "neon_intrinsics", since = "1.59.0")
10189)]
10190#[cfg_attr(
10191 target_arch = "arm",
10192 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10193)]
10194pub fn vdup_lane_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
10195 static_assert_uimm_bits!(N, 2);
10196 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10197}
10198#[doc = "Set all vector lanes to the same value"]
10199#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_p16)"]
10200#[inline]
10201#[target_feature(enable = "neon")]
10202#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10203#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
10204#[cfg_attr(
10205 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10206 assert_instr(dup, N = 2)
10207)]
10208#[rustc_legacy_const_generics(1)]
10209#[cfg_attr(
10210 not(target_arch = "arm"),
10211 stable(feature = "neon_intrinsics", since = "1.59.0")
10212)]
10213#[cfg_attr(
10214 target_arch = "arm",
10215 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10216)]
10217pub fn vdupq_lane_p16<const N: i32>(a: poly16x4_t) -> poly16x8_t {
10218 static_assert_uimm_bits!(N, 2);
10219 unsafe {
10220 simd_shuffle!(
10221 a,
10222 a,
10223 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10224 )
10225 }
10226}
10227#[doc = "Set all vector lanes to the same value"]
10228#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_s16)"]
10229#[inline]
10230#[target_feature(enable = "neon")]
10231#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10232#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
10233#[cfg_attr(
10234 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10235 assert_instr(dup, N = 2)
10236)]
10237#[rustc_legacy_const_generics(1)]
10238#[cfg_attr(
10239 not(target_arch = "arm"),
10240 stable(feature = "neon_intrinsics", since = "1.59.0")
10241)]
10242#[cfg_attr(
10243 target_arch = "arm",
10244 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10245)]
10246pub fn vdupq_lane_s16<const N: i32>(a: int16x4_t) -> int16x8_t {
10247 static_assert_uimm_bits!(N, 2);
10248 unsafe {
10249 simd_shuffle!(
10250 a,
10251 a,
10252 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10253 )
10254 }
10255}
10256#[doc = "Set all vector lanes to the same value"]
10257#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_u16)"]
10258#[inline]
10259#[target_feature(enable = "neon")]
10260#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10261#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
10262#[cfg_attr(
10263 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10264 assert_instr(dup, N = 2)
10265)]
10266#[rustc_legacy_const_generics(1)]
10267#[cfg_attr(
10268 not(target_arch = "arm"),
10269 stable(feature = "neon_intrinsics", since = "1.59.0")
10270)]
10271#[cfg_attr(
10272 target_arch = "arm",
10273 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10274)]
10275pub fn vdupq_lane_u16<const N: i32>(a: uint16x4_t) -> uint16x8_t {
10276 static_assert_uimm_bits!(N, 2);
10277 unsafe {
10278 simd_shuffle!(
10279 a,
10280 a,
10281 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10282 )
10283 }
10284}
10285#[doc = "Set all vector lanes to the same value"]
10286#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_p8)"]
10287#[inline]
10288#[target_feature(enable = "neon")]
10289#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10290#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
10291#[cfg_attr(
10292 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10293 assert_instr(dup, N = 4)
10294)]
10295#[rustc_legacy_const_generics(1)]
10296#[cfg_attr(
10297 not(target_arch = "arm"),
10298 stable(feature = "neon_intrinsics", since = "1.59.0")
10299)]
10300#[cfg_attr(
10301 target_arch = "arm",
10302 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10303)]
10304pub fn vdup_lane_p8<const N: i32>(a: poly8x8_t) -> poly8x8_t {
10305 static_assert_uimm_bits!(N, 3);
10306 unsafe {
10307 simd_shuffle!(
10308 a,
10309 a,
10310 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10311 )
10312 }
10313}
10314#[doc = "Set all vector lanes to the same value"]
10315#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_s8)"]
10316#[inline]
10317#[target_feature(enable = "neon")]
10318#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10319#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
10320#[cfg_attr(
10321 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10322 assert_instr(dup, N = 4)
10323)]
10324#[rustc_legacy_const_generics(1)]
10325#[cfg_attr(
10326 not(target_arch = "arm"),
10327 stable(feature = "neon_intrinsics", since = "1.59.0")
10328)]
10329#[cfg_attr(
10330 target_arch = "arm",
10331 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10332)]
10333pub fn vdup_lane_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
10334 static_assert_uimm_bits!(N, 3);
10335 unsafe {
10336 simd_shuffle!(
10337 a,
10338 a,
10339 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10340 )
10341 }
10342}
10343#[doc = "Set all vector lanes to the same value"]
10344#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_u8)"]
10345#[inline]
10346#[target_feature(enable = "neon")]
10347#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10348#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
10349#[cfg_attr(
10350 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10351 assert_instr(dup, N = 4)
10352)]
10353#[rustc_legacy_const_generics(1)]
10354#[cfg_attr(
10355 not(target_arch = "arm"),
10356 stable(feature = "neon_intrinsics", since = "1.59.0")
10357)]
10358#[cfg_attr(
10359 target_arch = "arm",
10360 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10361)]
10362pub fn vdup_lane_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
10363 static_assert_uimm_bits!(N, 3);
10364 unsafe {
10365 simd_shuffle!(
10366 a,
10367 a,
10368 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10369 )
10370 }
10371}
10372#[doc = "Set all vector lanes to the same value"]
10373#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_p8)"]
10374#[inline]
10375#[target_feature(enable = "neon")]
10376#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10377#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
10378#[cfg_attr(
10379 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10380 assert_instr(dup, N = 4)
10381)]
10382#[rustc_legacy_const_generics(1)]
10383#[cfg_attr(
10384 not(target_arch = "arm"),
10385 stable(feature = "neon_intrinsics", since = "1.59.0")
10386)]
10387#[cfg_attr(
10388 target_arch = "arm",
10389 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10390)]
10391pub fn vdupq_lane_p8<const N: i32>(a: poly8x8_t) -> poly8x16_t {
10392 static_assert_uimm_bits!(N, 3);
10393 unsafe {
10394 simd_shuffle!(
10395 a,
10396 a,
10397 [
10398 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32,
10399 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32
10400 ]
10401 )
10402 }
10403}
10404#[doc = "Set all vector lanes to the same value"]
10405#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_s8)"]
10406#[inline]
10407#[target_feature(enable = "neon")]
10408#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10409#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
10410#[cfg_attr(
10411 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10412 assert_instr(dup, N = 4)
10413)]
10414#[rustc_legacy_const_generics(1)]
10415#[cfg_attr(
10416 not(target_arch = "arm"),
10417 stable(feature = "neon_intrinsics", since = "1.59.0")
10418)]
10419#[cfg_attr(
10420 target_arch = "arm",
10421 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10422)]
10423pub fn vdupq_lane_s8<const N: i32>(a: int8x8_t) -> int8x16_t {
10424 static_assert_uimm_bits!(N, 3);
10425 unsafe {
10426 simd_shuffle!(
10427 a,
10428 a,
10429 [
10430 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32,
10431 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32
10432 ]
10433 )
10434 }
10435}
10436#[doc = "Set all vector lanes to the same value"]
10437#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_u8)"]
10438#[inline]
10439#[target_feature(enable = "neon")]
10440#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10441#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
10442#[cfg_attr(
10443 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10444 assert_instr(dup, N = 4)
10445)]
10446#[rustc_legacy_const_generics(1)]
10447#[cfg_attr(
10448 not(target_arch = "arm"),
10449 stable(feature = "neon_intrinsics", since = "1.59.0")
10450)]
10451#[cfg_attr(
10452 target_arch = "arm",
10453 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10454)]
10455pub fn vdupq_lane_u8<const N: i32>(a: uint8x8_t) -> uint8x16_t {
10456 static_assert_uimm_bits!(N, 3);
10457 unsafe {
10458 simd_shuffle!(
10459 a,
10460 a,
10461 [
10462 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32,
10463 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32
10464 ]
10465 )
10466 }
10467}
10468#[doc = "Set all vector lanes to the same value"]
10469#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_s64)"]
10470#[inline]
10471#[target_feature(enable = "neon")]
10472#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10473#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, N = 0))]
10474#[cfg_attr(
10475 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10476 assert_instr(nop, N = 0)
10477)]
10478#[rustc_legacy_const_generics(1)]
10479#[cfg_attr(
10480 not(target_arch = "arm"),
10481 stable(feature = "neon_intrinsics", since = "1.59.0")
10482)]
10483#[cfg_attr(
10484 target_arch = "arm",
10485 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10486)]
10487pub fn vdup_lane_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
10488 static_assert!(N == 0);
10489 a
10490}
10491#[doc = "Set all vector lanes to the same value"]
10492#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_u64)"]
10493#[inline]
10494#[target_feature(enable = "neon")]
10495#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10496#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, N = 0))]
10497#[cfg_attr(
10498 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10499 assert_instr(nop, N = 0)
10500)]
10501#[rustc_legacy_const_generics(1)]
10502#[cfg_attr(
10503 not(target_arch = "arm"),
10504 stable(feature = "neon_intrinsics", since = "1.59.0")
10505)]
10506#[cfg_attr(
10507 target_arch = "arm",
10508 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10509)]
10510pub fn vdup_lane_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
10511 static_assert!(N == 0);
10512 a
10513}
10514#[doc = "Set all vector lanes to the same value"]
10515#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_f16)"]
10516#[inline]
10517#[target_feature(enable = "neon")]
10518#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10519#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10520#[cfg_attr(
10521 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10522 assert_instr(dup, N = 4)
10523)]
10524#[rustc_legacy_const_generics(1)]
10525#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
10526#[cfg_attr(
10527 not(target_arch = "arm"),
10528 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
10529)]
10530#[cfg_attr(
10531 target_arch = "arm",
10532 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10533)]
10534#[cfg(not(target_arch = "arm64ec"))]
10535pub fn vdup_laneq_f16<const N: i32>(a: float16x8_t) -> float16x4_t {
10536 static_assert_uimm_bits!(N, 3);
10537 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10538}
10539#[doc = "Set all vector lanes to the same value"]
10540#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_f16)"]
10541#[inline]
10542#[target_feature(enable = "neon")]
10543#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10544#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10545#[cfg_attr(
10546 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10547 assert_instr(dup, N = 4)
10548)]
10549#[rustc_legacy_const_generics(1)]
10550#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
10551#[cfg_attr(
10552 not(target_arch = "arm"),
10553 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
10554)]
10555#[cfg_attr(
10556 target_arch = "arm",
10557 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10558)]
10559#[cfg(not(target_arch = "arm64ec"))]
10560pub fn vdupq_laneq_f16<const N: i32>(a: float16x8_t) -> float16x8_t {
10561 static_assert_uimm_bits!(N, 3);
10562 unsafe {
10563 simd_shuffle!(
10564 a,
10565 a,
10566 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10567 )
10568 }
10569}
10570#[doc = "Set all vector lanes to the same value"]
10571#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_f32)"]
10572#[inline]
10573#[target_feature(enable = "neon")]
10574#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10575#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10576#[cfg_attr(
10577 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10578 assert_instr(dup, N = 2)
10579)]
10580#[rustc_legacy_const_generics(1)]
10581#[cfg_attr(
10582 not(target_arch = "arm"),
10583 stable(feature = "neon_intrinsics", since = "1.59.0")
10584)]
10585#[cfg_attr(
10586 target_arch = "arm",
10587 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10588)]
10589pub fn vdup_laneq_f32<const N: i32>(a: float32x4_t) -> float32x2_t {
10590 static_assert_uimm_bits!(N, 2);
10591 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10592}
10593#[doc = "Set all vector lanes to the same value"]
10594#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_s32)"]
10595#[inline]
10596#[target_feature(enable = "neon")]
10597#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10598#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10599#[cfg_attr(
10600 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10601 assert_instr(dup, N = 2)
10602)]
10603#[rustc_legacy_const_generics(1)]
10604#[cfg_attr(
10605 not(target_arch = "arm"),
10606 stable(feature = "neon_intrinsics", since = "1.59.0")
10607)]
10608#[cfg_attr(
10609 target_arch = "arm",
10610 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10611)]
10612pub fn vdup_laneq_s32<const N: i32>(a: int32x4_t) -> int32x2_t {
10613 static_assert_uimm_bits!(N, 2);
10614 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10615}
10616#[doc = "Set all vector lanes to the same value"]
10617#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_u32)"]
10618#[inline]
10619#[target_feature(enable = "neon")]
10620#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10621#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10622#[cfg_attr(
10623 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10624 assert_instr(dup, N = 2)
10625)]
10626#[rustc_legacy_const_generics(1)]
10627#[cfg_attr(
10628 not(target_arch = "arm"),
10629 stable(feature = "neon_intrinsics", since = "1.59.0")
10630)]
10631#[cfg_attr(
10632 target_arch = "arm",
10633 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10634)]
10635pub fn vdup_laneq_u32<const N: i32>(a: uint32x4_t) -> uint32x2_t {
10636 static_assert_uimm_bits!(N, 2);
10637 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10638}
10639#[doc = "Set all vector lanes to the same value"]
10640#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_f32)"]
10641#[inline]
10642#[target_feature(enable = "neon")]
10643#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10644#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10645#[cfg_attr(
10646 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10647 assert_instr(dup, N = 2)
10648)]
10649#[rustc_legacy_const_generics(1)]
10650#[cfg_attr(
10651 not(target_arch = "arm"),
10652 stable(feature = "neon_intrinsics", since = "1.59.0")
10653)]
10654#[cfg_attr(
10655 target_arch = "arm",
10656 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10657)]
10658pub fn vdupq_laneq_f32<const N: i32>(a: float32x4_t) -> float32x4_t {
10659 static_assert_uimm_bits!(N, 2);
10660 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10661}
10662#[doc = "Set all vector lanes to the same value"]
10663#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_s32)"]
10664#[inline]
10665#[target_feature(enable = "neon")]
10666#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10667#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10668#[cfg_attr(
10669 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10670 assert_instr(dup, N = 2)
10671)]
10672#[rustc_legacy_const_generics(1)]
10673#[cfg_attr(
10674 not(target_arch = "arm"),
10675 stable(feature = "neon_intrinsics", since = "1.59.0")
10676)]
10677#[cfg_attr(
10678 target_arch = "arm",
10679 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10680)]
10681pub fn vdupq_laneq_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
10682 static_assert_uimm_bits!(N, 2);
10683 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10684}
10685#[doc = "Set all vector lanes to the same value"]
10686#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_u32)"]
10687#[inline]
10688#[target_feature(enable = "neon")]
10689#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10690#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10691#[cfg_attr(
10692 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10693 assert_instr(dup, N = 2)
10694)]
10695#[rustc_legacy_const_generics(1)]
10696#[cfg_attr(
10697 not(target_arch = "arm"),
10698 stable(feature = "neon_intrinsics", since = "1.59.0")
10699)]
10700#[cfg_attr(
10701 target_arch = "arm",
10702 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10703)]
10704pub fn vdupq_laneq_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
10705 static_assert_uimm_bits!(N, 2);
10706 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10707}
10708#[doc = "Set all vector lanes to the same value"]
10709#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_p16)"]
10710#[inline]
10711#[target_feature(enable = "neon")]
10712#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10713#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10714#[cfg_attr(
10715 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10716 assert_instr(dup, N = 4)
10717)]
10718#[rustc_legacy_const_generics(1)]
10719#[cfg_attr(
10720 not(target_arch = "arm"),
10721 stable(feature = "neon_intrinsics", since = "1.59.0")
10722)]
10723#[cfg_attr(
10724 target_arch = "arm",
10725 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10726)]
10727pub fn vdup_laneq_p16<const N: i32>(a: poly16x8_t) -> poly16x4_t {
10728 static_assert_uimm_bits!(N, 3);
10729 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10730}
10731#[doc = "Set all vector lanes to the same value"]
10732#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_s16)"]
10733#[inline]
10734#[target_feature(enable = "neon")]
10735#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10736#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10737#[cfg_attr(
10738 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10739 assert_instr(dup, N = 4)
10740)]
10741#[rustc_legacy_const_generics(1)]
10742#[cfg_attr(
10743 not(target_arch = "arm"),
10744 stable(feature = "neon_intrinsics", since = "1.59.0")
10745)]
10746#[cfg_attr(
10747 target_arch = "arm",
10748 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10749)]
10750pub fn vdup_laneq_s16<const N: i32>(a: int16x8_t) -> int16x4_t {
10751 static_assert_uimm_bits!(N, 3);
10752 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10753}
10754#[doc = "Set all vector lanes to the same value"]
10755#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_u16)"]
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("vdup.16", N = 4))]
10760#[cfg_attr(
10761 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10762 assert_instr(dup, N = 4)
10763)]
10764#[rustc_legacy_const_generics(1)]
10765#[cfg_attr(
10766 not(target_arch = "arm"),
10767 stable(feature = "neon_intrinsics", since = "1.59.0")
10768)]
10769#[cfg_attr(
10770 target_arch = "arm",
10771 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10772)]
10773pub fn vdup_laneq_u16<const N: i32>(a: uint16x8_t) -> uint16x4_t {
10774 static_assert_uimm_bits!(N, 3);
10775 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10776}
10777#[doc = "Set all vector lanes to the same value"]
10778#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_p16)"]
10779#[inline]
10780#[target_feature(enable = "neon")]
10781#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10782#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10783#[cfg_attr(
10784 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10785 assert_instr(dup, N = 4)
10786)]
10787#[rustc_legacy_const_generics(1)]
10788#[cfg_attr(
10789 not(target_arch = "arm"),
10790 stable(feature = "neon_intrinsics", since = "1.59.0")
10791)]
10792#[cfg_attr(
10793 target_arch = "arm",
10794 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10795)]
10796pub fn vdupq_laneq_p16<const N: i32>(a: poly16x8_t) -> poly16x8_t {
10797 static_assert_uimm_bits!(N, 3);
10798 unsafe {
10799 simd_shuffle!(
10800 a,
10801 a,
10802 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10803 )
10804 }
10805}
10806#[doc = "Set all vector lanes to the same value"]
10807#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_s16)"]
10808#[inline]
10809#[target_feature(enable = "neon")]
10810#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10811#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10812#[cfg_attr(
10813 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10814 assert_instr(dup, N = 4)
10815)]
10816#[rustc_legacy_const_generics(1)]
10817#[cfg_attr(
10818 not(target_arch = "arm"),
10819 stable(feature = "neon_intrinsics", since = "1.59.0")
10820)]
10821#[cfg_attr(
10822 target_arch = "arm",
10823 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10824)]
10825pub fn vdupq_laneq_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
10826 static_assert_uimm_bits!(N, 3);
10827 unsafe {
10828 simd_shuffle!(
10829 a,
10830 a,
10831 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10832 )
10833 }
10834}
10835#[doc = "Set all vector lanes to the same value"]
10836#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_u16)"]
10837#[inline]
10838#[target_feature(enable = "neon")]
10839#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10840#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10841#[cfg_attr(
10842 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10843 assert_instr(dup, N = 4)
10844)]
10845#[rustc_legacy_const_generics(1)]
10846#[cfg_attr(
10847 not(target_arch = "arm"),
10848 stable(feature = "neon_intrinsics", since = "1.59.0")
10849)]
10850#[cfg_attr(
10851 target_arch = "arm",
10852 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10853)]
10854pub fn vdupq_laneq_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
10855 static_assert_uimm_bits!(N, 3);
10856 unsafe {
10857 simd_shuffle!(
10858 a,
10859 a,
10860 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10861 )
10862 }
10863}
10864#[doc = "Set all vector lanes to the same value"]
10865#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_p8)"]
10866#[inline]
10867#[target_feature(enable = "neon")]
10868#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10869#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
10870#[cfg_attr(
10871 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10872 assert_instr(dup, N = 8)
10873)]
10874#[rustc_legacy_const_generics(1)]
10875#[cfg_attr(
10876 not(target_arch = "arm"),
10877 stable(feature = "neon_intrinsics", since = "1.59.0")
10878)]
10879#[cfg_attr(
10880 target_arch = "arm",
10881 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10882)]
10883pub fn vdup_laneq_p8<const N: i32>(a: poly8x16_t) -> poly8x8_t {
10884 static_assert_uimm_bits!(N, 4);
10885 unsafe {
10886 simd_shuffle!(
10887 a,
10888 a,
10889 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10890 )
10891 }
10892}
10893#[doc = "Set all vector lanes to the same value"]
10894#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_s8)"]
10895#[inline]
10896#[target_feature(enable = "neon")]
10897#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10898#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
10899#[cfg_attr(
10900 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10901 assert_instr(dup, N = 8)
10902)]
10903#[rustc_legacy_const_generics(1)]
10904#[cfg_attr(
10905 not(target_arch = "arm"),
10906 stable(feature = "neon_intrinsics", since = "1.59.0")
10907)]
10908#[cfg_attr(
10909 target_arch = "arm",
10910 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10911)]
10912pub fn vdup_laneq_s8<const N: i32>(a: int8x16_t) -> int8x8_t {
10913 static_assert_uimm_bits!(N, 4);
10914 unsafe {
10915 simd_shuffle!(
10916 a,
10917 a,
10918 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10919 )
10920 }
10921}
10922#[doc = "Set all vector lanes to the same value"]
10923#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_u8)"]
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", N = 8))]
10928#[cfg_attr(
10929 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10930 assert_instr(dup, N = 8)
10931)]
10932#[rustc_legacy_const_generics(1)]
10933#[cfg_attr(
10934 not(target_arch = "arm"),
10935 stable(feature = "neon_intrinsics", since = "1.59.0")
10936)]
10937#[cfg_attr(
10938 target_arch = "arm",
10939 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10940)]
10941pub fn vdup_laneq_u8<const N: i32>(a: uint8x16_t) -> uint8x8_t {
10942 static_assert_uimm_bits!(N, 4);
10943 unsafe {
10944 simd_shuffle!(
10945 a,
10946 a,
10947 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10948 )
10949 }
10950}
10951#[doc = "Set all vector lanes to the same value"]
10952#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_p8)"]
10953#[inline]
10954#[target_feature(enable = "neon")]
10955#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10956#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
10957#[cfg_attr(
10958 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10959 assert_instr(dup, N = 8)
10960)]
10961#[rustc_legacy_const_generics(1)]
10962#[cfg_attr(
10963 not(target_arch = "arm"),
10964 stable(feature = "neon_intrinsics", since = "1.59.0")
10965)]
10966#[cfg_attr(
10967 target_arch = "arm",
10968 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10969)]
10970pub fn vdupq_laneq_p8<const N: i32>(a: poly8x16_t) -> poly8x16_t {
10971 static_assert_uimm_bits!(N, 4);
10972 unsafe {
10973 simd_shuffle!(
10974 a,
10975 a,
10976 [
10977 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32,
10978 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32
10979 ]
10980 )
10981 }
10982}
10983#[doc = "Set all vector lanes to the same value"]
10984#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_s8)"]
10985#[inline]
10986#[target_feature(enable = "neon")]
10987#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10988#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
10989#[cfg_attr(
10990 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10991 assert_instr(dup, N = 8)
10992)]
10993#[rustc_legacy_const_generics(1)]
10994#[cfg_attr(
10995 not(target_arch = "arm"),
10996 stable(feature = "neon_intrinsics", since = "1.59.0")
10997)]
10998#[cfg_attr(
10999 target_arch = "arm",
11000 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11001)]
11002pub fn vdupq_laneq_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
11003 static_assert_uimm_bits!(N, 4);
11004 unsafe {
11005 simd_shuffle!(
11006 a,
11007 a,
11008 [
11009 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32,
11010 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32
11011 ]
11012 )
11013 }
11014}
11015#[doc = "Set all vector lanes to the same value"]
11016#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_u8)"]
11017#[inline]
11018#[target_feature(enable = "neon")]
11019#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11020#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
11021#[cfg_attr(
11022 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11023 assert_instr(dup, N = 8)
11024)]
11025#[rustc_legacy_const_generics(1)]
11026#[cfg_attr(
11027 not(target_arch = "arm"),
11028 stable(feature = "neon_intrinsics", since = "1.59.0")
11029)]
11030#[cfg_attr(
11031 target_arch = "arm",
11032 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11033)]
11034pub fn vdupq_laneq_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
11035 static_assert_uimm_bits!(N, 4);
11036 unsafe {
11037 simd_shuffle!(
11038 a,
11039 a,
11040 [
11041 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32,
11042 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32
11043 ]
11044 )
11045 }
11046}
11047#[doc = "Set all vector lanes to the same value"]
11048#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_s64)"]
11049#[inline]
11050#[target_feature(enable = "neon")]
11051#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11052#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
11053#[cfg_attr(
11054 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11055 assert_instr(nop, N = 1)
11056)]
11057#[rustc_legacy_const_generics(1)]
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)]
11066pub fn vdup_laneq_s64<const N: i32>(a: int64x2_t) -> int64x1_t {
11067 static_assert_uimm_bits!(N, 1);
11068 unsafe { transmute::<i64, _>(simd_extract!(a, N as u32)) }
11069}
11070#[doc = "Set all vector lanes to the same value"]
11071#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_u64)"]
11072#[inline]
11073#[target_feature(enable = "neon")]
11074#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11075#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
11076#[cfg_attr(
11077 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11078 assert_instr(nop, N = 1)
11079)]
11080#[rustc_legacy_const_generics(1)]
11081#[cfg_attr(
11082 not(target_arch = "arm"),
11083 stable(feature = "neon_intrinsics", since = "1.59.0")
11084)]
11085#[cfg_attr(
11086 target_arch = "arm",
11087 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11088)]
11089pub fn vdup_laneq_u64<const N: i32>(a: uint64x2_t) -> uint64x1_t {
11090 static_assert_uimm_bits!(N, 1);
11091 unsafe { transmute::<u64, _>(simd_extract!(a, N as u32)) }
11092}
11093#[doc = "Create a new vector with all lanes set to a value"]
11094#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_f16)"]
11095#[inline]
11096#[target_feature(enable = "neon")]
11097#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11098#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11099#[cfg_attr(
11100 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11101 assert_instr(dup)
11102)]
11103#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
11104#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
11105#[cfg(not(target_arch = "arm64ec"))]
11106pub fn vdup_n_f16(a: f16) -> float16x4_t {
11107 float16x4_t::splat(a)
11108}
11109#[doc = "Create a new vector with all lanes set to a value"]
11110#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_f16)"]
11111#[inline]
11112#[target_feature(enable = "neon")]
11113#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11114#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11115#[cfg_attr(
11116 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11117 assert_instr(dup)
11118)]
11119#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
11120#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
11121#[cfg(not(target_arch = "arm64ec"))]
11122pub fn vdupq_n_f16(a: f16) -> float16x8_t {
11123 float16x8_t::splat(a)
11124}
11125#[doc = "Duplicate vector element to vector or scalar"]
11126#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_f32)"]
11127#[inline]
11128#[target_feature(enable = "neon")]
11129#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11130#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11131#[cfg_attr(
11132 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11133 assert_instr(dup)
11134)]
11135#[cfg_attr(
11136 not(target_arch = "arm"),
11137 stable(feature = "neon_intrinsics", since = "1.59.0")
11138)]
11139#[cfg_attr(
11140 target_arch = "arm",
11141 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11142)]
11143pub fn vdup_n_f32(value: f32) -> float32x2_t {
11144 float32x2_t::splat(value)
11145}
11146#[doc = "Duplicate vector element to vector or scalar"]
11147#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_p16)"]
11148#[inline]
11149#[target_feature(enable = "neon")]
11150#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11151#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11152#[cfg_attr(
11153 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11154 assert_instr(dup)
11155)]
11156#[cfg_attr(
11157 not(target_arch = "arm"),
11158 stable(feature = "neon_intrinsics", since = "1.59.0")
11159)]
11160#[cfg_attr(
11161 target_arch = "arm",
11162 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11163)]
11164pub fn vdup_n_p16(value: p16) -> poly16x4_t {
11165 poly16x4_t::splat(value)
11166}
11167#[doc = "Duplicate vector element to vector or scalar"]
11168#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_p8)"]
11169#[inline]
11170#[target_feature(enable = "neon")]
11171#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11172#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
11173#[cfg_attr(
11174 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11175 assert_instr(dup)
11176)]
11177#[cfg_attr(
11178 not(target_arch = "arm"),
11179 stable(feature = "neon_intrinsics", since = "1.59.0")
11180)]
11181#[cfg_attr(
11182 target_arch = "arm",
11183 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11184)]
11185pub fn vdup_n_p8(value: p8) -> poly8x8_t {
11186 poly8x8_t::splat(value)
11187}
11188#[doc = "Duplicate vector element to vector or scalar"]
11189#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_s16)"]
11190#[inline]
11191#[target_feature(enable = "neon")]
11192#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11193#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11194#[cfg_attr(
11195 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11196 assert_instr(dup)
11197)]
11198#[cfg_attr(
11199 not(target_arch = "arm"),
11200 stable(feature = "neon_intrinsics", since = "1.59.0")
11201)]
11202#[cfg_attr(
11203 target_arch = "arm",
11204 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11205)]
11206pub fn vdup_n_s16(value: i16) -> int16x4_t {
11207 int16x4_t::splat(value)
11208}
11209#[doc = "Duplicate vector element to vector or scalar"]
11210#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_s32)"]
11211#[inline]
11212#[target_feature(enable = "neon")]
11213#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11214#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11215#[cfg_attr(
11216 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11217 assert_instr(dup)
11218)]
11219#[cfg_attr(
11220 not(target_arch = "arm"),
11221 stable(feature = "neon_intrinsics", since = "1.59.0")
11222)]
11223#[cfg_attr(
11224 target_arch = "arm",
11225 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11226)]
11227pub fn vdup_n_s32(value: i32) -> int32x2_t {
11228 int32x2_t::splat(value)
11229}
11230#[doc = "Duplicate vector element to vector or scalar"]
11231#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_s64)"]
11232#[inline]
11233#[target_feature(enable = "neon")]
11234#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11235#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
11236#[cfg_attr(
11237 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11238 assert_instr(fmov)
11239)]
11240#[cfg_attr(
11241 not(target_arch = "arm"),
11242 stable(feature = "neon_intrinsics", since = "1.59.0")
11243)]
11244#[cfg_attr(
11245 target_arch = "arm",
11246 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11247)]
11248pub fn vdup_n_s64(value: i64) -> int64x1_t {
11249 int64x1_t::splat(value)
11250}
11251#[doc = "Duplicate vector element to vector or scalar"]
11252#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_s8)"]
11253#[inline]
11254#[target_feature(enable = "neon")]
11255#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11256#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
11257#[cfg_attr(
11258 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11259 assert_instr(dup)
11260)]
11261#[cfg_attr(
11262 not(target_arch = "arm"),
11263 stable(feature = "neon_intrinsics", since = "1.59.0")
11264)]
11265#[cfg_attr(
11266 target_arch = "arm",
11267 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11268)]
11269pub fn vdup_n_s8(value: i8) -> int8x8_t {
11270 int8x8_t::splat(value)
11271}
11272#[doc = "Duplicate vector element to vector or scalar"]
11273#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_u16)"]
11274#[inline]
11275#[target_feature(enable = "neon")]
11276#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11277#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11278#[cfg_attr(
11279 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11280 assert_instr(dup)
11281)]
11282#[cfg_attr(
11283 not(target_arch = "arm"),
11284 stable(feature = "neon_intrinsics", since = "1.59.0")
11285)]
11286#[cfg_attr(
11287 target_arch = "arm",
11288 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11289)]
11290pub fn vdup_n_u16(value: u16) -> uint16x4_t {
11291 uint16x4_t::splat(value)
11292}
11293#[doc = "Duplicate vector element to vector or scalar"]
11294#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_u32)"]
11295#[inline]
11296#[target_feature(enable = "neon")]
11297#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11298#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11299#[cfg_attr(
11300 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11301 assert_instr(dup)
11302)]
11303#[cfg_attr(
11304 not(target_arch = "arm"),
11305 stable(feature = "neon_intrinsics", since = "1.59.0")
11306)]
11307#[cfg_attr(
11308 target_arch = "arm",
11309 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11310)]
11311pub fn vdup_n_u32(value: u32) -> uint32x2_t {
11312 uint32x2_t::splat(value)
11313}
11314#[doc = "Duplicate vector element to vector or scalar"]
11315#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_u64)"]
11316#[inline]
11317#[target_feature(enable = "neon")]
11318#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11319#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
11320#[cfg_attr(
11321 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11322 assert_instr(fmov)
11323)]
11324#[cfg_attr(
11325 not(target_arch = "arm"),
11326 stable(feature = "neon_intrinsics", since = "1.59.0")
11327)]
11328#[cfg_attr(
11329 target_arch = "arm",
11330 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11331)]
11332pub fn vdup_n_u64(value: u64) -> uint64x1_t {
11333 uint64x1_t::splat(value)
11334}
11335#[doc = "Duplicate vector element to vector or scalar"]
11336#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_u8)"]
11337#[inline]
11338#[target_feature(enable = "neon")]
11339#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11340#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
11341#[cfg_attr(
11342 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11343 assert_instr(dup)
11344)]
11345#[cfg_attr(
11346 not(target_arch = "arm"),
11347 stable(feature = "neon_intrinsics", since = "1.59.0")
11348)]
11349#[cfg_attr(
11350 target_arch = "arm",
11351 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11352)]
11353pub fn vdup_n_u8(value: u8) -> uint8x8_t {
11354 uint8x8_t::splat(value)
11355}
11356#[doc = "Duplicate vector element to vector or scalar"]
11357#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_f32)"]
11358#[inline]
11359#[target_feature(enable = "neon")]
11360#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11361#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11362#[cfg_attr(
11363 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11364 assert_instr(dup)
11365)]
11366#[cfg_attr(
11367 not(target_arch = "arm"),
11368 stable(feature = "neon_intrinsics", since = "1.59.0")
11369)]
11370#[cfg_attr(
11371 target_arch = "arm",
11372 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11373)]
11374pub fn vdupq_n_f32(value: f32) -> float32x4_t {
11375 float32x4_t::splat(value)
11376}
11377#[doc = "Duplicate vector element to vector or scalar"]
11378#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_p16)"]
11379#[inline]
11380#[target_feature(enable = "neon")]
11381#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11382#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11383#[cfg_attr(
11384 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11385 assert_instr(dup)
11386)]
11387#[cfg_attr(
11388 not(target_arch = "arm"),
11389 stable(feature = "neon_intrinsics", since = "1.59.0")
11390)]
11391#[cfg_attr(
11392 target_arch = "arm",
11393 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11394)]
11395pub fn vdupq_n_p16(value: p16) -> poly16x8_t {
11396 poly16x8_t::splat(value)
11397}
11398#[doc = "Duplicate vector element to vector or scalar"]
11399#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_p8)"]
11400#[inline]
11401#[target_feature(enable = "neon")]
11402#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11403#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
11404#[cfg_attr(
11405 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11406 assert_instr(dup)
11407)]
11408#[cfg_attr(
11409 not(target_arch = "arm"),
11410 stable(feature = "neon_intrinsics", since = "1.59.0")
11411)]
11412#[cfg_attr(
11413 target_arch = "arm",
11414 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11415)]
11416pub fn vdupq_n_p8(value: p8) -> poly8x16_t {
11417 poly8x16_t::splat(value)
11418}
11419#[doc = "Duplicate vector element to vector or scalar"]
11420#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_s16)"]
11421#[inline]
11422#[target_feature(enable = "neon")]
11423#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11424#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11425#[cfg_attr(
11426 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11427 assert_instr(dup)
11428)]
11429#[cfg_attr(
11430 not(target_arch = "arm"),
11431 stable(feature = "neon_intrinsics", since = "1.59.0")
11432)]
11433#[cfg_attr(
11434 target_arch = "arm",
11435 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11436)]
11437pub fn vdupq_n_s16(value: i16) -> int16x8_t {
11438 int16x8_t::splat(value)
11439}
11440#[doc = "Duplicate vector element to vector or scalar"]
11441#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_s32)"]
11442#[inline]
11443#[target_feature(enable = "neon")]
11444#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11445#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11446#[cfg_attr(
11447 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11448 assert_instr(dup)
11449)]
11450#[cfg_attr(
11451 not(target_arch = "arm"),
11452 stable(feature = "neon_intrinsics", since = "1.59.0")
11453)]
11454#[cfg_attr(
11455 target_arch = "arm",
11456 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11457)]
11458pub fn vdupq_n_s32(value: i32) -> int32x4_t {
11459 int32x4_t::splat(value)
11460}
11461#[doc = "Duplicate vector element to vector or scalar"]
11462#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_s64)"]
11463#[inline]
11464#[target_feature(enable = "neon")]
11465#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11466#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
11467#[cfg_attr(
11468 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11469 assert_instr(dup)
11470)]
11471#[cfg_attr(
11472 not(target_arch = "arm"),
11473 stable(feature = "neon_intrinsics", since = "1.59.0")
11474)]
11475#[cfg_attr(
11476 target_arch = "arm",
11477 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11478)]
11479pub fn vdupq_n_s64(value: i64) -> int64x2_t {
11480 int64x2_t::splat(value)
11481}
11482#[doc = "Duplicate vector element to vector or scalar"]
11483#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_s8)"]
11484#[inline]
11485#[target_feature(enable = "neon")]
11486#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11487#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
11488#[cfg_attr(
11489 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11490 assert_instr(dup)
11491)]
11492#[cfg_attr(
11493 not(target_arch = "arm"),
11494 stable(feature = "neon_intrinsics", since = "1.59.0")
11495)]
11496#[cfg_attr(
11497 target_arch = "arm",
11498 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11499)]
11500pub fn vdupq_n_s8(value: i8) -> int8x16_t {
11501 int8x16_t::splat(value)
11502}
11503#[doc = "Duplicate vector element to vector or scalar"]
11504#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_u16)"]
11505#[inline]
11506#[target_feature(enable = "neon")]
11507#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11508#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11509#[cfg_attr(
11510 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11511 assert_instr(dup)
11512)]
11513#[cfg_attr(
11514 not(target_arch = "arm"),
11515 stable(feature = "neon_intrinsics", since = "1.59.0")
11516)]
11517#[cfg_attr(
11518 target_arch = "arm",
11519 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11520)]
11521pub fn vdupq_n_u16(value: u16) -> uint16x8_t {
11522 uint16x8_t::splat(value)
11523}
11524#[doc = "Duplicate vector element to vector or scalar"]
11525#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_u32)"]
11526#[inline]
11527#[target_feature(enable = "neon")]
11528#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11529#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11530#[cfg_attr(
11531 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11532 assert_instr(dup)
11533)]
11534#[cfg_attr(
11535 not(target_arch = "arm"),
11536 stable(feature = "neon_intrinsics", since = "1.59.0")
11537)]
11538#[cfg_attr(
11539 target_arch = "arm",
11540 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11541)]
11542pub fn vdupq_n_u32(value: u32) -> uint32x4_t {
11543 uint32x4_t::splat(value)
11544}
11545#[doc = "Duplicate vector element to vector or scalar"]
11546#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_u64)"]
11547#[inline]
11548#[target_feature(enable = "neon")]
11549#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11550#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
11551#[cfg_attr(
11552 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11553 assert_instr(dup)
11554)]
11555#[cfg_attr(
11556 not(target_arch = "arm"),
11557 stable(feature = "neon_intrinsics", since = "1.59.0")
11558)]
11559#[cfg_attr(
11560 target_arch = "arm",
11561 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11562)]
11563pub fn vdupq_n_u64(value: u64) -> uint64x2_t {
11564 uint64x2_t::splat(value)
11565}
11566#[doc = "Duplicate vector element to vector or scalar"]
11567#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_u8)"]
11568#[inline]
11569#[target_feature(enable = "neon")]
11570#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11571#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
11572#[cfg_attr(
11573 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11574 assert_instr(dup)
11575)]
11576#[cfg_attr(
11577 not(target_arch = "arm"),
11578 stable(feature = "neon_intrinsics", since = "1.59.0")
11579)]
11580#[cfg_attr(
11581 target_arch = "arm",
11582 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11583)]
11584pub fn vdupq_n_u8(value: u8) -> uint8x16_t {
11585 uint8x16_t::splat(value)
11586}
11587#[doc = "Duplicate vector element to vector or scalar"]
11588#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_f32_vfp4)"]
11589#[inline]
11590#[target_feature(enable = "neon")]
11591#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
11592#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11593#[cfg_attr(
11594 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11595 assert_instr(dup)
11596)]
11597#[cfg_attr(
11598 not(target_arch = "arm"),
11599 stable(feature = "neon_intrinsics", since = "1.59.0")
11600)]
11601#[cfg_attr(
11602 target_arch = "arm",
11603 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11604)]
11605fn vdup_n_f32_vfp4(value: f32) -> float32x2_t {
11606 float32x2_t::splat(value)
11607}
11608#[doc = "Duplicate vector element to vector or scalar"]
11609#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_f32_vfp4)"]
11610#[inline]
11611#[target_feature(enable = "neon")]
11612#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
11613#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11614#[cfg_attr(
11615 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11616 assert_instr(dup)
11617)]
11618#[cfg_attr(
11619 not(target_arch = "arm"),
11620 stable(feature = "neon_intrinsics", since = "1.59.0")
11621)]
11622#[cfg_attr(
11623 target_arch = "arm",
11624 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11625)]
11626fn vdupq_n_f32_vfp4(value: f32) -> float32x4_t {
11627 float32x4_t::splat(value)
11628}
11629#[doc = "Set all vector lanes to the same value"]
11630#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_s64)"]
11631#[inline]
11632#[target_feature(enable = "neon")]
11633#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11634#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 0))]
11635#[cfg_attr(
11636 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11637 assert_instr(dup, N = 0)
11638)]
11639#[rustc_legacy_const_generics(1)]
11640#[cfg_attr(
11641 not(target_arch = "arm"),
11642 stable(feature = "neon_intrinsics", since = "1.59.0")
11643)]
11644#[cfg_attr(
11645 target_arch = "arm",
11646 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11647)]
11648pub fn vdupq_lane_s64<const N: i32>(a: int64x1_t) -> int64x2_t {
11649 static_assert!(N == 0);
11650 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
11651}
11652#[doc = "Set all vector lanes to the same value"]
11653#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_u64)"]
11654#[inline]
11655#[target_feature(enable = "neon")]
11656#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11657#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 0))]
11658#[cfg_attr(
11659 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11660 assert_instr(dup, N = 0)
11661)]
11662#[rustc_legacy_const_generics(1)]
11663#[cfg_attr(
11664 not(target_arch = "arm"),
11665 stable(feature = "neon_intrinsics", since = "1.59.0")
11666)]
11667#[cfg_attr(
11668 target_arch = "arm",
11669 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11670)]
11671pub fn vdupq_lane_u64<const N: i32>(a: uint64x1_t) -> uint64x2_t {
11672 static_assert!(N == 0);
11673 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
11674}
11675#[doc = "Set all vector lanes to the same value"]
11676#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_s64)"]
11677#[inline]
11678#[target_feature(enable = "neon")]
11679#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11680#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
11681#[cfg_attr(
11682 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11683 assert_instr(dup, N = 1)
11684)]
11685#[rustc_legacy_const_generics(1)]
11686#[cfg_attr(
11687 not(target_arch = "arm"),
11688 stable(feature = "neon_intrinsics", since = "1.59.0")
11689)]
11690#[cfg_attr(
11691 target_arch = "arm",
11692 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11693)]
11694pub fn vdupq_laneq_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
11695 static_assert_uimm_bits!(N, 1);
11696 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
11697}
11698#[doc = "Set all vector lanes to the same value"]
11699#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_u64)"]
11700#[inline]
11701#[target_feature(enable = "neon")]
11702#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11703#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
11704#[cfg_attr(
11705 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11706 assert_instr(dup, N = 1)
11707)]
11708#[rustc_legacy_const_generics(1)]
11709#[cfg_attr(
11710 not(target_arch = "arm"),
11711 stable(feature = "neon_intrinsics", since = "1.59.0")
11712)]
11713#[cfg_attr(
11714 target_arch = "arm",
11715 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11716)]
11717pub fn vdupq_laneq_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
11718 static_assert_uimm_bits!(N, 1);
11719 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
11720}
11721#[doc = "Vector bitwise exclusive or (vector)"]
11722#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_s8)"]
11723#[inline]
11724#[target_feature(enable = "neon")]
11725#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11726#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11727#[cfg_attr(
11728 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11729 assert_instr(eor)
11730)]
11731#[cfg_attr(
11732 not(target_arch = "arm"),
11733 stable(feature = "neon_intrinsics", since = "1.59.0")
11734)]
11735#[cfg_attr(
11736 target_arch = "arm",
11737 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11738)]
11739pub fn veor_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
11740 unsafe { simd_xor(a, b) }
11741}
11742#[doc = "Vector bitwise exclusive or (vector)"]
11743#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_s8)"]
11744#[inline]
11745#[target_feature(enable = "neon")]
11746#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11747#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11748#[cfg_attr(
11749 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11750 assert_instr(eor)
11751)]
11752#[cfg_attr(
11753 not(target_arch = "arm"),
11754 stable(feature = "neon_intrinsics", since = "1.59.0")
11755)]
11756#[cfg_attr(
11757 target_arch = "arm",
11758 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11759)]
11760pub fn veorq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
11761 unsafe { simd_xor(a, b) }
11762}
11763#[doc = "Vector bitwise exclusive or (vector)"]
11764#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_s16)"]
11765#[inline]
11766#[target_feature(enable = "neon")]
11767#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11768#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11769#[cfg_attr(
11770 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11771 assert_instr(eor)
11772)]
11773#[cfg_attr(
11774 not(target_arch = "arm"),
11775 stable(feature = "neon_intrinsics", since = "1.59.0")
11776)]
11777#[cfg_attr(
11778 target_arch = "arm",
11779 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11780)]
11781pub fn veor_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
11782 unsafe { simd_xor(a, b) }
11783}
11784#[doc = "Vector bitwise exclusive or (vector)"]
11785#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_s16)"]
11786#[inline]
11787#[target_feature(enable = "neon")]
11788#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11789#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11790#[cfg_attr(
11791 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11792 assert_instr(eor)
11793)]
11794#[cfg_attr(
11795 not(target_arch = "arm"),
11796 stable(feature = "neon_intrinsics", since = "1.59.0")
11797)]
11798#[cfg_attr(
11799 target_arch = "arm",
11800 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11801)]
11802pub fn veorq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
11803 unsafe { simd_xor(a, b) }
11804}
11805#[doc = "Vector bitwise exclusive or (vector)"]
11806#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_s32)"]
11807#[inline]
11808#[target_feature(enable = "neon")]
11809#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11810#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11811#[cfg_attr(
11812 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11813 assert_instr(eor)
11814)]
11815#[cfg_attr(
11816 not(target_arch = "arm"),
11817 stable(feature = "neon_intrinsics", since = "1.59.0")
11818)]
11819#[cfg_attr(
11820 target_arch = "arm",
11821 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11822)]
11823pub fn veor_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
11824 unsafe { simd_xor(a, b) }
11825}
11826#[doc = "Vector bitwise exclusive or (vector)"]
11827#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_s32)"]
11828#[inline]
11829#[target_feature(enable = "neon")]
11830#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11831#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11832#[cfg_attr(
11833 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11834 assert_instr(eor)
11835)]
11836#[cfg_attr(
11837 not(target_arch = "arm"),
11838 stable(feature = "neon_intrinsics", since = "1.59.0")
11839)]
11840#[cfg_attr(
11841 target_arch = "arm",
11842 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11843)]
11844pub fn veorq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
11845 unsafe { simd_xor(a, b) }
11846}
11847#[doc = "Vector bitwise exclusive or (vector)"]
11848#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_s64)"]
11849#[inline]
11850#[target_feature(enable = "neon")]
11851#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11852#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11853#[cfg_attr(
11854 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11855 assert_instr(eor)
11856)]
11857#[cfg_attr(
11858 not(target_arch = "arm"),
11859 stable(feature = "neon_intrinsics", since = "1.59.0")
11860)]
11861#[cfg_attr(
11862 target_arch = "arm",
11863 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11864)]
11865pub fn veor_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
11866 unsafe { simd_xor(a, b) }
11867}
11868#[doc = "Vector bitwise exclusive or (vector)"]
11869#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_s64)"]
11870#[inline]
11871#[target_feature(enable = "neon")]
11872#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11873#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11874#[cfg_attr(
11875 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11876 assert_instr(eor)
11877)]
11878#[cfg_attr(
11879 not(target_arch = "arm"),
11880 stable(feature = "neon_intrinsics", since = "1.59.0")
11881)]
11882#[cfg_attr(
11883 target_arch = "arm",
11884 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11885)]
11886pub fn veorq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
11887 unsafe { simd_xor(a, b) }
11888}
11889#[doc = "Vector bitwise exclusive or (vector)"]
11890#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_u8)"]
11891#[inline]
11892#[target_feature(enable = "neon")]
11893#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11894#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11895#[cfg_attr(
11896 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11897 assert_instr(eor)
11898)]
11899#[cfg_attr(
11900 not(target_arch = "arm"),
11901 stable(feature = "neon_intrinsics", since = "1.59.0")
11902)]
11903#[cfg_attr(
11904 target_arch = "arm",
11905 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11906)]
11907pub fn veor_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
11908 unsafe { simd_xor(a, b) }
11909}
11910#[doc = "Vector bitwise exclusive or (vector)"]
11911#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_u8)"]
11912#[inline]
11913#[target_feature(enable = "neon")]
11914#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11915#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11916#[cfg_attr(
11917 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11918 assert_instr(eor)
11919)]
11920#[cfg_attr(
11921 not(target_arch = "arm"),
11922 stable(feature = "neon_intrinsics", since = "1.59.0")
11923)]
11924#[cfg_attr(
11925 target_arch = "arm",
11926 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11927)]
11928pub fn veorq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
11929 unsafe { simd_xor(a, b) }
11930}
11931#[doc = "Vector bitwise exclusive or (vector)"]
11932#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_u16)"]
11933#[inline]
11934#[target_feature(enable = "neon")]
11935#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11936#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11937#[cfg_attr(
11938 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11939 assert_instr(eor)
11940)]
11941#[cfg_attr(
11942 not(target_arch = "arm"),
11943 stable(feature = "neon_intrinsics", since = "1.59.0")
11944)]
11945#[cfg_attr(
11946 target_arch = "arm",
11947 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11948)]
11949pub fn veor_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
11950 unsafe { simd_xor(a, b) }
11951}
11952#[doc = "Vector bitwise exclusive or (vector)"]
11953#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_u16)"]
11954#[inline]
11955#[target_feature(enable = "neon")]
11956#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11957#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11958#[cfg_attr(
11959 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11960 assert_instr(eor)
11961)]
11962#[cfg_attr(
11963 not(target_arch = "arm"),
11964 stable(feature = "neon_intrinsics", since = "1.59.0")
11965)]
11966#[cfg_attr(
11967 target_arch = "arm",
11968 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11969)]
11970pub fn veorq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
11971 unsafe { simd_xor(a, b) }
11972}
11973#[doc = "Vector bitwise exclusive or (vector)"]
11974#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_u32)"]
11975#[inline]
11976#[target_feature(enable = "neon")]
11977#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11978#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11979#[cfg_attr(
11980 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11981 assert_instr(eor)
11982)]
11983#[cfg_attr(
11984 not(target_arch = "arm"),
11985 stable(feature = "neon_intrinsics", since = "1.59.0")
11986)]
11987#[cfg_attr(
11988 target_arch = "arm",
11989 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11990)]
11991pub fn veor_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
11992 unsafe { simd_xor(a, b) }
11993}
11994#[doc = "Vector bitwise exclusive or (vector)"]
11995#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_u32)"]
11996#[inline]
11997#[target_feature(enable = "neon")]
11998#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11999#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12000#[cfg_attr(
12001 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12002 assert_instr(eor)
12003)]
12004#[cfg_attr(
12005 not(target_arch = "arm"),
12006 stable(feature = "neon_intrinsics", since = "1.59.0")
12007)]
12008#[cfg_attr(
12009 target_arch = "arm",
12010 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12011)]
12012pub fn veorq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
12013 unsafe { simd_xor(a, b) }
12014}
12015#[doc = "Vector bitwise exclusive or (vector)"]
12016#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_u64)"]
12017#[inline]
12018#[target_feature(enable = "neon")]
12019#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12020#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12021#[cfg_attr(
12022 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12023 assert_instr(eor)
12024)]
12025#[cfg_attr(
12026 not(target_arch = "arm"),
12027 stable(feature = "neon_intrinsics", since = "1.59.0")
12028)]
12029#[cfg_attr(
12030 target_arch = "arm",
12031 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12032)]
12033pub fn veor_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
12034 unsafe { simd_xor(a, b) }
12035}
12036#[doc = "Vector bitwise exclusive or (vector)"]
12037#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_u64)"]
12038#[inline]
12039#[target_feature(enable = "neon")]
12040#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12041#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12042#[cfg_attr(
12043 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12044 assert_instr(eor)
12045)]
12046#[cfg_attr(
12047 not(target_arch = "arm"),
12048 stable(feature = "neon_intrinsics", since = "1.59.0")
12049)]
12050#[cfg_attr(
12051 target_arch = "arm",
12052 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12053)]
12054pub fn veorq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
12055 unsafe { simd_xor(a, b) }
12056}
12057#[doc = "Extract vector from pair of vectors"]
12058#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_f16)"]
12059#[inline]
12060#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12061#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12062#[cfg_attr(
12063 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12064 assert_instr(ext, N = 3)
12065)]
12066#[rustc_legacy_const_generics(2)]
12067#[target_feature(enable = "neon,fp16")]
12068#[cfg_attr(
12069 not(target_arch = "arm"),
12070 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
12071)]
12072#[cfg_attr(
12073 target_arch = "arm",
12074 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12075)]
12076#[cfg(not(target_arch = "arm64ec"))]
12077pub fn vext_f16<const N: i32>(a: float16x4_t, b: float16x4_t) -> float16x4_t {
12078 static_assert_uimm_bits!(N, 2);
12079 unsafe {
12080 match N & 0b11 {
12081 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12082 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12083 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12084 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12085 _ => unreachable_unchecked(),
12086 }
12087 }
12088}
12089#[doc = "Extract vector from pair of vectors"]
12090#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_f32)"]
12091#[inline]
12092#[target_feature(enable = "neon")]
12093#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12094#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 1))]
12095#[cfg_attr(
12096 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12097 assert_instr(ext, N = 1)
12098)]
12099#[rustc_legacy_const_generics(2)]
12100#[cfg_attr(
12101 not(target_arch = "arm"),
12102 stable(feature = "neon_intrinsics", since = "1.59.0")
12103)]
12104#[cfg_attr(
12105 target_arch = "arm",
12106 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12107)]
12108pub fn vext_f32<const N: i32>(a: float32x2_t, b: float32x2_t) -> float32x2_t {
12109 static_assert_uimm_bits!(N, 1);
12110 unsafe {
12111 match N & 0b1 {
12112 0 => simd_shuffle!(a, b, [0, 1]),
12113 1 => simd_shuffle!(a, b, [1, 2]),
12114 _ => unreachable_unchecked(),
12115 }
12116 }
12117}
12118#[doc = "Extract vector from pair of vectors"]
12119#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_s32)"]
12120#[inline]
12121#[target_feature(enable = "neon")]
12122#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12123#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 1))]
12124#[cfg_attr(
12125 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12126 assert_instr(ext, N = 1)
12127)]
12128#[rustc_legacy_const_generics(2)]
12129#[cfg_attr(
12130 not(target_arch = "arm"),
12131 stable(feature = "neon_intrinsics", since = "1.59.0")
12132)]
12133#[cfg_attr(
12134 target_arch = "arm",
12135 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12136)]
12137pub fn vext_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
12138 static_assert_uimm_bits!(N, 1);
12139 unsafe {
12140 match N & 0b1 {
12141 0 => simd_shuffle!(a, b, [0, 1]),
12142 1 => simd_shuffle!(a, b, [1, 2]),
12143 _ => unreachable_unchecked(),
12144 }
12145 }
12146}
12147#[doc = "Extract vector from pair of vectors"]
12148#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_u32)"]
12149#[inline]
12150#[target_feature(enable = "neon")]
12151#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12152#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 1))]
12153#[cfg_attr(
12154 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12155 assert_instr(ext, N = 1)
12156)]
12157#[rustc_legacy_const_generics(2)]
12158#[cfg_attr(
12159 not(target_arch = "arm"),
12160 stable(feature = "neon_intrinsics", since = "1.59.0")
12161)]
12162#[cfg_attr(
12163 target_arch = "arm",
12164 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12165)]
12166pub fn vext_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
12167 static_assert_uimm_bits!(N, 1);
12168 unsafe {
12169 match N & 0b1 {
12170 0 => simd_shuffle!(a, b, [0, 1]),
12171 1 => simd_shuffle!(a, b, [1, 2]),
12172 _ => unreachable_unchecked(),
12173 }
12174 }
12175}
12176#[doc = "Extract vector from pair of vectors"]
12177#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_s64)"]
12178#[doc = "## Safety"]
12179#[doc = " * Neon instrinsic unsafe"]
12180#[inline]
12181#[target_feature(enable = "neon")]
12182#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12183#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, N = 0))]
12184#[cfg_attr(
12185 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12186 assert_instr(nop, N = 0)
12187)]
12188#[rustc_legacy_const_generics(2)]
12189#[cfg_attr(
12190 not(target_arch = "arm"),
12191 stable(feature = "neon_intrinsics", since = "1.59.0")
12192)]
12193#[cfg_attr(
12194 target_arch = "arm",
12195 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12196)]
12197pub unsafe fn vext_s64<const N: i32>(a: int64x1_t, _b: int64x1_t) -> int64x1_t {
12198 static_assert!(N == 0);
12199 a
12200}
12201#[doc = "Extract vector from pair of vectors"]
12202#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_u64)"]
12203#[doc = "## Safety"]
12204#[doc = " * Neon instrinsic unsafe"]
12205#[inline]
12206#[target_feature(enable = "neon")]
12207#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12208#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, N = 0))]
12209#[cfg_attr(
12210 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12211 assert_instr(nop, N = 0)
12212)]
12213#[rustc_legacy_const_generics(2)]
12214#[cfg_attr(
12215 not(target_arch = "arm"),
12216 stable(feature = "neon_intrinsics", since = "1.59.0")
12217)]
12218#[cfg_attr(
12219 target_arch = "arm",
12220 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12221)]
12222pub unsafe fn vext_u64<const N: i32>(a: uint64x1_t, _b: uint64x1_t) -> uint64x1_t {
12223 static_assert!(N == 0);
12224 a
12225}
12226#[doc = "Extract vector from pair of vectors"]
12227#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_s8)"]
12228#[inline]
12229#[target_feature(enable = "neon")]
12230#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12231#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12232#[cfg_attr(
12233 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12234 assert_instr(ext, N = 7)
12235)]
12236#[rustc_legacy_const_generics(2)]
12237#[cfg_attr(
12238 not(target_arch = "arm"),
12239 stable(feature = "neon_intrinsics", since = "1.59.0")
12240)]
12241#[cfg_attr(
12242 target_arch = "arm",
12243 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12244)]
12245pub fn vext_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
12246 static_assert_uimm_bits!(N, 3);
12247 unsafe {
12248 match N & 0b111 {
12249 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12250 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12251 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12252 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12253 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12254 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12255 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12256 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12257 _ => unreachable_unchecked(),
12258 }
12259 }
12260}
12261#[doc = "Extract vector from pair of vectors"]
12262#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_s16)"]
12263#[inline]
12264#[target_feature(enable = "neon")]
12265#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12266#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12267#[cfg_attr(
12268 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12269 assert_instr(ext, N = 7)
12270)]
12271#[rustc_legacy_const_generics(2)]
12272#[cfg_attr(
12273 not(target_arch = "arm"),
12274 stable(feature = "neon_intrinsics", since = "1.59.0")
12275)]
12276#[cfg_attr(
12277 target_arch = "arm",
12278 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12279)]
12280pub fn vextq_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
12281 static_assert_uimm_bits!(N, 3);
12282 unsafe {
12283 match N & 0b111 {
12284 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12285 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12286 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12287 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12288 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12289 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12290 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12291 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12292 _ => unreachable_unchecked(),
12293 }
12294 }
12295}
12296#[doc = "Extract vector from pair of vectors"]
12297#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_u8)"]
12298#[inline]
12299#[target_feature(enable = "neon")]
12300#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12301#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12302#[cfg_attr(
12303 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12304 assert_instr(ext, N = 7)
12305)]
12306#[rustc_legacy_const_generics(2)]
12307#[cfg_attr(
12308 not(target_arch = "arm"),
12309 stable(feature = "neon_intrinsics", since = "1.59.0")
12310)]
12311#[cfg_attr(
12312 target_arch = "arm",
12313 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12314)]
12315pub fn vext_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
12316 static_assert_uimm_bits!(N, 3);
12317 unsafe {
12318 match N & 0b111 {
12319 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12320 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12321 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12322 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12323 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12324 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12325 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12326 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12327 _ => unreachable_unchecked(),
12328 }
12329 }
12330}
12331#[doc = "Extract vector from pair of vectors"]
12332#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_u16)"]
12333#[inline]
12334#[target_feature(enable = "neon")]
12335#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12336#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12337#[cfg_attr(
12338 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12339 assert_instr(ext, N = 7)
12340)]
12341#[rustc_legacy_const_generics(2)]
12342#[cfg_attr(
12343 not(target_arch = "arm"),
12344 stable(feature = "neon_intrinsics", since = "1.59.0")
12345)]
12346#[cfg_attr(
12347 target_arch = "arm",
12348 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12349)]
12350pub fn vextq_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
12351 static_assert_uimm_bits!(N, 3);
12352 unsafe {
12353 match N & 0b111 {
12354 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12355 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12356 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12357 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12358 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12359 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12360 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12361 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12362 _ => unreachable_unchecked(),
12363 }
12364 }
12365}
12366#[doc = "Extract vector from pair of vectors"]
12367#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_p8)"]
12368#[inline]
12369#[target_feature(enable = "neon")]
12370#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12371#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12372#[cfg_attr(
12373 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12374 assert_instr(ext, N = 7)
12375)]
12376#[rustc_legacy_const_generics(2)]
12377#[cfg_attr(
12378 not(target_arch = "arm"),
12379 stable(feature = "neon_intrinsics", since = "1.59.0")
12380)]
12381#[cfg_attr(
12382 target_arch = "arm",
12383 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12384)]
12385pub fn vext_p8<const N: i32>(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t {
12386 static_assert_uimm_bits!(N, 3);
12387 unsafe {
12388 match N & 0b111 {
12389 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12390 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12391 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12392 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12393 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12394 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12395 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12396 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12397 _ => unreachable_unchecked(),
12398 }
12399 }
12400}
12401#[doc = "Extract vector from pair of vectors"]
12402#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_p16)"]
12403#[inline]
12404#[target_feature(enable = "neon")]
12405#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12406#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12407#[cfg_attr(
12408 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12409 assert_instr(ext, N = 7)
12410)]
12411#[rustc_legacy_const_generics(2)]
12412#[cfg_attr(
12413 not(target_arch = "arm"),
12414 stable(feature = "neon_intrinsics", since = "1.59.0")
12415)]
12416#[cfg_attr(
12417 target_arch = "arm",
12418 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12419)]
12420pub fn vextq_p16<const N: i32>(a: poly16x8_t, b: poly16x8_t) -> poly16x8_t {
12421 static_assert_uimm_bits!(N, 3);
12422 unsafe {
12423 match N & 0b111 {
12424 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12425 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12426 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12427 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12428 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12429 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12430 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12431 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12432 _ => unreachable_unchecked(),
12433 }
12434 }
12435}
12436#[doc = "Extract vector from pair of vectors"]
12437#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_f16)"]
12438#[inline]
12439#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12440#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12441#[cfg_attr(
12442 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12443 assert_instr(ext, N = 7)
12444)]
12445#[rustc_legacy_const_generics(2)]
12446#[target_feature(enable = "neon,fp16")]
12447#[cfg_attr(
12448 not(target_arch = "arm"),
12449 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
12450)]
12451#[cfg_attr(
12452 target_arch = "arm",
12453 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12454)]
12455#[cfg(not(target_arch = "arm64ec"))]
12456pub fn vextq_f16<const N: i32>(a: float16x8_t, b: float16x8_t) -> float16x8_t {
12457 static_assert_uimm_bits!(N, 3);
12458 unsafe {
12459 match N & 0b111 {
12460 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12461 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12462 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12463 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12464 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12465 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12466 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12467 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12468 _ => unreachable_unchecked(),
12469 }
12470 }
12471}
12472#[doc = "Extract vector from pair of vectors"]
12473#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_f32)"]
12474#[inline]
12475#[target_feature(enable = "neon")]
12476#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12477#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12478#[cfg_attr(
12479 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12480 assert_instr(ext, N = 3)
12481)]
12482#[rustc_legacy_const_generics(2)]
12483#[cfg_attr(
12484 not(target_arch = "arm"),
12485 stable(feature = "neon_intrinsics", since = "1.59.0")
12486)]
12487#[cfg_attr(
12488 target_arch = "arm",
12489 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12490)]
12491pub fn vextq_f32<const N: i32>(a: float32x4_t, b: float32x4_t) -> float32x4_t {
12492 static_assert_uimm_bits!(N, 2);
12493 unsafe {
12494 match N & 0b11 {
12495 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12496 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12497 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12498 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12499 _ => unreachable_unchecked(),
12500 }
12501 }
12502}
12503#[doc = "Extract vector from pair of vectors"]
12504#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_s16)"]
12505#[inline]
12506#[target_feature(enable = "neon")]
12507#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12508#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12509#[cfg_attr(
12510 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12511 assert_instr(ext, N = 3)
12512)]
12513#[rustc_legacy_const_generics(2)]
12514#[cfg_attr(
12515 not(target_arch = "arm"),
12516 stable(feature = "neon_intrinsics", since = "1.59.0")
12517)]
12518#[cfg_attr(
12519 target_arch = "arm",
12520 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12521)]
12522pub fn vext_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
12523 static_assert_uimm_bits!(N, 2);
12524 unsafe {
12525 match N & 0b11 {
12526 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12527 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12528 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12529 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12530 _ => unreachable_unchecked(),
12531 }
12532 }
12533}
12534#[doc = "Extract vector from pair of vectors"]
12535#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_s32)"]
12536#[inline]
12537#[target_feature(enable = "neon")]
12538#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12539#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12540#[cfg_attr(
12541 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12542 assert_instr(ext, N = 3)
12543)]
12544#[rustc_legacy_const_generics(2)]
12545#[cfg_attr(
12546 not(target_arch = "arm"),
12547 stable(feature = "neon_intrinsics", since = "1.59.0")
12548)]
12549#[cfg_attr(
12550 target_arch = "arm",
12551 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12552)]
12553pub fn vextq_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
12554 static_assert_uimm_bits!(N, 2);
12555 unsafe {
12556 match N & 0b11 {
12557 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12558 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12559 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12560 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12561 _ => unreachable_unchecked(),
12562 }
12563 }
12564}
12565#[doc = "Extract vector from pair of vectors"]
12566#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_u16)"]
12567#[inline]
12568#[target_feature(enable = "neon")]
12569#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12570#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12571#[cfg_attr(
12572 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12573 assert_instr(ext, N = 3)
12574)]
12575#[rustc_legacy_const_generics(2)]
12576#[cfg_attr(
12577 not(target_arch = "arm"),
12578 stable(feature = "neon_intrinsics", since = "1.59.0")
12579)]
12580#[cfg_attr(
12581 target_arch = "arm",
12582 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12583)]
12584pub fn vext_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
12585 static_assert_uimm_bits!(N, 2);
12586 unsafe {
12587 match N & 0b11 {
12588 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12589 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12590 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12591 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12592 _ => unreachable_unchecked(),
12593 }
12594 }
12595}
12596#[doc = "Extract vector from pair of vectors"]
12597#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_u32)"]
12598#[inline]
12599#[target_feature(enable = "neon")]
12600#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12601#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12602#[cfg_attr(
12603 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12604 assert_instr(ext, N = 3)
12605)]
12606#[rustc_legacy_const_generics(2)]
12607#[cfg_attr(
12608 not(target_arch = "arm"),
12609 stable(feature = "neon_intrinsics", since = "1.59.0")
12610)]
12611#[cfg_attr(
12612 target_arch = "arm",
12613 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12614)]
12615pub fn vextq_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
12616 static_assert_uimm_bits!(N, 2);
12617 unsafe {
12618 match N & 0b11 {
12619 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12620 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12621 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12622 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12623 _ => unreachable_unchecked(),
12624 }
12625 }
12626}
12627#[doc = "Extract vector from pair of vectors"]
12628#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_p16)"]
12629#[inline]
12630#[target_feature(enable = "neon")]
12631#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12632#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12633#[cfg_attr(
12634 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12635 assert_instr(ext, N = 3)
12636)]
12637#[rustc_legacy_const_generics(2)]
12638#[cfg_attr(
12639 not(target_arch = "arm"),
12640 stable(feature = "neon_intrinsics", since = "1.59.0")
12641)]
12642#[cfg_attr(
12643 target_arch = "arm",
12644 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12645)]
12646pub fn vext_p16<const N: i32>(a: poly16x4_t, b: poly16x4_t) -> poly16x4_t {
12647 static_assert_uimm_bits!(N, 2);
12648 unsafe {
12649 match N & 0b11 {
12650 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12651 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12652 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12653 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12654 _ => unreachable_unchecked(),
12655 }
12656 }
12657}
12658#[doc = "Extract vector from pair of vectors"]
12659#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_s64)"]
12660#[inline]
12661#[target_feature(enable = "neon")]
12662#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12663#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
12664#[cfg_attr(
12665 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12666 assert_instr(ext, N = 1)
12667)]
12668#[rustc_legacy_const_generics(2)]
12669#[cfg_attr(
12670 not(target_arch = "arm"),
12671 stable(feature = "neon_intrinsics", since = "1.59.0")
12672)]
12673#[cfg_attr(
12674 target_arch = "arm",
12675 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12676)]
12677pub fn vextq_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
12678 static_assert_uimm_bits!(N, 1);
12679 unsafe {
12680 match N & 0b1 {
12681 0 => simd_shuffle!(a, b, [0, 1]),
12682 1 => simd_shuffle!(a, b, [1, 2]),
12683 _ => unreachable_unchecked(),
12684 }
12685 }
12686}
12687#[doc = "Extract vector from pair of vectors"]
12688#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_u64)"]
12689#[inline]
12690#[target_feature(enable = "neon")]
12691#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12692#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
12693#[cfg_attr(
12694 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12695 assert_instr(ext, N = 1)
12696)]
12697#[rustc_legacy_const_generics(2)]
12698#[cfg_attr(
12699 not(target_arch = "arm"),
12700 stable(feature = "neon_intrinsics", since = "1.59.0")
12701)]
12702#[cfg_attr(
12703 target_arch = "arm",
12704 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12705)]
12706pub fn vextq_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
12707 static_assert_uimm_bits!(N, 1);
12708 unsafe {
12709 match N & 0b1 {
12710 0 => simd_shuffle!(a, b, [0, 1]),
12711 1 => simd_shuffle!(a, b, [1, 2]),
12712 _ => unreachable_unchecked(),
12713 }
12714 }
12715}
12716#[doc = "Extract vector from pair of vectors"]
12717#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_s8)"]
12718#[inline]
12719#[target_feature(enable = "neon")]
12720#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12721#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 15))]
12722#[cfg_attr(
12723 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12724 assert_instr(ext, N = 15)
12725)]
12726#[rustc_legacy_const_generics(2)]
12727#[cfg_attr(
12728 not(target_arch = "arm"),
12729 stable(feature = "neon_intrinsics", since = "1.59.0")
12730)]
12731#[cfg_attr(
12732 target_arch = "arm",
12733 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12734)]
12735pub fn vextq_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
12736 static_assert_uimm_bits!(N, 4);
12737 unsafe {
12738 match N & 0b1111 {
12739 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]),
12740 1 => simd_shuffle!(
12741 a,
12742 b,
12743 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
12744 ),
12745 2 => simd_shuffle!(
12746 a,
12747 b,
12748 [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
12749 ),
12750 3 => simd_shuffle!(
12751 a,
12752 b,
12753 [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
12754 ),
12755 4 => simd_shuffle!(
12756 a,
12757 b,
12758 [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
12759 ),
12760 5 => simd_shuffle!(
12761 a,
12762 b,
12763 [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
12764 ),
12765 6 => simd_shuffle!(
12766 a,
12767 b,
12768 [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
12769 ),
12770 7 => simd_shuffle!(
12771 a,
12772 b,
12773 [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
12774 ),
12775 8 => simd_shuffle!(
12776 a,
12777 b,
12778 [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
12779 ),
12780 9 => simd_shuffle!(
12781 a,
12782 b,
12783 [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
12784 ),
12785 10 => simd_shuffle!(
12786 a,
12787 b,
12788 [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
12789 ),
12790 11 => simd_shuffle!(
12791 a,
12792 b,
12793 [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
12794 ),
12795 12 => simd_shuffle!(
12796 a,
12797 b,
12798 [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
12799 ),
12800 13 => simd_shuffle!(
12801 a,
12802 b,
12803 [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]
12804 ),
12805 14 => simd_shuffle!(
12806 a,
12807 b,
12808 [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
12809 ),
12810 15 => simd_shuffle!(
12811 a,
12812 b,
12813 [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
12814 ),
12815 _ => unreachable_unchecked(),
12816 }
12817 }
12818}
12819#[doc = "Extract vector from pair of vectors"]
12820#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_u8)"]
12821#[inline]
12822#[target_feature(enable = "neon")]
12823#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12824#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 15))]
12825#[cfg_attr(
12826 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12827 assert_instr(ext, N = 15)
12828)]
12829#[rustc_legacy_const_generics(2)]
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 vextq_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
12839 static_assert_uimm_bits!(N, 4);
12840 unsafe {
12841 match N & 0b1111 {
12842 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]),
12843 1 => simd_shuffle!(
12844 a,
12845 b,
12846 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
12847 ),
12848 2 => simd_shuffle!(
12849 a,
12850 b,
12851 [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
12852 ),
12853 3 => simd_shuffle!(
12854 a,
12855 b,
12856 [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
12857 ),
12858 4 => simd_shuffle!(
12859 a,
12860 b,
12861 [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
12862 ),
12863 5 => simd_shuffle!(
12864 a,
12865 b,
12866 [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
12867 ),
12868 6 => simd_shuffle!(
12869 a,
12870 b,
12871 [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
12872 ),
12873 7 => simd_shuffle!(
12874 a,
12875 b,
12876 [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
12877 ),
12878 8 => simd_shuffle!(
12879 a,
12880 b,
12881 [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
12882 ),
12883 9 => simd_shuffle!(
12884 a,
12885 b,
12886 [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
12887 ),
12888 10 => simd_shuffle!(
12889 a,
12890 b,
12891 [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
12892 ),
12893 11 => simd_shuffle!(
12894 a,
12895 b,
12896 [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
12897 ),
12898 12 => simd_shuffle!(
12899 a,
12900 b,
12901 [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
12902 ),
12903 13 => simd_shuffle!(
12904 a,
12905 b,
12906 [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]
12907 ),
12908 14 => simd_shuffle!(
12909 a,
12910 b,
12911 [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
12912 ),
12913 15 => simd_shuffle!(
12914 a,
12915 b,
12916 [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
12917 ),
12918 _ => unreachable_unchecked(),
12919 }
12920 }
12921}
12922#[doc = "Extract vector from pair of vectors"]
12923#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_p8)"]
12924#[inline]
12925#[target_feature(enable = "neon")]
12926#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12927#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 15))]
12928#[cfg_attr(
12929 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12930 assert_instr(ext, N = 15)
12931)]
12932#[rustc_legacy_const_generics(2)]
12933#[cfg_attr(
12934 not(target_arch = "arm"),
12935 stable(feature = "neon_intrinsics", since = "1.59.0")
12936)]
12937#[cfg_attr(
12938 target_arch = "arm",
12939 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12940)]
12941pub fn vextq_p8<const N: i32>(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t {
12942 static_assert_uimm_bits!(N, 4);
12943 unsafe {
12944 match N & 0b1111 {
12945 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]),
12946 1 => simd_shuffle!(
12947 a,
12948 b,
12949 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
12950 ),
12951 2 => simd_shuffle!(
12952 a,
12953 b,
12954 [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
12955 ),
12956 3 => simd_shuffle!(
12957 a,
12958 b,
12959 [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
12960 ),
12961 4 => simd_shuffle!(
12962 a,
12963 b,
12964 [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
12965 ),
12966 5 => simd_shuffle!(
12967 a,
12968 b,
12969 [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
12970 ),
12971 6 => simd_shuffle!(
12972 a,
12973 b,
12974 [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
12975 ),
12976 7 => simd_shuffle!(
12977 a,
12978 b,
12979 [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
12980 ),
12981 8 => simd_shuffle!(
12982 a,
12983 b,
12984 [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
12985 ),
12986 9 => simd_shuffle!(
12987 a,
12988 b,
12989 [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
12990 ),
12991 10 => simd_shuffle!(
12992 a,
12993 b,
12994 [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
12995 ),
12996 11 => simd_shuffle!(
12997 a,
12998 b,
12999 [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
13000 ),
13001 12 => simd_shuffle!(
13002 a,
13003 b,
13004 [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
13005 ),
13006 13 => simd_shuffle!(
13007 a,
13008 b,
13009 [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]
13010 ),
13011 14 => simd_shuffle!(
13012 a,
13013 b,
13014 [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
13015 ),
13016 15 => simd_shuffle!(
13017 a,
13018 b,
13019 [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
13020 ),
13021 _ => unreachable_unchecked(),
13022 }
13023 }
13024}
13025#[doc = "Floating-point fused Multiply-Add to accumulator (vector)"]
13026#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfma_f16)"]
13027#[inline]
13028#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13029#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
13030#[cfg_attr(
13031 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13032 assert_instr(fmla)
13033)]
13034#[target_feature(enable = "neon,fp16")]
13035#[cfg_attr(
13036 not(target_arch = "arm"),
13037 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
13038)]
13039#[cfg_attr(
13040 target_arch = "arm",
13041 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13042)]
13043#[cfg(not(target_arch = "arm64ec"))]
13044pub fn vfma_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t) -> float16x4_t {
13045 unsafe { simd_fma(b, c, a) }
13046}
13047#[doc = "Floating-point fused Multiply-Add to accumulator (vector)"]
13048#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmaq_f16)"]
13049#[inline]
13050#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13051#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
13052#[cfg_attr(
13053 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13054 assert_instr(fmla)
13055)]
13056#[target_feature(enable = "neon,fp16")]
13057#[cfg_attr(
13058 not(target_arch = "arm"),
13059 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
13060)]
13061#[cfg_attr(
13062 target_arch = "arm",
13063 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13064)]
13065#[cfg(not(target_arch = "arm64ec"))]
13066pub fn vfmaq_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t) -> float16x8_t {
13067 unsafe { simd_fma(b, c, a) }
13068}
13069#[doc = "Floating-point fused Multiply-Add to accumulator(vector)"]
13070#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfma_f32)"]
13071#[inline]
13072#[target_feature(enable = "neon")]
13073#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13074#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
13075#[cfg_attr(
13076 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13077 assert_instr(fmla)
13078)]
13079#[cfg_attr(
13080 not(target_arch = "arm"),
13081 stable(feature = "neon_intrinsics", since = "1.59.0")
13082)]
13083#[cfg_attr(
13084 target_arch = "arm",
13085 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13086)]
13087pub fn vfma_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t) -> float32x2_t {
13088 unsafe { simd_fma(b, c, a) }
13089}
13090#[doc = "Floating-point fused Multiply-Add to accumulator(vector)"]
13091#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmaq_f32)"]
13092#[inline]
13093#[target_feature(enable = "neon")]
13094#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13095#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
13096#[cfg_attr(
13097 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13098 assert_instr(fmla)
13099)]
13100#[cfg_attr(
13101 not(target_arch = "arm"),
13102 stable(feature = "neon_intrinsics", since = "1.59.0")
13103)]
13104#[cfg_attr(
13105 target_arch = "arm",
13106 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13107)]
13108pub fn vfmaq_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t) -> float32x4_t {
13109 unsafe { simd_fma(b, c, a) }
13110}
13111#[doc = "Floating-point fused Multiply-Add to accumulator(vector)"]
13112#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfma_n_f32)"]
13113#[inline]
13114#[target_feature(enable = "neon")]
13115#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13116#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
13117#[cfg_attr(
13118 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13119 assert_instr(fmla)
13120)]
13121#[cfg_attr(
13122 not(target_arch = "arm"),
13123 stable(feature = "neon_intrinsics", since = "1.59.0")
13124)]
13125#[cfg_attr(
13126 target_arch = "arm",
13127 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13128)]
13129pub fn vfma_n_f32(a: float32x2_t, b: float32x2_t, c: f32) -> float32x2_t {
13130 vfma_f32(a, b, vdup_n_f32_vfp4(c))
13131}
13132#[doc = "Floating-point fused Multiply-Add to accumulator(vector)"]
13133#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmaq_n_f32)"]
13134#[inline]
13135#[target_feature(enable = "neon")]
13136#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13137#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
13138#[cfg_attr(
13139 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13140 assert_instr(fmla)
13141)]
13142#[cfg_attr(
13143 not(target_arch = "arm"),
13144 stable(feature = "neon_intrinsics", since = "1.59.0")
13145)]
13146#[cfg_attr(
13147 target_arch = "arm",
13148 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13149)]
13150pub fn vfmaq_n_f32(a: float32x4_t, b: float32x4_t, c: f32) -> float32x4_t {
13151 vfmaq_f32(a, b, vdupq_n_f32_vfp4(c))
13152}
13153#[doc = "Floating-point fused multiply-subtract from accumulator"]
13154#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfms_f16)"]
13155#[inline]
13156#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
13157#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13158#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
13159#[cfg_attr(
13160 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13161 assert_instr(fmls)
13162)]
13163#[target_feature(enable = "neon,fp16")]
13164#[cfg_attr(
13165 not(target_arch = "arm"),
13166 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
13167)]
13168#[cfg_attr(
13169 target_arch = "arm",
13170 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13171)]
13172#[cfg(not(target_arch = "arm64ec"))]
13173pub fn vfms_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t) -> float16x4_t {
13174 unsafe {
13175 let b: float16x4_t = simd_neg(b);
13176 vfma_f16(a, b, c)
13177 }
13178}
13179#[doc = "Floating-point fused multiply-subtract from accumulator"]
13180#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmsq_f16)"]
13181#[inline]
13182#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
13183#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13184#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
13185#[cfg_attr(
13186 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13187 assert_instr(fmls)
13188)]
13189#[target_feature(enable = "neon,fp16")]
13190#[cfg_attr(
13191 not(target_arch = "arm"),
13192 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
13193)]
13194#[cfg_attr(
13195 target_arch = "arm",
13196 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13197)]
13198#[cfg(not(target_arch = "arm64ec"))]
13199pub fn vfmsq_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t) -> float16x8_t {
13200 unsafe {
13201 let b: float16x8_t = simd_neg(b);
13202 vfmaq_f16(a, b, c)
13203 }
13204}
13205#[doc = "Floating-point fused multiply-subtract from accumulator"]
13206#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfms_f32)"]
13207#[inline]
13208#[target_feature(enable = "neon")]
13209#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13210#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfms))]
13211#[cfg_attr(
13212 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13213 assert_instr(fmls)
13214)]
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 vfms_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t) -> float32x2_t {
13224 unsafe {
13225 let b: float32x2_t = simd_neg(b);
13226 vfma_f32(a, b, c)
13227 }
13228}
13229#[doc = "Floating-point fused multiply-subtract from accumulator"]
13230#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmsq_f32)"]
13231#[inline]
13232#[target_feature(enable = "neon")]
13233#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13234#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfms))]
13235#[cfg_attr(
13236 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13237 assert_instr(fmls)
13238)]
13239#[cfg_attr(
13240 not(target_arch = "arm"),
13241 stable(feature = "neon_intrinsics", since = "1.59.0")
13242)]
13243#[cfg_attr(
13244 target_arch = "arm",
13245 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13246)]
13247pub fn vfmsq_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t) -> float32x4_t {
13248 unsafe {
13249 let b: float32x4_t = simd_neg(b);
13250 vfmaq_f32(a, b, c)
13251 }
13252}
13253#[doc = "Floating-point fused Multiply-subtract to accumulator(vector)"]
13254#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfms_n_f32)"]
13255#[inline]
13256#[target_feature(enable = "neon")]
13257#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13258#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfms))]
13259#[cfg_attr(
13260 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13261 assert_instr(fmls)
13262)]
13263#[cfg_attr(
13264 not(target_arch = "arm"),
13265 stable(feature = "neon_intrinsics", since = "1.59.0")
13266)]
13267#[cfg_attr(
13268 target_arch = "arm",
13269 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13270)]
13271pub fn vfms_n_f32(a: float32x2_t, b: float32x2_t, c: f32) -> float32x2_t {
13272 vfms_f32(a, b, vdup_n_f32_vfp4(c))
13273}
13274#[doc = "Floating-point fused Multiply-subtract to accumulator(vector)"]
13275#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmsq_n_f32)"]
13276#[inline]
13277#[target_feature(enable = "neon")]
13278#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13279#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfms))]
13280#[cfg_attr(
13281 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13282 assert_instr(fmls)
13283)]
13284#[cfg_attr(
13285 not(target_arch = "arm"),
13286 stable(feature = "neon_intrinsics", since = "1.59.0")
13287)]
13288#[cfg_attr(
13289 target_arch = "arm",
13290 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13291)]
13292pub fn vfmsq_n_f32(a: float32x4_t, b: float32x4_t, c: f32) -> float32x4_t {
13293 vfmsq_f32(a, b, vdupq_n_f32_vfp4(c))
13294}
13295#[doc = "Duplicate vector element to vector"]
13296#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_f16)"]
13297#[inline]
13298#[target_feature(enable = "neon")]
13299#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13300#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
13301#[cfg_attr(
13302 not(target_arch = "arm"),
13303 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
13304)]
13305#[cfg_attr(
13306 target_arch = "arm",
13307 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13308)]
13309#[cfg(not(target_arch = "arm64ec"))]
13310#[cfg_attr(test, assert_instr(nop))]
13311pub fn vget_high_f16(a: float16x8_t) -> float16x4_t {
13312 unsafe { simd_shuffle!(a, a, [4, 5, 6, 7]) }
13313}
13314#[doc = "Duplicate vector element to vector"]
13315#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_f16)"]
13316#[inline]
13317#[target_feature(enable = "neon")]
13318#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13319#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
13320#[cfg_attr(
13321 not(target_arch = "arm"),
13322 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
13323)]
13324#[cfg_attr(
13325 target_arch = "arm",
13326 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13327)]
13328#[cfg(not(target_arch = "arm64ec"))]
13329#[cfg_attr(test, assert_instr(nop))]
13330pub fn vget_low_f16(a: float16x8_t) -> float16x4_t {
13331 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3]) }
13332}
13333#[doc = "Duplicate vector element to vector or scalar"]
13334#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_f32)"]
13335#[inline]
13336#[target_feature(enable = "neon")]
13337#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13338#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13339#[cfg_attr(
13340 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13341 assert_instr(ext)
13342)]
13343#[cfg_attr(
13344 not(target_arch = "arm"),
13345 stable(feature = "neon_intrinsics", since = "1.59.0")
13346)]
13347#[cfg_attr(
13348 target_arch = "arm",
13349 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13350)]
13351pub fn vget_high_f32(a: float32x4_t) -> float32x2_t {
13352 unsafe { simd_shuffle!(a, a, [2, 3]) }
13353}
13354#[doc = "Duplicate vector element to vector or scalar"]
13355#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_p16)"]
13356#[inline]
13357#[target_feature(enable = "neon")]
13358#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13359#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13360#[cfg_attr(
13361 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13362 assert_instr(ext)
13363)]
13364#[cfg_attr(
13365 not(target_arch = "arm"),
13366 stable(feature = "neon_intrinsics", since = "1.59.0")
13367)]
13368#[cfg_attr(
13369 target_arch = "arm",
13370 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13371)]
13372pub fn vget_high_p16(a: poly16x8_t) -> poly16x4_t {
13373 unsafe { simd_shuffle!(a, a, [4, 5, 6, 7]) }
13374}
13375#[doc = "Duplicate vector element to vector or scalar"]
13376#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_p8)"]
13377#[inline]
13378#[target_feature(enable = "neon")]
13379#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13380#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13381#[cfg_attr(
13382 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13383 assert_instr(ext)
13384)]
13385#[cfg_attr(
13386 not(target_arch = "arm"),
13387 stable(feature = "neon_intrinsics", since = "1.59.0")
13388)]
13389#[cfg_attr(
13390 target_arch = "arm",
13391 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13392)]
13393pub fn vget_high_p8(a: poly8x16_t) -> poly8x8_t {
13394 unsafe { simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]) }
13395}
13396#[doc = "Duplicate vector element to vector or scalar"]
13397#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_s16)"]
13398#[inline]
13399#[target_feature(enable = "neon")]
13400#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13401#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13402#[cfg_attr(
13403 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13404 assert_instr(ext)
13405)]
13406#[cfg_attr(
13407 not(target_arch = "arm"),
13408 stable(feature = "neon_intrinsics", since = "1.59.0")
13409)]
13410#[cfg_attr(
13411 target_arch = "arm",
13412 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13413)]
13414pub fn vget_high_s16(a: int16x8_t) -> int16x4_t {
13415 unsafe { simd_shuffle!(a, a, [4, 5, 6, 7]) }
13416}
13417#[doc = "Duplicate vector element to vector or scalar"]
13418#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_s32)"]
13419#[inline]
13420#[target_feature(enable = "neon")]
13421#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13422#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13423#[cfg_attr(
13424 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13425 assert_instr(ext)
13426)]
13427#[cfg_attr(
13428 not(target_arch = "arm"),
13429 stable(feature = "neon_intrinsics", since = "1.59.0")
13430)]
13431#[cfg_attr(
13432 target_arch = "arm",
13433 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13434)]
13435pub fn vget_high_s32(a: int32x4_t) -> int32x2_t {
13436 unsafe { simd_shuffle!(a, a, [2, 3]) }
13437}
13438#[doc = "Duplicate vector element to vector or scalar"]
13439#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_s8)"]
13440#[inline]
13441#[target_feature(enable = "neon")]
13442#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13443#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13444#[cfg_attr(
13445 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13446 assert_instr(ext)
13447)]
13448#[cfg_attr(
13449 not(target_arch = "arm"),
13450 stable(feature = "neon_intrinsics", since = "1.59.0")
13451)]
13452#[cfg_attr(
13453 target_arch = "arm",
13454 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13455)]
13456pub fn vget_high_s8(a: int8x16_t) -> int8x8_t {
13457 unsafe { simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]) }
13458}
13459#[doc = "Duplicate vector element to vector or scalar"]
13460#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_u16)"]
13461#[inline]
13462#[target_feature(enable = "neon")]
13463#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13464#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13465#[cfg_attr(
13466 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13467 assert_instr(ext)
13468)]
13469#[cfg_attr(
13470 not(target_arch = "arm"),
13471 stable(feature = "neon_intrinsics", since = "1.59.0")
13472)]
13473#[cfg_attr(
13474 target_arch = "arm",
13475 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13476)]
13477pub fn vget_high_u16(a: uint16x8_t) -> uint16x4_t {
13478 unsafe { simd_shuffle!(a, a, [4, 5, 6, 7]) }
13479}
13480#[doc = "Duplicate vector element to vector or scalar"]
13481#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_u32)"]
13482#[inline]
13483#[target_feature(enable = "neon")]
13484#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13485#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13486#[cfg_attr(
13487 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13488 assert_instr(ext)
13489)]
13490#[cfg_attr(
13491 not(target_arch = "arm"),
13492 stable(feature = "neon_intrinsics", since = "1.59.0")
13493)]
13494#[cfg_attr(
13495 target_arch = "arm",
13496 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13497)]
13498pub fn vget_high_u32(a: uint32x4_t) -> uint32x2_t {
13499 unsafe { simd_shuffle!(a, a, [2, 3]) }
13500}
13501#[doc = "Duplicate vector element to vector or scalar"]
13502#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_u8)"]
13503#[inline]
13504#[target_feature(enable = "neon")]
13505#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13506#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13507#[cfg_attr(
13508 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13509 assert_instr(ext)
13510)]
13511#[cfg_attr(
13512 not(target_arch = "arm"),
13513 stable(feature = "neon_intrinsics", since = "1.59.0")
13514)]
13515#[cfg_attr(
13516 target_arch = "arm",
13517 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13518)]
13519pub fn vget_high_u8(a: uint8x16_t) -> uint8x8_t {
13520 unsafe { simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]) }
13521}
13522#[doc = "Duplicate vector element to vector or scalar"]
13523#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_s64)"]
13524#[inline]
13525#[target_feature(enable = "neon")]
13526#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13527#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13528#[cfg_attr(
13529 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13530 assert_instr(ext)
13531)]
13532#[cfg_attr(
13533 not(target_arch = "arm"),
13534 stable(feature = "neon_intrinsics", since = "1.59.0")
13535)]
13536#[cfg_attr(
13537 target_arch = "arm",
13538 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13539)]
13540pub fn vget_high_s64(a: int64x2_t) -> int64x1_t {
13541 unsafe { int64x1_t([simd_extract!(a, 1)]) }
13542}
13543#[doc = "Duplicate vector element to vector or scalar"]
13544#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_u64)"]
13545#[inline]
13546#[target_feature(enable = "neon")]
13547#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13548#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13549#[cfg_attr(
13550 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13551 assert_instr(ext)
13552)]
13553#[cfg_attr(
13554 not(target_arch = "arm"),
13555 stable(feature = "neon_intrinsics", since = "1.59.0")
13556)]
13557#[cfg_attr(
13558 target_arch = "arm",
13559 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13560)]
13561pub fn vget_high_u64(a: uint64x2_t) -> uint64x1_t {
13562 unsafe { uint64x1_t([simd_extract!(a, 1)]) }
13563}
13564#[doc = "Duplicate vector element to scalar"]
13565#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_f16)"]
13566#[inline]
13567#[target_feature(enable = "neon")]
13568#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13569#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
13570#[cfg_attr(
13571 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13572 assert_instr(nop, LANE = 0)
13573)]
13574#[rustc_legacy_const_generics(1)]
13575#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
13576#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
13577#[cfg(not(target_arch = "arm64ec"))]
13578pub fn vget_lane_f16<const LANE: i32>(a: float16x4_t) -> f16 {
13579 static_assert_uimm_bits!(LANE, 2);
13580 unsafe { simd_extract!(a, LANE as u32) }
13581}
13582#[doc = "Duplicate vector element to scalar"]
13583#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_f16)"]
13584#[inline]
13585#[target_feature(enable = "neon")]
13586#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13587#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
13588#[cfg_attr(
13589 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13590 assert_instr(nop, LANE = 0)
13591)]
13592#[rustc_legacy_const_generics(1)]
13593#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
13594#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
13595#[cfg(not(target_arch = "arm64ec"))]
13596pub fn vgetq_lane_f16<const LANE: i32>(a: float16x8_t) -> f16 {
13597 static_assert_uimm_bits!(LANE, 3);
13598 unsafe { simd_extract!(a, LANE as u32) }
13599}
13600#[doc = "Move vector element to general-purpose register"]
13601#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_f32)"]
13602#[inline]
13603#[target_feature(enable = "neon")]
13604#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13605#[rustc_legacy_const_generics(1)]
13606#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13607#[cfg_attr(
13608 not(target_arch = "arm"),
13609 stable(feature = "neon_intrinsics", since = "1.59.0")
13610)]
13611#[cfg_attr(
13612 target_arch = "arm",
13613 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13614)]
13615pub fn vget_lane_f32<const IMM5: i32>(v: float32x2_t) -> f32 {
13616 static_assert_uimm_bits!(IMM5, 1);
13617 unsafe { simd_extract!(v, IMM5 as u32) }
13618}
13619#[doc = "Move vector element to general-purpose register"]
13620#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_p16)"]
13621#[inline]
13622#[target_feature(enable = "neon")]
13623#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13624#[rustc_legacy_const_generics(1)]
13625#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13626#[cfg_attr(
13627 not(target_arch = "arm"),
13628 stable(feature = "neon_intrinsics", since = "1.59.0")
13629)]
13630#[cfg_attr(
13631 target_arch = "arm",
13632 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13633)]
13634pub fn vget_lane_p16<const IMM5: i32>(v: poly16x4_t) -> p16 {
13635 static_assert_uimm_bits!(IMM5, 2);
13636 unsafe { simd_extract!(v, IMM5 as u32) }
13637}
13638#[doc = "Move vector element to general-purpose register"]
13639#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_p8)"]
13640#[inline]
13641#[target_feature(enable = "neon")]
13642#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13643#[rustc_legacy_const_generics(1)]
13644#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13645#[cfg_attr(
13646 not(target_arch = "arm"),
13647 stable(feature = "neon_intrinsics", since = "1.59.0")
13648)]
13649#[cfg_attr(
13650 target_arch = "arm",
13651 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13652)]
13653pub fn vget_lane_p8<const IMM5: i32>(v: poly8x8_t) -> p8 {
13654 static_assert_uimm_bits!(IMM5, 3);
13655 unsafe { simd_extract!(v, IMM5 as u32) }
13656}
13657#[doc = "Move vector element to general-purpose register"]
13658#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_s16)"]
13659#[inline]
13660#[target_feature(enable = "neon")]
13661#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13662#[rustc_legacy_const_generics(1)]
13663#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13664#[cfg_attr(
13665 not(target_arch = "arm"),
13666 stable(feature = "neon_intrinsics", since = "1.59.0")
13667)]
13668#[cfg_attr(
13669 target_arch = "arm",
13670 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13671)]
13672pub fn vget_lane_s16<const IMM5: i32>(v: int16x4_t) -> i16 {
13673 static_assert_uimm_bits!(IMM5, 2);
13674 unsafe { simd_extract!(v, IMM5 as u32) }
13675}
13676#[doc = "Move vector element to general-purpose register"]
13677#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_s32)"]
13678#[inline]
13679#[target_feature(enable = "neon")]
13680#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13681#[rustc_legacy_const_generics(1)]
13682#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13683#[cfg_attr(
13684 not(target_arch = "arm"),
13685 stable(feature = "neon_intrinsics", since = "1.59.0")
13686)]
13687#[cfg_attr(
13688 target_arch = "arm",
13689 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13690)]
13691pub fn vget_lane_s32<const IMM5: i32>(v: int32x2_t) -> i32 {
13692 static_assert_uimm_bits!(IMM5, 1);
13693 unsafe { simd_extract!(v, IMM5 as u32) }
13694}
13695#[doc = "Move vector element to general-purpose register"]
13696#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_s8)"]
13697#[inline]
13698#[target_feature(enable = "neon")]
13699#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13700#[rustc_legacy_const_generics(1)]
13701#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13702#[cfg_attr(
13703 not(target_arch = "arm"),
13704 stable(feature = "neon_intrinsics", since = "1.59.0")
13705)]
13706#[cfg_attr(
13707 target_arch = "arm",
13708 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13709)]
13710pub fn vget_lane_s8<const IMM5: i32>(v: int8x8_t) -> i8 {
13711 static_assert_uimm_bits!(IMM5, 3);
13712 unsafe { simd_extract!(v, IMM5 as u32) }
13713}
13714#[doc = "Move vector element to general-purpose register"]
13715#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_u16)"]
13716#[inline]
13717#[target_feature(enable = "neon")]
13718#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13719#[rustc_legacy_const_generics(1)]
13720#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13721#[cfg_attr(
13722 not(target_arch = "arm"),
13723 stable(feature = "neon_intrinsics", since = "1.59.0")
13724)]
13725#[cfg_attr(
13726 target_arch = "arm",
13727 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13728)]
13729pub fn vget_lane_u16<const IMM5: i32>(v: uint16x4_t) -> u16 {
13730 static_assert_uimm_bits!(IMM5, 2);
13731 unsafe { simd_extract!(v, IMM5 as u32) }
13732}
13733#[doc = "Move vector element to general-purpose register"]
13734#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_u32)"]
13735#[inline]
13736#[target_feature(enable = "neon")]
13737#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13738#[rustc_legacy_const_generics(1)]
13739#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13740#[cfg_attr(
13741 not(target_arch = "arm"),
13742 stable(feature = "neon_intrinsics", since = "1.59.0")
13743)]
13744#[cfg_attr(
13745 target_arch = "arm",
13746 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13747)]
13748pub fn vget_lane_u32<const IMM5: i32>(v: uint32x2_t) -> u32 {
13749 static_assert_uimm_bits!(IMM5, 1);
13750 unsafe { simd_extract!(v, IMM5 as u32) }
13751}
13752#[doc = "Move vector element to general-purpose register"]
13753#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_u8)"]
13754#[inline]
13755#[target_feature(enable = "neon")]
13756#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13757#[rustc_legacy_const_generics(1)]
13758#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13759#[cfg_attr(
13760 not(target_arch = "arm"),
13761 stable(feature = "neon_intrinsics", since = "1.59.0")
13762)]
13763#[cfg_attr(
13764 target_arch = "arm",
13765 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13766)]
13767pub fn vget_lane_u8<const IMM5: i32>(v: uint8x8_t) -> u8 {
13768 static_assert_uimm_bits!(IMM5, 3);
13769 unsafe { simd_extract!(v, IMM5 as u32) }
13770}
13771#[doc = "Move vector element to general-purpose register"]
13772#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_f32)"]
13773#[inline]
13774#[target_feature(enable = "neon")]
13775#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13776#[rustc_legacy_const_generics(1)]
13777#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
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 vgetq_lane_f32<const IMM5: i32>(v: float32x4_t) -> f32 {
13787 static_assert_uimm_bits!(IMM5, 2);
13788 unsafe { simd_extract!(v, IMM5 as u32) }
13789}
13790#[doc = "Move vector element to general-purpose register"]
13791#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_p16)"]
13792#[inline]
13793#[target_feature(enable = "neon")]
13794#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13795#[rustc_legacy_const_generics(1)]
13796#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13797#[cfg_attr(
13798 not(target_arch = "arm"),
13799 stable(feature = "neon_intrinsics", since = "1.59.0")
13800)]
13801#[cfg_attr(
13802 target_arch = "arm",
13803 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13804)]
13805pub fn vgetq_lane_p16<const IMM5: i32>(v: poly16x8_t) -> p16 {
13806 static_assert_uimm_bits!(IMM5, 3);
13807 unsafe { simd_extract!(v, IMM5 as u32) }
13808}
13809#[doc = "Move vector element to general-purpose register"]
13810#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_p64)"]
13811#[inline]
13812#[target_feature(enable = "neon")]
13813#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13814#[rustc_legacy_const_generics(1)]
13815#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13816#[cfg_attr(
13817 not(target_arch = "arm"),
13818 stable(feature = "neon_intrinsics", since = "1.59.0")
13819)]
13820#[cfg_attr(
13821 target_arch = "arm",
13822 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13823)]
13824pub fn vgetq_lane_p64<const IMM5: i32>(v: poly64x2_t) -> p64 {
13825 static_assert_uimm_bits!(IMM5, 1);
13826 unsafe { simd_extract!(v, IMM5 as u32) }
13827}
13828#[doc = "Move vector element to general-purpose register"]
13829#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_p8)"]
13830#[inline]
13831#[target_feature(enable = "neon")]
13832#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13833#[rustc_legacy_const_generics(1)]
13834#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13835#[cfg_attr(
13836 not(target_arch = "arm"),
13837 stable(feature = "neon_intrinsics", since = "1.59.0")
13838)]
13839#[cfg_attr(
13840 target_arch = "arm",
13841 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13842)]
13843pub fn vgetq_lane_p8<const IMM5: i32>(v: poly8x16_t) -> p8 {
13844 static_assert_uimm_bits!(IMM5, 4);
13845 unsafe { simd_extract!(v, IMM5 as u32) }
13846}
13847#[doc = "Move vector element to general-purpose register"]
13848#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_s16)"]
13849#[inline]
13850#[target_feature(enable = "neon")]
13851#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13852#[rustc_legacy_const_generics(1)]
13853#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13854#[cfg_attr(
13855 not(target_arch = "arm"),
13856 stable(feature = "neon_intrinsics", since = "1.59.0")
13857)]
13858#[cfg_attr(
13859 target_arch = "arm",
13860 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13861)]
13862pub fn vgetq_lane_s16<const IMM5: i32>(v: int16x8_t) -> i16 {
13863 static_assert_uimm_bits!(IMM5, 3);
13864 unsafe { simd_extract!(v, IMM5 as u32) }
13865}
13866#[doc = "Move vector element to general-purpose register"]
13867#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_s32)"]
13868#[inline]
13869#[target_feature(enable = "neon")]
13870#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13871#[rustc_legacy_const_generics(1)]
13872#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13873#[cfg_attr(
13874 not(target_arch = "arm"),
13875 stable(feature = "neon_intrinsics", since = "1.59.0")
13876)]
13877#[cfg_attr(
13878 target_arch = "arm",
13879 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13880)]
13881pub fn vgetq_lane_s32<const IMM5: i32>(v: int32x4_t) -> i32 {
13882 static_assert_uimm_bits!(IMM5, 2);
13883 unsafe { simd_extract!(v, IMM5 as u32) }
13884}
13885#[doc = "Move vector element to general-purpose register"]
13886#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_s64)"]
13887#[inline]
13888#[target_feature(enable = "neon")]
13889#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13890#[rustc_legacy_const_generics(1)]
13891#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13892#[cfg_attr(
13893 not(target_arch = "arm"),
13894 stable(feature = "neon_intrinsics", since = "1.59.0")
13895)]
13896#[cfg_attr(
13897 target_arch = "arm",
13898 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13899)]
13900pub fn vgetq_lane_s64<const IMM5: i32>(v: int64x2_t) -> i64 {
13901 static_assert_uimm_bits!(IMM5, 1);
13902 unsafe { simd_extract!(v, IMM5 as u32) }
13903}
13904#[doc = "Move vector element to general-purpose register"]
13905#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_s8)"]
13906#[inline]
13907#[target_feature(enable = "neon")]
13908#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13909#[rustc_legacy_const_generics(1)]
13910#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13911#[cfg_attr(
13912 not(target_arch = "arm"),
13913 stable(feature = "neon_intrinsics", since = "1.59.0")
13914)]
13915#[cfg_attr(
13916 target_arch = "arm",
13917 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13918)]
13919pub fn vgetq_lane_s8<const IMM5: i32>(v: int8x16_t) -> i8 {
13920 static_assert_uimm_bits!(IMM5, 4);
13921 unsafe { simd_extract!(v, IMM5 as u32) }
13922}
13923#[doc = "Move vector element to general-purpose register"]
13924#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_u16)"]
13925#[inline]
13926#[target_feature(enable = "neon")]
13927#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13928#[rustc_legacy_const_generics(1)]
13929#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13930#[cfg_attr(
13931 not(target_arch = "arm"),
13932 stable(feature = "neon_intrinsics", since = "1.59.0")
13933)]
13934#[cfg_attr(
13935 target_arch = "arm",
13936 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13937)]
13938pub fn vgetq_lane_u16<const IMM5: i32>(v: uint16x8_t) -> u16 {
13939 static_assert_uimm_bits!(IMM5, 3);
13940 unsafe { simd_extract!(v, IMM5 as u32) }
13941}
13942#[doc = "Move vector element to general-purpose register"]
13943#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_u32)"]
13944#[inline]
13945#[target_feature(enable = "neon")]
13946#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13947#[rustc_legacy_const_generics(1)]
13948#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13949#[cfg_attr(
13950 not(target_arch = "arm"),
13951 stable(feature = "neon_intrinsics", since = "1.59.0")
13952)]
13953#[cfg_attr(
13954 target_arch = "arm",
13955 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13956)]
13957pub fn vgetq_lane_u32<const IMM5: i32>(v: uint32x4_t) -> u32 {
13958 static_assert_uimm_bits!(IMM5, 2);
13959 unsafe { simd_extract!(v, IMM5 as u32) }
13960}
13961#[doc = "Move vector element to general-purpose register"]
13962#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_u64)"]
13963#[inline]
13964#[target_feature(enable = "neon")]
13965#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13966#[rustc_legacy_const_generics(1)]
13967#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13968#[cfg_attr(
13969 not(target_arch = "arm"),
13970 stable(feature = "neon_intrinsics", since = "1.59.0")
13971)]
13972#[cfg_attr(
13973 target_arch = "arm",
13974 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13975)]
13976pub fn vgetq_lane_u64<const IMM5: i32>(v: uint64x2_t) -> u64 {
13977 static_assert_uimm_bits!(IMM5, 2);
13978 unsafe { simd_extract!(v, IMM5 as u32) }
13979}
13980#[doc = "Move vector element to general-purpose register"]
13981#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_u8)"]
13982#[inline]
13983#[target_feature(enable = "neon")]
13984#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13985#[rustc_legacy_const_generics(1)]
13986#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13987#[cfg_attr(
13988 not(target_arch = "arm"),
13989 stable(feature = "neon_intrinsics", since = "1.59.0")
13990)]
13991#[cfg_attr(
13992 target_arch = "arm",
13993 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13994)]
13995pub fn vgetq_lane_u8<const IMM5: i32>(v: uint8x16_t) -> u8 {
13996 static_assert_uimm_bits!(IMM5, 4);
13997 unsafe { simd_extract!(v, IMM5 as u32) }
13998}
13999#[doc = "Move vector element to general-purpose register"]
14000#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_p64)"]
14001#[inline]
14002#[target_feature(enable = "neon")]
14003#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14004#[rustc_legacy_const_generics(1)]
14005#[cfg_attr(test, assert_instr(nop, IMM5 = 0))]
14006#[cfg_attr(
14007 not(target_arch = "arm"),
14008 stable(feature = "neon_intrinsics", since = "1.59.0")
14009)]
14010#[cfg_attr(
14011 target_arch = "arm",
14012 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14013)]
14014pub fn vget_lane_p64<const IMM5: i32>(v: poly64x1_t) -> p64 {
14015 static_assert!(IMM5 == 0);
14016 unsafe { simd_extract!(v, IMM5 as u32) }
14017}
14018#[doc = "Move vector element to general-purpose register"]
14019#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_s64)"]
14020#[inline]
14021#[target_feature(enable = "neon")]
14022#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14023#[rustc_legacy_const_generics(1)]
14024#[cfg_attr(test, assert_instr(nop, IMM5 = 0))]
14025#[cfg_attr(
14026 not(target_arch = "arm"),
14027 stable(feature = "neon_intrinsics", since = "1.59.0")
14028)]
14029#[cfg_attr(
14030 target_arch = "arm",
14031 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14032)]
14033pub fn vget_lane_s64<const IMM5: i32>(v: int64x1_t) -> i64 {
14034 static_assert!(IMM5 == 0);
14035 unsafe { simd_extract!(v, IMM5 as u32) }
14036}
14037#[doc = "Move vector element to general-purpose register"]
14038#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_u64)"]
14039#[inline]
14040#[target_feature(enable = "neon")]
14041#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14042#[rustc_legacy_const_generics(1)]
14043#[cfg_attr(test, assert_instr(nop, IMM5 = 0))]
14044#[cfg_attr(
14045 not(target_arch = "arm"),
14046 stable(feature = "neon_intrinsics", since = "1.59.0")
14047)]
14048#[cfg_attr(
14049 target_arch = "arm",
14050 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14051)]
14052pub fn vget_lane_u64<const IMM5: i32>(v: uint64x1_t) -> u64 {
14053 static_assert!(IMM5 == 0);
14054 unsafe { simd_extract!(v, 0) }
14055}
14056#[doc = "Duplicate vector element to vector or scalar"]
14057#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_f32)"]
14058#[inline]
14059#[target_feature(enable = "neon")]
14060#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14061#[cfg_attr(test, assert_instr(nop))]
14062#[cfg_attr(
14063 not(target_arch = "arm"),
14064 stable(feature = "neon_intrinsics", since = "1.59.0")
14065)]
14066#[cfg_attr(
14067 target_arch = "arm",
14068 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14069)]
14070pub fn vget_low_f32(a: float32x4_t) -> float32x2_t {
14071 unsafe { simd_shuffle!(a, a, [0, 1]) }
14072}
14073#[doc = "Duplicate vector element to vector or scalar"]
14074#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_p16)"]
14075#[inline]
14076#[target_feature(enable = "neon")]
14077#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14078#[cfg_attr(test, assert_instr(nop))]
14079#[cfg_attr(
14080 not(target_arch = "arm"),
14081 stable(feature = "neon_intrinsics", since = "1.59.0")
14082)]
14083#[cfg_attr(
14084 target_arch = "arm",
14085 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14086)]
14087pub fn vget_low_p16(a: poly16x8_t) -> poly16x4_t {
14088 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3]) }
14089}
14090#[doc = "Duplicate vector element to vector or scalar"]
14091#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_p8)"]
14092#[inline]
14093#[target_feature(enable = "neon")]
14094#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14095#[cfg_attr(test, assert_instr(nop))]
14096#[cfg_attr(
14097 not(target_arch = "arm"),
14098 stable(feature = "neon_intrinsics", since = "1.59.0")
14099)]
14100#[cfg_attr(
14101 target_arch = "arm",
14102 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14103)]
14104pub fn vget_low_p8(a: poly8x16_t) -> poly8x8_t {
14105 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]) }
14106}
14107#[doc = "Duplicate vector element to vector or scalar"]
14108#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_s16)"]
14109#[inline]
14110#[target_feature(enable = "neon")]
14111#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14112#[cfg_attr(test, assert_instr(nop))]
14113#[cfg_attr(
14114 not(target_arch = "arm"),
14115 stable(feature = "neon_intrinsics", since = "1.59.0")
14116)]
14117#[cfg_attr(
14118 target_arch = "arm",
14119 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14120)]
14121pub fn vget_low_s16(a: int16x8_t) -> int16x4_t {
14122 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3]) }
14123}
14124#[doc = "Duplicate vector element to vector or scalar"]
14125#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_s32)"]
14126#[inline]
14127#[target_feature(enable = "neon")]
14128#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14129#[cfg_attr(test, assert_instr(nop))]
14130#[cfg_attr(
14131 not(target_arch = "arm"),
14132 stable(feature = "neon_intrinsics", since = "1.59.0")
14133)]
14134#[cfg_attr(
14135 target_arch = "arm",
14136 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14137)]
14138pub fn vget_low_s32(a: int32x4_t) -> int32x2_t {
14139 unsafe { simd_shuffle!(a, a, [0, 1]) }
14140}
14141#[doc = "Duplicate vector element to vector or scalar"]
14142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_s8)"]
14143#[inline]
14144#[target_feature(enable = "neon")]
14145#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14146#[cfg_attr(test, assert_instr(nop))]
14147#[cfg_attr(
14148 not(target_arch = "arm"),
14149 stable(feature = "neon_intrinsics", since = "1.59.0")
14150)]
14151#[cfg_attr(
14152 target_arch = "arm",
14153 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14154)]
14155pub fn vget_low_s8(a: int8x16_t) -> int8x8_t {
14156 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]) }
14157}
14158#[doc = "Duplicate vector element to vector or scalar"]
14159#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_u16)"]
14160#[inline]
14161#[target_feature(enable = "neon")]
14162#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14163#[cfg_attr(test, assert_instr(nop))]
14164#[cfg_attr(
14165 not(target_arch = "arm"),
14166 stable(feature = "neon_intrinsics", since = "1.59.0")
14167)]
14168#[cfg_attr(
14169 target_arch = "arm",
14170 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14171)]
14172pub fn vget_low_u16(a: uint16x8_t) -> uint16x4_t {
14173 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3]) }
14174}
14175#[doc = "Duplicate vector element to vector or scalar"]
14176#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_u32)"]
14177#[inline]
14178#[target_feature(enable = "neon")]
14179#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14180#[cfg_attr(test, assert_instr(nop))]
14181#[cfg_attr(
14182 not(target_arch = "arm"),
14183 stable(feature = "neon_intrinsics", since = "1.59.0")
14184)]
14185#[cfg_attr(
14186 target_arch = "arm",
14187 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14188)]
14189pub fn vget_low_u32(a: uint32x4_t) -> uint32x2_t {
14190 unsafe { simd_shuffle!(a, a, [0, 1]) }
14191}
14192#[doc = "Duplicate vector element to vector or scalar"]
14193#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_u8)"]
14194#[inline]
14195#[target_feature(enable = "neon")]
14196#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14197#[cfg_attr(test, assert_instr(nop))]
14198#[cfg_attr(
14199 not(target_arch = "arm"),
14200 stable(feature = "neon_intrinsics", since = "1.59.0")
14201)]
14202#[cfg_attr(
14203 target_arch = "arm",
14204 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14205)]
14206pub fn vget_low_u8(a: uint8x16_t) -> uint8x8_t {
14207 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]) }
14208}
14209#[doc = "Duplicate vector element to vector or scalar"]
14210#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_s64)"]
14211#[inline]
14212#[target_feature(enable = "neon")]
14213#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14214#[cfg_attr(test, assert_instr(nop))]
14215#[cfg_attr(
14216 not(target_arch = "arm"),
14217 stable(feature = "neon_intrinsics", since = "1.59.0")
14218)]
14219#[cfg_attr(
14220 target_arch = "arm",
14221 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14222)]
14223pub fn vget_low_s64(a: int64x2_t) -> int64x1_t {
14224 unsafe { int64x1_t([simd_extract!(a, 0)]) }
14225}
14226#[doc = "Duplicate vector element to vector or scalar"]
14227#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_u64)"]
14228#[inline]
14229#[target_feature(enable = "neon")]
14230#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14231#[cfg_attr(test, assert_instr(nop))]
14232#[cfg_attr(
14233 not(target_arch = "arm"),
14234 stable(feature = "neon_intrinsics", since = "1.59.0")
14235)]
14236#[cfg_attr(
14237 target_arch = "arm",
14238 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14239)]
14240pub fn vget_low_u64(a: uint64x2_t) -> uint64x1_t {
14241 unsafe { uint64x1_t([simd_extract!(a, 0)]) }
14242}
14243#[doc = "Halving add"]
14244#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_s8)"]
14245#[inline]
14246#[target_feature(enable = "neon")]
14247#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14248#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s8"))]
14249#[cfg_attr(
14250 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14251 assert_instr(shadd)
14252)]
14253#[cfg_attr(
14254 not(target_arch = "arm"),
14255 stable(feature = "neon_intrinsics", since = "1.59.0")
14256)]
14257#[cfg_attr(
14258 target_arch = "arm",
14259 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14260)]
14261pub fn vhadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
14262 unsafe extern "unadjusted" {
14263 #[cfg_attr(
14264 any(target_arch = "aarch64", target_arch = "arm64ec"),
14265 link_name = "llvm.aarch64.neon.shadd.v8i8"
14266 )]
14267 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v8i8")]
14268 fn _vhadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
14269 }
14270 unsafe { _vhadd_s8(a, b) }
14271}
14272#[doc = "Halving add"]
14273#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_s8)"]
14274#[inline]
14275#[target_feature(enable = "neon")]
14276#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14277#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s8"))]
14278#[cfg_attr(
14279 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14280 assert_instr(shadd)
14281)]
14282#[cfg_attr(
14283 not(target_arch = "arm"),
14284 stable(feature = "neon_intrinsics", since = "1.59.0")
14285)]
14286#[cfg_attr(
14287 target_arch = "arm",
14288 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14289)]
14290pub fn vhaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
14291 unsafe extern "unadjusted" {
14292 #[cfg_attr(
14293 any(target_arch = "aarch64", target_arch = "arm64ec"),
14294 link_name = "llvm.aarch64.neon.shadd.v16i8"
14295 )]
14296 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v16i8")]
14297 fn _vhaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
14298 }
14299 unsafe { _vhaddq_s8(a, b) }
14300}
14301#[doc = "Halving add"]
14302#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_s16)"]
14303#[inline]
14304#[target_feature(enable = "neon")]
14305#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14306#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s16"))]
14307#[cfg_attr(
14308 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14309 assert_instr(shadd)
14310)]
14311#[cfg_attr(
14312 not(target_arch = "arm"),
14313 stable(feature = "neon_intrinsics", since = "1.59.0")
14314)]
14315#[cfg_attr(
14316 target_arch = "arm",
14317 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14318)]
14319pub fn vhadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
14320 unsafe extern "unadjusted" {
14321 #[cfg_attr(
14322 any(target_arch = "aarch64", target_arch = "arm64ec"),
14323 link_name = "llvm.aarch64.neon.shadd.v4i16"
14324 )]
14325 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v4i16")]
14326 fn _vhadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
14327 }
14328 unsafe { _vhadd_s16(a, b) }
14329}
14330#[doc = "Halving add"]
14331#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_s16)"]
14332#[inline]
14333#[target_feature(enable = "neon")]
14334#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14335#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s16"))]
14336#[cfg_attr(
14337 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14338 assert_instr(shadd)
14339)]
14340#[cfg_attr(
14341 not(target_arch = "arm"),
14342 stable(feature = "neon_intrinsics", since = "1.59.0")
14343)]
14344#[cfg_attr(
14345 target_arch = "arm",
14346 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14347)]
14348pub fn vhaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
14349 unsafe extern "unadjusted" {
14350 #[cfg_attr(
14351 any(target_arch = "aarch64", target_arch = "arm64ec"),
14352 link_name = "llvm.aarch64.neon.shadd.v8i16"
14353 )]
14354 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v8i16")]
14355 fn _vhaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
14356 }
14357 unsafe { _vhaddq_s16(a, b) }
14358}
14359#[doc = "Halving add"]
14360#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_s32)"]
14361#[inline]
14362#[target_feature(enable = "neon")]
14363#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14364#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s32"))]
14365#[cfg_attr(
14366 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14367 assert_instr(shadd)
14368)]
14369#[cfg_attr(
14370 not(target_arch = "arm"),
14371 stable(feature = "neon_intrinsics", since = "1.59.0")
14372)]
14373#[cfg_attr(
14374 target_arch = "arm",
14375 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14376)]
14377pub fn vhadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
14378 unsafe extern "unadjusted" {
14379 #[cfg_attr(
14380 any(target_arch = "aarch64", target_arch = "arm64ec"),
14381 link_name = "llvm.aarch64.neon.shadd.v2i32"
14382 )]
14383 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v2i32")]
14384 fn _vhadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
14385 }
14386 unsafe { _vhadd_s32(a, b) }
14387}
14388#[doc = "Halving add"]
14389#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_s32)"]
14390#[inline]
14391#[target_feature(enable = "neon")]
14392#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14393#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s32"))]
14394#[cfg_attr(
14395 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14396 assert_instr(shadd)
14397)]
14398#[cfg_attr(
14399 not(target_arch = "arm"),
14400 stable(feature = "neon_intrinsics", since = "1.59.0")
14401)]
14402#[cfg_attr(
14403 target_arch = "arm",
14404 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14405)]
14406pub fn vhaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
14407 unsafe extern "unadjusted" {
14408 #[cfg_attr(
14409 any(target_arch = "aarch64", target_arch = "arm64ec"),
14410 link_name = "llvm.aarch64.neon.shadd.v4i32"
14411 )]
14412 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v4i32")]
14413 fn _vhaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
14414 }
14415 unsafe { _vhaddq_s32(a, b) }
14416}
14417#[doc = "Halving add"]
14418#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_u8)"]
14419#[inline]
14420#[target_feature(enable = "neon")]
14421#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14422#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u8"))]
14423#[cfg_attr(
14424 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14425 assert_instr(uhadd)
14426)]
14427#[cfg_attr(
14428 not(target_arch = "arm"),
14429 stable(feature = "neon_intrinsics", since = "1.59.0")
14430)]
14431#[cfg_attr(
14432 target_arch = "arm",
14433 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14434)]
14435pub fn vhadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
14436 unsafe extern "unadjusted" {
14437 #[cfg_attr(
14438 any(target_arch = "aarch64", target_arch = "arm64ec"),
14439 link_name = "llvm.aarch64.neon.uhadd.v8i8"
14440 )]
14441 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v8i8")]
14442 fn _vhadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
14443 }
14444 unsafe { _vhadd_u8(a, b) }
14445}
14446#[doc = "Halving add"]
14447#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_u8)"]
14448#[inline]
14449#[target_feature(enable = "neon")]
14450#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14451#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u8"))]
14452#[cfg_attr(
14453 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14454 assert_instr(uhadd)
14455)]
14456#[cfg_attr(
14457 not(target_arch = "arm"),
14458 stable(feature = "neon_intrinsics", since = "1.59.0")
14459)]
14460#[cfg_attr(
14461 target_arch = "arm",
14462 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14463)]
14464pub fn vhaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
14465 unsafe extern "unadjusted" {
14466 #[cfg_attr(
14467 any(target_arch = "aarch64", target_arch = "arm64ec"),
14468 link_name = "llvm.aarch64.neon.uhadd.v16i8"
14469 )]
14470 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v16i8")]
14471 fn _vhaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
14472 }
14473 unsafe { _vhaddq_u8(a, b) }
14474}
14475#[doc = "Halving add"]
14476#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_u16)"]
14477#[inline]
14478#[target_feature(enable = "neon")]
14479#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14480#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u16"))]
14481#[cfg_attr(
14482 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14483 assert_instr(uhadd)
14484)]
14485#[cfg_attr(
14486 not(target_arch = "arm"),
14487 stable(feature = "neon_intrinsics", since = "1.59.0")
14488)]
14489#[cfg_attr(
14490 target_arch = "arm",
14491 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14492)]
14493pub fn vhadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
14494 unsafe extern "unadjusted" {
14495 #[cfg_attr(
14496 any(target_arch = "aarch64", target_arch = "arm64ec"),
14497 link_name = "llvm.aarch64.neon.uhadd.v4i16"
14498 )]
14499 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v4i16")]
14500 fn _vhadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
14501 }
14502 unsafe { _vhadd_u16(a, b) }
14503}
14504#[doc = "Halving add"]
14505#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_u16)"]
14506#[inline]
14507#[target_feature(enable = "neon")]
14508#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14509#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u16"))]
14510#[cfg_attr(
14511 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14512 assert_instr(uhadd)
14513)]
14514#[cfg_attr(
14515 not(target_arch = "arm"),
14516 stable(feature = "neon_intrinsics", since = "1.59.0")
14517)]
14518#[cfg_attr(
14519 target_arch = "arm",
14520 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14521)]
14522pub fn vhaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
14523 unsafe extern "unadjusted" {
14524 #[cfg_attr(
14525 any(target_arch = "aarch64", target_arch = "arm64ec"),
14526 link_name = "llvm.aarch64.neon.uhadd.v8i16"
14527 )]
14528 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v8i16")]
14529 fn _vhaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
14530 }
14531 unsafe { _vhaddq_u16(a, b) }
14532}
14533#[doc = "Halving add"]
14534#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_u32)"]
14535#[inline]
14536#[target_feature(enable = "neon")]
14537#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14538#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u32"))]
14539#[cfg_attr(
14540 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14541 assert_instr(uhadd)
14542)]
14543#[cfg_attr(
14544 not(target_arch = "arm"),
14545 stable(feature = "neon_intrinsics", since = "1.59.0")
14546)]
14547#[cfg_attr(
14548 target_arch = "arm",
14549 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14550)]
14551pub fn vhadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
14552 unsafe extern "unadjusted" {
14553 #[cfg_attr(
14554 any(target_arch = "aarch64", target_arch = "arm64ec"),
14555 link_name = "llvm.aarch64.neon.uhadd.v2i32"
14556 )]
14557 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v2i32")]
14558 fn _vhadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
14559 }
14560 unsafe { _vhadd_u32(a, b) }
14561}
14562#[doc = "Halving add"]
14563#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_u32)"]
14564#[inline]
14565#[target_feature(enable = "neon")]
14566#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14567#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u32"))]
14568#[cfg_attr(
14569 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14570 assert_instr(uhadd)
14571)]
14572#[cfg_attr(
14573 not(target_arch = "arm"),
14574 stable(feature = "neon_intrinsics", since = "1.59.0")
14575)]
14576#[cfg_attr(
14577 target_arch = "arm",
14578 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14579)]
14580pub fn vhaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
14581 unsafe extern "unadjusted" {
14582 #[cfg_attr(
14583 any(target_arch = "aarch64", target_arch = "arm64ec"),
14584 link_name = "llvm.aarch64.neon.uhadd.v4i32"
14585 )]
14586 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v4i32")]
14587 fn _vhaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
14588 }
14589 unsafe { _vhaddq_u32(a, b) }
14590}
14591#[doc = "Signed halving subtract"]
14592#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_s16)"]
14593#[inline]
14594#[target_feature(enable = "neon")]
14595#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14596#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s16"))]
14597#[cfg_attr(
14598 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14599 assert_instr(shsub)
14600)]
14601#[cfg_attr(
14602 not(target_arch = "arm"),
14603 stable(feature = "neon_intrinsics", since = "1.59.0")
14604)]
14605#[cfg_attr(
14606 target_arch = "arm",
14607 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14608)]
14609pub fn vhsub_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
14610 unsafe extern "unadjusted" {
14611 #[cfg_attr(
14612 any(target_arch = "aarch64", target_arch = "arm64ec"),
14613 link_name = "llvm.aarch64.neon.shsub.v4i16"
14614 )]
14615 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v4i16")]
14616 fn _vhsub_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
14617 }
14618 unsafe { _vhsub_s16(a, b) }
14619}
14620#[doc = "Signed halving subtract"]
14621#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_s16)"]
14622#[inline]
14623#[target_feature(enable = "neon")]
14624#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14625#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s16"))]
14626#[cfg_attr(
14627 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14628 assert_instr(shsub)
14629)]
14630#[cfg_attr(
14631 not(target_arch = "arm"),
14632 stable(feature = "neon_intrinsics", since = "1.59.0")
14633)]
14634#[cfg_attr(
14635 target_arch = "arm",
14636 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14637)]
14638pub fn vhsubq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
14639 unsafe extern "unadjusted" {
14640 #[cfg_attr(
14641 any(target_arch = "aarch64", target_arch = "arm64ec"),
14642 link_name = "llvm.aarch64.neon.shsub.v8i16"
14643 )]
14644 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v8i16")]
14645 fn _vhsubq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
14646 }
14647 unsafe { _vhsubq_s16(a, b) }
14648}
14649#[doc = "Signed halving subtract"]
14650#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_s32)"]
14651#[inline]
14652#[target_feature(enable = "neon")]
14653#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14654#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s32"))]
14655#[cfg_attr(
14656 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14657 assert_instr(shsub)
14658)]
14659#[cfg_attr(
14660 not(target_arch = "arm"),
14661 stable(feature = "neon_intrinsics", since = "1.59.0")
14662)]
14663#[cfg_attr(
14664 target_arch = "arm",
14665 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14666)]
14667pub fn vhsub_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
14668 unsafe extern "unadjusted" {
14669 #[cfg_attr(
14670 any(target_arch = "aarch64", target_arch = "arm64ec"),
14671 link_name = "llvm.aarch64.neon.shsub.v2i32"
14672 )]
14673 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v2i32")]
14674 fn _vhsub_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
14675 }
14676 unsafe { _vhsub_s32(a, b) }
14677}
14678#[doc = "Signed halving subtract"]
14679#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_s32)"]
14680#[inline]
14681#[target_feature(enable = "neon")]
14682#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14683#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s32"))]
14684#[cfg_attr(
14685 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14686 assert_instr(shsub)
14687)]
14688#[cfg_attr(
14689 not(target_arch = "arm"),
14690 stable(feature = "neon_intrinsics", since = "1.59.0")
14691)]
14692#[cfg_attr(
14693 target_arch = "arm",
14694 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14695)]
14696pub fn vhsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
14697 unsafe extern "unadjusted" {
14698 #[cfg_attr(
14699 any(target_arch = "aarch64", target_arch = "arm64ec"),
14700 link_name = "llvm.aarch64.neon.shsub.v4i32"
14701 )]
14702 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v4i32")]
14703 fn _vhsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
14704 }
14705 unsafe { _vhsubq_s32(a, b) }
14706}
14707#[doc = "Signed halving subtract"]
14708#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_s8)"]
14709#[inline]
14710#[target_feature(enable = "neon")]
14711#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14712#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s8"))]
14713#[cfg_attr(
14714 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14715 assert_instr(shsub)
14716)]
14717#[cfg_attr(
14718 not(target_arch = "arm"),
14719 stable(feature = "neon_intrinsics", since = "1.59.0")
14720)]
14721#[cfg_attr(
14722 target_arch = "arm",
14723 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14724)]
14725pub fn vhsub_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
14726 unsafe extern "unadjusted" {
14727 #[cfg_attr(
14728 any(target_arch = "aarch64", target_arch = "arm64ec"),
14729 link_name = "llvm.aarch64.neon.shsub.v8i8"
14730 )]
14731 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v8i8")]
14732 fn _vhsub_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
14733 }
14734 unsafe { _vhsub_s8(a, b) }
14735}
14736#[doc = "Signed halving subtract"]
14737#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_s8)"]
14738#[inline]
14739#[target_feature(enable = "neon")]
14740#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14741#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s8"))]
14742#[cfg_attr(
14743 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14744 assert_instr(shsub)
14745)]
14746#[cfg_attr(
14747 not(target_arch = "arm"),
14748 stable(feature = "neon_intrinsics", since = "1.59.0")
14749)]
14750#[cfg_attr(
14751 target_arch = "arm",
14752 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14753)]
14754pub fn vhsubq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
14755 unsafe extern "unadjusted" {
14756 #[cfg_attr(
14757 any(target_arch = "aarch64", target_arch = "arm64ec"),
14758 link_name = "llvm.aarch64.neon.shsub.v16i8"
14759 )]
14760 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v16i8")]
14761 fn _vhsubq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
14762 }
14763 unsafe { _vhsubq_s8(a, b) }
14764}
14765#[doc = "Signed halving subtract"]
14766#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_u8)"]
14767#[inline]
14768#[target_feature(enable = "neon")]
14769#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14770#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u8"))]
14771#[cfg_attr(
14772 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14773 assert_instr(uhsub)
14774)]
14775#[cfg_attr(
14776 not(target_arch = "arm"),
14777 stable(feature = "neon_intrinsics", since = "1.59.0")
14778)]
14779#[cfg_attr(
14780 target_arch = "arm",
14781 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14782)]
14783pub fn vhsub_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
14784 unsafe extern "unadjusted" {
14785 #[cfg_attr(
14786 any(target_arch = "aarch64", target_arch = "arm64ec"),
14787 link_name = "llvm.aarch64.neon.uhsub.v8i8"
14788 )]
14789 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v8i8")]
14790 fn _vhsub_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
14791 }
14792 unsafe { _vhsub_u8(a, b) }
14793}
14794#[doc = "Signed halving subtract"]
14795#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_u8)"]
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("vhsub.u8"))]
14800#[cfg_attr(
14801 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14802 assert_instr(uhsub)
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 fn vhsubq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
14813 unsafe extern "unadjusted" {
14814 #[cfg_attr(
14815 any(target_arch = "aarch64", target_arch = "arm64ec"),
14816 link_name = "llvm.aarch64.neon.uhsub.v16i8"
14817 )]
14818 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v16i8")]
14819 fn _vhsubq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
14820 }
14821 unsafe { _vhsubq_u8(a, b) }
14822}
14823#[doc = "Signed halving subtract"]
14824#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_u16)"]
14825#[inline]
14826#[target_feature(enable = "neon")]
14827#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14828#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u16"))]
14829#[cfg_attr(
14830 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14831 assert_instr(uhsub)
14832)]
14833#[cfg_attr(
14834 not(target_arch = "arm"),
14835 stable(feature = "neon_intrinsics", since = "1.59.0")
14836)]
14837#[cfg_attr(
14838 target_arch = "arm",
14839 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14840)]
14841pub fn vhsub_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
14842 unsafe extern "unadjusted" {
14843 #[cfg_attr(
14844 any(target_arch = "aarch64", target_arch = "arm64ec"),
14845 link_name = "llvm.aarch64.neon.uhsub.v4i16"
14846 )]
14847 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v4i16")]
14848 fn _vhsub_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
14849 }
14850 unsafe { _vhsub_u16(a, b) }
14851}
14852#[doc = "Signed halving subtract"]
14853#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_u16)"]
14854#[inline]
14855#[target_feature(enable = "neon")]
14856#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14857#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u16"))]
14858#[cfg_attr(
14859 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14860 assert_instr(uhsub)
14861)]
14862#[cfg_attr(
14863 not(target_arch = "arm"),
14864 stable(feature = "neon_intrinsics", since = "1.59.0")
14865)]
14866#[cfg_attr(
14867 target_arch = "arm",
14868 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14869)]
14870pub fn vhsubq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
14871 unsafe extern "unadjusted" {
14872 #[cfg_attr(
14873 any(target_arch = "aarch64", target_arch = "arm64ec"),
14874 link_name = "llvm.aarch64.neon.uhsub.v8i16"
14875 )]
14876 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v8i16")]
14877 fn _vhsubq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
14878 }
14879 unsafe { _vhsubq_u16(a, b) }
14880}
14881#[doc = "Signed halving subtract"]
14882#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_u32)"]
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("vhsub.u32"))]
14887#[cfg_attr(
14888 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14889 assert_instr(uhsub)
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 fn vhsub_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
14900 unsafe extern "unadjusted" {
14901 #[cfg_attr(
14902 any(target_arch = "aarch64", target_arch = "arm64ec"),
14903 link_name = "llvm.aarch64.neon.uhsub.v2i32"
14904 )]
14905 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v2i32")]
14906 fn _vhsub_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
14907 }
14908 unsafe { _vhsub_u32(a, b) }
14909}
14910#[doc = "Signed halving subtract"]
14911#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_u32)"]
14912#[inline]
14913#[target_feature(enable = "neon")]
14914#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14915#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u32"))]
14916#[cfg_attr(
14917 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14918 assert_instr(uhsub)
14919)]
14920#[cfg_attr(
14921 not(target_arch = "arm"),
14922 stable(feature = "neon_intrinsics", since = "1.59.0")
14923)]
14924#[cfg_attr(
14925 target_arch = "arm",
14926 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14927)]
14928pub fn vhsubq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
14929 unsafe extern "unadjusted" {
14930 #[cfg_attr(
14931 any(target_arch = "aarch64", target_arch = "arm64ec"),
14932 link_name = "llvm.aarch64.neon.uhsub.v4i32"
14933 )]
14934 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v4i32")]
14935 fn _vhsubq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
14936 }
14937 unsafe { _vhsubq_u32(a, b) }
14938}
14939#[doc = "Load one single-element structure and replicate to all lanes of one register"]
14940#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_f16)"]
14941#[doc = "## Safety"]
14942#[doc = " * Neon instrinsic unsafe"]
14943#[inline]
14944#[target_feature(enable = "neon")]
14945#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14946#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
14947#[cfg_attr(
14948 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14949 assert_instr(ld1r)
14950)]
14951#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
14952#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
14953#[cfg(not(target_arch = "arm64ec"))]
14954pub unsafe fn vld1_dup_f16(ptr: *const f16) -> float16x4_t {
14955 let x: float16x4_t = vld1_lane_f16::<0>(ptr, transmute(f16x4::splat(0.0)));
14956 simd_shuffle!(x, x, [0, 0, 0, 0])
14957}
14958#[doc = "Load one single-element structure and replicate to all lanes of one register"]
14959#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_f16)"]
14960#[doc = "## Safety"]
14961#[doc = " * Neon instrinsic unsafe"]
14962#[inline]
14963#[target_feature(enable = "neon")]
14964#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14965#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
14966#[cfg_attr(
14967 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14968 assert_instr(ld1r)
14969)]
14970#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
14971#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
14972#[cfg(not(target_arch = "arm64ec"))]
14973pub unsafe fn vld1q_dup_f16(ptr: *const f16) -> float16x8_t {
14974 let x: float16x8_t = vld1q_lane_f16::<0>(ptr, transmute(f16x8::splat(0.0)));
14975 simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0])
14976}
14977#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
14978#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_f32)"]
14979#[doc = "## Safety"]
14980#[doc = " * Neon instrinsic unsafe"]
14981#[inline]
14982#[target_feature(enable = "neon")]
14983#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14984#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
14985#[cfg_attr(
14986 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14987 assert_instr(ld1r)
14988)]
14989#[cfg_attr(
14990 not(target_arch = "arm"),
14991 stable(feature = "neon_intrinsics", since = "1.59.0")
14992)]
14993#[cfg_attr(
14994 target_arch = "arm",
14995 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14996)]
14997pub unsafe fn vld1_dup_f32(ptr: *const f32) -> float32x2_t {
14998 transmute(f32x2::splat(*ptr))
14999}
15000#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15001#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p16)"]
15002#[doc = "## Safety"]
15003#[doc = " * Neon instrinsic unsafe"]
15004#[inline]
15005#[target_feature(enable = "neon")]
15006#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15007#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15008#[cfg_attr(
15009 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15010 assert_instr(ld1r)
15011)]
15012#[cfg_attr(
15013 not(target_arch = "arm"),
15014 stable(feature = "neon_intrinsics", since = "1.59.0")
15015)]
15016#[cfg_attr(
15017 target_arch = "arm",
15018 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15019)]
15020pub unsafe fn vld1_dup_p16(ptr: *const p16) -> poly16x4_t {
15021 transmute(u16x4::splat(*ptr))
15022}
15023#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15024#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p8)"]
15025#[doc = "## Safety"]
15026#[doc = " * Neon instrinsic unsafe"]
15027#[inline]
15028#[target_feature(enable = "neon")]
15029#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15030#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15031#[cfg_attr(
15032 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15033 assert_instr(ld1r)
15034)]
15035#[cfg_attr(
15036 not(target_arch = "arm"),
15037 stable(feature = "neon_intrinsics", since = "1.59.0")
15038)]
15039#[cfg_attr(
15040 target_arch = "arm",
15041 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15042)]
15043pub unsafe fn vld1_dup_p8(ptr: *const p8) -> poly8x8_t {
15044 transmute(u8x8::splat(*ptr))
15045}
15046#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15047#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s16)"]
15048#[doc = "## Safety"]
15049#[doc = " * Neon instrinsic unsafe"]
15050#[inline]
15051#[target_feature(enable = "neon")]
15052#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15053#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15054#[cfg_attr(
15055 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15056 assert_instr(ld1r)
15057)]
15058#[cfg_attr(
15059 not(target_arch = "arm"),
15060 stable(feature = "neon_intrinsics", since = "1.59.0")
15061)]
15062#[cfg_attr(
15063 target_arch = "arm",
15064 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15065)]
15066pub unsafe fn vld1_dup_s16(ptr: *const i16) -> int16x4_t {
15067 transmute(i16x4::splat(*ptr))
15068}
15069#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15070#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s32)"]
15071#[doc = "## Safety"]
15072#[doc = " * Neon instrinsic unsafe"]
15073#[inline]
15074#[target_feature(enable = "neon")]
15075#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15076#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15077#[cfg_attr(
15078 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15079 assert_instr(ld1r)
15080)]
15081#[cfg_attr(
15082 not(target_arch = "arm"),
15083 stable(feature = "neon_intrinsics", since = "1.59.0")
15084)]
15085#[cfg_attr(
15086 target_arch = "arm",
15087 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15088)]
15089pub unsafe fn vld1_dup_s32(ptr: *const i32) -> int32x2_t {
15090 transmute(i32x2::splat(*ptr))
15091}
15092#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15093#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s8)"]
15094#[doc = "## Safety"]
15095#[doc = " * Neon instrinsic unsafe"]
15096#[inline]
15097#[target_feature(enable = "neon")]
15098#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15099#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15100#[cfg_attr(
15101 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15102 assert_instr(ld1r)
15103)]
15104#[cfg_attr(
15105 not(target_arch = "arm"),
15106 stable(feature = "neon_intrinsics", since = "1.59.0")
15107)]
15108#[cfg_attr(
15109 target_arch = "arm",
15110 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15111)]
15112pub unsafe fn vld1_dup_s8(ptr: *const i8) -> int8x8_t {
15113 transmute(i8x8::splat(*ptr))
15114}
15115#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15116#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u16)"]
15117#[doc = "## Safety"]
15118#[doc = " * Neon instrinsic unsafe"]
15119#[inline]
15120#[target_feature(enable = "neon")]
15121#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15122#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15123#[cfg_attr(
15124 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15125 assert_instr(ld1r)
15126)]
15127#[cfg_attr(
15128 not(target_arch = "arm"),
15129 stable(feature = "neon_intrinsics", since = "1.59.0")
15130)]
15131#[cfg_attr(
15132 target_arch = "arm",
15133 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15134)]
15135pub unsafe fn vld1_dup_u16(ptr: *const u16) -> uint16x4_t {
15136 transmute(u16x4::splat(*ptr))
15137}
15138#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15139#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u32)"]
15140#[doc = "## Safety"]
15141#[doc = " * Neon instrinsic unsafe"]
15142#[inline]
15143#[target_feature(enable = "neon")]
15144#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15145#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15146#[cfg_attr(
15147 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15148 assert_instr(ld1r)
15149)]
15150#[cfg_attr(
15151 not(target_arch = "arm"),
15152 stable(feature = "neon_intrinsics", since = "1.59.0")
15153)]
15154#[cfg_attr(
15155 target_arch = "arm",
15156 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15157)]
15158pub unsafe fn vld1_dup_u32(ptr: *const u32) -> uint32x2_t {
15159 transmute(u32x2::splat(*ptr))
15160}
15161#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15162#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u8)"]
15163#[doc = "## Safety"]
15164#[doc = " * Neon instrinsic unsafe"]
15165#[inline]
15166#[target_feature(enable = "neon")]
15167#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15168#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15169#[cfg_attr(
15170 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15171 assert_instr(ld1r)
15172)]
15173#[cfg_attr(
15174 not(target_arch = "arm"),
15175 stable(feature = "neon_intrinsics", since = "1.59.0")
15176)]
15177#[cfg_attr(
15178 target_arch = "arm",
15179 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15180)]
15181pub unsafe fn vld1_dup_u8(ptr: *const u8) -> uint8x8_t {
15182 transmute(u8x8::splat(*ptr))
15183}
15184#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15185#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_f32)"]
15186#[doc = "## Safety"]
15187#[doc = " * Neon instrinsic unsafe"]
15188#[inline]
15189#[target_feature(enable = "neon")]
15190#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15191#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15192#[cfg_attr(
15193 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15194 assert_instr(ld1r)
15195)]
15196#[cfg_attr(
15197 not(target_arch = "arm"),
15198 stable(feature = "neon_intrinsics", since = "1.59.0")
15199)]
15200#[cfg_attr(
15201 target_arch = "arm",
15202 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15203)]
15204pub unsafe fn vld1q_dup_f32(ptr: *const f32) -> float32x4_t {
15205 transmute(f32x4::splat(*ptr))
15206}
15207#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15208#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_p16)"]
15209#[doc = "## Safety"]
15210#[doc = " * Neon instrinsic unsafe"]
15211#[inline]
15212#[target_feature(enable = "neon")]
15213#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15214#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15215#[cfg_attr(
15216 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15217 assert_instr(ld1r)
15218)]
15219#[cfg_attr(
15220 not(target_arch = "arm"),
15221 stable(feature = "neon_intrinsics", since = "1.59.0")
15222)]
15223#[cfg_attr(
15224 target_arch = "arm",
15225 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15226)]
15227pub unsafe fn vld1q_dup_p16(ptr: *const p16) -> poly16x8_t {
15228 transmute(u16x8::splat(*ptr))
15229}
15230#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15231#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_p8)"]
15232#[doc = "## Safety"]
15233#[doc = " * Neon instrinsic unsafe"]
15234#[inline]
15235#[target_feature(enable = "neon")]
15236#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15237#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15238#[cfg_attr(
15239 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15240 assert_instr(ld1r)
15241)]
15242#[cfg_attr(
15243 not(target_arch = "arm"),
15244 stable(feature = "neon_intrinsics", since = "1.59.0")
15245)]
15246#[cfg_attr(
15247 target_arch = "arm",
15248 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15249)]
15250pub unsafe fn vld1q_dup_p8(ptr: *const p8) -> poly8x16_t {
15251 transmute(u8x16::splat(*ptr))
15252}
15253#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15254#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s16)"]
15255#[doc = "## Safety"]
15256#[doc = " * Neon instrinsic unsafe"]
15257#[inline]
15258#[target_feature(enable = "neon")]
15259#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15260#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15261#[cfg_attr(
15262 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15263 assert_instr(ld1r)
15264)]
15265#[cfg_attr(
15266 not(target_arch = "arm"),
15267 stable(feature = "neon_intrinsics", since = "1.59.0")
15268)]
15269#[cfg_attr(
15270 target_arch = "arm",
15271 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15272)]
15273pub unsafe fn vld1q_dup_s16(ptr: *const i16) -> int16x8_t {
15274 transmute(i16x8::splat(*ptr))
15275}
15276#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15277#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s32)"]
15278#[doc = "## Safety"]
15279#[doc = " * Neon instrinsic unsafe"]
15280#[inline]
15281#[target_feature(enable = "neon")]
15282#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15283#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15284#[cfg_attr(
15285 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15286 assert_instr(ld1r)
15287)]
15288#[cfg_attr(
15289 not(target_arch = "arm"),
15290 stable(feature = "neon_intrinsics", since = "1.59.0")
15291)]
15292#[cfg_attr(
15293 target_arch = "arm",
15294 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15295)]
15296pub unsafe fn vld1q_dup_s32(ptr: *const i32) -> int32x4_t {
15297 transmute(i32x4::splat(*ptr))
15298}
15299#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15300#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s64)"]
15301#[doc = "## Safety"]
15302#[doc = " * Neon instrinsic unsafe"]
15303#[inline]
15304#[target_feature(enable = "neon")]
15305#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15306#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vldr"))]
15307#[cfg_attr(
15308 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15309 assert_instr(ld1r)
15310)]
15311#[cfg_attr(
15312 not(target_arch = "arm"),
15313 stable(feature = "neon_intrinsics", since = "1.59.0")
15314)]
15315#[cfg_attr(
15316 target_arch = "arm",
15317 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15318)]
15319pub unsafe fn vld1q_dup_s64(ptr: *const i64) -> int64x2_t {
15320 transmute(i64x2::splat(*ptr))
15321}
15322#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15323#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s8)"]
15324#[doc = "## Safety"]
15325#[doc = " * Neon instrinsic unsafe"]
15326#[inline]
15327#[target_feature(enable = "neon")]
15328#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15329#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15330#[cfg_attr(
15331 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15332 assert_instr(ld1r)
15333)]
15334#[cfg_attr(
15335 not(target_arch = "arm"),
15336 stable(feature = "neon_intrinsics", since = "1.59.0")
15337)]
15338#[cfg_attr(
15339 target_arch = "arm",
15340 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15341)]
15342pub unsafe fn vld1q_dup_s8(ptr: *const i8) -> int8x16_t {
15343 transmute(i8x16::splat(*ptr))
15344}
15345#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15346#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u16)"]
15347#[doc = "## Safety"]
15348#[doc = " * Neon instrinsic unsafe"]
15349#[inline]
15350#[target_feature(enable = "neon")]
15351#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15352#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15353#[cfg_attr(
15354 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15355 assert_instr(ld1r)
15356)]
15357#[cfg_attr(
15358 not(target_arch = "arm"),
15359 stable(feature = "neon_intrinsics", since = "1.59.0")
15360)]
15361#[cfg_attr(
15362 target_arch = "arm",
15363 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15364)]
15365pub unsafe fn vld1q_dup_u16(ptr: *const u16) -> uint16x8_t {
15366 transmute(u16x8::splat(*ptr))
15367}
15368#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15369#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u32)"]
15370#[doc = "## Safety"]
15371#[doc = " * Neon instrinsic unsafe"]
15372#[inline]
15373#[target_feature(enable = "neon")]
15374#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15375#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15376#[cfg_attr(
15377 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15378 assert_instr(ld1r)
15379)]
15380#[cfg_attr(
15381 not(target_arch = "arm"),
15382 stable(feature = "neon_intrinsics", since = "1.59.0")
15383)]
15384#[cfg_attr(
15385 target_arch = "arm",
15386 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15387)]
15388pub unsafe fn vld1q_dup_u32(ptr: *const u32) -> uint32x4_t {
15389 transmute(u32x4::splat(*ptr))
15390}
15391#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15392#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u64)"]
15393#[doc = "## Safety"]
15394#[doc = " * Neon instrinsic unsafe"]
15395#[inline]
15396#[target_feature(enable = "neon")]
15397#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15398#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vldr"))]
15399#[cfg_attr(
15400 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15401 assert_instr(ld1r)
15402)]
15403#[cfg_attr(
15404 not(target_arch = "arm"),
15405 stable(feature = "neon_intrinsics", since = "1.59.0")
15406)]
15407#[cfg_attr(
15408 target_arch = "arm",
15409 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15410)]
15411pub unsafe fn vld1q_dup_u64(ptr: *const u64) -> uint64x2_t {
15412 transmute(u64x2::splat(*ptr))
15413}
15414#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15415#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u8)"]
15416#[doc = "## Safety"]
15417#[doc = " * Neon instrinsic unsafe"]
15418#[inline]
15419#[target_feature(enable = "neon")]
15420#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15421#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15422#[cfg_attr(
15423 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15424 assert_instr(ld1r)
15425)]
15426#[cfg_attr(
15427 not(target_arch = "arm"),
15428 stable(feature = "neon_intrinsics", since = "1.59.0")
15429)]
15430#[cfg_attr(
15431 target_arch = "arm",
15432 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15433)]
15434pub unsafe fn vld1q_dup_u8(ptr: *const u8) -> uint8x16_t {
15435 transmute(u8x16::splat(*ptr))
15436}
15437#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15438#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p64)"]
15439#[doc = "## Safety"]
15440#[doc = " * Neon instrinsic unsafe"]
15441#[inline]
15442#[target_feature(enable = "neon,aes")]
15443#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15444#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15445#[cfg_attr(
15446 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15447 assert_instr(ldr)
15448)]
15449#[cfg_attr(
15450 not(target_arch = "arm"),
15451 stable(feature = "neon_intrinsics", since = "1.59.0")
15452)]
15453#[cfg_attr(
15454 target_arch = "arm",
15455 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15456)]
15457pub unsafe fn vld1_dup_p64(ptr: *const p64) -> poly64x1_t {
15458 let x: poly64x1_t;
15459 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
15460 {
15461 x = crate::core_arch::aarch64::vld1_p64(ptr);
15462 }
15463 #[cfg(target_arch = "arm")]
15464 {
15465 x = crate::core_arch::arm::vld1_p64(ptr);
15466 };
15467 x
15468}
15469#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15470#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s64)"]
15471#[doc = "## Safety"]
15472#[doc = " * Neon instrinsic unsafe"]
15473#[inline]
15474#[target_feature(enable = "neon")]
15475#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15476#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15477#[cfg_attr(
15478 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15479 assert_instr(ldr)
15480)]
15481#[cfg_attr(
15482 not(target_arch = "arm"),
15483 stable(feature = "neon_intrinsics", since = "1.59.0")
15484)]
15485#[cfg_attr(
15486 target_arch = "arm",
15487 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15488)]
15489pub unsafe fn vld1_dup_s64(ptr: *const i64) -> int64x1_t {
15490 let x: int64x1_t;
15491 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
15492 {
15493 x = crate::core_arch::aarch64::vld1_s64(ptr);
15494 }
15495 #[cfg(target_arch = "arm")]
15496 {
15497 x = crate::core_arch::arm::vld1_s64(ptr);
15498 };
15499 x
15500}
15501#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15502#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u64)"]
15503#[doc = "## Safety"]
15504#[doc = " * Neon instrinsic unsafe"]
15505#[inline]
15506#[target_feature(enable = "neon")]
15507#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15508#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15509#[cfg_attr(
15510 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15511 assert_instr(ldr)
15512)]
15513#[cfg_attr(
15514 not(target_arch = "arm"),
15515 stable(feature = "neon_intrinsics", since = "1.59.0")
15516)]
15517#[cfg_attr(
15518 target_arch = "arm",
15519 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15520)]
15521pub unsafe fn vld1_dup_u64(ptr: *const u64) -> uint64x1_t {
15522 let x: uint64x1_t;
15523 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
15524 {
15525 x = crate::core_arch::aarch64::vld1_u64(ptr);
15526 }
15527 #[cfg(target_arch = "arm")]
15528 {
15529 x = crate::core_arch::arm::vld1_u64(ptr);
15530 };
15531 x
15532}
15533#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15534#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16)"]
15535#[doc = "## Safety"]
15536#[doc = " * Neon instrinsic unsafe"]
15537#[inline]
15538#[cfg(target_endian = "little")]
15539#[cfg(target_arch = "arm")]
15540#[target_feature(enable = "neon,v7")]
15541#[target_feature(enable = "neon,fp16")]
15542#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15543#[cfg(not(target_arch = "arm64ec"))]
15544#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15545pub unsafe fn vld1_f16(ptr: *const f16) -> float16x4_t {
15546 transmute(vld1_v4f16(
15547 ptr as *const i8,
15548 crate::mem::align_of::<f16>() as i32,
15549 ))
15550}
15551#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15552#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16)"]
15553#[doc = "## Safety"]
15554#[doc = " * Neon instrinsic unsafe"]
15555#[inline]
15556#[cfg(target_endian = "big")]
15557#[cfg(target_arch = "arm")]
15558#[target_feature(enable = "neon,v7")]
15559#[target_feature(enable = "neon,fp16")]
15560#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15561#[cfg(not(target_arch = "arm64ec"))]
15562#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15563pub unsafe fn vld1_f16(ptr: *const f16) -> float16x4_t {
15564 let ret_val: float16x4_t = transmute(vld1_v4f16(
15565 ptr as *const i8,
15566 crate::mem::align_of::<f16>() as i32,
15567 ));
15568 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
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_f16)"]
15572#[doc = "## Safety"]
15573#[doc = " * Neon instrinsic unsafe"]
15574#[inline]
15575#[cfg(target_endian = "little")]
15576#[cfg(target_arch = "arm")]
15577#[target_feature(enable = "neon,v7")]
15578#[target_feature(enable = "neon,fp16")]
15579#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15580#[cfg(not(target_arch = "arm64ec"))]
15581#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15582pub unsafe fn vld1q_f16(ptr: *const f16) -> float16x8_t {
15583 transmute(vld1q_v8f16(
15584 ptr as *const i8,
15585 crate::mem::align_of::<f16>() as i32,
15586 ))
15587}
15588#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15589#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f16)"]
15590#[doc = "## Safety"]
15591#[doc = " * Neon instrinsic unsafe"]
15592#[inline]
15593#[cfg(target_endian = "big")]
15594#[cfg(target_arch = "arm")]
15595#[target_feature(enable = "neon,v7")]
15596#[target_feature(enable = "neon,fp16")]
15597#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15598#[cfg(not(target_arch = "arm64ec"))]
15599#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15600pub unsafe fn vld1q_f16(ptr: *const f16) -> float16x8_t {
15601 let ret_val: float16x8_t = transmute(vld1q_v8f16(
15602 ptr as *const i8,
15603 crate::mem::align_of::<f16>() as i32,
15604 ));
15605 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
15606}
15607#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15608#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16_x2)"]
15609#[doc = "## Safety"]
15610#[doc = " * Neon instrinsic unsafe"]
15611#[inline]
15612#[target_feature(enable = "neon")]
15613#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15614#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15615#[cfg_attr(
15616 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15617 assert_instr(ld1)
15618)]
15619#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15620#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15621#[cfg(not(target_arch = "arm64ec"))]
15622pub unsafe fn vld1_f16_x2(a: *const f16) -> float16x4x2_t {
15623 unsafe extern "unadjusted" {
15624 #[cfg_attr(
15625 any(target_arch = "aarch64", target_arch = "arm64ec"),
15626 link_name = "llvm.aarch64.neon.ld1x2.v4f16.p0"
15627 )]
15628 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v4f16.p0")]
15629 fn _vld1_f16_x2(a: *const f16) -> float16x4x2_t;
15630 }
15631 _vld1_f16_x2(a)
15632}
15633#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15634#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16_x3)"]
15635#[doc = "## Safety"]
15636#[doc = " * Neon instrinsic unsafe"]
15637#[inline]
15638#[target_feature(enable = "neon")]
15639#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15640#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15641#[cfg_attr(
15642 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15643 assert_instr(ld1)
15644)]
15645#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15646#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15647#[cfg(not(target_arch = "arm64ec"))]
15648pub unsafe fn vld1_f16_x3(a: *const f16) -> float16x4x3_t {
15649 unsafe extern "unadjusted" {
15650 #[cfg_attr(
15651 any(target_arch = "aarch64", target_arch = "arm64ec"),
15652 link_name = "llvm.aarch64.neon.ld1x3.v4f16.p0"
15653 )]
15654 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v4f16.p0")]
15655 fn _vld1_f16_x3(a: *const f16) -> float16x4x3_t;
15656 }
15657 _vld1_f16_x3(a)
15658}
15659#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15660#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16_x4)"]
15661#[doc = "## Safety"]
15662#[doc = " * Neon instrinsic unsafe"]
15663#[inline]
15664#[target_feature(enable = "neon")]
15665#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15666#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15667#[cfg_attr(
15668 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15669 assert_instr(ld1)
15670)]
15671#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15672#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15673#[cfg(not(target_arch = "arm64ec"))]
15674pub unsafe fn vld1_f16_x4(a: *const f16) -> float16x4x4_t {
15675 unsafe extern "unadjusted" {
15676 #[cfg_attr(
15677 any(target_arch = "aarch64", target_arch = "arm64ec"),
15678 link_name = "llvm.aarch64.neon.ld1x4.v4f16.p0"
15679 )]
15680 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v4f16.p0")]
15681 fn _vld1_f16_x4(a: *const f16) -> float16x4x4_t;
15682 }
15683 _vld1_f16_x4(a)
15684}
15685#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15686#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f16_x2)"]
15687#[doc = "## Safety"]
15688#[doc = " * Neon instrinsic unsafe"]
15689#[inline]
15690#[target_feature(enable = "neon")]
15691#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15692#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15693#[cfg_attr(
15694 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15695 assert_instr(ld1)
15696)]
15697#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15698#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15699#[cfg(not(target_arch = "arm64ec"))]
15700pub unsafe fn vld1q_f16_x2(a: *const f16) -> float16x8x2_t {
15701 unsafe extern "unadjusted" {
15702 #[cfg_attr(
15703 any(target_arch = "aarch64", target_arch = "arm64ec"),
15704 link_name = "llvm.aarch64.neon.ld1x2.v8f16.p0"
15705 )]
15706 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v8f16.p0")]
15707 fn _vld1q_f16_x2(a: *const f16) -> float16x8x2_t;
15708 }
15709 _vld1q_f16_x2(a)
15710}
15711#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15712#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f16_x3)"]
15713#[doc = "## Safety"]
15714#[doc = " * Neon instrinsic unsafe"]
15715#[inline]
15716#[target_feature(enable = "neon")]
15717#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15718#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15719#[cfg_attr(
15720 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15721 assert_instr(ld1)
15722)]
15723#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15724#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15725#[cfg(not(target_arch = "arm64ec"))]
15726pub unsafe fn vld1q_f16_x3(a: *const f16) -> float16x8x3_t {
15727 unsafe extern "unadjusted" {
15728 #[cfg_attr(
15729 any(target_arch = "aarch64", target_arch = "arm64ec"),
15730 link_name = "llvm.aarch64.neon.ld1x3.v8f16.p0"
15731 )]
15732 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v8f16.p0")]
15733 fn _vld1q_f16_x3(a: *const f16) -> float16x8x3_t;
15734 }
15735 _vld1q_f16_x3(a)
15736}
15737#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15738#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f16_x4)"]
15739#[doc = "## Safety"]
15740#[doc = " * Neon instrinsic unsafe"]
15741#[inline]
15742#[target_feature(enable = "neon")]
15743#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15744#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15745#[cfg_attr(
15746 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15747 assert_instr(ld1)
15748)]
15749#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15750#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15751#[cfg(not(target_arch = "arm64ec"))]
15752pub unsafe fn vld1q_f16_x4(a: *const f16) -> float16x8x4_t {
15753 unsafe extern "unadjusted" {
15754 #[cfg_attr(
15755 any(target_arch = "aarch64", target_arch = "arm64ec"),
15756 link_name = "llvm.aarch64.neon.ld1x4.v8f16.p0"
15757 )]
15758 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v8f16.p0")]
15759 fn _vld1q_f16_x4(a: *const f16) -> float16x8x4_t;
15760 }
15761 _vld1q_f16_x4(a)
15762}
15763#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15764#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f32)"]
15765#[doc = "## Safety"]
15766#[doc = " * Neon instrinsic unsafe"]
15767#[inline]
15768#[cfg(target_arch = "arm")]
15769#[target_feature(enable = "neon,v7")]
15770#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15771#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15772pub unsafe fn vld1_f32(ptr: *const f32) -> float32x2_t {
15773 const ALIGN: i32 = crate::mem::align_of::<f32>() as i32;
15774 transmute(vld1_v2f32::<ALIGN>(ptr as *const i8))
15775}
15776#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15777#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f32)"]
15778#[doc = "## Safety"]
15779#[doc = " * Neon instrinsic unsafe"]
15780#[inline]
15781#[cfg(target_arch = "arm")]
15782#[target_feature(enable = "neon,v7")]
15783#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15784#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15785pub unsafe fn vld1q_f32(ptr: *const f32) -> float32x4_t {
15786 const ALIGN: i32 = crate::mem::align_of::<f32>() as i32;
15787 transmute(vld1q_v4f32::<ALIGN>(ptr as *const i8))
15788}
15789#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15790#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8)"]
15791#[doc = "## Safety"]
15792#[doc = " * Neon instrinsic unsafe"]
15793#[inline]
15794#[cfg(target_arch = "arm")]
15795#[target_feature(enable = "neon,v7")]
15796#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15797#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15798pub unsafe fn vld1_u8(ptr: *const u8) -> uint8x8_t {
15799 const ALIGN: i32 = crate::mem::align_of::<u8>() as i32;
15800 transmute(vld1_v8i8::<ALIGN>(ptr as *const i8))
15801}
15802#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15803#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8)"]
15804#[doc = "## Safety"]
15805#[doc = " * Neon instrinsic unsafe"]
15806#[inline]
15807#[cfg(target_arch = "arm")]
15808#[target_feature(enable = "neon,v7")]
15809#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15810#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15811pub unsafe fn vld1q_u8(ptr: *const u8) -> uint8x16_t {
15812 const ALIGN: i32 = crate::mem::align_of::<u8>() as i32;
15813 transmute(vld1q_v16i8::<ALIGN>(ptr as *const i8))
15814}
15815#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15816#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16)"]
15817#[doc = "## Safety"]
15818#[doc = " * Neon instrinsic unsafe"]
15819#[inline]
15820#[cfg(target_arch = "arm")]
15821#[target_feature(enable = "neon,v7")]
15822#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15823#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15824pub unsafe fn vld1_u16(ptr: *const u16) -> uint16x4_t {
15825 const ALIGN: i32 = crate::mem::align_of::<u16>() as i32;
15826 transmute(vld1_v4i16::<ALIGN>(ptr as *const i8))
15827}
15828#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15829#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16)"]
15830#[doc = "## Safety"]
15831#[doc = " * Neon instrinsic unsafe"]
15832#[inline]
15833#[cfg(target_arch = "arm")]
15834#[target_feature(enable = "neon,v7")]
15835#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15836#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15837pub unsafe fn vld1q_u16(ptr: *const u16) -> uint16x8_t {
15838 const ALIGN: i32 = crate::mem::align_of::<u16>() as i32;
15839 transmute(vld1q_v8i16::<ALIGN>(ptr as *const i8))
15840}
15841#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15842#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32)"]
15843#[doc = "## Safety"]
15844#[doc = " * Neon instrinsic unsafe"]
15845#[inline]
15846#[cfg(target_arch = "arm")]
15847#[target_feature(enable = "neon,v7")]
15848#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15849#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15850pub unsafe fn vld1_u32(ptr: *const u32) -> uint32x2_t {
15851 const ALIGN: i32 = crate::mem::align_of::<u32>() as i32;
15852 transmute(vld1_v2i32::<ALIGN>(ptr as *const i8))
15853}
15854#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15855#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32)"]
15856#[doc = "## Safety"]
15857#[doc = " * Neon instrinsic unsafe"]
15858#[inline]
15859#[cfg(target_arch = "arm")]
15860#[target_feature(enable = "neon,v7")]
15861#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15862#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15863pub unsafe fn vld1q_u32(ptr: *const u32) -> uint32x4_t {
15864 const ALIGN: i32 = crate::mem::align_of::<u32>() as i32;
15865 transmute(vld1q_v4i32::<ALIGN>(ptr as *const i8))
15866}
15867#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15868#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u64)"]
15869#[doc = "## Safety"]
15870#[doc = " * Neon instrinsic unsafe"]
15871#[inline]
15872#[cfg(target_arch = "arm")]
15873#[target_feature(enable = "neon,v7")]
15874#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15875#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15876pub unsafe fn vld1_u64(ptr: *const u64) -> uint64x1_t {
15877 const ALIGN: i32 = crate::mem::align_of::<u64>() as i32;
15878 transmute(vld1_v1i64::<ALIGN>(ptr as *const i8))
15879}
15880#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15881#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u64)"]
15882#[doc = "## Safety"]
15883#[doc = " * Neon instrinsic unsafe"]
15884#[inline]
15885#[cfg(target_arch = "arm")]
15886#[target_feature(enable = "neon,v7")]
15887#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15888#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.64"))]
15889pub unsafe fn vld1q_u64(ptr: *const u64) -> uint64x2_t {
15890 const ALIGN: i32 = crate::mem::align_of::<u64>() as i32;
15891 transmute(vld1q_v2i64::<ALIGN>(ptr as *const i8))
15892}
15893#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15894#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p8)"]
15895#[doc = "## Safety"]
15896#[doc = " * Neon instrinsic unsafe"]
15897#[inline]
15898#[cfg(target_arch = "arm")]
15899#[target_feature(enable = "neon,v7")]
15900#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15901#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15902pub unsafe fn vld1_p8(ptr: *const p8) -> poly8x8_t {
15903 const ALIGN: i32 = crate::mem::align_of::<p8>() as i32;
15904 transmute(vld1_v8i8::<ALIGN>(ptr as *const i8))
15905}
15906#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15907#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8)"]
15908#[doc = "## Safety"]
15909#[doc = " * Neon instrinsic unsafe"]
15910#[inline]
15911#[cfg(target_arch = "arm")]
15912#[target_feature(enable = "neon,v7")]
15913#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15914#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15915pub unsafe fn vld1q_p8(ptr: *const p8) -> poly8x16_t {
15916 const ALIGN: i32 = crate::mem::align_of::<p8>() as i32;
15917 transmute(vld1q_v16i8::<ALIGN>(ptr as *const i8))
15918}
15919#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15920#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p16)"]
15921#[doc = "## Safety"]
15922#[doc = " * Neon instrinsic unsafe"]
15923#[inline]
15924#[cfg(target_arch = "arm")]
15925#[target_feature(enable = "neon,v7")]
15926#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15927#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15928pub unsafe fn vld1_p16(ptr: *const p16) -> poly16x4_t {
15929 const ALIGN: i32 = crate::mem::align_of::<p16>() as i32;
15930 transmute(vld1_v4i16::<ALIGN>(ptr as *const i8))
15931}
15932#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15933#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16)"]
15934#[doc = "## Safety"]
15935#[doc = " * Neon instrinsic unsafe"]
15936#[inline]
15937#[cfg(target_arch = "arm")]
15938#[target_feature(enable = "neon,v7")]
15939#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15940#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15941pub unsafe fn vld1q_p16(ptr: *const p16) -> poly16x8_t {
15942 const ALIGN: i32 = crate::mem::align_of::<p16>() as i32;
15943 transmute(vld1q_v8i16::<ALIGN>(ptr as *const i8))
15944}
15945#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15946#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64)"]
15947#[doc = "## Safety"]
15948#[doc = " * Neon instrinsic unsafe"]
15949#[inline]
15950#[cfg(target_arch = "arm")]
15951#[target_feature(enable = "neon,aes")]
15952#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15953#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.64"))]
15954pub unsafe fn vld1q_p64(ptr: *const p64) -> poly64x2_t {
15955 const ALIGN: i32 = crate::mem::align_of::<p64>() as i32;
15956 transmute(vld1q_v2i64::<ALIGN>(ptr as *const i8))
15957}
15958#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15959#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f32_x2)"]
15960#[doc = "## Safety"]
15961#[doc = " * Neon instrinsic unsafe"]
15962#[inline]
15963#[target_feature(enable = "neon")]
15964#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15965#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15966#[cfg_attr(
15967 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15968 assert_instr(ld1)
15969)]
15970#[cfg_attr(
15971 not(target_arch = "arm"),
15972 stable(feature = "neon_intrinsics", since = "1.59.0")
15973)]
15974#[cfg_attr(
15975 target_arch = "arm",
15976 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15977)]
15978pub unsafe fn vld1_f32_x2(a: *const f32) -> float32x2x2_t {
15979 unsafe extern "unadjusted" {
15980 #[cfg_attr(
15981 any(target_arch = "aarch64", target_arch = "arm64ec"),
15982 link_name = "llvm.aarch64.neon.ld1x2.v2f32.p0"
15983 )]
15984 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v2f32.p0")]
15985 fn _vld1_f32_x2(a: *const f32) -> float32x2x2_t;
15986 }
15987 _vld1_f32_x2(a)
15988}
15989#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15990#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f32_x3)"]
15991#[doc = "## Safety"]
15992#[doc = " * Neon instrinsic unsafe"]
15993#[inline]
15994#[target_feature(enable = "neon")]
15995#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15996#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15997#[cfg_attr(
15998 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15999 assert_instr(ld1)
16000)]
16001#[cfg_attr(
16002 not(target_arch = "arm"),
16003 stable(feature = "neon_intrinsics", since = "1.59.0")
16004)]
16005#[cfg_attr(
16006 target_arch = "arm",
16007 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16008)]
16009pub unsafe fn vld1_f32_x3(a: *const f32) -> float32x2x3_t {
16010 unsafe extern "unadjusted" {
16011 #[cfg_attr(
16012 any(target_arch = "aarch64", target_arch = "arm64ec"),
16013 link_name = "llvm.aarch64.neon.ld1x3.v2f32.p0"
16014 )]
16015 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v2f32.p0")]
16016 fn _vld1_f32_x3(a: *const f32) -> float32x2x3_t;
16017 }
16018 _vld1_f32_x3(a)
16019}
16020#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16021#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f32_x4)"]
16022#[doc = "## Safety"]
16023#[doc = " * Neon instrinsic unsafe"]
16024#[inline]
16025#[target_feature(enable = "neon")]
16026#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16027#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
16028#[cfg_attr(
16029 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16030 assert_instr(ld1)
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_f32_x4(a: *const f32) -> float32x2x4_t {
16041 unsafe extern "unadjusted" {
16042 #[cfg_attr(
16043 any(target_arch = "aarch64", target_arch = "arm64ec"),
16044 link_name = "llvm.aarch64.neon.ld1x4.v2f32.p0"
16045 )]
16046 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v2f32.p0")]
16047 fn _vld1_f32_x4(a: *const f32) -> float32x2x4_t;
16048 }
16049 _vld1_f32_x4(a)
16050}
16051#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16052#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f32_x2)"]
16053#[doc = "## Safety"]
16054#[doc = " * Neon instrinsic unsafe"]
16055#[inline]
16056#[target_feature(enable = "neon")]
16057#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16058#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
16059#[cfg_attr(
16060 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16061 assert_instr(ld1)
16062)]
16063#[cfg_attr(
16064 not(target_arch = "arm"),
16065 stable(feature = "neon_intrinsics", since = "1.59.0")
16066)]
16067#[cfg_attr(
16068 target_arch = "arm",
16069 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16070)]
16071pub unsafe fn vld1q_f32_x2(a: *const f32) -> float32x4x2_t {
16072 unsafe extern "unadjusted" {
16073 #[cfg_attr(
16074 any(target_arch = "aarch64", target_arch = "arm64ec"),
16075 link_name = "llvm.aarch64.neon.ld1x2.v4f32.p0"
16076 )]
16077 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v4f32.p0")]
16078 fn _vld1q_f32_x2(a: *const f32) -> float32x4x2_t;
16079 }
16080 _vld1q_f32_x2(a)
16081}
16082#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16083#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f32_x3)"]
16084#[doc = "## Safety"]
16085#[doc = " * Neon instrinsic unsafe"]
16086#[inline]
16087#[target_feature(enable = "neon")]
16088#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16089#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
16090#[cfg_attr(
16091 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16092 assert_instr(ld1)
16093)]
16094#[cfg_attr(
16095 not(target_arch = "arm"),
16096 stable(feature = "neon_intrinsics", since = "1.59.0")
16097)]
16098#[cfg_attr(
16099 target_arch = "arm",
16100 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16101)]
16102pub unsafe fn vld1q_f32_x3(a: *const f32) -> float32x4x3_t {
16103 unsafe extern "unadjusted" {
16104 #[cfg_attr(
16105 any(target_arch = "aarch64", target_arch = "arm64ec"),
16106 link_name = "llvm.aarch64.neon.ld1x3.v4f32.p0"
16107 )]
16108 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v4f32.p0")]
16109 fn _vld1q_f32_x3(a: *const f32) -> float32x4x3_t;
16110 }
16111 _vld1q_f32_x3(a)
16112}
16113#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16114#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f32_x4)"]
16115#[doc = "## Safety"]
16116#[doc = " * Neon instrinsic unsafe"]
16117#[inline]
16118#[target_feature(enable = "neon")]
16119#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16120#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
16121#[cfg_attr(
16122 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16123 assert_instr(ld1)
16124)]
16125#[cfg_attr(
16126 not(target_arch = "arm"),
16127 stable(feature = "neon_intrinsics", since = "1.59.0")
16128)]
16129#[cfg_attr(
16130 target_arch = "arm",
16131 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16132)]
16133pub unsafe fn vld1q_f32_x4(a: *const f32) -> float32x4x4_t {
16134 unsafe extern "unadjusted" {
16135 #[cfg_attr(
16136 any(target_arch = "aarch64", target_arch = "arm64ec"),
16137 link_name = "llvm.aarch64.neon.ld1x4.v4f32.p0"
16138 )]
16139 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v4f32.p0")]
16140 fn _vld1q_f32_x4(a: *const f32) -> float32x4x4_t;
16141 }
16142 _vld1q_f32_x4(a)
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/vld1_lane_f16)"]
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#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1, LANE = 0))]
16152#[cfg_attr(
16153 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16154 assert_instr(ld1, LANE = 0)
16155)]
16156#[rustc_legacy_const_generics(2)]
16157#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
16158#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
16159#[cfg(not(target_arch = "arm64ec"))]
16160pub unsafe fn vld1_lane_f16<const LANE: i32>(ptr: *const f16, src: float16x4_t) -> float16x4_t {
16161 static_assert_uimm_bits!(LANE, 2);
16162 simd_insert!(src, LANE as u32, *ptr)
16163}
16164#[doc = "Load one single-element structure to one lane of one register"]
16165#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_f16)"]
16166#[doc = "## Safety"]
16167#[doc = " * Neon instrinsic unsafe"]
16168#[inline]
16169#[target_feature(enable = "neon")]
16170#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16171#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1, LANE = 0))]
16172#[cfg_attr(
16173 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16174 assert_instr(ld1, LANE = 0)
16175)]
16176#[rustc_legacy_const_generics(2)]
16177#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
16178#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
16179#[cfg(not(target_arch = "arm64ec"))]
16180pub unsafe fn vld1q_lane_f16<const LANE: i32>(ptr: *const f16, src: float16x8_t) -> float16x8_t {
16181 static_assert_uimm_bits!(LANE, 3);
16182 simd_insert!(src, LANE as u32, *ptr)
16183}
16184#[doc = "Load one single-element structure to one lane of one register."]
16185#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_f32)"]
16186#[doc = "## Safety"]
16187#[doc = " * Neon instrinsic unsafe"]
16188#[inline]
16189#[target_feature(enable = "neon")]
16190#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16191#[rustc_legacy_const_generics(2)]
16192#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 1))]
16193#[cfg_attr(
16194 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16195 assert_instr(ld1, LANE = 1)
16196)]
16197#[cfg_attr(
16198 not(target_arch = "arm"),
16199 stable(feature = "neon_intrinsics", since = "1.59.0")
16200)]
16201#[cfg_attr(
16202 target_arch = "arm",
16203 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16204)]
16205pub unsafe fn vld1_lane_f32<const LANE: i32>(ptr: *const f32, src: float32x2_t) -> float32x2_t {
16206 static_assert_uimm_bits!(LANE, 1);
16207 simd_insert!(src, LANE as u32, *ptr)
16208}
16209#[doc = "Load one single-element structure to one lane of one register."]
16210#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_p16)"]
16211#[doc = "## Safety"]
16212#[doc = " * Neon instrinsic unsafe"]
16213#[inline]
16214#[target_feature(enable = "neon")]
16215#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16216#[rustc_legacy_const_generics(2)]
16217#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 3))]
16218#[cfg_attr(
16219 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16220 assert_instr(ld1, LANE = 3)
16221)]
16222#[cfg_attr(
16223 not(target_arch = "arm"),
16224 stable(feature = "neon_intrinsics", since = "1.59.0")
16225)]
16226#[cfg_attr(
16227 target_arch = "arm",
16228 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16229)]
16230pub unsafe fn vld1_lane_p16<const LANE: i32>(ptr: *const p16, src: poly16x4_t) -> poly16x4_t {
16231 static_assert_uimm_bits!(LANE, 2);
16232 simd_insert!(src, LANE as u32, *ptr)
16233}
16234#[doc = "Load one single-element structure to one lane of one register."]
16235#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_p8)"]
16236#[doc = "## Safety"]
16237#[doc = " * Neon instrinsic unsafe"]
16238#[inline]
16239#[target_feature(enable = "neon")]
16240#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16241#[rustc_legacy_const_generics(2)]
16242#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 7))]
16243#[cfg_attr(
16244 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16245 assert_instr(ld1, LANE = 7)
16246)]
16247#[cfg_attr(
16248 not(target_arch = "arm"),
16249 stable(feature = "neon_intrinsics", since = "1.59.0")
16250)]
16251#[cfg_attr(
16252 target_arch = "arm",
16253 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16254)]
16255pub unsafe fn vld1_lane_p8<const LANE: i32>(ptr: *const p8, src: poly8x8_t) -> poly8x8_t {
16256 static_assert_uimm_bits!(LANE, 3);
16257 simd_insert!(src, LANE as u32, *ptr)
16258}
16259#[doc = "Load one single-element structure to one lane of one register."]
16260#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_s16)"]
16261#[doc = "## Safety"]
16262#[doc = " * Neon instrinsic unsafe"]
16263#[inline]
16264#[target_feature(enable = "neon")]
16265#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16266#[rustc_legacy_const_generics(2)]
16267#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 3))]
16268#[cfg_attr(
16269 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16270 assert_instr(ld1, LANE = 3)
16271)]
16272#[cfg_attr(
16273 not(target_arch = "arm"),
16274 stable(feature = "neon_intrinsics", since = "1.59.0")
16275)]
16276#[cfg_attr(
16277 target_arch = "arm",
16278 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16279)]
16280pub unsafe fn vld1_lane_s16<const LANE: i32>(ptr: *const i16, src: int16x4_t) -> int16x4_t {
16281 static_assert_uimm_bits!(LANE, 2);
16282 simd_insert!(src, LANE as u32, *ptr)
16283}
16284#[doc = "Load one single-element structure to one lane of one register."]
16285#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_s32)"]
16286#[doc = "## Safety"]
16287#[doc = " * Neon instrinsic unsafe"]
16288#[inline]
16289#[target_feature(enable = "neon")]
16290#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16291#[rustc_legacy_const_generics(2)]
16292#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 1))]
16293#[cfg_attr(
16294 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16295 assert_instr(ld1, LANE = 1)
16296)]
16297#[cfg_attr(
16298 not(target_arch = "arm"),
16299 stable(feature = "neon_intrinsics", since = "1.59.0")
16300)]
16301#[cfg_attr(
16302 target_arch = "arm",
16303 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16304)]
16305pub unsafe fn vld1_lane_s32<const LANE: i32>(ptr: *const i32, src: int32x2_t) -> int32x2_t {
16306 static_assert_uimm_bits!(LANE, 1);
16307 simd_insert!(src, LANE as u32, *ptr)
16308}
16309#[doc = "Load one single-element structure to one lane of one register."]
16310#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_s64)"]
16311#[doc = "## Safety"]
16312#[doc = " * Neon instrinsic unsafe"]
16313#[inline]
16314#[target_feature(enable = "neon")]
16315#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16316#[rustc_legacy_const_generics(2)]
16317#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 0))]
16318#[cfg_attr(
16319 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16320 assert_instr(ldr, LANE = 0)
16321)]
16322#[cfg_attr(
16323 not(target_arch = "arm"),
16324 stable(feature = "neon_intrinsics", since = "1.59.0")
16325)]
16326#[cfg_attr(
16327 target_arch = "arm",
16328 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16329)]
16330pub unsafe fn vld1_lane_s64<const LANE: i32>(ptr: *const i64, src: int64x1_t) -> int64x1_t {
16331 static_assert!(LANE == 0);
16332 simd_insert!(src, LANE as u32, *ptr)
16333}
16334#[doc = "Load one single-element structure to one lane of one register."]
16335#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_s8)"]
16336#[doc = "## Safety"]
16337#[doc = " * Neon instrinsic unsafe"]
16338#[inline]
16339#[target_feature(enable = "neon")]
16340#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16341#[rustc_legacy_const_generics(2)]
16342#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 7))]
16343#[cfg_attr(
16344 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16345 assert_instr(ld1, LANE = 7)
16346)]
16347#[cfg_attr(
16348 not(target_arch = "arm"),
16349 stable(feature = "neon_intrinsics", since = "1.59.0")
16350)]
16351#[cfg_attr(
16352 target_arch = "arm",
16353 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16354)]
16355pub unsafe fn vld1_lane_s8<const LANE: i32>(ptr: *const i8, src: int8x8_t) -> int8x8_t {
16356 static_assert_uimm_bits!(LANE, 3);
16357 simd_insert!(src, LANE as u32, *ptr)
16358}
16359#[doc = "Load one single-element structure to one lane of one register."]
16360#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_u16)"]
16361#[doc = "## Safety"]
16362#[doc = " * Neon instrinsic unsafe"]
16363#[inline]
16364#[target_feature(enable = "neon")]
16365#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16366#[rustc_legacy_const_generics(2)]
16367#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 3))]
16368#[cfg_attr(
16369 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16370 assert_instr(ld1, LANE = 3)
16371)]
16372#[cfg_attr(
16373 not(target_arch = "arm"),
16374 stable(feature = "neon_intrinsics", since = "1.59.0")
16375)]
16376#[cfg_attr(
16377 target_arch = "arm",
16378 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16379)]
16380pub unsafe fn vld1_lane_u16<const LANE: i32>(ptr: *const u16, src: uint16x4_t) -> uint16x4_t {
16381 static_assert_uimm_bits!(LANE, 2);
16382 simd_insert!(src, LANE as u32, *ptr)
16383}
16384#[doc = "Load one single-element structure to one lane of one register."]
16385#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_u32)"]
16386#[doc = "## Safety"]
16387#[doc = " * Neon instrinsic unsafe"]
16388#[inline]
16389#[target_feature(enable = "neon")]
16390#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16391#[rustc_legacy_const_generics(2)]
16392#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 1))]
16393#[cfg_attr(
16394 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16395 assert_instr(ld1, LANE = 1)
16396)]
16397#[cfg_attr(
16398 not(target_arch = "arm"),
16399 stable(feature = "neon_intrinsics", since = "1.59.0")
16400)]
16401#[cfg_attr(
16402 target_arch = "arm",
16403 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16404)]
16405pub unsafe fn vld1_lane_u32<const LANE: i32>(ptr: *const u32, src: uint32x2_t) -> uint32x2_t {
16406 static_assert_uimm_bits!(LANE, 1);
16407 simd_insert!(src, LANE as u32, *ptr)
16408}
16409#[doc = "Load one single-element structure to one lane of one register."]
16410#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_u64)"]
16411#[doc = "## Safety"]
16412#[doc = " * Neon instrinsic unsafe"]
16413#[inline]
16414#[target_feature(enable = "neon")]
16415#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16416#[rustc_legacy_const_generics(2)]
16417#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 0))]
16418#[cfg_attr(
16419 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16420 assert_instr(ldr, LANE = 0)
16421)]
16422#[cfg_attr(
16423 not(target_arch = "arm"),
16424 stable(feature = "neon_intrinsics", since = "1.59.0")
16425)]
16426#[cfg_attr(
16427 target_arch = "arm",
16428 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16429)]
16430pub unsafe fn vld1_lane_u64<const LANE: i32>(ptr: *const u64, src: uint64x1_t) -> uint64x1_t {
16431 static_assert!(LANE == 0);
16432 simd_insert!(src, LANE as u32, *ptr)
16433}
16434#[doc = "Load one single-element structure to one lane of one register."]
16435#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_u8)"]
16436#[doc = "## Safety"]
16437#[doc = " * Neon instrinsic unsafe"]
16438#[inline]
16439#[target_feature(enable = "neon")]
16440#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16441#[rustc_legacy_const_generics(2)]
16442#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 7))]
16443#[cfg_attr(
16444 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16445 assert_instr(ld1, LANE = 7)
16446)]
16447#[cfg_attr(
16448 not(target_arch = "arm"),
16449 stable(feature = "neon_intrinsics", since = "1.59.0")
16450)]
16451#[cfg_attr(
16452 target_arch = "arm",
16453 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16454)]
16455pub unsafe fn vld1_lane_u8<const LANE: i32>(ptr: *const u8, src: uint8x8_t) -> uint8x8_t {
16456 static_assert_uimm_bits!(LANE, 3);
16457 simd_insert!(src, LANE as u32, *ptr)
16458}
16459#[doc = "Load one single-element structure to one lane of one register."]
16460#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_f32)"]
16461#[doc = "## Safety"]
16462#[doc = " * Neon instrinsic unsafe"]
16463#[inline]
16464#[target_feature(enable = "neon")]
16465#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16466#[rustc_legacy_const_generics(2)]
16467#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 3))]
16468#[cfg_attr(
16469 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16470 assert_instr(ld1, LANE = 3)
16471)]
16472#[cfg_attr(
16473 not(target_arch = "arm"),
16474 stable(feature = "neon_intrinsics", since = "1.59.0")
16475)]
16476#[cfg_attr(
16477 target_arch = "arm",
16478 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16479)]
16480pub unsafe fn vld1q_lane_f32<const LANE: i32>(ptr: *const f32, src: float32x4_t) -> float32x4_t {
16481 static_assert_uimm_bits!(LANE, 2);
16482 simd_insert!(src, LANE as u32, *ptr)
16483}
16484#[doc = "Load one single-element structure to one lane of one register."]
16485#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_p16)"]
16486#[doc = "## Safety"]
16487#[doc = " * Neon instrinsic unsafe"]
16488#[inline]
16489#[target_feature(enable = "neon")]
16490#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16491#[rustc_legacy_const_generics(2)]
16492#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 7))]
16493#[cfg_attr(
16494 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16495 assert_instr(ld1, LANE = 7)
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 vld1q_lane_p16<const LANE: i32>(ptr: *const p16, src: poly16x8_t) -> poly16x8_t {
16506 static_assert_uimm_bits!(LANE, 3);
16507 simd_insert!(src, LANE as u32, *ptr)
16508}
16509#[doc = "Load one single-element structure to one lane of one register."]
16510#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_p8)"]
16511#[doc = "## Safety"]
16512#[doc = " * Neon instrinsic unsafe"]
16513#[inline]
16514#[target_feature(enable = "neon")]
16515#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16516#[rustc_legacy_const_generics(2)]
16517#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 15))]
16518#[cfg_attr(
16519 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16520 assert_instr(ld1, LANE = 15)
16521)]
16522#[cfg_attr(
16523 not(target_arch = "arm"),
16524 stable(feature = "neon_intrinsics", since = "1.59.0")
16525)]
16526#[cfg_attr(
16527 target_arch = "arm",
16528 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16529)]
16530pub unsafe fn vld1q_lane_p8<const LANE: i32>(ptr: *const p8, src: poly8x16_t) -> poly8x16_t {
16531 static_assert_uimm_bits!(LANE, 4);
16532 simd_insert!(src, LANE as u32, *ptr)
16533}
16534#[doc = "Load one single-element structure to one lane of one register."]
16535#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_s16)"]
16536#[doc = "## Safety"]
16537#[doc = " * Neon instrinsic unsafe"]
16538#[inline]
16539#[target_feature(enable = "neon")]
16540#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16541#[rustc_legacy_const_generics(2)]
16542#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 7))]
16543#[cfg_attr(
16544 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16545 assert_instr(ld1, LANE = 7)
16546)]
16547#[cfg_attr(
16548 not(target_arch = "arm"),
16549 stable(feature = "neon_intrinsics", since = "1.59.0")
16550)]
16551#[cfg_attr(
16552 target_arch = "arm",
16553 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16554)]
16555pub unsafe fn vld1q_lane_s16<const LANE: i32>(ptr: *const i16, src: int16x8_t) -> int16x8_t {
16556 static_assert_uimm_bits!(LANE, 3);
16557 simd_insert!(src, LANE as u32, *ptr)
16558}
16559#[doc = "Load one single-element structure to one lane of one register."]
16560#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_s32)"]
16561#[doc = "## Safety"]
16562#[doc = " * Neon instrinsic unsafe"]
16563#[inline]
16564#[target_feature(enable = "neon")]
16565#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16566#[rustc_legacy_const_generics(2)]
16567#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 3))]
16568#[cfg_attr(
16569 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16570 assert_instr(ld1, LANE = 3)
16571)]
16572#[cfg_attr(
16573 not(target_arch = "arm"),
16574 stable(feature = "neon_intrinsics", since = "1.59.0")
16575)]
16576#[cfg_attr(
16577 target_arch = "arm",
16578 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16579)]
16580pub unsafe fn vld1q_lane_s32<const LANE: i32>(ptr: *const i32, src: int32x4_t) -> int32x4_t {
16581 static_assert_uimm_bits!(LANE, 2);
16582 simd_insert!(src, LANE as u32, *ptr)
16583}
16584#[doc = "Load one single-element structure to one lane of one register."]
16585#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_s64)"]
16586#[doc = "## Safety"]
16587#[doc = " * Neon instrinsic unsafe"]
16588#[inline]
16589#[target_feature(enable = "neon")]
16590#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16591#[rustc_legacy_const_generics(2)]
16592#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 1))]
16593#[cfg_attr(
16594 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16595 assert_instr(ld1, LANE = 1)
16596)]
16597#[cfg_attr(
16598 not(target_arch = "arm"),
16599 stable(feature = "neon_intrinsics", since = "1.59.0")
16600)]
16601#[cfg_attr(
16602 target_arch = "arm",
16603 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16604)]
16605pub unsafe fn vld1q_lane_s64<const LANE: i32>(ptr: *const i64, src: int64x2_t) -> int64x2_t {
16606 static_assert_uimm_bits!(LANE, 1);
16607 simd_insert!(src, LANE as u32, *ptr)
16608}
16609#[doc = "Load one single-element structure to one lane of one register."]
16610#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_s8)"]
16611#[doc = "## Safety"]
16612#[doc = " * Neon instrinsic unsafe"]
16613#[inline]
16614#[target_feature(enable = "neon")]
16615#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16616#[rustc_legacy_const_generics(2)]
16617#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 15))]
16618#[cfg_attr(
16619 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16620 assert_instr(ld1, LANE = 15)
16621)]
16622#[cfg_attr(
16623 not(target_arch = "arm"),
16624 stable(feature = "neon_intrinsics", since = "1.59.0")
16625)]
16626#[cfg_attr(
16627 target_arch = "arm",
16628 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16629)]
16630pub unsafe fn vld1q_lane_s8<const LANE: i32>(ptr: *const i8, src: int8x16_t) -> int8x16_t {
16631 static_assert_uimm_bits!(LANE, 4);
16632 simd_insert!(src, LANE as u32, *ptr)
16633}
16634#[doc = "Load one single-element structure to one lane of one register."]
16635#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_u16)"]
16636#[doc = "## Safety"]
16637#[doc = " * Neon instrinsic unsafe"]
16638#[inline]
16639#[target_feature(enable = "neon")]
16640#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16641#[rustc_legacy_const_generics(2)]
16642#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 7))]
16643#[cfg_attr(
16644 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16645 assert_instr(ld1, LANE = 7)
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_lane_u16<const LANE: i32>(ptr: *const u16, src: uint16x8_t) -> uint16x8_t {
16656 static_assert_uimm_bits!(LANE, 3);
16657 simd_insert!(src, LANE as u32, *ptr)
16658}
16659#[doc = "Load one single-element structure to one lane of one register."]
16660#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_u32)"]
16661#[doc = "## Safety"]
16662#[doc = " * Neon instrinsic unsafe"]
16663#[inline]
16664#[target_feature(enable = "neon")]
16665#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16666#[rustc_legacy_const_generics(2)]
16667#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 3))]
16668#[cfg_attr(
16669 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16670 assert_instr(ld1, LANE = 3)
16671)]
16672#[cfg_attr(
16673 not(target_arch = "arm"),
16674 stable(feature = "neon_intrinsics", since = "1.59.0")
16675)]
16676#[cfg_attr(
16677 target_arch = "arm",
16678 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16679)]
16680pub unsafe fn vld1q_lane_u32<const LANE: i32>(ptr: *const u32, src: uint32x4_t) -> uint32x4_t {
16681 static_assert_uimm_bits!(LANE, 2);
16682 simd_insert!(src, LANE as u32, *ptr)
16683}
16684#[doc = "Load one single-element structure to one lane of one register."]
16685#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_u64)"]
16686#[doc = "## Safety"]
16687#[doc = " * Neon instrinsic unsafe"]
16688#[inline]
16689#[target_feature(enable = "neon")]
16690#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16691#[rustc_legacy_const_generics(2)]
16692#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 1))]
16693#[cfg_attr(
16694 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16695 assert_instr(ld1, LANE = 1)
16696)]
16697#[cfg_attr(
16698 not(target_arch = "arm"),
16699 stable(feature = "neon_intrinsics", since = "1.59.0")
16700)]
16701#[cfg_attr(
16702 target_arch = "arm",
16703 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16704)]
16705pub unsafe fn vld1q_lane_u64<const LANE: i32>(ptr: *const u64, src: uint64x2_t) -> uint64x2_t {
16706 static_assert_uimm_bits!(LANE, 1);
16707 simd_insert!(src, LANE as u32, *ptr)
16708}
16709#[doc = "Load one single-element structure to one lane of one register."]
16710#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_u8)"]
16711#[doc = "## Safety"]
16712#[doc = " * Neon instrinsic unsafe"]
16713#[inline]
16714#[target_feature(enable = "neon")]
16715#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16716#[rustc_legacy_const_generics(2)]
16717#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 15))]
16718#[cfg_attr(
16719 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16720 assert_instr(ld1, LANE = 15)
16721)]
16722#[cfg_attr(
16723 not(target_arch = "arm"),
16724 stable(feature = "neon_intrinsics", since = "1.59.0")
16725)]
16726#[cfg_attr(
16727 target_arch = "arm",
16728 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16729)]
16730pub unsafe fn vld1q_lane_u8<const LANE: i32>(ptr: *const u8, src: uint8x16_t) -> uint8x16_t {
16731 static_assert_uimm_bits!(LANE, 4);
16732 simd_insert!(src, LANE as u32, *ptr)
16733}
16734#[doc = "Load one single-element structure to one lane of one register."]
16735#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_p64)"]
16736#[doc = "## Safety"]
16737#[doc = " * Neon instrinsic unsafe"]
16738#[inline]
16739#[target_feature(enable = "neon,aes")]
16740#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16741#[rustc_legacy_const_generics(2)]
16742#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 0))]
16743#[cfg_attr(
16744 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16745 assert_instr(ldr, LANE = 0)
16746)]
16747#[cfg_attr(
16748 not(target_arch = "arm"),
16749 stable(feature = "neon_intrinsics", since = "1.59.0")
16750)]
16751#[cfg_attr(
16752 target_arch = "arm",
16753 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16754)]
16755pub unsafe fn vld1_lane_p64<const LANE: i32>(ptr: *const p64, src: poly64x1_t) -> poly64x1_t {
16756 static_assert!(LANE == 0);
16757 simd_insert!(src, LANE as u32, *ptr)
16758}
16759#[doc = "Load one single-element structure to one lane of one register."]
16760#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_p64)"]
16761#[doc = "## Safety"]
16762#[doc = " * Neon instrinsic unsafe"]
16763#[inline]
16764#[target_feature(enable = "neon,aes")]
16765#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16766#[rustc_legacy_const_generics(2)]
16767#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 1))]
16768#[cfg_attr(
16769 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16770 assert_instr(ld1, LANE = 1)
16771)]
16772#[cfg_attr(
16773 not(target_arch = "arm"),
16774 stable(feature = "neon_intrinsics", since = "1.59.0")
16775)]
16776#[cfg_attr(
16777 target_arch = "arm",
16778 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16779)]
16780pub unsafe fn vld1q_lane_p64<const LANE: i32>(ptr: *const p64, src: poly64x2_t) -> poly64x2_t {
16781 static_assert_uimm_bits!(LANE, 1);
16782 simd_insert!(src, LANE as u32, *ptr)
16783}
16784#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16785#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p64)"]
16786#[doc = "## Safety"]
16787#[doc = " * Neon instrinsic unsafe"]
16788#[inline]
16789#[cfg(target_arch = "arm")]
16790#[target_feature(enable = "neon,aes")]
16791#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16792#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
16793pub unsafe fn vld1_p64(ptr: *const p64) -> poly64x1_t {
16794 let a: *const i8 = ptr as *const i8;
16795 let b: i32 = crate::mem::align_of::<p64>() as i32;
16796 unsafe extern "unadjusted" {
16797 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v1i64")]
16798 fn _vld1_v1i64(a: *const i8, b: i32) -> int64x1_t;
16799 }
16800 transmute(_vld1_v1i64(a, b))
16801}
16802#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16803#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p64_x2)"]
16804#[doc = "## Safety"]
16805#[doc = " * Neon instrinsic unsafe"]
16806#[inline]
16807#[target_feature(enable = "neon,aes")]
16808#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16809#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
16810#[cfg_attr(
16811 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16812 assert_instr(ld1)
16813)]
16814#[cfg_attr(
16815 not(target_arch = "arm"),
16816 stable(feature = "neon_intrinsics", since = "1.59.0")
16817)]
16818#[cfg_attr(
16819 target_arch = "arm",
16820 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16821)]
16822pub unsafe fn vld1_p64_x2(a: *const p64) -> poly64x1x2_t {
16823 transmute(vld1_s64_x2(transmute(a)))
16824}
16825#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16826#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p64_x3)"]
16827#[doc = "## Safety"]
16828#[doc = " * Neon instrinsic unsafe"]
16829#[inline]
16830#[target_feature(enable = "neon,aes")]
16831#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16832#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16833#[cfg_attr(
16834 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16835 assert_instr(ld1)
16836)]
16837#[cfg_attr(
16838 not(target_arch = "arm"),
16839 stable(feature = "neon_intrinsics", since = "1.59.0")
16840)]
16841#[cfg_attr(
16842 target_arch = "arm",
16843 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16844)]
16845pub unsafe fn vld1_p64_x3(a: *const p64) -> poly64x1x3_t {
16846 transmute(vld1_s64_x3(transmute(a)))
16847}
16848#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16849#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p64_x4)"]
16850#[doc = "## Safety"]
16851#[doc = " * Neon instrinsic unsafe"]
16852#[inline]
16853#[target_feature(enable = "neon,aes")]
16854#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16855#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16856#[cfg_attr(
16857 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16858 assert_instr(ld1)
16859)]
16860#[cfg_attr(
16861 not(target_arch = "arm"),
16862 stable(feature = "neon_intrinsics", since = "1.59.0")
16863)]
16864#[cfg_attr(
16865 target_arch = "arm",
16866 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16867)]
16868pub unsafe fn vld1_p64_x4(a: *const p64) -> poly64x1x4_t {
16869 transmute(vld1_s64_x4(transmute(a)))
16870}
16871#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16872#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64_x2)"]
16873#[doc = "## Safety"]
16874#[doc = " * Neon instrinsic unsafe"]
16875#[inline]
16876#[cfg(target_endian = "little")]
16877#[target_feature(enable = "neon,aes")]
16878#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16879#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16880#[cfg_attr(
16881 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16882 assert_instr(ld1)
16883)]
16884#[cfg_attr(
16885 not(target_arch = "arm"),
16886 stable(feature = "neon_intrinsics", since = "1.59.0")
16887)]
16888#[cfg_attr(
16889 target_arch = "arm",
16890 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16891)]
16892pub unsafe fn vld1q_p64_x2(a: *const p64) -> poly64x2x2_t {
16893 transmute(vld1q_s64_x2(transmute(a)))
16894}
16895#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16896#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64_x2)"]
16897#[doc = "## Safety"]
16898#[doc = " * Neon instrinsic unsafe"]
16899#[inline]
16900#[cfg(target_endian = "big")]
16901#[target_feature(enable = "neon,aes")]
16902#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16903#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16904#[cfg_attr(
16905 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16906 assert_instr(ld1)
16907)]
16908#[cfg_attr(
16909 not(target_arch = "arm"),
16910 stable(feature = "neon_intrinsics", since = "1.59.0")
16911)]
16912#[cfg_attr(
16913 target_arch = "arm",
16914 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16915)]
16916pub unsafe fn vld1q_p64_x2(a: *const p64) -> poly64x2x2_t {
16917 let mut ret_val: poly64x2x2_t = transmute(vld1q_s64_x2(transmute(a)));
16918 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
16919 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
16920 ret_val
16921}
16922#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16923#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64_x3)"]
16924#[doc = "## Safety"]
16925#[doc = " * Neon instrinsic unsafe"]
16926#[inline]
16927#[cfg(target_endian = "little")]
16928#[target_feature(enable = "neon,aes")]
16929#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16930#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16931#[cfg_attr(
16932 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16933 assert_instr(ld1)
16934)]
16935#[cfg_attr(
16936 not(target_arch = "arm"),
16937 stable(feature = "neon_intrinsics", since = "1.59.0")
16938)]
16939#[cfg_attr(
16940 target_arch = "arm",
16941 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16942)]
16943pub unsafe fn vld1q_p64_x3(a: *const p64) -> poly64x2x3_t {
16944 transmute(vld1q_s64_x3(transmute(a)))
16945}
16946#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16947#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64_x3)"]
16948#[doc = "## Safety"]
16949#[doc = " * Neon instrinsic unsafe"]
16950#[inline]
16951#[cfg(target_endian = "big")]
16952#[target_feature(enable = "neon,aes")]
16953#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16954#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16955#[cfg_attr(
16956 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16957 assert_instr(ld1)
16958)]
16959#[cfg_attr(
16960 not(target_arch = "arm"),
16961 stable(feature = "neon_intrinsics", since = "1.59.0")
16962)]
16963#[cfg_attr(
16964 target_arch = "arm",
16965 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16966)]
16967pub unsafe fn vld1q_p64_x3(a: *const p64) -> poly64x2x3_t {
16968 let mut ret_val: poly64x2x3_t = transmute(vld1q_s64_x3(transmute(a)));
16969 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
16970 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
16971 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
16972 ret_val
16973}
16974#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16975#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64_x4)"]
16976#[doc = "## Safety"]
16977#[doc = " * Neon instrinsic unsafe"]
16978#[inline]
16979#[cfg(target_endian = "little")]
16980#[target_feature(enable = "neon,aes")]
16981#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16982#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16983#[cfg_attr(
16984 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16985 assert_instr(ld1)
16986)]
16987#[cfg_attr(
16988 not(target_arch = "arm"),
16989 stable(feature = "neon_intrinsics", since = "1.59.0")
16990)]
16991#[cfg_attr(
16992 target_arch = "arm",
16993 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16994)]
16995pub unsafe fn vld1q_p64_x4(a: *const p64) -> poly64x2x4_t {
16996 transmute(vld1q_s64_x4(transmute(a)))
16997}
16998#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16999#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64_x4)"]
17000#[doc = "## Safety"]
17001#[doc = " * Neon instrinsic unsafe"]
17002#[inline]
17003#[cfg(target_endian = "big")]
17004#[target_feature(enable = "neon,aes")]
17005#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
17006#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
17007#[cfg_attr(
17008 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17009 assert_instr(ld1)
17010)]
17011#[cfg_attr(
17012 not(target_arch = "arm"),
17013 stable(feature = "neon_intrinsics", since = "1.59.0")
17014)]
17015#[cfg_attr(
17016 target_arch = "arm",
17017 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17018)]
17019pub unsafe fn vld1q_p64_x4(a: *const p64) -> poly64x2x4_t {
17020 let mut ret_val: poly64x2x4_t = transmute(vld1q_s64_x4(transmute(a)));
17021 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
17022 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
17023 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
17024 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [1, 0]) };
17025 ret_val
17026}
17027#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
17028#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s8)"]
17029#[doc = "## Safety"]
17030#[doc = " * Neon instrinsic unsafe"]
17031#[inline]
17032#[cfg(target_arch = "arm")]
17033#[target_feature(enable = "neon,v7")]
17034#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
17035#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
17036pub unsafe fn vld1_s8(ptr: *const i8) -> int8x8_t {
17037 const ALIGN: i32 = crate::mem::align_of::<i8>() as i32;
17038 vld1_v8i8::<ALIGN>(ptr as *const i8)
17039}
17040#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
17041#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s8)"]
17042#[doc = "## Safety"]
17043#[doc = " * Neon instrinsic unsafe"]
17044#[inline]
17045#[cfg(target_arch = "arm")]
17046#[target_feature(enable = "neon,v7")]
17047#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
17048#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
17049pub unsafe fn vld1q_s8(ptr: *const i8) -> int8x16_t {
17050 const ALIGN: i32 = crate::mem::align_of::<i8>() as i32;
17051 vld1q_v16i8::<ALIGN>(ptr as *const i8)
17052}
17053#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
17054#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s16)"]
17055#[doc = "## Safety"]
17056#[doc = " * Neon instrinsic unsafe"]
17057#[inline]
17058#[cfg(target_arch = "arm")]
17059#[target_feature(enable = "neon,v7")]
17060#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
17061#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
17062pub unsafe fn vld1_s16(ptr: *const i16) -> int16x4_t {
17063 const ALIGN: i32 = crate::mem::align_of::<i16>() as i32;
17064 vld1_v4i16::<ALIGN>(ptr as *const i8)
17065}
17066#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
17067#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s16)"]
17068#[doc = "## Safety"]
17069#[doc = " * Neon instrinsic unsafe"]
17070#[inline]
17071#[cfg(target_arch = "arm")]
17072#[target_feature(enable = "neon,v7")]
17073#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
17074#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
17075pub unsafe fn vld1q_s16(ptr: *const i16) -> int16x8_t {
17076 const ALIGN: i32 = crate::mem::align_of::<i16>() as i32;
17077 vld1q_v8i16::<ALIGN>(ptr as *const i8)
17078}
17079#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
17080#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s32)"]
17081#[doc = "## Safety"]
17082#[doc = " * Neon instrinsic unsafe"]
17083#[inline]
17084#[cfg(target_arch = "arm")]
17085#[target_feature(enable = "neon,v7")]
17086#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
17087#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
17088pub unsafe fn vld1_s32(ptr: *const i32) -> int32x2_t {
17089 const ALIGN: i32 = crate::mem::align_of::<i32>() as i32;
17090 vld1_v2i32::<ALIGN>(ptr as *const i8)
17091}
17092#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
17093#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s32)"]
17094#[doc = "## Safety"]
17095#[doc = " * Neon instrinsic unsafe"]
17096#[inline]
17097#[cfg(target_arch = "arm")]
17098#[target_feature(enable = "neon,v7")]
17099#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
17100#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
17101pub unsafe fn vld1q_s32(ptr: *const i32) -> int32x4_t {
17102 const ALIGN: i32 = crate::mem::align_of::<i32>() as i32;
17103 vld1q_v4i32::<ALIGN>(ptr as *const i8)
17104}
17105#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
17106#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s64)"]
17107#[doc = "## Safety"]
17108#[doc = " * Neon instrinsic unsafe"]
17109#[inline]
17110#[cfg(target_arch = "arm")]
17111#[target_feature(enable = "neon,v7")]
17112#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
17113#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
17114pub unsafe fn vld1_s64(ptr: *const i64) -> int64x1_t {
17115 const ALIGN: i32 = crate::mem::align_of::<i64>() as i32;
17116 vld1_v1i64::<ALIGN>(ptr as *const i8)
17117}
17118#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
17119#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s64)"]
17120#[doc = "## Safety"]
17121#[doc = " * Neon instrinsic unsafe"]
17122#[inline]
17123#[cfg(target_arch = "arm")]
17124#[target_feature(enable = "neon,v7")]
17125#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
17126#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.64"))]
17127pub unsafe fn vld1q_s64(ptr: *const i64) -> int64x2_t {
17128 const ALIGN: i32 = crate::mem::align_of::<i64>() as i32;
17129 vld1q_v2i64::<ALIGN>(ptr as *const i8)
17130}
17131#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17132#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s8_x2)"]
17133#[doc = "## Safety"]
17134#[doc = " * Neon instrinsic unsafe"]
17135#[inline]
17136#[target_feature(enable = "neon")]
17137#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17138#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17139#[cfg_attr(
17140 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17141 assert_instr(ld1)
17142)]
17143#[cfg_attr(
17144 not(target_arch = "arm"),
17145 stable(feature = "neon_intrinsics", since = "1.59.0")
17146)]
17147#[cfg_attr(
17148 target_arch = "arm",
17149 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17150)]
17151pub unsafe fn vld1_s8_x2(a: *const i8) -> int8x8x2_t {
17152 unsafe extern "unadjusted" {
17153 #[cfg_attr(
17154 any(target_arch = "aarch64", target_arch = "arm64ec"),
17155 link_name = "llvm.aarch64.neon.ld1x2.v8i8.p0"
17156 )]
17157 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v8i8.p0")]
17158 fn _vld1_s8_x2(a: *const i8) -> int8x8x2_t;
17159 }
17160 _vld1_s8_x2(a)
17161}
17162#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17163#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s8_x3)"]
17164#[doc = "## Safety"]
17165#[doc = " * Neon instrinsic unsafe"]
17166#[inline]
17167#[target_feature(enable = "neon")]
17168#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17169#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17170#[cfg_attr(
17171 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17172 assert_instr(ld1)
17173)]
17174#[cfg_attr(
17175 not(target_arch = "arm"),
17176 stable(feature = "neon_intrinsics", since = "1.59.0")
17177)]
17178#[cfg_attr(
17179 target_arch = "arm",
17180 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17181)]
17182pub unsafe fn vld1_s8_x3(a: *const i8) -> int8x8x3_t {
17183 unsafe extern "unadjusted" {
17184 #[cfg_attr(
17185 any(target_arch = "aarch64", target_arch = "arm64ec"),
17186 link_name = "llvm.aarch64.neon.ld1x3.v8i8.p0"
17187 )]
17188 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v8i8.p0")]
17189 fn _vld1_s8_x3(a: *const i8) -> int8x8x3_t;
17190 }
17191 _vld1_s8_x3(a)
17192}
17193#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17194#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s8_x4)"]
17195#[doc = "## Safety"]
17196#[doc = " * Neon instrinsic unsafe"]
17197#[inline]
17198#[target_feature(enable = "neon")]
17199#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17200#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17201#[cfg_attr(
17202 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17203 assert_instr(ld1)
17204)]
17205#[cfg_attr(
17206 not(target_arch = "arm"),
17207 stable(feature = "neon_intrinsics", since = "1.59.0")
17208)]
17209#[cfg_attr(
17210 target_arch = "arm",
17211 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17212)]
17213pub unsafe fn vld1_s8_x4(a: *const i8) -> int8x8x4_t {
17214 unsafe extern "unadjusted" {
17215 #[cfg_attr(
17216 any(target_arch = "aarch64", target_arch = "arm64ec"),
17217 link_name = "llvm.aarch64.neon.ld1x4.v8i8.p0"
17218 )]
17219 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v8i8.p0")]
17220 fn _vld1_s8_x4(a: *const i8) -> int8x8x4_t;
17221 }
17222 _vld1_s8_x4(a)
17223}
17224#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17225#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s8_x2)"]
17226#[doc = "## Safety"]
17227#[doc = " * Neon instrinsic unsafe"]
17228#[inline]
17229#[target_feature(enable = "neon")]
17230#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17231#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17232#[cfg_attr(
17233 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17234 assert_instr(ld1)
17235)]
17236#[cfg_attr(
17237 not(target_arch = "arm"),
17238 stable(feature = "neon_intrinsics", since = "1.59.0")
17239)]
17240#[cfg_attr(
17241 target_arch = "arm",
17242 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17243)]
17244pub unsafe fn vld1q_s8_x2(a: *const i8) -> int8x16x2_t {
17245 unsafe extern "unadjusted" {
17246 #[cfg_attr(
17247 any(target_arch = "aarch64", target_arch = "arm64ec"),
17248 link_name = "llvm.aarch64.neon.ld1x2.v16i8.p0"
17249 )]
17250 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v16i8.p0")]
17251 fn _vld1q_s8_x2(a: *const i8) -> int8x16x2_t;
17252 }
17253 _vld1q_s8_x2(a)
17254}
17255#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17256#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s8_x3)"]
17257#[doc = "## Safety"]
17258#[doc = " * Neon instrinsic unsafe"]
17259#[inline]
17260#[target_feature(enable = "neon")]
17261#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17262#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17263#[cfg_attr(
17264 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17265 assert_instr(ld1)
17266)]
17267#[cfg_attr(
17268 not(target_arch = "arm"),
17269 stable(feature = "neon_intrinsics", since = "1.59.0")
17270)]
17271#[cfg_attr(
17272 target_arch = "arm",
17273 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17274)]
17275pub unsafe fn vld1q_s8_x3(a: *const i8) -> int8x16x3_t {
17276 unsafe extern "unadjusted" {
17277 #[cfg_attr(
17278 any(target_arch = "aarch64", target_arch = "arm64ec"),
17279 link_name = "llvm.aarch64.neon.ld1x3.v16i8.p0"
17280 )]
17281 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v16i8.p0")]
17282 fn _vld1q_s8_x3(a: *const i8) -> int8x16x3_t;
17283 }
17284 _vld1q_s8_x3(a)
17285}
17286#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17287#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s8_x4)"]
17288#[doc = "## Safety"]
17289#[doc = " * Neon instrinsic unsafe"]
17290#[inline]
17291#[target_feature(enable = "neon")]
17292#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17293#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17294#[cfg_attr(
17295 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17296 assert_instr(ld1)
17297)]
17298#[cfg_attr(
17299 not(target_arch = "arm"),
17300 stable(feature = "neon_intrinsics", since = "1.59.0")
17301)]
17302#[cfg_attr(
17303 target_arch = "arm",
17304 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17305)]
17306pub unsafe fn vld1q_s8_x4(a: *const i8) -> int8x16x4_t {
17307 unsafe extern "unadjusted" {
17308 #[cfg_attr(
17309 any(target_arch = "aarch64", target_arch = "arm64ec"),
17310 link_name = "llvm.aarch64.neon.ld1x4.v16i8.p0"
17311 )]
17312 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v16i8.p0")]
17313 fn _vld1q_s8_x4(a: *const i8) -> int8x16x4_t;
17314 }
17315 _vld1q_s8_x4(a)
17316}
17317#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17318#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s16_x2)"]
17319#[doc = "## Safety"]
17320#[doc = " * Neon instrinsic unsafe"]
17321#[inline]
17322#[target_feature(enable = "neon")]
17323#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17324#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17325#[cfg_attr(
17326 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17327 assert_instr(ld1)
17328)]
17329#[cfg_attr(
17330 not(target_arch = "arm"),
17331 stable(feature = "neon_intrinsics", since = "1.59.0")
17332)]
17333#[cfg_attr(
17334 target_arch = "arm",
17335 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17336)]
17337pub unsafe fn vld1_s16_x2(a: *const i16) -> int16x4x2_t {
17338 unsafe extern "unadjusted" {
17339 #[cfg_attr(
17340 any(target_arch = "aarch64", target_arch = "arm64ec"),
17341 link_name = "llvm.aarch64.neon.ld1x2.v4i16.p0"
17342 )]
17343 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v4i16.p0")]
17344 fn _vld1_s16_x2(a: *const i16) -> int16x4x2_t;
17345 }
17346 _vld1_s16_x2(a)
17347}
17348#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17349#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s16_x3)"]
17350#[doc = "## Safety"]
17351#[doc = " * Neon instrinsic unsafe"]
17352#[inline]
17353#[target_feature(enable = "neon")]
17354#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17355#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17356#[cfg_attr(
17357 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17358 assert_instr(ld1)
17359)]
17360#[cfg_attr(
17361 not(target_arch = "arm"),
17362 stable(feature = "neon_intrinsics", since = "1.59.0")
17363)]
17364#[cfg_attr(
17365 target_arch = "arm",
17366 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17367)]
17368pub unsafe fn vld1_s16_x3(a: *const i16) -> int16x4x3_t {
17369 unsafe extern "unadjusted" {
17370 #[cfg_attr(
17371 any(target_arch = "aarch64", target_arch = "arm64ec"),
17372 link_name = "llvm.aarch64.neon.ld1x3.v4i16.p0"
17373 )]
17374 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v4i16.p0")]
17375 fn _vld1_s16_x3(a: *const i16) -> int16x4x3_t;
17376 }
17377 _vld1_s16_x3(a)
17378}
17379#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17380#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s16_x4)"]
17381#[doc = "## Safety"]
17382#[doc = " * Neon instrinsic unsafe"]
17383#[inline]
17384#[target_feature(enable = "neon")]
17385#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17386#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17387#[cfg_attr(
17388 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17389 assert_instr(ld1)
17390)]
17391#[cfg_attr(
17392 not(target_arch = "arm"),
17393 stable(feature = "neon_intrinsics", since = "1.59.0")
17394)]
17395#[cfg_attr(
17396 target_arch = "arm",
17397 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17398)]
17399pub unsafe fn vld1_s16_x4(a: *const i16) -> int16x4x4_t {
17400 unsafe extern "unadjusted" {
17401 #[cfg_attr(
17402 any(target_arch = "aarch64", target_arch = "arm64ec"),
17403 link_name = "llvm.aarch64.neon.ld1x4.v4i16.p0"
17404 )]
17405 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v4i16.p0")]
17406 fn _vld1_s16_x4(a: *const i16) -> int16x4x4_t;
17407 }
17408 _vld1_s16_x4(a)
17409}
17410#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17411#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s16_x2)"]
17412#[doc = "## Safety"]
17413#[doc = " * Neon instrinsic unsafe"]
17414#[inline]
17415#[target_feature(enable = "neon")]
17416#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17417#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17418#[cfg_attr(
17419 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17420 assert_instr(ld1)
17421)]
17422#[cfg_attr(
17423 not(target_arch = "arm"),
17424 stable(feature = "neon_intrinsics", since = "1.59.0")
17425)]
17426#[cfg_attr(
17427 target_arch = "arm",
17428 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17429)]
17430pub unsafe fn vld1q_s16_x2(a: *const i16) -> int16x8x2_t {
17431 unsafe extern "unadjusted" {
17432 #[cfg_attr(
17433 any(target_arch = "aarch64", target_arch = "arm64ec"),
17434 link_name = "llvm.aarch64.neon.ld1x2.v8i16.p0"
17435 )]
17436 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v8i16.p0")]
17437 fn _vld1q_s16_x2(a: *const i16) -> int16x8x2_t;
17438 }
17439 _vld1q_s16_x2(a)
17440}
17441#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17442#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s16_x3)"]
17443#[doc = "## Safety"]
17444#[doc = " * Neon instrinsic unsafe"]
17445#[inline]
17446#[target_feature(enable = "neon")]
17447#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17448#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17449#[cfg_attr(
17450 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17451 assert_instr(ld1)
17452)]
17453#[cfg_attr(
17454 not(target_arch = "arm"),
17455 stable(feature = "neon_intrinsics", since = "1.59.0")
17456)]
17457#[cfg_attr(
17458 target_arch = "arm",
17459 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17460)]
17461pub unsafe fn vld1q_s16_x3(a: *const i16) -> int16x8x3_t {
17462 unsafe extern "unadjusted" {
17463 #[cfg_attr(
17464 any(target_arch = "aarch64", target_arch = "arm64ec"),
17465 link_name = "llvm.aarch64.neon.ld1x3.v8i16.p0"
17466 )]
17467 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v8i16.p0")]
17468 fn _vld1q_s16_x3(a: *const i16) -> int16x8x3_t;
17469 }
17470 _vld1q_s16_x3(a)
17471}
17472#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17473#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s16_x4)"]
17474#[doc = "## Safety"]
17475#[doc = " * Neon instrinsic unsafe"]
17476#[inline]
17477#[target_feature(enable = "neon")]
17478#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17479#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17480#[cfg_attr(
17481 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17482 assert_instr(ld1)
17483)]
17484#[cfg_attr(
17485 not(target_arch = "arm"),
17486 stable(feature = "neon_intrinsics", since = "1.59.0")
17487)]
17488#[cfg_attr(
17489 target_arch = "arm",
17490 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17491)]
17492pub unsafe fn vld1q_s16_x4(a: *const i16) -> int16x8x4_t {
17493 unsafe extern "unadjusted" {
17494 #[cfg_attr(
17495 any(target_arch = "aarch64", target_arch = "arm64ec"),
17496 link_name = "llvm.aarch64.neon.ld1x4.v8i16.p0"
17497 )]
17498 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v8i16.p0")]
17499 fn _vld1q_s16_x4(a: *const i16) -> int16x8x4_t;
17500 }
17501 _vld1q_s16_x4(a)
17502}
17503#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17504#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s32_x2)"]
17505#[doc = "## Safety"]
17506#[doc = " * Neon instrinsic unsafe"]
17507#[inline]
17508#[target_feature(enable = "neon")]
17509#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17510#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17511#[cfg_attr(
17512 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17513 assert_instr(ld1)
17514)]
17515#[cfg_attr(
17516 not(target_arch = "arm"),
17517 stable(feature = "neon_intrinsics", since = "1.59.0")
17518)]
17519#[cfg_attr(
17520 target_arch = "arm",
17521 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17522)]
17523pub unsafe fn vld1_s32_x2(a: *const i32) -> int32x2x2_t {
17524 unsafe extern "unadjusted" {
17525 #[cfg_attr(
17526 any(target_arch = "aarch64", target_arch = "arm64ec"),
17527 link_name = "llvm.aarch64.neon.ld1x2.v2i32.p0"
17528 )]
17529 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v2i32.p0")]
17530 fn _vld1_s32_x2(a: *const i32) -> int32x2x2_t;
17531 }
17532 _vld1_s32_x2(a)
17533}
17534#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17535#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s32_x3)"]
17536#[doc = "## Safety"]
17537#[doc = " * Neon instrinsic unsafe"]
17538#[inline]
17539#[target_feature(enable = "neon")]
17540#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17541#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17542#[cfg_attr(
17543 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17544 assert_instr(ld1)
17545)]
17546#[cfg_attr(
17547 not(target_arch = "arm"),
17548 stable(feature = "neon_intrinsics", since = "1.59.0")
17549)]
17550#[cfg_attr(
17551 target_arch = "arm",
17552 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17553)]
17554pub unsafe fn vld1_s32_x3(a: *const i32) -> int32x2x3_t {
17555 unsafe extern "unadjusted" {
17556 #[cfg_attr(
17557 any(target_arch = "aarch64", target_arch = "arm64ec"),
17558 link_name = "llvm.aarch64.neon.ld1x3.v2i32.p0"
17559 )]
17560 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v2i32.p0")]
17561 fn _vld1_s32_x3(a: *const i32) -> int32x2x3_t;
17562 }
17563 _vld1_s32_x3(a)
17564}
17565#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17566#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s32_x4)"]
17567#[doc = "## Safety"]
17568#[doc = " * Neon instrinsic unsafe"]
17569#[inline]
17570#[target_feature(enable = "neon")]
17571#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17572#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17573#[cfg_attr(
17574 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17575 assert_instr(ld1)
17576)]
17577#[cfg_attr(
17578 not(target_arch = "arm"),
17579 stable(feature = "neon_intrinsics", since = "1.59.0")
17580)]
17581#[cfg_attr(
17582 target_arch = "arm",
17583 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17584)]
17585pub unsafe fn vld1_s32_x4(a: *const i32) -> int32x2x4_t {
17586 unsafe extern "unadjusted" {
17587 #[cfg_attr(
17588 any(target_arch = "aarch64", target_arch = "arm64ec"),
17589 link_name = "llvm.aarch64.neon.ld1x4.v2i32.p0"
17590 )]
17591 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v2i32.p0")]
17592 fn _vld1_s32_x4(a: *const i32) -> int32x2x4_t;
17593 }
17594 _vld1_s32_x4(a)
17595}
17596#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17597#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s32_x2)"]
17598#[doc = "## Safety"]
17599#[doc = " * Neon instrinsic unsafe"]
17600#[inline]
17601#[target_feature(enable = "neon")]
17602#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17603#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17604#[cfg_attr(
17605 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17606 assert_instr(ld1)
17607)]
17608#[cfg_attr(
17609 not(target_arch = "arm"),
17610 stable(feature = "neon_intrinsics", since = "1.59.0")
17611)]
17612#[cfg_attr(
17613 target_arch = "arm",
17614 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17615)]
17616pub unsafe fn vld1q_s32_x2(a: *const i32) -> int32x4x2_t {
17617 unsafe extern "unadjusted" {
17618 #[cfg_attr(
17619 any(target_arch = "aarch64", target_arch = "arm64ec"),
17620 link_name = "llvm.aarch64.neon.ld1x2.v4i32.p0"
17621 )]
17622 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v4i32.p0")]
17623 fn _vld1q_s32_x2(a: *const i32) -> int32x4x2_t;
17624 }
17625 _vld1q_s32_x2(a)
17626}
17627#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17628#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s32_x3)"]
17629#[doc = "## Safety"]
17630#[doc = " * Neon instrinsic unsafe"]
17631#[inline]
17632#[target_feature(enable = "neon")]
17633#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17634#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17635#[cfg_attr(
17636 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17637 assert_instr(ld1)
17638)]
17639#[cfg_attr(
17640 not(target_arch = "arm"),
17641 stable(feature = "neon_intrinsics", since = "1.59.0")
17642)]
17643#[cfg_attr(
17644 target_arch = "arm",
17645 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17646)]
17647pub unsafe fn vld1q_s32_x3(a: *const i32) -> int32x4x3_t {
17648 unsafe extern "unadjusted" {
17649 #[cfg_attr(
17650 any(target_arch = "aarch64", target_arch = "arm64ec"),
17651 link_name = "llvm.aarch64.neon.ld1x3.v4i32.p0"
17652 )]
17653 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v4i32.p0")]
17654 fn _vld1q_s32_x3(a: *const i32) -> int32x4x3_t;
17655 }
17656 _vld1q_s32_x3(a)
17657}
17658#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17659#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s32_x4)"]
17660#[doc = "## Safety"]
17661#[doc = " * Neon instrinsic unsafe"]
17662#[inline]
17663#[target_feature(enable = "neon")]
17664#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17665#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17666#[cfg_attr(
17667 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17668 assert_instr(ld1)
17669)]
17670#[cfg_attr(
17671 not(target_arch = "arm"),
17672 stable(feature = "neon_intrinsics", since = "1.59.0")
17673)]
17674#[cfg_attr(
17675 target_arch = "arm",
17676 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17677)]
17678pub unsafe fn vld1q_s32_x4(a: *const i32) -> int32x4x4_t {
17679 unsafe extern "unadjusted" {
17680 #[cfg_attr(
17681 any(target_arch = "aarch64", target_arch = "arm64ec"),
17682 link_name = "llvm.aarch64.neon.ld1x4.v4i32.p0"
17683 )]
17684 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v4i32.p0")]
17685 fn _vld1q_s32_x4(a: *const i32) -> int32x4x4_t;
17686 }
17687 _vld1q_s32_x4(a)
17688}
17689#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17690#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s64_x2)"]
17691#[doc = "## Safety"]
17692#[doc = " * Neon instrinsic unsafe"]
17693#[inline]
17694#[target_feature(enable = "neon")]
17695#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17696#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17697#[cfg_attr(
17698 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17699 assert_instr(ld1)
17700)]
17701#[cfg_attr(
17702 not(target_arch = "arm"),
17703 stable(feature = "neon_intrinsics", since = "1.59.0")
17704)]
17705#[cfg_attr(
17706 target_arch = "arm",
17707 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17708)]
17709pub unsafe fn vld1_s64_x2(a: *const i64) -> int64x1x2_t {
17710 unsafe extern "unadjusted" {
17711 #[cfg_attr(
17712 any(target_arch = "aarch64", target_arch = "arm64ec"),
17713 link_name = "llvm.aarch64.neon.ld1x2.v1i64.p0"
17714 )]
17715 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v1i64.p0")]
17716 fn _vld1_s64_x2(a: *const i64) -> int64x1x2_t;
17717 }
17718 _vld1_s64_x2(a)
17719}
17720#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17721#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s64_x3)"]
17722#[doc = "## Safety"]
17723#[doc = " * Neon instrinsic unsafe"]
17724#[inline]
17725#[target_feature(enable = "neon")]
17726#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17727#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17728#[cfg_attr(
17729 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17730 assert_instr(ld1)
17731)]
17732#[cfg_attr(
17733 not(target_arch = "arm"),
17734 stable(feature = "neon_intrinsics", since = "1.59.0")
17735)]
17736#[cfg_attr(
17737 target_arch = "arm",
17738 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17739)]
17740pub unsafe fn vld1_s64_x3(a: *const i64) -> int64x1x3_t {
17741 unsafe extern "unadjusted" {
17742 #[cfg_attr(
17743 any(target_arch = "aarch64", target_arch = "arm64ec"),
17744 link_name = "llvm.aarch64.neon.ld1x3.v1i64.p0"
17745 )]
17746 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v1i64.p0")]
17747 fn _vld1_s64_x3(a: *const i64) -> int64x1x3_t;
17748 }
17749 _vld1_s64_x3(a)
17750}
17751#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17752#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s64_x4)"]
17753#[doc = "## Safety"]
17754#[doc = " * Neon instrinsic unsafe"]
17755#[inline]
17756#[target_feature(enable = "neon")]
17757#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17758#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17759#[cfg_attr(
17760 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17761 assert_instr(ld1)
17762)]
17763#[cfg_attr(
17764 not(target_arch = "arm"),
17765 stable(feature = "neon_intrinsics", since = "1.59.0")
17766)]
17767#[cfg_attr(
17768 target_arch = "arm",
17769 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17770)]
17771pub unsafe fn vld1_s64_x4(a: *const i64) -> int64x1x4_t {
17772 unsafe extern "unadjusted" {
17773 #[cfg_attr(
17774 any(target_arch = "aarch64", target_arch = "arm64ec"),
17775 link_name = "llvm.aarch64.neon.ld1x4.v1i64.p0"
17776 )]
17777 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v1i64.p0")]
17778 fn _vld1_s64_x4(a: *const i64) -> int64x1x4_t;
17779 }
17780 _vld1_s64_x4(a)
17781}
17782#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17783#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s64_x2)"]
17784#[doc = "## Safety"]
17785#[doc = " * Neon instrinsic unsafe"]
17786#[inline]
17787#[target_feature(enable = "neon")]
17788#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17789#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17790#[cfg_attr(
17791 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17792 assert_instr(ld1)
17793)]
17794#[cfg_attr(
17795 not(target_arch = "arm"),
17796 stable(feature = "neon_intrinsics", since = "1.59.0")
17797)]
17798#[cfg_attr(
17799 target_arch = "arm",
17800 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17801)]
17802pub unsafe fn vld1q_s64_x2(a: *const i64) -> int64x2x2_t {
17803 unsafe extern "unadjusted" {
17804 #[cfg_attr(
17805 any(target_arch = "aarch64", target_arch = "arm64ec"),
17806 link_name = "llvm.aarch64.neon.ld1x2.v2i64.p0"
17807 )]
17808 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x2.v2i64.p0")]
17809 fn _vld1q_s64_x2(a: *const i64) -> int64x2x2_t;
17810 }
17811 _vld1q_s64_x2(a)
17812}
17813#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17814#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s64_x3)"]
17815#[doc = "## Safety"]
17816#[doc = " * Neon instrinsic unsafe"]
17817#[inline]
17818#[target_feature(enable = "neon")]
17819#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17820#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17821#[cfg_attr(
17822 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17823 assert_instr(ld1)
17824)]
17825#[cfg_attr(
17826 not(target_arch = "arm"),
17827 stable(feature = "neon_intrinsics", since = "1.59.0")
17828)]
17829#[cfg_attr(
17830 target_arch = "arm",
17831 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17832)]
17833pub unsafe fn vld1q_s64_x3(a: *const i64) -> int64x2x3_t {
17834 unsafe extern "unadjusted" {
17835 #[cfg_attr(
17836 any(target_arch = "aarch64", target_arch = "arm64ec"),
17837 link_name = "llvm.aarch64.neon.ld1x3.v2i64.p0"
17838 )]
17839 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x3.v2i64.p0")]
17840 fn _vld1q_s64_x3(a: *const i64) -> int64x2x3_t;
17841 }
17842 _vld1q_s64_x3(a)
17843}
17844#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17845#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s64_x4)"]
17846#[doc = "## Safety"]
17847#[doc = " * Neon instrinsic unsafe"]
17848#[inline]
17849#[target_feature(enable = "neon")]
17850#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17851#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17852#[cfg_attr(
17853 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17854 assert_instr(ld1)
17855)]
17856#[cfg_attr(
17857 not(target_arch = "arm"),
17858 stable(feature = "neon_intrinsics", since = "1.59.0")
17859)]
17860#[cfg_attr(
17861 target_arch = "arm",
17862 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17863)]
17864pub unsafe fn vld1q_s64_x4(a: *const i64) -> int64x2x4_t {
17865 unsafe extern "unadjusted" {
17866 #[cfg_attr(
17867 any(target_arch = "aarch64", target_arch = "arm64ec"),
17868 link_name = "llvm.aarch64.neon.ld1x4.v2i64.p0"
17869 )]
17870 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1x4.v2i64.p0")]
17871 fn _vld1q_s64_x4(a: *const i64) -> int64x2x4_t;
17872 }
17873 _vld1q_s64_x4(a)
17874}
17875#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17876#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8_x2)"]
17877#[doc = "## Safety"]
17878#[doc = " * Neon instrinsic unsafe"]
17879#[inline]
17880#[cfg(target_endian = "little")]
17881#[target_feature(enable = "neon")]
17882#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17883#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17884#[cfg_attr(
17885 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17886 assert_instr(ld1)
17887)]
17888#[cfg_attr(
17889 not(target_arch = "arm"),
17890 stable(feature = "neon_intrinsics", since = "1.59.0")
17891)]
17892#[cfg_attr(
17893 target_arch = "arm",
17894 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17895)]
17896pub unsafe fn vld1_u8_x2(a: *const u8) -> uint8x8x2_t {
17897 transmute(vld1_s8_x2(transmute(a)))
17898}
17899#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17900#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8_x2)"]
17901#[doc = "## Safety"]
17902#[doc = " * Neon instrinsic unsafe"]
17903#[inline]
17904#[cfg(target_endian = "big")]
17905#[target_feature(enable = "neon")]
17906#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17907#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17908#[cfg_attr(
17909 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17910 assert_instr(ld1)
17911)]
17912#[cfg_attr(
17913 not(target_arch = "arm"),
17914 stable(feature = "neon_intrinsics", since = "1.59.0")
17915)]
17916#[cfg_attr(
17917 target_arch = "arm",
17918 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17919)]
17920pub unsafe fn vld1_u8_x2(a: *const u8) -> uint8x8x2_t {
17921 let mut ret_val: uint8x8x2_t = transmute(vld1_s8_x2(transmute(a)));
17922 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
17923 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
17924 ret_val
17925}
17926#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17927#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8_x3)"]
17928#[doc = "## Safety"]
17929#[doc = " * Neon instrinsic unsafe"]
17930#[inline]
17931#[cfg(target_endian = "little")]
17932#[target_feature(enable = "neon")]
17933#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17934#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17935#[cfg_attr(
17936 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17937 assert_instr(ld1)
17938)]
17939#[cfg_attr(
17940 not(target_arch = "arm"),
17941 stable(feature = "neon_intrinsics", since = "1.59.0")
17942)]
17943#[cfg_attr(
17944 target_arch = "arm",
17945 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17946)]
17947pub unsafe fn vld1_u8_x3(a: *const u8) -> uint8x8x3_t {
17948 transmute(vld1_s8_x3(transmute(a)))
17949}
17950#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17951#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8_x3)"]
17952#[doc = "## Safety"]
17953#[doc = " * Neon instrinsic unsafe"]
17954#[inline]
17955#[cfg(target_endian = "big")]
17956#[target_feature(enable = "neon")]
17957#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17958#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17959#[cfg_attr(
17960 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17961 assert_instr(ld1)
17962)]
17963#[cfg_attr(
17964 not(target_arch = "arm"),
17965 stable(feature = "neon_intrinsics", since = "1.59.0")
17966)]
17967#[cfg_attr(
17968 target_arch = "arm",
17969 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17970)]
17971pub unsafe fn vld1_u8_x3(a: *const u8) -> uint8x8x3_t {
17972 let mut ret_val: uint8x8x3_t = transmute(vld1_s8_x3(transmute(a)));
17973 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
17974 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
17975 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
17976 ret_val
17977}
17978#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17979#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8_x4)"]
17980#[doc = "## Safety"]
17981#[doc = " * Neon instrinsic unsafe"]
17982#[inline]
17983#[cfg(target_endian = "little")]
17984#[target_feature(enable = "neon")]
17985#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17986#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
17987#[cfg_attr(
17988 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17989 assert_instr(ld1)
17990)]
17991#[cfg_attr(
17992 not(target_arch = "arm"),
17993 stable(feature = "neon_intrinsics", since = "1.59.0")
17994)]
17995#[cfg_attr(
17996 target_arch = "arm",
17997 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17998)]
17999pub unsafe fn vld1_u8_x4(a: *const u8) -> uint8x8x4_t {
18000 transmute(vld1_s8_x4(transmute(a)))
18001}
18002#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18003#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8_x4)"]
18004#[doc = "## Safety"]
18005#[doc = " * Neon instrinsic unsafe"]
18006#[inline]
18007#[cfg(target_endian = "big")]
18008#[target_feature(enable = "neon")]
18009#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18010#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18011#[cfg_attr(
18012 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18013 assert_instr(ld1)
18014)]
18015#[cfg_attr(
18016 not(target_arch = "arm"),
18017 stable(feature = "neon_intrinsics", since = "1.59.0")
18018)]
18019#[cfg_attr(
18020 target_arch = "arm",
18021 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18022)]
18023pub unsafe fn vld1_u8_x4(a: *const u8) -> uint8x8x4_t {
18024 let mut ret_val: uint8x8x4_t = transmute(vld1_s8_x4(transmute(a)));
18025 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
18026 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
18027 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
18028 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
18029 ret_val
18030}
18031#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8_x2)"]
18033#[doc = "## Safety"]
18034#[doc = " * Neon instrinsic unsafe"]
18035#[inline]
18036#[cfg(target_endian = "little")]
18037#[target_feature(enable = "neon")]
18038#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18039#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18040#[cfg_attr(
18041 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18042 assert_instr(ld1)
18043)]
18044#[cfg_attr(
18045 not(target_arch = "arm"),
18046 stable(feature = "neon_intrinsics", since = "1.59.0")
18047)]
18048#[cfg_attr(
18049 target_arch = "arm",
18050 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18051)]
18052pub unsafe fn vld1q_u8_x2(a: *const u8) -> uint8x16x2_t {
18053 transmute(vld1q_s8_x2(transmute(a)))
18054}
18055#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18056#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8_x2)"]
18057#[doc = "## Safety"]
18058#[doc = " * Neon instrinsic unsafe"]
18059#[inline]
18060#[cfg(target_endian = "big")]
18061#[target_feature(enable = "neon")]
18062#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18063#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18064#[cfg_attr(
18065 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18066 assert_instr(ld1)
18067)]
18068#[cfg_attr(
18069 not(target_arch = "arm"),
18070 stable(feature = "neon_intrinsics", since = "1.59.0")
18071)]
18072#[cfg_attr(
18073 target_arch = "arm",
18074 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18075)]
18076pub unsafe fn vld1q_u8_x2(a: *const u8) -> uint8x16x2_t {
18077 let mut ret_val: uint8x16x2_t = transmute(vld1q_s8_x2(transmute(a)));
18078 ret_val.0 = unsafe {
18079 simd_shuffle!(
18080 ret_val.0,
18081 ret_val.0,
18082 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
18083 )
18084 };
18085 ret_val.1 = unsafe {
18086 simd_shuffle!(
18087 ret_val.1,
18088 ret_val.1,
18089 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
18090 )
18091 };
18092 ret_val
18093}
18094#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18095#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8_x3)"]
18096#[doc = "## Safety"]
18097#[doc = " * Neon instrinsic unsafe"]
18098#[inline]
18099#[cfg(target_endian = "little")]
18100#[target_feature(enable = "neon")]
18101#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18102#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18103#[cfg_attr(
18104 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18105 assert_instr(ld1)
18106)]
18107#[cfg_attr(
18108 not(target_arch = "arm"),
18109 stable(feature = "neon_intrinsics", since = "1.59.0")
18110)]
18111#[cfg_attr(
18112 target_arch = "arm",
18113 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18114)]
18115pub unsafe fn vld1q_u8_x3(a: *const u8) -> uint8x16x3_t {
18116 transmute(vld1q_s8_x3(transmute(a)))
18117}
18118#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18119#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8_x3)"]
18120#[doc = "## Safety"]
18121#[doc = " * Neon instrinsic unsafe"]
18122#[inline]
18123#[cfg(target_endian = "big")]
18124#[target_feature(enable = "neon")]
18125#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18126#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18127#[cfg_attr(
18128 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18129 assert_instr(ld1)
18130)]
18131#[cfg_attr(
18132 not(target_arch = "arm"),
18133 stable(feature = "neon_intrinsics", since = "1.59.0")
18134)]
18135#[cfg_attr(
18136 target_arch = "arm",
18137 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18138)]
18139pub unsafe fn vld1q_u8_x3(a: *const u8) -> uint8x16x3_t {
18140 let mut ret_val: uint8x16x3_t = transmute(vld1q_s8_x3(transmute(a)));
18141 ret_val.0 = unsafe {
18142 simd_shuffle!(
18143 ret_val.0,
18144 ret_val.0,
18145 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
18146 )
18147 };
18148 ret_val.1 = unsafe {
18149 simd_shuffle!(
18150 ret_val.1,
18151 ret_val.1,
18152 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
18153 )
18154 };
18155 ret_val.2 = unsafe {
18156 simd_shuffle!(
18157 ret_val.2,
18158 ret_val.2,
18159 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
18160 )
18161 };
18162 ret_val
18163}
18164#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18165#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8_x4)"]
18166#[doc = "## Safety"]
18167#[doc = " * Neon instrinsic unsafe"]
18168#[inline]
18169#[cfg(target_endian = "little")]
18170#[target_feature(enable = "neon")]
18171#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18172#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18173#[cfg_attr(
18174 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18175 assert_instr(ld1)
18176)]
18177#[cfg_attr(
18178 not(target_arch = "arm"),
18179 stable(feature = "neon_intrinsics", since = "1.59.0")
18180)]
18181#[cfg_attr(
18182 target_arch = "arm",
18183 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18184)]
18185pub unsafe fn vld1q_u8_x4(a: *const u8) -> uint8x16x4_t {
18186 transmute(vld1q_s8_x4(transmute(a)))
18187}
18188#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18189#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8_x4)"]
18190#[doc = "## Safety"]
18191#[doc = " * Neon instrinsic unsafe"]
18192#[inline]
18193#[cfg(target_endian = "big")]
18194#[target_feature(enable = "neon")]
18195#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18196#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18197#[cfg_attr(
18198 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18199 assert_instr(ld1)
18200)]
18201#[cfg_attr(
18202 not(target_arch = "arm"),
18203 stable(feature = "neon_intrinsics", since = "1.59.0")
18204)]
18205#[cfg_attr(
18206 target_arch = "arm",
18207 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18208)]
18209pub unsafe fn vld1q_u8_x4(a: *const u8) -> uint8x16x4_t {
18210 let mut ret_val: uint8x16x4_t = transmute(vld1q_s8_x4(transmute(a)));
18211 ret_val.0 = unsafe {
18212 simd_shuffle!(
18213 ret_val.0,
18214 ret_val.0,
18215 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
18216 )
18217 };
18218 ret_val.1 = unsafe {
18219 simd_shuffle!(
18220 ret_val.1,
18221 ret_val.1,
18222 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
18223 )
18224 };
18225 ret_val.2 = unsafe {
18226 simd_shuffle!(
18227 ret_val.2,
18228 ret_val.2,
18229 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
18230 )
18231 };
18232 ret_val.3 = unsafe {
18233 simd_shuffle!(
18234 ret_val.3,
18235 ret_val.3,
18236 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
18237 )
18238 };
18239 ret_val
18240}
18241#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18242#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16_x2)"]
18243#[doc = "## Safety"]
18244#[doc = " * Neon instrinsic unsafe"]
18245#[inline]
18246#[cfg(target_endian = "little")]
18247#[target_feature(enable = "neon")]
18248#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18249#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18250#[cfg_attr(
18251 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18252 assert_instr(ld1)
18253)]
18254#[cfg_attr(
18255 not(target_arch = "arm"),
18256 stable(feature = "neon_intrinsics", since = "1.59.0")
18257)]
18258#[cfg_attr(
18259 target_arch = "arm",
18260 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18261)]
18262pub unsafe fn vld1_u16_x2(a: *const u16) -> uint16x4x2_t {
18263 transmute(vld1_s16_x2(transmute(a)))
18264}
18265#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18266#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16_x2)"]
18267#[doc = "## Safety"]
18268#[doc = " * Neon instrinsic unsafe"]
18269#[inline]
18270#[cfg(target_endian = "big")]
18271#[target_feature(enable = "neon")]
18272#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18273#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18274#[cfg_attr(
18275 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18276 assert_instr(ld1)
18277)]
18278#[cfg_attr(
18279 not(target_arch = "arm"),
18280 stable(feature = "neon_intrinsics", since = "1.59.0")
18281)]
18282#[cfg_attr(
18283 target_arch = "arm",
18284 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18285)]
18286pub unsafe fn vld1_u16_x2(a: *const u16) -> uint16x4x2_t {
18287 let mut ret_val: uint16x4x2_t = transmute(vld1_s16_x2(transmute(a)));
18288 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
18289 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
18290 ret_val
18291}
18292#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18293#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16_x3)"]
18294#[doc = "## Safety"]
18295#[doc = " * Neon instrinsic unsafe"]
18296#[inline]
18297#[cfg(target_endian = "little")]
18298#[target_feature(enable = "neon")]
18299#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18300#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18301#[cfg_attr(
18302 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18303 assert_instr(ld1)
18304)]
18305#[cfg_attr(
18306 not(target_arch = "arm"),
18307 stable(feature = "neon_intrinsics", since = "1.59.0")
18308)]
18309#[cfg_attr(
18310 target_arch = "arm",
18311 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18312)]
18313pub unsafe fn vld1_u16_x3(a: *const u16) -> uint16x4x3_t {
18314 transmute(vld1_s16_x3(transmute(a)))
18315}
18316#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18317#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16_x3)"]
18318#[doc = "## Safety"]
18319#[doc = " * Neon instrinsic unsafe"]
18320#[inline]
18321#[cfg(target_endian = "big")]
18322#[target_feature(enable = "neon")]
18323#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18324#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18325#[cfg_attr(
18326 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18327 assert_instr(ld1)
18328)]
18329#[cfg_attr(
18330 not(target_arch = "arm"),
18331 stable(feature = "neon_intrinsics", since = "1.59.0")
18332)]
18333#[cfg_attr(
18334 target_arch = "arm",
18335 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18336)]
18337pub unsafe fn vld1_u16_x3(a: *const u16) -> uint16x4x3_t {
18338 let mut ret_val: uint16x4x3_t = transmute(vld1_s16_x3(transmute(a)));
18339 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
18340 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
18341 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
18342 ret_val
18343}
18344#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18345#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16_x4)"]
18346#[doc = "## Safety"]
18347#[doc = " * Neon instrinsic unsafe"]
18348#[inline]
18349#[cfg(target_endian = "little")]
18350#[target_feature(enable = "neon")]
18351#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18352#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18353#[cfg_attr(
18354 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18355 assert_instr(ld1)
18356)]
18357#[cfg_attr(
18358 not(target_arch = "arm"),
18359 stable(feature = "neon_intrinsics", since = "1.59.0")
18360)]
18361#[cfg_attr(
18362 target_arch = "arm",
18363 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18364)]
18365pub unsafe fn vld1_u16_x4(a: *const u16) -> uint16x4x4_t {
18366 transmute(vld1_s16_x4(transmute(a)))
18367}
18368#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18369#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16_x4)"]
18370#[doc = "## Safety"]
18371#[doc = " * Neon instrinsic unsafe"]
18372#[inline]
18373#[cfg(target_endian = "big")]
18374#[target_feature(enable = "neon")]
18375#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18376#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18377#[cfg_attr(
18378 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18379 assert_instr(ld1)
18380)]
18381#[cfg_attr(
18382 not(target_arch = "arm"),
18383 stable(feature = "neon_intrinsics", since = "1.59.0")
18384)]
18385#[cfg_attr(
18386 target_arch = "arm",
18387 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18388)]
18389pub unsafe fn vld1_u16_x4(a: *const u16) -> uint16x4x4_t {
18390 let mut ret_val: uint16x4x4_t = transmute(vld1_s16_x4(transmute(a)));
18391 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
18392 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
18393 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
18394 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
18395 ret_val
18396}
18397#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18398#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16_x2)"]
18399#[doc = "## Safety"]
18400#[doc = " * Neon instrinsic unsafe"]
18401#[inline]
18402#[cfg(target_endian = "little")]
18403#[target_feature(enable = "neon")]
18404#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18405#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18406#[cfg_attr(
18407 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18408 assert_instr(ld1)
18409)]
18410#[cfg_attr(
18411 not(target_arch = "arm"),
18412 stable(feature = "neon_intrinsics", since = "1.59.0")
18413)]
18414#[cfg_attr(
18415 target_arch = "arm",
18416 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18417)]
18418pub unsafe fn vld1q_u16_x2(a: *const u16) -> uint16x8x2_t {
18419 transmute(vld1q_s16_x2(transmute(a)))
18420}
18421#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18422#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16_x2)"]
18423#[doc = "## Safety"]
18424#[doc = " * Neon instrinsic unsafe"]
18425#[inline]
18426#[cfg(target_endian = "big")]
18427#[target_feature(enable = "neon")]
18428#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18429#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18430#[cfg_attr(
18431 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18432 assert_instr(ld1)
18433)]
18434#[cfg_attr(
18435 not(target_arch = "arm"),
18436 stable(feature = "neon_intrinsics", since = "1.59.0")
18437)]
18438#[cfg_attr(
18439 target_arch = "arm",
18440 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18441)]
18442pub unsafe fn vld1q_u16_x2(a: *const u16) -> uint16x8x2_t {
18443 let mut ret_val: uint16x8x2_t = transmute(vld1q_s16_x2(transmute(a)));
18444 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
18445 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
18446 ret_val
18447}
18448#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18449#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16_x3)"]
18450#[doc = "## Safety"]
18451#[doc = " * Neon instrinsic unsafe"]
18452#[inline]
18453#[cfg(target_endian = "little")]
18454#[target_feature(enable = "neon")]
18455#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18456#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18457#[cfg_attr(
18458 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18459 assert_instr(ld1)
18460)]
18461#[cfg_attr(
18462 not(target_arch = "arm"),
18463 stable(feature = "neon_intrinsics", since = "1.59.0")
18464)]
18465#[cfg_attr(
18466 target_arch = "arm",
18467 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18468)]
18469pub unsafe fn vld1q_u16_x3(a: *const u16) -> uint16x8x3_t {
18470 transmute(vld1q_s16_x3(transmute(a)))
18471}
18472#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18473#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16_x3)"]
18474#[doc = "## Safety"]
18475#[doc = " * Neon instrinsic unsafe"]
18476#[inline]
18477#[cfg(target_endian = "big")]
18478#[target_feature(enable = "neon")]
18479#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18480#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18481#[cfg_attr(
18482 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18483 assert_instr(ld1)
18484)]
18485#[cfg_attr(
18486 not(target_arch = "arm"),
18487 stable(feature = "neon_intrinsics", since = "1.59.0")
18488)]
18489#[cfg_attr(
18490 target_arch = "arm",
18491 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18492)]
18493pub unsafe fn vld1q_u16_x3(a: *const u16) -> uint16x8x3_t {
18494 let mut ret_val: uint16x8x3_t = transmute(vld1q_s16_x3(transmute(a)));
18495 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
18496 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
18497 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
18498 ret_val
18499}
18500#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18501#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16_x4)"]
18502#[doc = "## Safety"]
18503#[doc = " * Neon instrinsic unsafe"]
18504#[inline]
18505#[cfg(target_endian = "little")]
18506#[target_feature(enable = "neon")]
18507#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18508#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18509#[cfg_attr(
18510 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18511 assert_instr(ld1)
18512)]
18513#[cfg_attr(
18514 not(target_arch = "arm"),
18515 stable(feature = "neon_intrinsics", since = "1.59.0")
18516)]
18517#[cfg_attr(
18518 target_arch = "arm",
18519 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18520)]
18521pub unsafe fn vld1q_u16_x4(a: *const u16) -> uint16x8x4_t {
18522 transmute(vld1q_s16_x4(transmute(a)))
18523}
18524#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18525#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16_x4)"]
18526#[doc = "## Safety"]
18527#[doc = " * Neon instrinsic unsafe"]
18528#[inline]
18529#[cfg(target_endian = "big")]
18530#[target_feature(enable = "neon")]
18531#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18532#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18533#[cfg_attr(
18534 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18535 assert_instr(ld1)
18536)]
18537#[cfg_attr(
18538 not(target_arch = "arm"),
18539 stable(feature = "neon_intrinsics", since = "1.59.0")
18540)]
18541#[cfg_attr(
18542 target_arch = "arm",
18543 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18544)]
18545pub unsafe fn vld1q_u16_x4(a: *const u16) -> uint16x8x4_t {
18546 let mut ret_val: uint16x8x4_t = transmute(vld1q_s16_x4(transmute(a)));
18547 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
18548 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
18549 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
18550 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
18551 ret_val
18552}
18553#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18554#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32_x2)"]
18555#[doc = "## Safety"]
18556#[doc = " * Neon instrinsic unsafe"]
18557#[inline]
18558#[cfg(target_endian = "little")]
18559#[target_feature(enable = "neon")]
18560#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18561#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18562#[cfg_attr(
18563 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18564 assert_instr(ld1)
18565)]
18566#[cfg_attr(
18567 not(target_arch = "arm"),
18568 stable(feature = "neon_intrinsics", since = "1.59.0")
18569)]
18570#[cfg_attr(
18571 target_arch = "arm",
18572 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18573)]
18574pub unsafe fn vld1_u32_x2(a: *const u32) -> uint32x2x2_t {
18575 transmute(vld1_s32_x2(transmute(a)))
18576}
18577#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18578#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32_x2)"]
18579#[doc = "## Safety"]
18580#[doc = " * Neon instrinsic unsafe"]
18581#[inline]
18582#[cfg(target_endian = "big")]
18583#[target_feature(enable = "neon")]
18584#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18585#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18586#[cfg_attr(
18587 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18588 assert_instr(ld1)
18589)]
18590#[cfg_attr(
18591 not(target_arch = "arm"),
18592 stable(feature = "neon_intrinsics", since = "1.59.0")
18593)]
18594#[cfg_attr(
18595 target_arch = "arm",
18596 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18597)]
18598pub unsafe fn vld1_u32_x2(a: *const u32) -> uint32x2x2_t {
18599 let mut ret_val: uint32x2x2_t = transmute(vld1_s32_x2(transmute(a)));
18600 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
18601 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
18602 ret_val
18603}
18604#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18605#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32_x3)"]
18606#[doc = "## Safety"]
18607#[doc = " * Neon instrinsic unsafe"]
18608#[inline]
18609#[cfg(target_endian = "little")]
18610#[target_feature(enable = "neon")]
18611#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18612#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18613#[cfg_attr(
18614 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18615 assert_instr(ld1)
18616)]
18617#[cfg_attr(
18618 not(target_arch = "arm"),
18619 stable(feature = "neon_intrinsics", since = "1.59.0")
18620)]
18621#[cfg_attr(
18622 target_arch = "arm",
18623 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18624)]
18625pub unsafe fn vld1_u32_x3(a: *const u32) -> uint32x2x3_t {
18626 transmute(vld1_s32_x3(transmute(a)))
18627}
18628#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18629#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32_x3)"]
18630#[doc = "## Safety"]
18631#[doc = " * Neon instrinsic unsafe"]
18632#[inline]
18633#[cfg(target_endian = "big")]
18634#[target_feature(enable = "neon")]
18635#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18636#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18637#[cfg_attr(
18638 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18639 assert_instr(ld1)
18640)]
18641#[cfg_attr(
18642 not(target_arch = "arm"),
18643 stable(feature = "neon_intrinsics", since = "1.59.0")
18644)]
18645#[cfg_attr(
18646 target_arch = "arm",
18647 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18648)]
18649pub unsafe fn vld1_u32_x3(a: *const u32) -> uint32x2x3_t {
18650 let mut ret_val: uint32x2x3_t = transmute(vld1_s32_x3(transmute(a)));
18651 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
18652 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
18653 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
18654 ret_val
18655}
18656#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18657#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32_x4)"]
18658#[doc = "## Safety"]
18659#[doc = " * Neon instrinsic unsafe"]
18660#[inline]
18661#[cfg(target_endian = "little")]
18662#[target_feature(enable = "neon")]
18663#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18664#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18665#[cfg_attr(
18666 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18667 assert_instr(ld1)
18668)]
18669#[cfg_attr(
18670 not(target_arch = "arm"),
18671 stable(feature = "neon_intrinsics", since = "1.59.0")
18672)]
18673#[cfg_attr(
18674 target_arch = "arm",
18675 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18676)]
18677pub unsafe fn vld1_u32_x4(a: *const u32) -> uint32x2x4_t {
18678 transmute(vld1_s32_x4(transmute(a)))
18679}
18680#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18681#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32_x4)"]
18682#[doc = "## Safety"]
18683#[doc = " * Neon instrinsic unsafe"]
18684#[inline]
18685#[cfg(target_endian = "big")]
18686#[target_feature(enable = "neon")]
18687#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18688#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18689#[cfg_attr(
18690 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18691 assert_instr(ld1)
18692)]
18693#[cfg_attr(
18694 not(target_arch = "arm"),
18695 stable(feature = "neon_intrinsics", since = "1.59.0")
18696)]
18697#[cfg_attr(
18698 target_arch = "arm",
18699 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18700)]
18701pub unsafe fn vld1_u32_x4(a: *const u32) -> uint32x2x4_t {
18702 let mut ret_val: uint32x2x4_t = transmute(vld1_s32_x4(transmute(a)));
18703 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
18704 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
18705 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
18706 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [1, 0]) };
18707 ret_val
18708}
18709#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18710#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32_x2)"]
18711#[doc = "## Safety"]
18712#[doc = " * Neon instrinsic unsafe"]
18713#[inline]
18714#[cfg(target_endian = "little")]
18715#[target_feature(enable = "neon")]
18716#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18717#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18718#[cfg_attr(
18719 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18720 assert_instr(ld1)
18721)]
18722#[cfg_attr(
18723 not(target_arch = "arm"),
18724 stable(feature = "neon_intrinsics", since = "1.59.0")
18725)]
18726#[cfg_attr(
18727 target_arch = "arm",
18728 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18729)]
18730pub unsafe fn vld1q_u32_x2(a: *const u32) -> uint32x4x2_t {
18731 transmute(vld1q_s32_x2(transmute(a)))
18732}
18733#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18734#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32_x2)"]
18735#[doc = "## Safety"]
18736#[doc = " * Neon instrinsic unsafe"]
18737#[inline]
18738#[cfg(target_endian = "big")]
18739#[target_feature(enable = "neon")]
18740#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18741#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18742#[cfg_attr(
18743 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18744 assert_instr(ld1)
18745)]
18746#[cfg_attr(
18747 not(target_arch = "arm"),
18748 stable(feature = "neon_intrinsics", since = "1.59.0")
18749)]
18750#[cfg_attr(
18751 target_arch = "arm",
18752 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18753)]
18754pub unsafe fn vld1q_u32_x2(a: *const u32) -> uint32x4x2_t {
18755 let mut ret_val: uint32x4x2_t = transmute(vld1q_s32_x2(transmute(a)));
18756 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
18757 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
18758 ret_val
18759}
18760#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18761#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32_x3)"]
18762#[doc = "## Safety"]
18763#[doc = " * Neon instrinsic unsafe"]
18764#[inline]
18765#[cfg(target_endian = "little")]
18766#[target_feature(enable = "neon")]
18767#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18768#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18769#[cfg_attr(
18770 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18771 assert_instr(ld1)
18772)]
18773#[cfg_attr(
18774 not(target_arch = "arm"),
18775 stable(feature = "neon_intrinsics", since = "1.59.0")
18776)]
18777#[cfg_attr(
18778 target_arch = "arm",
18779 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18780)]
18781pub unsafe fn vld1q_u32_x3(a: *const u32) -> uint32x4x3_t {
18782 transmute(vld1q_s32_x3(transmute(a)))
18783}
18784#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18785#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32_x3)"]
18786#[doc = "## Safety"]
18787#[doc = " * Neon instrinsic unsafe"]
18788#[inline]
18789#[cfg(target_endian = "big")]
18790#[target_feature(enable = "neon")]
18791#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18792#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18793#[cfg_attr(
18794 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18795 assert_instr(ld1)
18796)]
18797#[cfg_attr(
18798 not(target_arch = "arm"),
18799 stable(feature = "neon_intrinsics", since = "1.59.0")
18800)]
18801#[cfg_attr(
18802 target_arch = "arm",
18803 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18804)]
18805pub unsafe fn vld1q_u32_x3(a: *const u32) -> uint32x4x3_t {
18806 let mut ret_val: uint32x4x3_t = transmute(vld1q_s32_x3(transmute(a)));
18807 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
18808 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
18809 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
18810 ret_val
18811}
18812#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18813#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32_x4)"]
18814#[doc = "## Safety"]
18815#[doc = " * Neon instrinsic unsafe"]
18816#[inline]
18817#[cfg(target_endian = "little")]
18818#[target_feature(enable = "neon")]
18819#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18820#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18821#[cfg_attr(
18822 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18823 assert_instr(ld1)
18824)]
18825#[cfg_attr(
18826 not(target_arch = "arm"),
18827 stable(feature = "neon_intrinsics", since = "1.59.0")
18828)]
18829#[cfg_attr(
18830 target_arch = "arm",
18831 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18832)]
18833pub unsafe fn vld1q_u32_x4(a: *const u32) -> uint32x4x4_t {
18834 transmute(vld1q_s32_x4(transmute(a)))
18835}
18836#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18837#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32_x4)"]
18838#[doc = "## Safety"]
18839#[doc = " * Neon instrinsic unsafe"]
18840#[inline]
18841#[cfg(target_endian = "big")]
18842#[target_feature(enable = "neon")]
18843#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18844#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18845#[cfg_attr(
18846 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18847 assert_instr(ld1)
18848)]
18849#[cfg_attr(
18850 not(target_arch = "arm"),
18851 stable(feature = "neon_intrinsics", since = "1.59.0")
18852)]
18853#[cfg_attr(
18854 target_arch = "arm",
18855 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18856)]
18857pub unsafe fn vld1q_u32_x4(a: *const u32) -> uint32x4x4_t {
18858 let mut ret_val: uint32x4x4_t = transmute(vld1q_s32_x4(transmute(a)));
18859 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
18860 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
18861 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
18862 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
18863 ret_val
18864}
18865#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18866#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u64_x2)"]
18867#[doc = "## Safety"]
18868#[doc = " * Neon instrinsic unsafe"]
18869#[inline]
18870#[target_feature(enable = "neon")]
18871#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18872#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18873#[cfg_attr(
18874 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18875 assert_instr(ld1)
18876)]
18877#[cfg_attr(
18878 not(target_arch = "arm"),
18879 stable(feature = "neon_intrinsics", since = "1.59.0")
18880)]
18881#[cfg_attr(
18882 target_arch = "arm",
18883 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18884)]
18885pub unsafe fn vld1_u64_x2(a: *const u64) -> uint64x1x2_t {
18886 transmute(vld1_s64_x2(transmute(a)))
18887}
18888#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18889#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u64_x3)"]
18890#[doc = "## Safety"]
18891#[doc = " * Neon instrinsic unsafe"]
18892#[inline]
18893#[target_feature(enable = "neon")]
18894#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18895#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18896#[cfg_attr(
18897 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18898 assert_instr(ld1)
18899)]
18900#[cfg_attr(
18901 not(target_arch = "arm"),
18902 stable(feature = "neon_intrinsics", since = "1.59.0")
18903)]
18904#[cfg_attr(
18905 target_arch = "arm",
18906 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18907)]
18908pub unsafe fn vld1_u64_x3(a: *const u64) -> uint64x1x3_t {
18909 transmute(vld1_s64_x3(transmute(a)))
18910}
18911#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18912#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u64_x4)"]
18913#[doc = "## Safety"]
18914#[doc = " * Neon instrinsic unsafe"]
18915#[inline]
18916#[target_feature(enable = "neon")]
18917#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18918#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18919#[cfg_attr(
18920 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18921 assert_instr(ld1)
18922)]
18923#[cfg_attr(
18924 not(target_arch = "arm"),
18925 stable(feature = "neon_intrinsics", since = "1.59.0")
18926)]
18927#[cfg_attr(
18928 target_arch = "arm",
18929 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18930)]
18931pub unsafe fn vld1_u64_x4(a: *const u64) -> uint64x1x4_t {
18932 transmute(vld1_s64_x4(transmute(a)))
18933}
18934#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18935#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u64_x2)"]
18936#[doc = "## Safety"]
18937#[doc = " * Neon instrinsic unsafe"]
18938#[inline]
18939#[cfg(target_endian = "little")]
18940#[target_feature(enable = "neon")]
18941#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18942#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18943#[cfg_attr(
18944 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18945 assert_instr(ld1)
18946)]
18947#[cfg_attr(
18948 not(target_arch = "arm"),
18949 stable(feature = "neon_intrinsics", since = "1.59.0")
18950)]
18951#[cfg_attr(
18952 target_arch = "arm",
18953 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18954)]
18955pub unsafe fn vld1q_u64_x2(a: *const u64) -> uint64x2x2_t {
18956 transmute(vld1q_s64_x2(transmute(a)))
18957}
18958#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18959#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u64_x2)"]
18960#[doc = "## Safety"]
18961#[doc = " * Neon instrinsic unsafe"]
18962#[inline]
18963#[cfg(target_endian = "big")]
18964#[target_feature(enable = "neon")]
18965#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18966#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
18967#[cfg_attr(
18968 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18969 assert_instr(ld1)
18970)]
18971#[cfg_attr(
18972 not(target_arch = "arm"),
18973 stable(feature = "neon_intrinsics", since = "1.59.0")
18974)]
18975#[cfg_attr(
18976 target_arch = "arm",
18977 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18978)]
18979pub unsafe fn vld1q_u64_x2(a: *const u64) -> uint64x2x2_t {
18980 let mut ret_val: uint64x2x2_t = transmute(vld1q_s64_x2(transmute(a)));
18981 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
18982 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
18983 ret_val
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_u64_x3)"]
18987#[doc = "## Safety"]
18988#[doc = " * Neon instrinsic unsafe"]
18989#[inline]
18990#[cfg(target_endian = "little")]
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_u64_x3(a: *const u64) -> uint64x2x3_t {
19007 transmute(vld1q_s64_x3(transmute(a)))
19008}
19009#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19010#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u64_x3)"]
19011#[doc = "## Safety"]
19012#[doc = " * Neon instrinsic unsafe"]
19013#[inline]
19014#[cfg(target_endian = "big")]
19015#[target_feature(enable = "neon")]
19016#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19017#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19018#[cfg_attr(
19019 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19020 assert_instr(ld1)
19021)]
19022#[cfg_attr(
19023 not(target_arch = "arm"),
19024 stable(feature = "neon_intrinsics", since = "1.59.0")
19025)]
19026#[cfg_attr(
19027 target_arch = "arm",
19028 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19029)]
19030pub unsafe fn vld1q_u64_x3(a: *const u64) -> uint64x2x3_t {
19031 let mut ret_val: uint64x2x3_t = transmute(vld1q_s64_x3(transmute(a)));
19032 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
19033 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
19034 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
19035 ret_val
19036}
19037#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19038#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u64_x4)"]
19039#[doc = "## Safety"]
19040#[doc = " * Neon instrinsic unsafe"]
19041#[inline]
19042#[cfg(target_endian = "little")]
19043#[target_feature(enable = "neon")]
19044#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19045#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19046#[cfg_attr(
19047 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19048 assert_instr(ld1)
19049)]
19050#[cfg_attr(
19051 not(target_arch = "arm"),
19052 stable(feature = "neon_intrinsics", since = "1.59.0")
19053)]
19054#[cfg_attr(
19055 target_arch = "arm",
19056 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19057)]
19058pub unsafe fn vld1q_u64_x4(a: *const u64) -> uint64x2x4_t {
19059 transmute(vld1q_s64_x4(transmute(a)))
19060}
19061#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19062#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u64_x4)"]
19063#[doc = "## Safety"]
19064#[doc = " * Neon instrinsic unsafe"]
19065#[inline]
19066#[cfg(target_endian = "big")]
19067#[target_feature(enable = "neon")]
19068#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19069#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19070#[cfg_attr(
19071 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19072 assert_instr(ld1)
19073)]
19074#[cfg_attr(
19075 not(target_arch = "arm"),
19076 stable(feature = "neon_intrinsics", since = "1.59.0")
19077)]
19078#[cfg_attr(
19079 target_arch = "arm",
19080 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19081)]
19082pub unsafe fn vld1q_u64_x4(a: *const u64) -> uint64x2x4_t {
19083 let mut ret_val: uint64x2x4_t = transmute(vld1q_s64_x4(transmute(a)));
19084 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
19085 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
19086 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
19087 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [1, 0]) };
19088 ret_val
19089}
19090#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19091#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p8_x2)"]
19092#[doc = "## Safety"]
19093#[doc = " * Neon instrinsic unsafe"]
19094#[inline]
19095#[cfg(target_endian = "little")]
19096#[target_feature(enable = "neon")]
19097#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19098#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19099#[cfg_attr(
19100 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19101 assert_instr(ld1)
19102)]
19103#[cfg_attr(
19104 not(target_arch = "arm"),
19105 stable(feature = "neon_intrinsics", since = "1.59.0")
19106)]
19107#[cfg_attr(
19108 target_arch = "arm",
19109 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19110)]
19111pub unsafe fn vld1_p8_x2(a: *const p8) -> poly8x8x2_t {
19112 transmute(vld1_s8_x2(transmute(a)))
19113}
19114#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19115#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p8_x2)"]
19116#[doc = "## Safety"]
19117#[doc = " * Neon instrinsic unsafe"]
19118#[inline]
19119#[cfg(target_endian = "big")]
19120#[target_feature(enable = "neon")]
19121#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19122#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19123#[cfg_attr(
19124 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19125 assert_instr(ld1)
19126)]
19127#[cfg_attr(
19128 not(target_arch = "arm"),
19129 stable(feature = "neon_intrinsics", since = "1.59.0")
19130)]
19131#[cfg_attr(
19132 target_arch = "arm",
19133 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19134)]
19135pub unsafe fn vld1_p8_x2(a: *const p8) -> poly8x8x2_t {
19136 let mut ret_val: poly8x8x2_t = transmute(vld1_s8_x2(transmute(a)));
19137 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
19138 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
19139 ret_val
19140}
19141#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p8_x3)"]
19143#[doc = "## Safety"]
19144#[doc = " * Neon instrinsic unsafe"]
19145#[inline]
19146#[cfg(target_endian = "little")]
19147#[target_feature(enable = "neon")]
19148#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19149#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19150#[cfg_attr(
19151 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19152 assert_instr(ld1)
19153)]
19154#[cfg_attr(
19155 not(target_arch = "arm"),
19156 stable(feature = "neon_intrinsics", since = "1.59.0")
19157)]
19158#[cfg_attr(
19159 target_arch = "arm",
19160 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19161)]
19162pub unsafe fn vld1_p8_x3(a: *const p8) -> poly8x8x3_t {
19163 transmute(vld1_s8_x3(transmute(a)))
19164}
19165#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19166#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p8_x3)"]
19167#[doc = "## Safety"]
19168#[doc = " * Neon instrinsic unsafe"]
19169#[inline]
19170#[cfg(target_endian = "big")]
19171#[target_feature(enable = "neon")]
19172#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19173#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19174#[cfg_attr(
19175 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19176 assert_instr(ld1)
19177)]
19178#[cfg_attr(
19179 not(target_arch = "arm"),
19180 stable(feature = "neon_intrinsics", since = "1.59.0")
19181)]
19182#[cfg_attr(
19183 target_arch = "arm",
19184 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19185)]
19186pub unsafe fn vld1_p8_x3(a: *const p8) -> poly8x8x3_t {
19187 let mut ret_val: poly8x8x3_t = transmute(vld1_s8_x3(transmute(a)));
19188 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
19189 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
19190 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
19191 ret_val
19192}
19193#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19194#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p8_x4)"]
19195#[doc = "## Safety"]
19196#[doc = " * Neon instrinsic unsafe"]
19197#[inline]
19198#[cfg(target_endian = "little")]
19199#[target_feature(enable = "neon")]
19200#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19201#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19202#[cfg_attr(
19203 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19204 assert_instr(ld1)
19205)]
19206#[cfg_attr(
19207 not(target_arch = "arm"),
19208 stable(feature = "neon_intrinsics", since = "1.59.0")
19209)]
19210#[cfg_attr(
19211 target_arch = "arm",
19212 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19213)]
19214pub unsafe fn vld1_p8_x4(a: *const p8) -> poly8x8x4_t {
19215 transmute(vld1_s8_x4(transmute(a)))
19216}
19217#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19218#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p8_x4)"]
19219#[doc = "## Safety"]
19220#[doc = " * Neon instrinsic unsafe"]
19221#[inline]
19222#[cfg(target_endian = "big")]
19223#[target_feature(enable = "neon")]
19224#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19225#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19226#[cfg_attr(
19227 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19228 assert_instr(ld1)
19229)]
19230#[cfg_attr(
19231 not(target_arch = "arm"),
19232 stable(feature = "neon_intrinsics", since = "1.59.0")
19233)]
19234#[cfg_attr(
19235 target_arch = "arm",
19236 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19237)]
19238pub unsafe fn vld1_p8_x4(a: *const p8) -> poly8x8x4_t {
19239 let mut ret_val: poly8x8x4_t = transmute(vld1_s8_x4(transmute(a)));
19240 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
19241 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
19242 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
19243 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
19244 ret_val
19245}
19246#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19247#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8_x2)"]
19248#[doc = "## Safety"]
19249#[doc = " * Neon instrinsic unsafe"]
19250#[inline]
19251#[cfg(target_endian = "little")]
19252#[target_feature(enable = "neon")]
19253#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19254#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19255#[cfg_attr(
19256 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19257 assert_instr(ld1)
19258)]
19259#[cfg_attr(
19260 not(target_arch = "arm"),
19261 stable(feature = "neon_intrinsics", since = "1.59.0")
19262)]
19263#[cfg_attr(
19264 target_arch = "arm",
19265 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19266)]
19267pub unsafe fn vld1q_p8_x2(a: *const p8) -> poly8x16x2_t {
19268 transmute(vld1q_s8_x2(transmute(a)))
19269}
19270#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19271#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8_x2)"]
19272#[doc = "## Safety"]
19273#[doc = " * Neon instrinsic unsafe"]
19274#[inline]
19275#[cfg(target_endian = "big")]
19276#[target_feature(enable = "neon")]
19277#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19278#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19279#[cfg_attr(
19280 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19281 assert_instr(ld1)
19282)]
19283#[cfg_attr(
19284 not(target_arch = "arm"),
19285 stable(feature = "neon_intrinsics", since = "1.59.0")
19286)]
19287#[cfg_attr(
19288 target_arch = "arm",
19289 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19290)]
19291pub unsafe fn vld1q_p8_x2(a: *const p8) -> poly8x16x2_t {
19292 let mut ret_val: poly8x16x2_t = transmute(vld1q_s8_x2(transmute(a)));
19293 ret_val.0 = unsafe {
19294 simd_shuffle!(
19295 ret_val.0,
19296 ret_val.0,
19297 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19298 )
19299 };
19300 ret_val.1 = unsafe {
19301 simd_shuffle!(
19302 ret_val.1,
19303 ret_val.1,
19304 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19305 )
19306 };
19307 ret_val
19308}
19309#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19310#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8_x3)"]
19311#[doc = "## Safety"]
19312#[doc = " * Neon instrinsic unsafe"]
19313#[inline]
19314#[cfg(target_endian = "little")]
19315#[target_feature(enable = "neon")]
19316#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19317#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19318#[cfg_attr(
19319 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19320 assert_instr(ld1)
19321)]
19322#[cfg_attr(
19323 not(target_arch = "arm"),
19324 stable(feature = "neon_intrinsics", since = "1.59.0")
19325)]
19326#[cfg_attr(
19327 target_arch = "arm",
19328 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19329)]
19330pub unsafe fn vld1q_p8_x3(a: *const p8) -> poly8x16x3_t {
19331 transmute(vld1q_s8_x3(transmute(a)))
19332}
19333#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19334#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8_x3)"]
19335#[doc = "## Safety"]
19336#[doc = " * Neon instrinsic unsafe"]
19337#[inline]
19338#[cfg(target_endian = "big")]
19339#[target_feature(enable = "neon")]
19340#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19341#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19342#[cfg_attr(
19343 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19344 assert_instr(ld1)
19345)]
19346#[cfg_attr(
19347 not(target_arch = "arm"),
19348 stable(feature = "neon_intrinsics", since = "1.59.0")
19349)]
19350#[cfg_attr(
19351 target_arch = "arm",
19352 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19353)]
19354pub unsafe fn vld1q_p8_x3(a: *const p8) -> poly8x16x3_t {
19355 let mut ret_val: poly8x16x3_t = transmute(vld1q_s8_x3(transmute(a)));
19356 ret_val.0 = unsafe {
19357 simd_shuffle!(
19358 ret_val.0,
19359 ret_val.0,
19360 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19361 )
19362 };
19363 ret_val.1 = unsafe {
19364 simd_shuffle!(
19365 ret_val.1,
19366 ret_val.1,
19367 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19368 )
19369 };
19370 ret_val.2 = unsafe {
19371 simd_shuffle!(
19372 ret_val.2,
19373 ret_val.2,
19374 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19375 )
19376 };
19377 ret_val
19378}
19379#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19380#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8_x4)"]
19381#[doc = "## Safety"]
19382#[doc = " * Neon instrinsic unsafe"]
19383#[inline]
19384#[cfg(target_endian = "little")]
19385#[target_feature(enable = "neon")]
19386#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19387#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19388#[cfg_attr(
19389 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19390 assert_instr(ld1)
19391)]
19392#[cfg_attr(
19393 not(target_arch = "arm"),
19394 stable(feature = "neon_intrinsics", since = "1.59.0")
19395)]
19396#[cfg_attr(
19397 target_arch = "arm",
19398 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19399)]
19400pub unsafe fn vld1q_p8_x4(a: *const p8) -> poly8x16x4_t {
19401 transmute(vld1q_s8_x4(transmute(a)))
19402}
19403#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19404#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8_x4)"]
19405#[doc = "## Safety"]
19406#[doc = " * Neon instrinsic unsafe"]
19407#[inline]
19408#[cfg(target_endian = "big")]
19409#[target_feature(enable = "neon")]
19410#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19411#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19412#[cfg_attr(
19413 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19414 assert_instr(ld1)
19415)]
19416#[cfg_attr(
19417 not(target_arch = "arm"),
19418 stable(feature = "neon_intrinsics", since = "1.59.0")
19419)]
19420#[cfg_attr(
19421 target_arch = "arm",
19422 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19423)]
19424pub unsafe fn vld1q_p8_x4(a: *const p8) -> poly8x16x4_t {
19425 let mut ret_val: poly8x16x4_t = transmute(vld1q_s8_x4(transmute(a)));
19426 ret_val.0 = unsafe {
19427 simd_shuffle!(
19428 ret_val.0,
19429 ret_val.0,
19430 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19431 )
19432 };
19433 ret_val.1 = unsafe {
19434 simd_shuffle!(
19435 ret_val.1,
19436 ret_val.1,
19437 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19438 )
19439 };
19440 ret_val.2 = unsafe {
19441 simd_shuffle!(
19442 ret_val.2,
19443 ret_val.2,
19444 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19445 )
19446 };
19447 ret_val.3 = unsafe {
19448 simd_shuffle!(
19449 ret_val.3,
19450 ret_val.3,
19451 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19452 )
19453 };
19454 ret_val
19455}
19456#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19457#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p16_x2)"]
19458#[doc = "## Safety"]
19459#[doc = " * Neon instrinsic unsafe"]
19460#[inline]
19461#[cfg(target_endian = "little")]
19462#[target_feature(enable = "neon")]
19463#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19464#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19465#[cfg_attr(
19466 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19467 assert_instr(ld1)
19468)]
19469#[cfg_attr(
19470 not(target_arch = "arm"),
19471 stable(feature = "neon_intrinsics", since = "1.59.0")
19472)]
19473#[cfg_attr(
19474 target_arch = "arm",
19475 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19476)]
19477pub unsafe fn vld1_p16_x2(a: *const p16) -> poly16x4x2_t {
19478 transmute(vld1_s16_x2(transmute(a)))
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_p16_x2)"]
19482#[doc = "## Safety"]
19483#[doc = " * Neon instrinsic unsafe"]
19484#[inline]
19485#[cfg(target_endian = "big")]
19486#[target_feature(enable = "neon")]
19487#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19488#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19489#[cfg_attr(
19490 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19491 assert_instr(ld1)
19492)]
19493#[cfg_attr(
19494 not(target_arch = "arm"),
19495 stable(feature = "neon_intrinsics", since = "1.59.0")
19496)]
19497#[cfg_attr(
19498 target_arch = "arm",
19499 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19500)]
19501pub unsafe fn vld1_p16_x2(a: *const p16) -> poly16x4x2_t {
19502 let mut ret_val: poly16x4x2_t = transmute(vld1_s16_x2(transmute(a)));
19503 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
19504 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
19505 ret_val
19506}
19507#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19508#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p16_x3)"]
19509#[doc = "## Safety"]
19510#[doc = " * Neon instrinsic unsafe"]
19511#[inline]
19512#[cfg(target_endian = "little")]
19513#[target_feature(enable = "neon")]
19514#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19515#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19516#[cfg_attr(
19517 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19518 assert_instr(ld1)
19519)]
19520#[cfg_attr(
19521 not(target_arch = "arm"),
19522 stable(feature = "neon_intrinsics", since = "1.59.0")
19523)]
19524#[cfg_attr(
19525 target_arch = "arm",
19526 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19527)]
19528pub unsafe fn vld1_p16_x3(a: *const p16) -> poly16x4x3_t {
19529 transmute(vld1_s16_x3(transmute(a)))
19530}
19531#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19532#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p16_x3)"]
19533#[doc = "## Safety"]
19534#[doc = " * Neon instrinsic unsafe"]
19535#[inline]
19536#[cfg(target_endian = "big")]
19537#[target_feature(enable = "neon")]
19538#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19539#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19540#[cfg_attr(
19541 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19542 assert_instr(ld1)
19543)]
19544#[cfg_attr(
19545 not(target_arch = "arm"),
19546 stable(feature = "neon_intrinsics", since = "1.59.0")
19547)]
19548#[cfg_attr(
19549 target_arch = "arm",
19550 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19551)]
19552pub unsafe fn vld1_p16_x3(a: *const p16) -> poly16x4x3_t {
19553 let mut ret_val: poly16x4x3_t = transmute(vld1_s16_x3(transmute(a)));
19554 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
19555 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
19556 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
19557 ret_val
19558}
19559#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19560#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p16_x4)"]
19561#[doc = "## Safety"]
19562#[doc = " * Neon instrinsic unsafe"]
19563#[inline]
19564#[cfg(target_endian = "little")]
19565#[target_feature(enable = "neon")]
19566#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19567#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19568#[cfg_attr(
19569 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19570 assert_instr(ld1)
19571)]
19572#[cfg_attr(
19573 not(target_arch = "arm"),
19574 stable(feature = "neon_intrinsics", since = "1.59.0")
19575)]
19576#[cfg_attr(
19577 target_arch = "arm",
19578 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19579)]
19580pub unsafe fn vld1_p16_x4(a: *const p16) -> poly16x4x4_t {
19581 transmute(vld1_s16_x4(transmute(a)))
19582}
19583#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19584#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p16_x4)"]
19585#[doc = "## Safety"]
19586#[doc = " * Neon instrinsic unsafe"]
19587#[inline]
19588#[cfg(target_endian = "big")]
19589#[target_feature(enable = "neon")]
19590#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19591#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19592#[cfg_attr(
19593 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19594 assert_instr(ld1)
19595)]
19596#[cfg_attr(
19597 not(target_arch = "arm"),
19598 stable(feature = "neon_intrinsics", since = "1.59.0")
19599)]
19600#[cfg_attr(
19601 target_arch = "arm",
19602 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19603)]
19604pub unsafe fn vld1_p16_x4(a: *const p16) -> poly16x4x4_t {
19605 let mut ret_val: poly16x4x4_t = transmute(vld1_s16_x4(transmute(a)));
19606 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
19607 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
19608 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
19609 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
19610 ret_val
19611}
19612#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19613#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16_x2)"]
19614#[doc = "## Safety"]
19615#[doc = " * Neon instrinsic unsafe"]
19616#[inline]
19617#[cfg(target_endian = "little")]
19618#[target_feature(enable = "neon")]
19619#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19620#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19621#[cfg_attr(
19622 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19623 assert_instr(ld1)
19624)]
19625#[cfg_attr(
19626 not(target_arch = "arm"),
19627 stable(feature = "neon_intrinsics", since = "1.59.0")
19628)]
19629#[cfg_attr(
19630 target_arch = "arm",
19631 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19632)]
19633pub unsafe fn vld1q_p16_x2(a: *const p16) -> poly16x8x2_t {
19634 transmute(vld1q_s16_x2(transmute(a)))
19635}
19636#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19637#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16_x2)"]
19638#[doc = "## Safety"]
19639#[doc = " * Neon instrinsic unsafe"]
19640#[inline]
19641#[cfg(target_endian = "big")]
19642#[target_feature(enable = "neon")]
19643#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19644#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19645#[cfg_attr(
19646 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19647 assert_instr(ld1)
19648)]
19649#[cfg_attr(
19650 not(target_arch = "arm"),
19651 stable(feature = "neon_intrinsics", since = "1.59.0")
19652)]
19653#[cfg_attr(
19654 target_arch = "arm",
19655 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19656)]
19657pub unsafe fn vld1q_p16_x2(a: *const p16) -> poly16x8x2_t {
19658 let mut ret_val: poly16x8x2_t = transmute(vld1q_s16_x2(transmute(a)));
19659 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
19660 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
19661 ret_val
19662}
19663#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19664#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16_x3)"]
19665#[doc = "## Safety"]
19666#[doc = " * Neon instrinsic unsafe"]
19667#[inline]
19668#[cfg(target_endian = "little")]
19669#[target_feature(enable = "neon")]
19670#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19671#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19672#[cfg_attr(
19673 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19674 assert_instr(ld1)
19675)]
19676#[cfg_attr(
19677 not(target_arch = "arm"),
19678 stable(feature = "neon_intrinsics", since = "1.59.0")
19679)]
19680#[cfg_attr(
19681 target_arch = "arm",
19682 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19683)]
19684pub unsafe fn vld1q_p16_x3(a: *const p16) -> poly16x8x3_t {
19685 transmute(vld1q_s16_x3(transmute(a)))
19686}
19687#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19688#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16_x3)"]
19689#[doc = "## Safety"]
19690#[doc = " * Neon instrinsic unsafe"]
19691#[inline]
19692#[cfg(target_endian = "big")]
19693#[target_feature(enable = "neon")]
19694#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19695#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19696#[cfg_attr(
19697 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19698 assert_instr(ld1)
19699)]
19700#[cfg_attr(
19701 not(target_arch = "arm"),
19702 stable(feature = "neon_intrinsics", since = "1.59.0")
19703)]
19704#[cfg_attr(
19705 target_arch = "arm",
19706 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19707)]
19708pub unsafe fn vld1q_p16_x3(a: *const p16) -> poly16x8x3_t {
19709 let mut ret_val: poly16x8x3_t = transmute(vld1q_s16_x3(transmute(a)));
19710 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
19711 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
19712 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
19713 ret_val
19714}
19715#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19716#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16_x4)"]
19717#[doc = "## Safety"]
19718#[doc = " * Neon instrinsic unsafe"]
19719#[inline]
19720#[cfg(target_endian = "little")]
19721#[target_feature(enable = "neon")]
19722#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19723#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19724#[cfg_attr(
19725 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19726 assert_instr(ld1)
19727)]
19728#[cfg_attr(
19729 not(target_arch = "arm"),
19730 stable(feature = "neon_intrinsics", since = "1.59.0")
19731)]
19732#[cfg_attr(
19733 target_arch = "arm",
19734 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19735)]
19736pub unsafe fn vld1q_p16_x4(a: *const p16) -> poly16x8x4_t {
19737 transmute(vld1q_s16_x4(transmute(a)))
19738}
19739#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
19740#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16_x4)"]
19741#[doc = "## Safety"]
19742#[doc = " * Neon instrinsic unsafe"]
19743#[inline]
19744#[cfg(target_endian = "big")]
19745#[target_feature(enable = "neon")]
19746#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19747#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
19748#[cfg_attr(
19749 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19750 assert_instr(ld1)
19751)]
19752#[cfg_attr(
19753 not(target_arch = "arm"),
19754 stable(feature = "neon_intrinsics", since = "1.59.0")
19755)]
19756#[cfg_attr(
19757 target_arch = "arm",
19758 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19759)]
19760pub unsafe fn vld1q_p16_x4(a: *const p16) -> poly16x8x4_t {
19761 let mut ret_val: poly16x8x4_t = transmute(vld1q_s16_x4(transmute(a)));
19762 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
19763 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
19764 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
19765 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
19766 ret_val
19767}
19768#[inline]
19769#[rustc_legacy_const_generics(1)]
19770#[cfg(target_arch = "arm")]
19771#[target_feature(enable = "neon,v7")]
19772#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
19773#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19774unsafe fn vld1_v1i64<const ALIGN: i32>(a: *const i8) -> int64x1_t {
19775 unsafe extern "unadjusted" {
19776 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v1i64")]
19777 fn _vld1_v1i64(a: *const i8, b: i32) -> int64x1_t;
19778 }
19779 _vld1_v1i64(a, ALIGN)
19780}
19781#[inline]
19782#[rustc_legacy_const_generics(1)]
19783#[cfg(target_arch = "arm")]
19784#[target_feature(enable = "neon,v7")]
19785#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
19786#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19787unsafe fn vld1_v2f32<const ALIGN: i32>(a: *const i8) -> float32x2_t {
19788 unsafe extern "unadjusted" {
19789 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v2f32")]
19790 fn _vld1_v2f32(a: *const i8, b: i32) -> float32x2_t;
19791 }
19792 _vld1_v2f32(a, ALIGN)
19793}
19794#[inline]
19795#[rustc_legacy_const_generics(1)]
19796#[cfg(target_arch = "arm")]
19797#[target_feature(enable = "neon,v7")]
19798#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
19799#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19800unsafe fn vld1_v2i32<const ALIGN: i32>(a: *const i8) -> int32x2_t {
19801 unsafe extern "unadjusted" {
19802 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v2i32")]
19803 fn _vld1_v2i32(a: *const i8, b: i32) -> int32x2_t;
19804 }
19805 _vld1_v2i32(a, ALIGN)
19806}
19807#[inline]
19808#[rustc_legacy_const_generics(1)]
19809#[cfg(target_arch = "arm")]
19810#[target_feature(enable = "neon,v7")]
19811#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
19812#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19813unsafe fn vld1_v4i16<const ALIGN: i32>(a: *const i8) -> int16x4_t {
19814 unsafe extern "unadjusted" {
19815 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v4i16")]
19816 fn _vld1_v4i16(a: *const i8, b: i32) -> int16x4_t;
19817 }
19818 _vld1_v4i16(a, ALIGN)
19819}
19820#[inline]
19821#[rustc_legacy_const_generics(1)]
19822#[cfg(target_arch = "arm")]
19823#[target_feature(enable = "neon,v7")]
19824#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
19825#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19826unsafe fn vld1_v8i8<const ALIGN: i32>(a: *const i8) -> int8x8_t {
19827 unsafe extern "unadjusted" {
19828 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v8i8")]
19829 fn _vld1_v8i8(a: *const i8, b: i32) -> int8x8_t;
19830 }
19831 _vld1_v8i8(a, ALIGN)
19832}
19833#[inline]
19834#[rustc_legacy_const_generics(1)]
19835#[cfg(target_arch = "arm")]
19836#[target_feature(enable = "neon,v7")]
19837#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
19838#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19839unsafe fn vld1q_v16i8<const ALIGN: i32>(a: *const i8) -> int8x16_t {
19840 unsafe extern "unadjusted" {
19841 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v16i8")]
19842 fn _vld1q_v16i8(a: *const i8, b: i32) -> int8x16_t;
19843 }
19844 _vld1q_v16i8(a, ALIGN)
19845}
19846#[inline]
19847#[rustc_legacy_const_generics(1)]
19848#[cfg(target_arch = "arm")]
19849#[target_feature(enable = "neon,v7")]
19850#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
19851#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19852unsafe fn vld1q_v2i64<const ALIGN: i32>(a: *const i8) -> int64x2_t {
19853 unsafe extern "unadjusted" {
19854 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v2i64")]
19855 fn _vld1q_v2i64(a: *const i8, b: i32) -> int64x2_t;
19856 }
19857 _vld1q_v2i64(a, ALIGN)
19858}
19859#[inline]
19860#[rustc_legacy_const_generics(1)]
19861#[cfg(target_arch = "arm")]
19862#[target_feature(enable = "neon,v7")]
19863#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
19864#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19865unsafe fn vld1q_v4f32<const ALIGN: i32>(a: *const i8) -> float32x4_t {
19866 unsafe extern "unadjusted" {
19867 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v4f32")]
19868 fn _vld1q_v4f32(a: *const i8, b: i32) -> float32x4_t;
19869 }
19870 _vld1q_v4f32(a, ALIGN)
19871}
19872#[inline]
19873#[rustc_legacy_const_generics(1)]
19874#[cfg(target_arch = "arm")]
19875#[target_feature(enable = "neon,v7")]
19876#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
19877#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19878unsafe fn vld1q_v4i32<const ALIGN: i32>(a: *const i8) -> int32x4_t {
19879 unsafe extern "unadjusted" {
19880 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v4i32")]
19881 fn _vld1q_v4i32(a: *const i8, b: i32) -> int32x4_t;
19882 }
19883 _vld1q_v4i32(a, ALIGN)
19884}
19885#[inline]
19886#[rustc_legacy_const_generics(1)]
19887#[cfg(target_arch = "arm")]
19888#[target_feature(enable = "neon,v7")]
19889#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
19890#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19891unsafe fn vld1q_v8i16<const ALIGN: i32>(a: *const i8) -> int16x8_t {
19892 unsafe extern "unadjusted" {
19893 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v8i16")]
19894 fn _vld1q_v8i16(a: *const i8, b: i32) -> int16x8_t;
19895 }
19896 _vld1q_v8i16(a, ALIGN)
19897}
19898#[inline]
19899#[cfg(target_arch = "arm")]
19900#[target_feature(enable = "neon,v7")]
19901#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
19902#[target_feature(enable = "neon,fp16")]
19903#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19904#[cfg(not(target_arch = "arm64ec"))]
19905unsafe fn vld1_v4f16(a: *const i8, b: i32) -> float16x4_t {
19906 unsafe extern "unadjusted" {
19907 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v4f16")]
19908 fn _vld1_v4f16(a: *const i8, b: i32) -> float16x4_t;
19909 }
19910 _vld1_v4f16(a, b)
19911}
19912#[inline]
19913#[cfg(target_arch = "arm")]
19914#[target_feature(enable = "neon,v7")]
19915#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
19916#[target_feature(enable = "neon,fp16")]
19917#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19918#[cfg(not(target_arch = "arm64ec"))]
19919unsafe fn vld1q_v8f16(a: *const i8, b: i32) -> float16x8_t {
19920 unsafe extern "unadjusted" {
19921 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v8f16")]
19922 fn _vld1q_v8f16(a: *const i8, b: i32) -> float16x8_t;
19923 }
19924 _vld1q_v8f16(a, b)
19925}
19926#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
19927#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_p64)"]
19928#[doc = "## Safety"]
19929#[doc = " * Neon instrinsic unsafe"]
19930#[inline]
19931#[target_feature(enable = "neon,aes")]
19932#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19933#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
19934#[cfg_attr(
19935 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19936 assert_instr(ld1r)
19937)]
19938#[cfg_attr(
19939 not(target_arch = "arm"),
19940 stable(feature = "neon_intrinsics", since = "1.59.0")
19941)]
19942#[cfg_attr(
19943 target_arch = "arm",
19944 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19945)]
19946pub unsafe fn vld1q_dup_p64(ptr: *const p64) -> poly64x2_t {
19947 let x = vld1q_lane_p64::<0>(ptr, transmute(u64x2::splat(0)));
19948 simd_shuffle!(x, x, [0, 0])
19949}
19950#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19951#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_f16)"]
19952#[doc = "## Safety"]
19953#[doc = " * Neon instrinsic unsafe"]
19954#[inline]
19955#[target_feature(enable = "neon")]
19956#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19957#[cfg(target_arch = "arm")]
19958#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
19959#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19960#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
19961#[cfg(not(target_arch = "arm64ec"))]
19962pub unsafe fn vld2_dup_f16(a: *const f16) -> float16x4x2_t {
19963 unsafe extern "unadjusted" {
19964 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v4f16.p0")]
19965 fn _vld2_dup_f16(ptr: *const f16, size: i32) -> float16x4x2_t;
19966 }
19967 _vld2_dup_f16(a as _, 2)
19968}
19969#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19970#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_f16)"]
19971#[doc = "## Safety"]
19972#[doc = " * Neon instrinsic unsafe"]
19973#[inline]
19974#[target_feature(enable = "neon")]
19975#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19976#[cfg(target_arch = "arm")]
19977#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
19978#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19979#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
19980#[cfg(not(target_arch = "arm64ec"))]
19981pub unsafe fn vld2q_dup_f16(a: *const f16) -> float16x8x2_t {
19982 unsafe extern "unadjusted" {
19983 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v8f16.p0")]
19984 fn _vld2q_dup_f16(ptr: *const f16, size: i32) -> float16x8x2_t;
19985 }
19986 _vld2q_dup_f16(a as _, 2)
19987}
19988#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19989#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_f16)"]
19990#[doc = "## Safety"]
19991#[doc = " * Neon instrinsic unsafe"]
19992#[inline]
19993#[target_feature(enable = "neon")]
19994#[cfg(not(target_arch = "arm"))]
19995#[cfg_attr(
19996 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19997 assert_instr(ld2r)
19998)]
19999#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
20000#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20001#[cfg(not(target_arch = "arm64ec"))]
20002pub unsafe fn vld2_dup_f16(a: *const f16) -> float16x4x2_t {
20003 unsafe extern "unadjusted" {
20004 #[cfg_attr(
20005 any(target_arch = "aarch64", target_arch = "arm64ec"),
20006 link_name = "llvm.aarch64.neon.ld2r.v4f16.p0"
20007 )]
20008 fn _vld2_dup_f16(ptr: *const f16) -> float16x4x2_t;
20009 }
20010 _vld2_dup_f16(a as _)
20011}
20012#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20013#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_f16)"]
20014#[doc = "## Safety"]
20015#[doc = " * Neon instrinsic unsafe"]
20016#[inline]
20017#[target_feature(enable = "neon")]
20018#[cfg(not(target_arch = "arm"))]
20019#[cfg_attr(
20020 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20021 assert_instr(ld2r)
20022)]
20023#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
20024#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20025#[cfg(not(target_arch = "arm64ec"))]
20026pub unsafe fn vld2q_dup_f16(a: *const f16) -> float16x8x2_t {
20027 unsafe extern "unadjusted" {
20028 #[cfg_attr(
20029 any(target_arch = "aarch64", target_arch = "arm64ec"),
20030 link_name = "llvm.aarch64.neon.ld2r.v8f16.p0"
20031 )]
20032 fn _vld2q_dup_f16(ptr: *const f16) -> float16x8x2_t;
20033 }
20034 _vld2q_dup_f16(a as _)
20035}
20036#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20037#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_f32)"]
20038#[doc = "## Safety"]
20039#[doc = " * Neon instrinsic unsafe"]
20040#[inline]
20041#[target_feature(enable = "neon,v7")]
20042#[cfg(target_arch = "arm")]
20043#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20044#[cfg_attr(test, assert_instr(vld2))]
20045pub unsafe fn vld2_dup_f32(a: *const f32) -> float32x2x2_t {
20046 unsafe extern "unadjusted" {
20047 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v2f32.p0")]
20048 fn _vld2_dup_f32(ptr: *const i8, size: i32) -> float32x2x2_t;
20049 }
20050 _vld2_dup_f32(a as *const i8, 4)
20051}
20052#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20053#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_f32)"]
20054#[doc = "## Safety"]
20055#[doc = " * Neon instrinsic unsafe"]
20056#[inline]
20057#[target_feature(enable = "neon,v7")]
20058#[cfg(target_arch = "arm")]
20059#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20060#[cfg_attr(test, assert_instr(vld2))]
20061pub unsafe fn vld2q_dup_f32(a: *const f32) -> float32x4x2_t {
20062 unsafe extern "unadjusted" {
20063 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v4f32.p0")]
20064 fn _vld2q_dup_f32(ptr: *const i8, size: i32) -> float32x4x2_t;
20065 }
20066 _vld2q_dup_f32(a as *const i8, 4)
20067}
20068#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20069#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s8)"]
20070#[doc = "## Safety"]
20071#[doc = " * Neon instrinsic unsafe"]
20072#[inline]
20073#[target_feature(enable = "neon,v7")]
20074#[cfg(target_arch = "arm")]
20075#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20076#[cfg_attr(test, assert_instr(vld2))]
20077pub unsafe fn vld2_dup_s8(a: *const i8) -> int8x8x2_t {
20078 unsafe extern "unadjusted" {
20079 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v8i8.p0")]
20080 fn _vld2_dup_s8(ptr: *const i8, size: i32) -> int8x8x2_t;
20081 }
20082 _vld2_dup_s8(a as *const i8, 1)
20083}
20084#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20085#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s8)"]
20086#[doc = "## Safety"]
20087#[doc = " * Neon instrinsic unsafe"]
20088#[inline]
20089#[target_feature(enable = "neon,v7")]
20090#[cfg(target_arch = "arm")]
20091#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20092#[cfg_attr(test, assert_instr(vld2))]
20093pub unsafe fn vld2q_dup_s8(a: *const i8) -> int8x16x2_t {
20094 unsafe extern "unadjusted" {
20095 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v16i8.p0")]
20096 fn _vld2q_dup_s8(ptr: *const i8, size: i32) -> int8x16x2_t;
20097 }
20098 _vld2q_dup_s8(a as *const i8, 1)
20099}
20100#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20101#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s16)"]
20102#[doc = "## Safety"]
20103#[doc = " * Neon instrinsic unsafe"]
20104#[inline]
20105#[target_feature(enable = "neon,v7")]
20106#[cfg(target_arch = "arm")]
20107#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20108#[cfg_attr(test, assert_instr(vld2))]
20109pub unsafe fn vld2_dup_s16(a: *const i16) -> int16x4x2_t {
20110 unsafe extern "unadjusted" {
20111 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v4i16.p0")]
20112 fn _vld2_dup_s16(ptr: *const i8, size: i32) -> int16x4x2_t;
20113 }
20114 _vld2_dup_s16(a as *const i8, 2)
20115}
20116#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20117#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s16)"]
20118#[doc = "## Safety"]
20119#[doc = " * Neon instrinsic unsafe"]
20120#[inline]
20121#[target_feature(enable = "neon,v7")]
20122#[cfg(target_arch = "arm")]
20123#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20124#[cfg_attr(test, assert_instr(vld2))]
20125pub unsafe fn vld2q_dup_s16(a: *const i16) -> int16x8x2_t {
20126 unsafe extern "unadjusted" {
20127 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v8i16.p0")]
20128 fn _vld2q_dup_s16(ptr: *const i8, size: i32) -> int16x8x2_t;
20129 }
20130 _vld2q_dup_s16(a as *const i8, 2)
20131}
20132#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20133#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s32)"]
20134#[doc = "## Safety"]
20135#[doc = " * Neon instrinsic unsafe"]
20136#[inline]
20137#[target_feature(enable = "neon,v7")]
20138#[cfg(target_arch = "arm")]
20139#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20140#[cfg_attr(test, assert_instr(vld2))]
20141pub unsafe fn vld2_dup_s32(a: *const i32) -> int32x2x2_t {
20142 unsafe extern "unadjusted" {
20143 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v2i32.p0")]
20144 fn _vld2_dup_s32(ptr: *const i8, size: i32) -> int32x2x2_t;
20145 }
20146 _vld2_dup_s32(a as *const i8, 4)
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_s32)"]
20150#[doc = "## Safety"]
20151#[doc = " * Neon instrinsic unsafe"]
20152#[inline]
20153#[target_feature(enable = "neon,v7")]
20154#[cfg(target_arch = "arm")]
20155#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20156#[cfg_attr(test, assert_instr(vld2))]
20157pub unsafe fn vld2q_dup_s32(a: *const i32) -> int32x4x2_t {
20158 unsafe extern "unadjusted" {
20159 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v4i32.p0")]
20160 fn _vld2q_dup_s32(ptr: *const i8, size: i32) -> int32x4x2_t;
20161 }
20162 _vld2q_dup_s32(a as *const i8, 4)
20163}
20164#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20165#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_f32)"]
20166#[doc = "## Safety"]
20167#[doc = " * Neon instrinsic unsafe"]
20168#[inline]
20169#[target_feature(enable = "neon")]
20170#[cfg(not(target_arch = "arm"))]
20171#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20172#[cfg_attr(test, assert_instr(ld2r))]
20173pub unsafe fn vld2_dup_f32(a: *const f32) -> float32x2x2_t {
20174 unsafe extern "unadjusted" {
20175 #[cfg_attr(
20176 any(target_arch = "aarch64", target_arch = "arm64ec"),
20177 link_name = "llvm.aarch64.neon.ld2r.v2f32.p0"
20178 )]
20179 fn _vld2_dup_f32(ptr: *const f32) -> float32x2x2_t;
20180 }
20181 _vld2_dup_f32(a as _)
20182}
20183#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20184#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_f32)"]
20185#[doc = "## Safety"]
20186#[doc = " * Neon instrinsic unsafe"]
20187#[inline]
20188#[target_feature(enable = "neon")]
20189#[cfg(not(target_arch = "arm"))]
20190#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20191#[cfg_attr(test, assert_instr(ld2r))]
20192pub unsafe fn vld2q_dup_f32(a: *const f32) -> float32x4x2_t {
20193 unsafe extern "unadjusted" {
20194 #[cfg_attr(
20195 any(target_arch = "aarch64", target_arch = "arm64ec"),
20196 link_name = "llvm.aarch64.neon.ld2r.v4f32.p0"
20197 )]
20198 fn _vld2q_dup_f32(ptr: *const f32) -> float32x4x2_t;
20199 }
20200 _vld2q_dup_f32(a as _)
20201}
20202#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20203#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s8)"]
20204#[doc = "## Safety"]
20205#[doc = " * Neon instrinsic unsafe"]
20206#[inline]
20207#[target_feature(enable = "neon")]
20208#[cfg(not(target_arch = "arm"))]
20209#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20210#[cfg_attr(test, assert_instr(ld2r))]
20211pub unsafe fn vld2_dup_s8(a: *const i8) -> int8x8x2_t {
20212 unsafe extern "unadjusted" {
20213 #[cfg_attr(
20214 any(target_arch = "aarch64", target_arch = "arm64ec"),
20215 link_name = "llvm.aarch64.neon.ld2r.v8i8.p0"
20216 )]
20217 fn _vld2_dup_s8(ptr: *const i8) -> int8x8x2_t;
20218 }
20219 _vld2_dup_s8(a as _)
20220}
20221#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s8)"]
20223#[doc = "## Safety"]
20224#[doc = " * Neon instrinsic unsafe"]
20225#[inline]
20226#[target_feature(enable = "neon")]
20227#[cfg(not(target_arch = "arm"))]
20228#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20229#[cfg_attr(test, assert_instr(ld2r))]
20230pub unsafe fn vld2q_dup_s8(a: *const i8) -> int8x16x2_t {
20231 unsafe extern "unadjusted" {
20232 #[cfg_attr(
20233 any(target_arch = "aarch64", target_arch = "arm64ec"),
20234 link_name = "llvm.aarch64.neon.ld2r.v16i8.p0"
20235 )]
20236 fn _vld2q_dup_s8(ptr: *const i8) -> int8x16x2_t;
20237 }
20238 _vld2q_dup_s8(a as _)
20239}
20240#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20241#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s16)"]
20242#[doc = "## Safety"]
20243#[doc = " * Neon instrinsic unsafe"]
20244#[inline]
20245#[target_feature(enable = "neon")]
20246#[cfg(not(target_arch = "arm"))]
20247#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20248#[cfg_attr(test, assert_instr(ld2r))]
20249pub unsafe fn vld2_dup_s16(a: *const i16) -> int16x4x2_t {
20250 unsafe extern "unadjusted" {
20251 #[cfg_attr(
20252 any(target_arch = "aarch64", target_arch = "arm64ec"),
20253 link_name = "llvm.aarch64.neon.ld2r.v4i16.p0"
20254 )]
20255 fn _vld2_dup_s16(ptr: *const i16) -> int16x4x2_t;
20256 }
20257 _vld2_dup_s16(a as _)
20258}
20259#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20260#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s16)"]
20261#[doc = "## Safety"]
20262#[doc = " * Neon instrinsic unsafe"]
20263#[inline]
20264#[target_feature(enable = "neon")]
20265#[cfg(not(target_arch = "arm"))]
20266#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20267#[cfg_attr(test, assert_instr(ld2r))]
20268pub unsafe fn vld2q_dup_s16(a: *const i16) -> int16x8x2_t {
20269 unsafe extern "unadjusted" {
20270 #[cfg_attr(
20271 any(target_arch = "aarch64", target_arch = "arm64ec"),
20272 link_name = "llvm.aarch64.neon.ld2r.v8i16.p0"
20273 )]
20274 fn _vld2q_dup_s16(ptr: *const i16) -> int16x8x2_t;
20275 }
20276 _vld2q_dup_s16(a as _)
20277}
20278#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20279#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s32)"]
20280#[doc = "## Safety"]
20281#[doc = " * Neon instrinsic unsafe"]
20282#[inline]
20283#[target_feature(enable = "neon")]
20284#[cfg(not(target_arch = "arm"))]
20285#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20286#[cfg_attr(test, assert_instr(ld2r))]
20287pub unsafe fn vld2_dup_s32(a: *const i32) -> int32x2x2_t {
20288 unsafe extern "unadjusted" {
20289 #[cfg_attr(
20290 any(target_arch = "aarch64", target_arch = "arm64ec"),
20291 link_name = "llvm.aarch64.neon.ld2r.v2i32.p0"
20292 )]
20293 fn _vld2_dup_s32(ptr: *const i32) -> int32x2x2_t;
20294 }
20295 _vld2_dup_s32(a as _)
20296}
20297#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20298#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s32)"]
20299#[doc = "## Safety"]
20300#[doc = " * Neon instrinsic unsafe"]
20301#[inline]
20302#[target_feature(enable = "neon")]
20303#[cfg(not(target_arch = "arm"))]
20304#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20305#[cfg_attr(test, assert_instr(ld2r))]
20306pub unsafe fn vld2q_dup_s32(a: *const i32) -> int32x4x2_t {
20307 unsafe extern "unadjusted" {
20308 #[cfg_attr(
20309 any(target_arch = "aarch64", target_arch = "arm64ec"),
20310 link_name = "llvm.aarch64.neon.ld2r.v4i32.p0"
20311 )]
20312 fn _vld2q_dup_s32(ptr: *const i32) -> int32x4x2_t;
20313 }
20314 _vld2q_dup_s32(a as _)
20315}
20316#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20317#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_p64)"]
20318#[doc = "## Safety"]
20319#[doc = " * Neon instrinsic unsafe"]
20320#[inline]
20321#[target_feature(enable = "neon,aes")]
20322#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
20323#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
20324#[cfg_attr(
20325 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20326 assert_instr(ld2r)
20327)]
20328#[cfg_attr(
20329 not(target_arch = "arm"),
20330 stable(feature = "neon_intrinsics", since = "1.59.0")
20331)]
20332#[cfg_attr(
20333 target_arch = "arm",
20334 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20335)]
20336pub unsafe fn vld2_dup_p64(a: *const p64) -> poly64x1x2_t {
20337 transmute(vld2_dup_s64(transmute(a)))
20338}
20339#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20340#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s64)"]
20341#[doc = "## Safety"]
20342#[doc = " * Neon instrinsic unsafe"]
20343#[inline]
20344#[target_feature(enable = "neon,v7")]
20345#[cfg(target_arch = "arm")]
20346#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20347#[cfg_attr(test, assert_instr(nop))]
20348pub unsafe fn vld2_dup_s64(a: *const i64) -> int64x1x2_t {
20349 unsafe extern "unadjusted" {
20350 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v1i64.p0")]
20351 fn _vld2_dup_s64(ptr: *const i8, size: i32) -> int64x1x2_t;
20352 }
20353 _vld2_dup_s64(a as *const i8, 8)
20354}
20355#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20356#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s64)"]
20357#[doc = "## Safety"]
20358#[doc = " * Neon instrinsic unsafe"]
20359#[inline]
20360#[target_feature(enable = "neon")]
20361#[cfg(not(target_arch = "arm"))]
20362#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20363#[cfg_attr(test, assert_instr(ld2r))]
20364pub unsafe fn vld2_dup_s64(a: *const i64) -> int64x1x2_t {
20365 unsafe extern "unadjusted" {
20366 #[cfg_attr(
20367 any(target_arch = "aarch64", target_arch = "arm64ec"),
20368 link_name = "llvm.aarch64.neon.ld2r.v1i64.p0"
20369 )]
20370 fn _vld2_dup_s64(ptr: *const i64) -> int64x1x2_t;
20371 }
20372 _vld2_dup_s64(a as _)
20373}
20374#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20375#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u64)"]
20376#[doc = "## Safety"]
20377#[doc = " * Neon instrinsic unsafe"]
20378#[inline]
20379#[target_feature(enable = "neon")]
20380#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20381#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
20382#[cfg_attr(
20383 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20384 assert_instr(ld2r)
20385)]
20386#[cfg_attr(
20387 not(target_arch = "arm"),
20388 stable(feature = "neon_intrinsics", since = "1.59.0")
20389)]
20390#[cfg_attr(
20391 target_arch = "arm",
20392 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20393)]
20394pub unsafe fn vld2_dup_u64(a: *const u64) -> uint64x1x2_t {
20395 transmute(vld2_dup_s64(transmute(a)))
20396}
20397#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20398#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u8)"]
20399#[doc = "## Safety"]
20400#[doc = " * Neon instrinsic unsafe"]
20401#[inline]
20402#[cfg(target_endian = "little")]
20403#[target_feature(enable = "neon")]
20404#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20405#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20406#[cfg_attr(
20407 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20408 assert_instr(ld2r)
20409)]
20410#[cfg_attr(
20411 not(target_arch = "arm"),
20412 stable(feature = "neon_intrinsics", since = "1.59.0")
20413)]
20414#[cfg_attr(
20415 target_arch = "arm",
20416 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20417)]
20418pub unsafe fn vld2_dup_u8(a: *const u8) -> uint8x8x2_t {
20419 transmute(vld2_dup_s8(transmute(a)))
20420}
20421#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20422#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u8)"]
20423#[doc = "## Safety"]
20424#[doc = " * Neon instrinsic unsafe"]
20425#[inline]
20426#[cfg(target_endian = "big")]
20427#[target_feature(enable = "neon")]
20428#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20429#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20430#[cfg_attr(
20431 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20432 assert_instr(ld2r)
20433)]
20434#[cfg_attr(
20435 not(target_arch = "arm"),
20436 stable(feature = "neon_intrinsics", since = "1.59.0")
20437)]
20438#[cfg_attr(
20439 target_arch = "arm",
20440 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20441)]
20442pub unsafe fn vld2_dup_u8(a: *const u8) -> uint8x8x2_t {
20443 let mut ret_val: uint8x8x2_t = transmute(vld2_dup_s8(transmute(a)));
20444 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
20445 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
20446 ret_val
20447}
20448#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20449#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u8)"]
20450#[doc = "## Safety"]
20451#[doc = " * Neon instrinsic unsafe"]
20452#[inline]
20453#[cfg(target_endian = "little")]
20454#[target_feature(enable = "neon")]
20455#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20456#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20457#[cfg_attr(
20458 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20459 assert_instr(ld2r)
20460)]
20461#[cfg_attr(
20462 not(target_arch = "arm"),
20463 stable(feature = "neon_intrinsics", since = "1.59.0")
20464)]
20465#[cfg_attr(
20466 target_arch = "arm",
20467 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20468)]
20469pub unsafe fn vld2q_dup_u8(a: *const u8) -> uint8x16x2_t {
20470 transmute(vld2q_dup_s8(transmute(a)))
20471}
20472#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20473#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u8)"]
20474#[doc = "## Safety"]
20475#[doc = " * Neon instrinsic unsafe"]
20476#[inline]
20477#[cfg(target_endian = "big")]
20478#[target_feature(enable = "neon")]
20479#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20480#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20481#[cfg_attr(
20482 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20483 assert_instr(ld2r)
20484)]
20485#[cfg_attr(
20486 not(target_arch = "arm"),
20487 stable(feature = "neon_intrinsics", since = "1.59.0")
20488)]
20489#[cfg_attr(
20490 target_arch = "arm",
20491 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20492)]
20493pub unsafe fn vld2q_dup_u8(a: *const u8) -> uint8x16x2_t {
20494 let mut ret_val: uint8x16x2_t = transmute(vld2q_dup_s8(transmute(a)));
20495 ret_val.0 = unsafe {
20496 simd_shuffle!(
20497 ret_val.0,
20498 ret_val.0,
20499 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
20500 )
20501 };
20502 ret_val.1 = unsafe {
20503 simd_shuffle!(
20504 ret_val.1,
20505 ret_val.1,
20506 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
20507 )
20508 };
20509 ret_val
20510}
20511#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20512#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u16)"]
20513#[doc = "## Safety"]
20514#[doc = " * Neon instrinsic unsafe"]
20515#[inline]
20516#[cfg(target_endian = "little")]
20517#[target_feature(enable = "neon")]
20518#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20519#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20520#[cfg_attr(
20521 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20522 assert_instr(ld2r)
20523)]
20524#[cfg_attr(
20525 not(target_arch = "arm"),
20526 stable(feature = "neon_intrinsics", since = "1.59.0")
20527)]
20528#[cfg_attr(
20529 target_arch = "arm",
20530 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20531)]
20532pub unsafe fn vld2_dup_u16(a: *const u16) -> uint16x4x2_t {
20533 transmute(vld2_dup_s16(transmute(a)))
20534}
20535#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20536#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u16)"]
20537#[doc = "## Safety"]
20538#[doc = " * Neon instrinsic unsafe"]
20539#[inline]
20540#[cfg(target_endian = "big")]
20541#[target_feature(enable = "neon")]
20542#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20543#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20544#[cfg_attr(
20545 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20546 assert_instr(ld2r)
20547)]
20548#[cfg_attr(
20549 not(target_arch = "arm"),
20550 stable(feature = "neon_intrinsics", since = "1.59.0")
20551)]
20552#[cfg_attr(
20553 target_arch = "arm",
20554 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20555)]
20556pub unsafe fn vld2_dup_u16(a: *const u16) -> uint16x4x2_t {
20557 let mut ret_val: uint16x4x2_t = transmute(vld2_dup_s16(transmute(a)));
20558 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
20559 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
20560 ret_val
20561}
20562#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20563#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u16)"]
20564#[doc = "## Safety"]
20565#[doc = " * Neon instrinsic unsafe"]
20566#[inline]
20567#[cfg(target_endian = "little")]
20568#[target_feature(enable = "neon")]
20569#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20570#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20571#[cfg_attr(
20572 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20573 assert_instr(ld2r)
20574)]
20575#[cfg_attr(
20576 not(target_arch = "arm"),
20577 stable(feature = "neon_intrinsics", since = "1.59.0")
20578)]
20579#[cfg_attr(
20580 target_arch = "arm",
20581 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20582)]
20583pub unsafe fn vld2q_dup_u16(a: *const u16) -> uint16x8x2_t {
20584 transmute(vld2q_dup_s16(transmute(a)))
20585}
20586#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20587#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u16)"]
20588#[doc = "## Safety"]
20589#[doc = " * Neon instrinsic unsafe"]
20590#[inline]
20591#[cfg(target_endian = "big")]
20592#[target_feature(enable = "neon")]
20593#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20594#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20595#[cfg_attr(
20596 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20597 assert_instr(ld2r)
20598)]
20599#[cfg_attr(
20600 not(target_arch = "arm"),
20601 stable(feature = "neon_intrinsics", since = "1.59.0")
20602)]
20603#[cfg_attr(
20604 target_arch = "arm",
20605 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20606)]
20607pub unsafe fn vld2q_dup_u16(a: *const u16) -> uint16x8x2_t {
20608 let mut ret_val: uint16x8x2_t = transmute(vld2q_dup_s16(transmute(a)));
20609 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
20610 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
20611 ret_val
20612}
20613#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20614#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u32)"]
20615#[doc = "## Safety"]
20616#[doc = " * Neon instrinsic unsafe"]
20617#[inline]
20618#[cfg(target_endian = "little")]
20619#[target_feature(enable = "neon")]
20620#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20621#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20622#[cfg_attr(
20623 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20624 assert_instr(ld2r)
20625)]
20626#[cfg_attr(
20627 not(target_arch = "arm"),
20628 stable(feature = "neon_intrinsics", since = "1.59.0")
20629)]
20630#[cfg_attr(
20631 target_arch = "arm",
20632 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20633)]
20634pub unsafe fn vld2_dup_u32(a: *const u32) -> uint32x2x2_t {
20635 transmute(vld2_dup_s32(transmute(a)))
20636}
20637#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20638#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u32)"]
20639#[doc = "## Safety"]
20640#[doc = " * Neon instrinsic unsafe"]
20641#[inline]
20642#[cfg(target_endian = "big")]
20643#[target_feature(enable = "neon")]
20644#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20645#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20646#[cfg_attr(
20647 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20648 assert_instr(ld2r)
20649)]
20650#[cfg_attr(
20651 not(target_arch = "arm"),
20652 stable(feature = "neon_intrinsics", since = "1.59.0")
20653)]
20654#[cfg_attr(
20655 target_arch = "arm",
20656 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20657)]
20658pub unsafe fn vld2_dup_u32(a: *const u32) -> uint32x2x2_t {
20659 let mut ret_val: uint32x2x2_t = transmute(vld2_dup_s32(transmute(a)));
20660 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
20661 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
20662 ret_val
20663}
20664#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u32)"]
20666#[doc = "## Safety"]
20667#[doc = " * Neon instrinsic unsafe"]
20668#[inline]
20669#[cfg(target_endian = "little")]
20670#[target_feature(enable = "neon")]
20671#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20672#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20673#[cfg_attr(
20674 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20675 assert_instr(ld2r)
20676)]
20677#[cfg_attr(
20678 not(target_arch = "arm"),
20679 stable(feature = "neon_intrinsics", since = "1.59.0")
20680)]
20681#[cfg_attr(
20682 target_arch = "arm",
20683 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20684)]
20685pub unsafe fn vld2q_dup_u32(a: *const u32) -> uint32x4x2_t {
20686 transmute(vld2q_dup_s32(transmute(a)))
20687}
20688#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20689#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u32)"]
20690#[doc = "## Safety"]
20691#[doc = " * Neon instrinsic unsafe"]
20692#[inline]
20693#[cfg(target_endian = "big")]
20694#[target_feature(enable = "neon")]
20695#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20696#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20697#[cfg_attr(
20698 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20699 assert_instr(ld2r)
20700)]
20701#[cfg_attr(
20702 not(target_arch = "arm"),
20703 stable(feature = "neon_intrinsics", since = "1.59.0")
20704)]
20705#[cfg_attr(
20706 target_arch = "arm",
20707 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20708)]
20709pub unsafe fn vld2q_dup_u32(a: *const u32) -> uint32x4x2_t {
20710 let mut ret_val: uint32x4x2_t = transmute(vld2q_dup_s32(transmute(a)));
20711 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
20712 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
20713 ret_val
20714}
20715#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20716#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_p8)"]
20717#[doc = "## Safety"]
20718#[doc = " * Neon instrinsic unsafe"]
20719#[inline]
20720#[cfg(target_endian = "little")]
20721#[target_feature(enable = "neon")]
20722#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20723#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20724#[cfg_attr(
20725 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20726 assert_instr(ld2r)
20727)]
20728#[cfg_attr(
20729 not(target_arch = "arm"),
20730 stable(feature = "neon_intrinsics", since = "1.59.0")
20731)]
20732#[cfg_attr(
20733 target_arch = "arm",
20734 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20735)]
20736pub unsafe fn vld2_dup_p8(a: *const p8) -> poly8x8x2_t {
20737 transmute(vld2_dup_s8(transmute(a)))
20738}
20739#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20740#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_p8)"]
20741#[doc = "## Safety"]
20742#[doc = " * Neon instrinsic unsafe"]
20743#[inline]
20744#[cfg(target_endian = "big")]
20745#[target_feature(enable = "neon")]
20746#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20747#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20748#[cfg_attr(
20749 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20750 assert_instr(ld2r)
20751)]
20752#[cfg_attr(
20753 not(target_arch = "arm"),
20754 stable(feature = "neon_intrinsics", since = "1.59.0")
20755)]
20756#[cfg_attr(
20757 target_arch = "arm",
20758 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20759)]
20760pub unsafe fn vld2_dup_p8(a: *const p8) -> poly8x8x2_t {
20761 let mut ret_val: poly8x8x2_t = transmute(vld2_dup_s8(transmute(a)));
20762 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
20763 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
20764 ret_val
20765}
20766#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20767#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_p8)"]
20768#[doc = "## Safety"]
20769#[doc = " * Neon instrinsic unsafe"]
20770#[inline]
20771#[cfg(target_endian = "little")]
20772#[target_feature(enable = "neon")]
20773#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20774#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20775#[cfg_attr(
20776 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20777 assert_instr(ld2r)
20778)]
20779#[cfg_attr(
20780 not(target_arch = "arm"),
20781 stable(feature = "neon_intrinsics", since = "1.59.0")
20782)]
20783#[cfg_attr(
20784 target_arch = "arm",
20785 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20786)]
20787pub unsafe fn vld2q_dup_p8(a: *const p8) -> poly8x16x2_t {
20788 transmute(vld2q_dup_s8(transmute(a)))
20789}
20790#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20791#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_p8)"]
20792#[doc = "## Safety"]
20793#[doc = " * Neon instrinsic unsafe"]
20794#[inline]
20795#[cfg(target_endian = "big")]
20796#[target_feature(enable = "neon")]
20797#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20798#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20799#[cfg_attr(
20800 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20801 assert_instr(ld2r)
20802)]
20803#[cfg_attr(
20804 not(target_arch = "arm"),
20805 stable(feature = "neon_intrinsics", since = "1.59.0")
20806)]
20807#[cfg_attr(
20808 target_arch = "arm",
20809 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20810)]
20811pub unsafe fn vld2q_dup_p8(a: *const p8) -> poly8x16x2_t {
20812 let mut ret_val: poly8x16x2_t = transmute(vld2q_dup_s8(transmute(a)));
20813 ret_val.0 = unsafe {
20814 simd_shuffle!(
20815 ret_val.0,
20816 ret_val.0,
20817 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
20818 )
20819 };
20820 ret_val.1 = unsafe {
20821 simd_shuffle!(
20822 ret_val.1,
20823 ret_val.1,
20824 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
20825 )
20826 };
20827 ret_val
20828}
20829#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20830#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_p16)"]
20831#[doc = "## Safety"]
20832#[doc = " * Neon instrinsic unsafe"]
20833#[inline]
20834#[cfg(target_endian = "little")]
20835#[target_feature(enable = "neon")]
20836#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20837#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20838#[cfg_attr(
20839 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20840 assert_instr(ld2r)
20841)]
20842#[cfg_attr(
20843 not(target_arch = "arm"),
20844 stable(feature = "neon_intrinsics", since = "1.59.0")
20845)]
20846#[cfg_attr(
20847 target_arch = "arm",
20848 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20849)]
20850pub unsafe fn vld2_dup_p16(a: *const p16) -> poly16x4x2_t {
20851 transmute(vld2_dup_s16(transmute(a)))
20852}
20853#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20854#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_p16)"]
20855#[doc = "## Safety"]
20856#[doc = " * Neon instrinsic unsafe"]
20857#[inline]
20858#[cfg(target_endian = "big")]
20859#[target_feature(enable = "neon")]
20860#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20861#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20862#[cfg_attr(
20863 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20864 assert_instr(ld2r)
20865)]
20866#[cfg_attr(
20867 not(target_arch = "arm"),
20868 stable(feature = "neon_intrinsics", since = "1.59.0")
20869)]
20870#[cfg_attr(
20871 target_arch = "arm",
20872 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20873)]
20874pub unsafe fn vld2_dup_p16(a: *const p16) -> poly16x4x2_t {
20875 let mut ret_val: poly16x4x2_t = transmute(vld2_dup_s16(transmute(a)));
20876 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
20877 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
20878 ret_val
20879}
20880#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20881#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_p16)"]
20882#[doc = "## Safety"]
20883#[doc = " * Neon instrinsic unsafe"]
20884#[inline]
20885#[cfg(target_endian = "little")]
20886#[target_feature(enable = "neon")]
20887#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20888#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20889#[cfg_attr(
20890 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20891 assert_instr(ld2r)
20892)]
20893#[cfg_attr(
20894 not(target_arch = "arm"),
20895 stable(feature = "neon_intrinsics", since = "1.59.0")
20896)]
20897#[cfg_attr(
20898 target_arch = "arm",
20899 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20900)]
20901pub unsafe fn vld2q_dup_p16(a: *const p16) -> poly16x8x2_t {
20902 transmute(vld2q_dup_s16(transmute(a)))
20903}
20904#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20905#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_p16)"]
20906#[doc = "## Safety"]
20907#[doc = " * Neon instrinsic unsafe"]
20908#[inline]
20909#[cfg(target_endian = "big")]
20910#[target_feature(enable = "neon")]
20911#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20912#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20913#[cfg_attr(
20914 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20915 assert_instr(ld2r)
20916)]
20917#[cfg_attr(
20918 not(target_arch = "arm"),
20919 stable(feature = "neon_intrinsics", since = "1.59.0")
20920)]
20921#[cfg_attr(
20922 target_arch = "arm",
20923 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20924)]
20925pub unsafe fn vld2q_dup_p16(a: *const p16) -> poly16x8x2_t {
20926 let mut ret_val: poly16x8x2_t = transmute(vld2q_dup_s16(transmute(a)));
20927 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
20928 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
20929 ret_val
20930}
20931#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20932#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_f16)"]
20933#[doc = "## Safety"]
20934#[doc = " * Neon instrinsic unsafe"]
20935#[inline]
20936#[target_feature(enable = "neon")]
20937#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20938#[cfg(target_arch = "arm")]
20939#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20940#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
20941#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20942#[cfg(not(target_arch = "arm64ec"))]
20943pub unsafe fn vld2_f16(a: *const f16) -> float16x4x2_t {
20944 unsafe extern "unadjusted" {
20945 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v4f16.p0")]
20946 fn _vld2_f16(ptr: *const f16, size: i32) -> float16x4x2_t;
20947 }
20948 _vld2_f16(a as _, 2)
20949}
20950#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20951#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_f16)"]
20952#[doc = "## Safety"]
20953#[doc = " * Neon instrinsic unsafe"]
20954#[inline]
20955#[target_feature(enable = "neon")]
20956#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20957#[cfg(target_arch = "arm")]
20958#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20959#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
20960#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20961#[cfg(not(target_arch = "arm64ec"))]
20962pub unsafe fn vld2q_f16(a: *const f16) -> float16x8x2_t {
20963 unsafe extern "unadjusted" {
20964 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v8f16.p0")]
20965 fn _vld2q_f16(ptr: *const f16, size: i32) -> float16x8x2_t;
20966 }
20967 _vld2q_f16(a as _, 2)
20968}
20969#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20970#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_f16)"]
20971#[doc = "## Safety"]
20972#[doc = " * Neon instrinsic unsafe"]
20973#[inline]
20974#[target_feature(enable = "neon")]
20975#[cfg(not(target_arch = "arm"))]
20976#[cfg_attr(
20977 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20978 assert_instr(ld2)
20979)]
20980#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
20981#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20982#[cfg(not(target_arch = "arm64ec"))]
20983pub unsafe fn vld2_f16(a: *const f16) -> float16x4x2_t {
20984 unsafe extern "unadjusted" {
20985 #[cfg_attr(
20986 any(target_arch = "aarch64", target_arch = "arm64ec"),
20987 link_name = "llvm.aarch64.neon.ld2.v4f16.p0"
20988 )]
20989 fn _vld2_f16(ptr: *const f16) -> float16x4x2_t;
20990 }
20991 _vld2_f16(a as _)
20992}
20993#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
20994#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_f16)"]
20995#[doc = "## Safety"]
20996#[doc = " * Neon instrinsic unsafe"]
20997#[inline]
20998#[target_feature(enable = "neon")]
20999#[cfg(not(target_arch = "arm"))]
21000#[cfg_attr(
21001 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21002 assert_instr(ld2)
21003)]
21004#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
21005#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
21006#[cfg(not(target_arch = "arm64ec"))]
21007pub unsafe fn vld2q_f16(a: *const f16) -> float16x8x2_t {
21008 unsafe extern "unadjusted" {
21009 #[cfg_attr(
21010 any(target_arch = "aarch64", target_arch = "arm64ec"),
21011 link_name = "llvm.aarch64.neon.ld2.v8f16.p0"
21012 )]
21013 fn _vld2q_f16(ptr: *const f16) -> float16x8x2_t;
21014 }
21015 _vld2q_f16(a as _)
21016}
21017#[doc = "Load multiple 2-element structures to two registers"]
21018#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_f32)"]
21019#[doc = "## Safety"]
21020#[doc = " * Neon instrinsic unsafe"]
21021#[inline]
21022#[target_feature(enable = "neon,v7")]
21023#[cfg(target_arch = "arm")]
21024#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21025#[cfg_attr(test, assert_instr(vld2))]
21026pub unsafe fn vld2_f32(a: *const f32) -> float32x2x2_t {
21027 unsafe extern "unadjusted" {
21028 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v2f32")]
21029 fn _vld2_f32(ptr: *const i8, size: i32) -> float32x2x2_t;
21030 }
21031 _vld2_f32(a as *const i8, 4)
21032}
21033#[doc = "Load multiple 2-element structures to two registers"]
21034#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_f32)"]
21035#[doc = "## Safety"]
21036#[doc = " * Neon instrinsic unsafe"]
21037#[inline]
21038#[target_feature(enable = "neon,v7")]
21039#[cfg(target_arch = "arm")]
21040#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21041#[cfg_attr(test, assert_instr(vld2))]
21042pub unsafe fn vld2q_f32(a: *const f32) -> float32x4x2_t {
21043 unsafe extern "unadjusted" {
21044 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v4f32")]
21045 fn _vld2q_f32(ptr: *const i8, size: i32) -> float32x4x2_t;
21046 }
21047 _vld2q_f32(a as *const i8, 4)
21048}
21049#[doc = "Load multiple 2-element structures to two registers"]
21050#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s8)"]
21051#[doc = "## Safety"]
21052#[doc = " * Neon instrinsic unsafe"]
21053#[inline]
21054#[target_feature(enable = "neon,v7")]
21055#[cfg(target_arch = "arm")]
21056#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21057#[cfg_attr(test, assert_instr(vld2))]
21058pub unsafe fn vld2_s8(a: *const i8) -> int8x8x2_t {
21059 unsafe extern "unadjusted" {
21060 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v8i8")]
21061 fn _vld2_s8(ptr: *const i8, size: i32) -> int8x8x2_t;
21062 }
21063 _vld2_s8(a as *const i8, 1)
21064}
21065#[doc = "Load multiple 2-element structures to two registers"]
21066#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s8)"]
21067#[doc = "## Safety"]
21068#[doc = " * Neon instrinsic unsafe"]
21069#[inline]
21070#[target_feature(enable = "neon,v7")]
21071#[cfg(target_arch = "arm")]
21072#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21073#[cfg_attr(test, assert_instr(vld2))]
21074pub unsafe fn vld2q_s8(a: *const i8) -> int8x16x2_t {
21075 unsafe extern "unadjusted" {
21076 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v16i8")]
21077 fn _vld2q_s8(ptr: *const i8, size: i32) -> int8x16x2_t;
21078 }
21079 _vld2q_s8(a as *const i8, 1)
21080}
21081#[doc = "Load multiple 2-element structures to two registers"]
21082#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s16)"]
21083#[doc = "## Safety"]
21084#[doc = " * Neon instrinsic unsafe"]
21085#[inline]
21086#[target_feature(enable = "neon,v7")]
21087#[cfg(target_arch = "arm")]
21088#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21089#[cfg_attr(test, assert_instr(vld2))]
21090pub unsafe fn vld2_s16(a: *const i16) -> int16x4x2_t {
21091 unsafe extern "unadjusted" {
21092 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v4i16")]
21093 fn _vld2_s16(ptr: *const i8, size: i32) -> int16x4x2_t;
21094 }
21095 _vld2_s16(a as *const i8, 2)
21096}
21097#[doc = "Load multiple 2-element structures to two registers"]
21098#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s16)"]
21099#[doc = "## Safety"]
21100#[doc = " * Neon instrinsic unsafe"]
21101#[inline]
21102#[target_feature(enable = "neon,v7")]
21103#[cfg(target_arch = "arm")]
21104#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21105#[cfg_attr(test, assert_instr(vld2))]
21106pub unsafe fn vld2q_s16(a: *const i16) -> int16x8x2_t {
21107 unsafe extern "unadjusted" {
21108 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v8i16")]
21109 fn _vld2q_s16(ptr: *const i8, size: i32) -> int16x8x2_t;
21110 }
21111 _vld2q_s16(a as *const i8, 2)
21112}
21113#[doc = "Load multiple 2-element structures to two registers"]
21114#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s32)"]
21115#[doc = "## Safety"]
21116#[doc = " * Neon instrinsic unsafe"]
21117#[inline]
21118#[target_feature(enable = "neon,v7")]
21119#[cfg(target_arch = "arm")]
21120#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21121#[cfg_attr(test, assert_instr(vld2))]
21122pub unsafe fn vld2_s32(a: *const i32) -> int32x2x2_t {
21123 unsafe extern "unadjusted" {
21124 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v2i32")]
21125 fn _vld2_s32(ptr: *const i8, size: i32) -> int32x2x2_t;
21126 }
21127 _vld2_s32(a as *const i8, 4)
21128}
21129#[doc = "Load multiple 2-element structures to two registers"]
21130#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s32)"]
21131#[doc = "## Safety"]
21132#[doc = " * Neon instrinsic unsafe"]
21133#[inline]
21134#[target_feature(enable = "neon,v7")]
21135#[cfg(target_arch = "arm")]
21136#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21137#[cfg_attr(test, assert_instr(vld2))]
21138pub unsafe fn vld2q_s32(a: *const i32) -> int32x4x2_t {
21139 unsafe extern "unadjusted" {
21140 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v4i32")]
21141 fn _vld2q_s32(ptr: *const i8, size: i32) -> int32x4x2_t;
21142 }
21143 _vld2q_s32(a as *const i8, 4)
21144}
21145#[doc = "Load multiple 2-element structures to two registers"]
21146#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_f32)"]
21147#[doc = "## Safety"]
21148#[doc = " * Neon instrinsic unsafe"]
21149#[inline]
21150#[target_feature(enable = "neon")]
21151#[cfg(not(target_arch = "arm"))]
21152#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21153#[cfg_attr(test, assert_instr(ld2))]
21154pub unsafe fn vld2_f32(a: *const f32) -> float32x2x2_t {
21155 unsafe extern "unadjusted" {
21156 #[cfg_attr(
21157 any(target_arch = "aarch64", target_arch = "arm64ec"),
21158 link_name = "llvm.aarch64.neon.ld2.v2f32.p0"
21159 )]
21160 fn _vld2_f32(ptr: *const float32x2_t) -> float32x2x2_t;
21161 }
21162 _vld2_f32(a as _)
21163}
21164#[doc = "Load multiple 2-element structures to two registers"]
21165#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_f32)"]
21166#[doc = "## Safety"]
21167#[doc = " * Neon instrinsic unsafe"]
21168#[inline]
21169#[target_feature(enable = "neon")]
21170#[cfg(not(target_arch = "arm"))]
21171#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21172#[cfg_attr(test, assert_instr(ld2))]
21173pub unsafe fn vld2q_f32(a: *const f32) -> float32x4x2_t {
21174 unsafe extern "unadjusted" {
21175 #[cfg_attr(
21176 any(target_arch = "aarch64", target_arch = "arm64ec"),
21177 link_name = "llvm.aarch64.neon.ld2.v4f32.p0"
21178 )]
21179 fn _vld2q_f32(ptr: *const float32x4_t) -> float32x4x2_t;
21180 }
21181 _vld2q_f32(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_s8)"]
21185#[doc = "## Safety"]
21186#[doc = " * Neon instrinsic unsafe"]
21187#[inline]
21188#[target_feature(enable = "neon")]
21189#[cfg(not(target_arch = "arm"))]
21190#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21191#[cfg_attr(test, assert_instr(ld2))]
21192pub unsafe fn vld2_s8(a: *const i8) -> int8x8x2_t {
21193 unsafe extern "unadjusted" {
21194 #[cfg_attr(
21195 any(target_arch = "aarch64", target_arch = "arm64ec"),
21196 link_name = "llvm.aarch64.neon.ld2.v8i8.p0"
21197 )]
21198 fn _vld2_s8(ptr: *const int8x8_t) -> int8x8x2_t;
21199 }
21200 _vld2_s8(a as _)
21201}
21202#[doc = "Load multiple 2-element structures to two registers"]
21203#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s8)"]
21204#[doc = "## Safety"]
21205#[doc = " * Neon instrinsic unsafe"]
21206#[inline]
21207#[target_feature(enable = "neon")]
21208#[cfg(not(target_arch = "arm"))]
21209#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21210#[cfg_attr(test, assert_instr(ld2))]
21211pub unsafe fn vld2q_s8(a: *const i8) -> int8x16x2_t {
21212 unsafe extern "unadjusted" {
21213 #[cfg_attr(
21214 any(target_arch = "aarch64", target_arch = "arm64ec"),
21215 link_name = "llvm.aarch64.neon.ld2.v16i8.p0"
21216 )]
21217 fn _vld2q_s8(ptr: *const int8x16_t) -> int8x16x2_t;
21218 }
21219 _vld2q_s8(a as _)
21220}
21221#[doc = "Load multiple 2-element structures to two registers"]
21222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s16)"]
21223#[doc = "## Safety"]
21224#[doc = " * Neon instrinsic unsafe"]
21225#[inline]
21226#[target_feature(enable = "neon")]
21227#[cfg(not(target_arch = "arm"))]
21228#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21229#[cfg_attr(test, assert_instr(ld2))]
21230pub unsafe fn vld2_s16(a: *const i16) -> int16x4x2_t {
21231 unsafe extern "unadjusted" {
21232 #[cfg_attr(
21233 any(target_arch = "aarch64", target_arch = "arm64ec"),
21234 link_name = "llvm.aarch64.neon.ld2.v4i16.p0"
21235 )]
21236 fn _vld2_s16(ptr: *const int16x4_t) -> int16x4x2_t;
21237 }
21238 _vld2_s16(a as _)
21239}
21240#[doc = "Load multiple 2-element structures to two registers"]
21241#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s16)"]
21242#[doc = "## Safety"]
21243#[doc = " * Neon instrinsic unsafe"]
21244#[inline]
21245#[target_feature(enable = "neon")]
21246#[cfg(not(target_arch = "arm"))]
21247#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21248#[cfg_attr(test, assert_instr(ld2))]
21249pub unsafe fn vld2q_s16(a: *const i16) -> int16x8x2_t {
21250 unsafe extern "unadjusted" {
21251 #[cfg_attr(
21252 any(target_arch = "aarch64", target_arch = "arm64ec"),
21253 link_name = "llvm.aarch64.neon.ld2.v8i16.p0"
21254 )]
21255 fn _vld2q_s16(ptr: *const int16x8_t) -> int16x8x2_t;
21256 }
21257 _vld2q_s16(a as _)
21258}
21259#[doc = "Load multiple 2-element structures to two registers"]
21260#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s32)"]
21261#[doc = "## Safety"]
21262#[doc = " * Neon instrinsic unsafe"]
21263#[inline]
21264#[target_feature(enable = "neon")]
21265#[cfg(not(target_arch = "arm"))]
21266#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21267#[cfg_attr(test, assert_instr(ld2))]
21268pub unsafe fn vld2_s32(a: *const i32) -> int32x2x2_t {
21269 unsafe extern "unadjusted" {
21270 #[cfg_attr(
21271 any(target_arch = "aarch64", target_arch = "arm64ec"),
21272 link_name = "llvm.aarch64.neon.ld2.v2i32.p0"
21273 )]
21274 fn _vld2_s32(ptr: *const int32x2_t) -> int32x2x2_t;
21275 }
21276 _vld2_s32(a as _)
21277}
21278#[doc = "Load multiple 2-element structures to two registers"]
21279#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s32)"]
21280#[doc = "## Safety"]
21281#[doc = " * Neon instrinsic unsafe"]
21282#[inline]
21283#[target_feature(enable = "neon")]
21284#[cfg(not(target_arch = "arm"))]
21285#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21286#[cfg_attr(test, assert_instr(ld2))]
21287pub unsafe fn vld2q_s32(a: *const i32) -> int32x4x2_t {
21288 unsafe extern "unadjusted" {
21289 #[cfg_attr(
21290 any(target_arch = "aarch64", target_arch = "arm64ec"),
21291 link_name = "llvm.aarch64.neon.ld2.v4i32.p0"
21292 )]
21293 fn _vld2q_s32(ptr: *const int32x4_t) -> int32x4x2_t;
21294 }
21295 _vld2q_s32(a as _)
21296}
21297#[doc = "Load multiple 2-element structures to two registers"]
21298#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_f16)"]
21299#[doc = "## Safety"]
21300#[doc = " * Neon instrinsic unsafe"]
21301#[inline]
21302#[target_feature(enable = "neon,v7")]
21303#[cfg(target_arch = "arm")]
21304#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
21305#[rustc_legacy_const_generics(2)]
21306#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
21307#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
21308#[cfg(not(target_arch = "arm64ec"))]
21309pub unsafe fn vld2_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x2_t) -> float16x4x2_t {
21310 static_assert_uimm_bits!(LANE, 2);
21311 unsafe extern "unadjusted" {
21312 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v4f16.p0")]
21313 fn _vld2_lane_f16(
21314 ptr: *const f16,
21315 a: float16x4_t,
21316 b: float16x4_t,
21317 n: i32,
21318 size: i32,
21319 ) -> float16x4x2_t;
21320 }
21321 _vld2_lane_f16(a as _, b.0, b.1, LANE, 2)
21322}
21323#[doc = "Load multiple 2-element structures to two registers"]
21324#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_f16)"]
21325#[doc = "## Safety"]
21326#[doc = " * Neon instrinsic unsafe"]
21327#[inline]
21328#[target_feature(enable = "neon,v7")]
21329#[cfg(target_arch = "arm")]
21330#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
21331#[rustc_legacy_const_generics(2)]
21332#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
21333#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
21334#[cfg(not(target_arch = "arm64ec"))]
21335pub unsafe fn vld2q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x2_t) -> float16x8x2_t {
21336 static_assert_uimm_bits!(LANE, 3);
21337 unsafe extern "unadjusted" {
21338 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v8f16.p0")]
21339 fn _vld2q_lane_f16(
21340 ptr: *const f16,
21341 a: float16x8_t,
21342 b: float16x8_t,
21343 n: i32,
21344 size: i32,
21345 ) -> float16x8x2_t;
21346 }
21347 _vld2q_lane_f16(a as _, b.0, b.1, LANE, 2)
21348}
21349#[doc = "Load multiple 2-element structures to two registers"]
21350#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_f16)"]
21351#[doc = "## Safety"]
21352#[doc = " * Neon instrinsic unsafe"]
21353#[inline]
21354#[target_feature(enable = "neon")]
21355#[cfg(not(target_arch = "arm"))]
21356#[cfg_attr(
21357 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21358 assert_instr(ld2, LANE = 0)
21359)]
21360#[rustc_legacy_const_generics(2)]
21361#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
21362#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
21363#[cfg(not(target_arch = "arm64ec"))]
21364pub unsafe fn vld2_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x2_t) -> float16x4x2_t {
21365 static_assert_uimm_bits!(LANE, 2);
21366 unsafe extern "unadjusted" {
21367 #[cfg_attr(
21368 any(target_arch = "aarch64", target_arch = "arm64ec"),
21369 link_name = "llvm.aarch64.neon.ld2lane.v4f16.p0"
21370 )]
21371 fn _vld2_lane_f16(a: float16x4_t, b: float16x4_t, n: i64, ptr: *const f16)
21372 -> float16x4x2_t;
21373 }
21374 _vld2_lane_f16(b.0, b.1, LANE as i64, a as _)
21375}
21376#[doc = "Load multiple 2-element structures to two registers"]
21377#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_f16)"]
21378#[doc = "## Safety"]
21379#[doc = " * Neon instrinsic unsafe"]
21380#[inline]
21381#[target_feature(enable = "neon")]
21382#[cfg(not(target_arch = "arm"))]
21383#[cfg_attr(
21384 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21385 assert_instr(ld2, LANE = 0)
21386)]
21387#[rustc_legacy_const_generics(2)]
21388#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
21389#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
21390#[cfg(not(target_arch = "arm64ec"))]
21391pub unsafe fn vld2q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x2_t) -> float16x8x2_t {
21392 static_assert_uimm_bits!(LANE, 3);
21393 unsafe extern "unadjusted" {
21394 #[cfg_attr(
21395 any(target_arch = "aarch64", target_arch = "arm64ec"),
21396 link_name = "llvm.aarch64.neon.ld2lane.v8f16.p0"
21397 )]
21398 fn _vld2q_lane_f16(
21399 a: float16x8_t,
21400 b: float16x8_t,
21401 n: i64,
21402 ptr: *const f16,
21403 ) -> float16x8x2_t;
21404 }
21405 _vld2q_lane_f16(b.0, b.1, LANE as i64, a as _)
21406}
21407#[doc = "Load multiple 2-element structures to two registers"]
21408#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_f32)"]
21409#[doc = "## Safety"]
21410#[doc = " * Neon instrinsic unsafe"]
21411#[inline]
21412#[target_feature(enable = "neon")]
21413#[cfg(not(target_arch = "arm"))]
21414#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
21415#[rustc_legacy_const_generics(2)]
21416#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21417pub unsafe fn vld2_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x2_t) -> float32x2x2_t {
21418 static_assert_uimm_bits!(LANE, 2);
21419 unsafe extern "unadjusted" {
21420 #[cfg_attr(
21421 any(target_arch = "aarch64", target_arch = "arm64ec"),
21422 link_name = "llvm.aarch64.neon.ld2lane.v2f32.p0"
21423 )]
21424 fn _vld2_lane_f32(a: float32x2_t, b: float32x2_t, n: i64, ptr: *const i8) -> float32x2x2_t;
21425 }
21426 _vld2_lane_f32(b.0, b.1, LANE as i64, a as _)
21427}
21428#[doc = "Load multiple 2-element structures to two registers"]
21429#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_f32)"]
21430#[doc = "## Safety"]
21431#[doc = " * Neon instrinsic unsafe"]
21432#[inline]
21433#[target_feature(enable = "neon")]
21434#[cfg(not(target_arch = "arm"))]
21435#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
21436#[rustc_legacy_const_generics(2)]
21437#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21438pub unsafe fn vld2q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x2_t) -> float32x4x2_t {
21439 static_assert_uimm_bits!(LANE, 2);
21440 unsafe extern "unadjusted" {
21441 #[cfg_attr(
21442 any(target_arch = "aarch64", target_arch = "arm64ec"),
21443 link_name = "llvm.aarch64.neon.ld2lane.v4f32.p0"
21444 )]
21445 fn _vld2q_lane_f32(a: float32x4_t, b: float32x4_t, n: i64, ptr: *const i8)
21446 -> float32x4x2_t;
21447 }
21448 _vld2q_lane_f32(b.0, b.1, LANE as i64, a as _)
21449}
21450#[doc = "Load multiple 2-element structures to two registers"]
21451#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s8)"]
21452#[doc = "## Safety"]
21453#[doc = " * Neon instrinsic unsafe"]
21454#[inline]
21455#[target_feature(enable = "neon")]
21456#[cfg(not(target_arch = "arm"))]
21457#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
21458#[rustc_legacy_const_generics(2)]
21459#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21460pub unsafe fn vld2_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x2_t) -> int8x8x2_t {
21461 static_assert_uimm_bits!(LANE, 3);
21462 unsafe extern "unadjusted" {
21463 #[cfg_attr(
21464 any(target_arch = "aarch64", target_arch = "arm64ec"),
21465 link_name = "llvm.aarch64.neon.ld2lane.v8i8.p0"
21466 )]
21467 fn _vld2_lane_s8(a: int8x8_t, b: int8x8_t, n: i64, ptr: *const i8) -> int8x8x2_t;
21468 }
21469 _vld2_lane_s8(b.0, b.1, LANE as i64, a as _)
21470}
21471#[doc = "Load multiple 2-element structures to two registers"]
21472#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s16)"]
21473#[doc = "## Safety"]
21474#[doc = " * Neon instrinsic unsafe"]
21475#[inline]
21476#[target_feature(enable = "neon")]
21477#[cfg(not(target_arch = "arm"))]
21478#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
21479#[rustc_legacy_const_generics(2)]
21480#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21481pub unsafe fn vld2_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x2_t) -> int16x4x2_t {
21482 static_assert_uimm_bits!(LANE, 2);
21483 unsafe extern "unadjusted" {
21484 #[cfg_attr(
21485 any(target_arch = "aarch64", target_arch = "arm64ec"),
21486 link_name = "llvm.aarch64.neon.ld2lane.v4i16.p0"
21487 )]
21488 fn _vld2_lane_s16(a: int16x4_t, b: int16x4_t, n: i64, ptr: *const i8) -> int16x4x2_t;
21489 }
21490 _vld2_lane_s16(b.0, b.1, LANE as i64, a as _)
21491}
21492#[doc = "Load multiple 2-element structures to two registers"]
21493#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_s16)"]
21494#[doc = "## Safety"]
21495#[doc = " * Neon instrinsic unsafe"]
21496#[inline]
21497#[target_feature(enable = "neon")]
21498#[cfg(not(target_arch = "arm"))]
21499#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
21500#[rustc_legacy_const_generics(2)]
21501#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21502pub unsafe fn vld2q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x2_t) -> int16x8x2_t {
21503 static_assert_uimm_bits!(LANE, 3);
21504 unsafe extern "unadjusted" {
21505 #[cfg_attr(
21506 any(target_arch = "aarch64", target_arch = "arm64ec"),
21507 link_name = "llvm.aarch64.neon.ld2lane.v8i16.p0"
21508 )]
21509 fn _vld2q_lane_s16(a: int16x8_t, b: int16x8_t, n: i64, ptr: *const i8) -> int16x8x2_t;
21510 }
21511 _vld2q_lane_s16(b.0, b.1, LANE as i64, a as _)
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_s32)"]
21515#[doc = "## Safety"]
21516#[doc = " * Neon instrinsic unsafe"]
21517#[inline]
21518#[target_feature(enable = "neon")]
21519#[cfg(not(target_arch = "arm"))]
21520#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
21521#[rustc_legacy_const_generics(2)]
21522#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21523pub unsafe fn vld2_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x2_t) -> int32x2x2_t {
21524 static_assert_uimm_bits!(LANE, 1);
21525 unsafe extern "unadjusted" {
21526 #[cfg_attr(
21527 any(target_arch = "aarch64", target_arch = "arm64ec"),
21528 link_name = "llvm.aarch64.neon.ld2lane.v2i32.p0"
21529 )]
21530 fn _vld2_lane_s32(a: int32x2_t, b: int32x2_t, n: i64, ptr: *const i8) -> int32x2x2_t;
21531 }
21532 _vld2_lane_s32(b.0, b.1, LANE as i64, a as _)
21533}
21534#[doc = "Load multiple 2-element structures to two registers"]
21535#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_s32)"]
21536#[doc = "## Safety"]
21537#[doc = " * Neon instrinsic unsafe"]
21538#[inline]
21539#[target_feature(enable = "neon")]
21540#[cfg(not(target_arch = "arm"))]
21541#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
21542#[rustc_legacy_const_generics(2)]
21543#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21544pub unsafe fn vld2q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x2_t) -> int32x4x2_t {
21545 static_assert_uimm_bits!(LANE, 2);
21546 unsafe extern "unadjusted" {
21547 #[cfg_attr(
21548 any(target_arch = "aarch64", target_arch = "arm64ec"),
21549 link_name = "llvm.aarch64.neon.ld2lane.v4i32.p0"
21550 )]
21551 fn _vld2q_lane_s32(a: int32x4_t, b: int32x4_t, n: i64, ptr: *const i8) -> int32x4x2_t;
21552 }
21553 _vld2q_lane_s32(b.0, b.1, LANE as i64, a as _)
21554}
21555#[doc = "Load multiple 2-element structures to two registers"]
21556#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_f32)"]
21557#[doc = "## Safety"]
21558#[doc = " * Neon instrinsic unsafe"]
21559#[inline]
21560#[target_feature(enable = "neon,v7")]
21561#[cfg(target_arch = "arm")]
21562#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
21563#[rustc_legacy_const_generics(2)]
21564#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21565pub unsafe fn vld2_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x2_t) -> float32x2x2_t {
21566 static_assert_uimm_bits!(LANE, 1);
21567 unsafe extern "unadjusted" {
21568 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v2f32.p0")]
21569 fn _vld2_lane_f32(
21570 ptr: *const i8,
21571 a: float32x2_t,
21572 b: float32x2_t,
21573 n: i32,
21574 size: i32,
21575 ) -> float32x2x2_t;
21576 }
21577 _vld2_lane_f32(a as _, b.0, b.1, LANE, 4)
21578}
21579#[doc = "Load multiple 2-element structures to two registers"]
21580#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_f32)"]
21581#[doc = "## Safety"]
21582#[doc = " * Neon instrinsic unsafe"]
21583#[inline]
21584#[target_feature(enable = "neon,v7")]
21585#[cfg(target_arch = "arm")]
21586#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
21587#[rustc_legacy_const_generics(2)]
21588#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21589pub unsafe fn vld2q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x2_t) -> float32x4x2_t {
21590 static_assert_uimm_bits!(LANE, 2);
21591 unsafe extern "unadjusted" {
21592 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v4f32.p0")]
21593 fn _vld2q_lane_f32(
21594 ptr: *const i8,
21595 a: float32x4_t,
21596 b: float32x4_t,
21597 n: i32,
21598 size: i32,
21599 ) -> float32x4x2_t;
21600 }
21601 _vld2q_lane_f32(a as _, b.0, b.1, LANE, 4)
21602}
21603#[doc = "Load multiple 2-element structures to two registers"]
21604#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_s16)"]
21605#[doc = "## Safety"]
21606#[doc = " * Neon instrinsic unsafe"]
21607#[inline]
21608#[target_feature(enable = "neon,v7")]
21609#[cfg(target_arch = "arm")]
21610#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
21611#[rustc_legacy_const_generics(2)]
21612#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21613pub unsafe fn vld2q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x2_t) -> int16x8x2_t {
21614 static_assert_uimm_bits!(LANE, 3);
21615 unsafe extern "unadjusted" {
21616 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v8i16.p0")]
21617 fn _vld2q_lane_s16(
21618 ptr: *const i8,
21619 a: int16x8_t,
21620 b: int16x8_t,
21621 n: i32,
21622 size: i32,
21623 ) -> int16x8x2_t;
21624 }
21625 _vld2q_lane_s16(a as _, b.0, b.1, LANE, 2)
21626}
21627#[doc = "Load multiple 2-element structures to two registers"]
21628#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_s32)"]
21629#[doc = "## Safety"]
21630#[doc = " * Neon instrinsic unsafe"]
21631#[inline]
21632#[target_feature(enable = "neon,v7")]
21633#[cfg(target_arch = "arm")]
21634#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
21635#[rustc_legacy_const_generics(2)]
21636#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21637pub unsafe fn vld2q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x2_t) -> int32x4x2_t {
21638 static_assert_uimm_bits!(LANE, 2);
21639 unsafe extern "unadjusted" {
21640 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v4i32.p0")]
21641 fn _vld2q_lane_s32(
21642 ptr: *const i8,
21643 a: int32x4_t,
21644 b: int32x4_t,
21645 n: i32,
21646 size: i32,
21647 ) -> int32x4x2_t;
21648 }
21649 _vld2q_lane_s32(a as _, b.0, b.1, LANE, 4)
21650}
21651#[doc = "Load multiple 2-element structures to two registers"]
21652#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s8)"]
21653#[doc = "## Safety"]
21654#[doc = " * Neon instrinsic unsafe"]
21655#[inline]
21656#[target_feature(enable = "neon,v7")]
21657#[cfg(target_arch = "arm")]
21658#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
21659#[rustc_legacy_const_generics(2)]
21660#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21661pub unsafe fn vld2_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x2_t) -> int8x8x2_t {
21662 static_assert_uimm_bits!(LANE, 3);
21663 unsafe extern "unadjusted" {
21664 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v8i8.p0")]
21665 fn _vld2_lane_s8(ptr: *const i8, a: int8x8_t, b: int8x8_t, n: i32, size: i32)
21666 -> int8x8x2_t;
21667 }
21668 _vld2_lane_s8(a as _, b.0, b.1, LANE, 1)
21669}
21670#[doc = "Load multiple 2-element structures to two registers"]
21671#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s16)"]
21672#[doc = "## Safety"]
21673#[doc = " * Neon instrinsic unsafe"]
21674#[inline]
21675#[target_feature(enable = "neon,v7")]
21676#[cfg(target_arch = "arm")]
21677#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
21678#[rustc_legacy_const_generics(2)]
21679#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21680pub unsafe fn vld2_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x2_t) -> int16x4x2_t {
21681 static_assert_uimm_bits!(LANE, 2);
21682 unsafe extern "unadjusted" {
21683 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v4i16.p0")]
21684 fn _vld2_lane_s16(
21685 ptr: *const i8,
21686 a: int16x4_t,
21687 b: int16x4_t,
21688 n: i32,
21689 size: i32,
21690 ) -> int16x4x2_t;
21691 }
21692 _vld2_lane_s16(a as _, b.0, b.1, LANE, 2)
21693}
21694#[doc = "Load multiple 2-element structures to two registers"]
21695#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s32)"]
21696#[doc = "## Safety"]
21697#[doc = " * Neon instrinsic unsafe"]
21698#[inline]
21699#[target_feature(enable = "neon,v7")]
21700#[cfg(target_arch = "arm")]
21701#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
21702#[rustc_legacy_const_generics(2)]
21703#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21704pub unsafe fn vld2_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x2_t) -> int32x2x2_t {
21705 static_assert_uimm_bits!(LANE, 1);
21706 unsafe extern "unadjusted" {
21707 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v2i32.p0")]
21708 fn _vld2_lane_s32(
21709 ptr: *const i8,
21710 a: int32x2_t,
21711 b: int32x2_t,
21712 n: i32,
21713 size: i32,
21714 ) -> int32x2x2_t;
21715 }
21716 _vld2_lane_s32(a as _, b.0, b.1, LANE, 4)
21717}
21718#[doc = "Load multiple 2-element structures to two registers"]
21719#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_u8)"]
21720#[doc = "## Safety"]
21721#[doc = " * Neon instrinsic unsafe"]
21722#[inline]
21723#[target_feature(enable = "neon")]
21724#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21725#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
21726#[cfg_attr(
21727 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21728 assert_instr(ld2, LANE = 0)
21729)]
21730#[rustc_legacy_const_generics(2)]
21731#[cfg_attr(
21732 not(target_arch = "arm"),
21733 stable(feature = "neon_intrinsics", since = "1.59.0")
21734)]
21735#[cfg_attr(
21736 target_arch = "arm",
21737 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21738)]
21739pub unsafe fn vld2_lane_u8<const LANE: i32>(a: *const u8, b: uint8x8x2_t) -> uint8x8x2_t {
21740 static_assert_uimm_bits!(LANE, 3);
21741 transmute(vld2_lane_s8::<LANE>(transmute(a), transmute(b)))
21742}
21743#[doc = "Load multiple 2-element structures to two registers"]
21744#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_u16)"]
21745#[doc = "## Safety"]
21746#[doc = " * Neon instrinsic unsafe"]
21747#[inline]
21748#[target_feature(enable = "neon")]
21749#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21750#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
21751#[cfg_attr(
21752 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21753 assert_instr(ld2, LANE = 0)
21754)]
21755#[rustc_legacy_const_generics(2)]
21756#[cfg_attr(
21757 not(target_arch = "arm"),
21758 stable(feature = "neon_intrinsics", since = "1.59.0")
21759)]
21760#[cfg_attr(
21761 target_arch = "arm",
21762 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21763)]
21764pub unsafe fn vld2_lane_u16<const LANE: i32>(a: *const u16, b: uint16x4x2_t) -> uint16x4x2_t {
21765 static_assert_uimm_bits!(LANE, 2);
21766 transmute(vld2_lane_s16::<LANE>(transmute(a), transmute(b)))
21767}
21768#[doc = "Load multiple 2-element structures to two registers"]
21769#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_u16)"]
21770#[doc = "## Safety"]
21771#[doc = " * Neon instrinsic unsafe"]
21772#[inline]
21773#[target_feature(enable = "neon")]
21774#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21775#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
21776#[cfg_attr(
21777 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21778 assert_instr(ld2, LANE = 0)
21779)]
21780#[rustc_legacy_const_generics(2)]
21781#[cfg_attr(
21782 not(target_arch = "arm"),
21783 stable(feature = "neon_intrinsics", since = "1.59.0")
21784)]
21785#[cfg_attr(
21786 target_arch = "arm",
21787 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21788)]
21789pub unsafe fn vld2q_lane_u16<const LANE: i32>(a: *const u16, b: uint16x8x2_t) -> uint16x8x2_t {
21790 static_assert_uimm_bits!(LANE, 3);
21791 transmute(vld2q_lane_s16::<LANE>(transmute(a), transmute(b)))
21792}
21793#[doc = "Load multiple 2-element structures to two registers"]
21794#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_u32)"]
21795#[doc = "## Safety"]
21796#[doc = " * Neon instrinsic unsafe"]
21797#[inline]
21798#[target_feature(enable = "neon")]
21799#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21800#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
21801#[cfg_attr(
21802 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21803 assert_instr(ld2, LANE = 0)
21804)]
21805#[rustc_legacy_const_generics(2)]
21806#[cfg_attr(
21807 not(target_arch = "arm"),
21808 stable(feature = "neon_intrinsics", since = "1.59.0")
21809)]
21810#[cfg_attr(
21811 target_arch = "arm",
21812 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21813)]
21814pub unsafe fn vld2_lane_u32<const LANE: i32>(a: *const u32, b: uint32x2x2_t) -> uint32x2x2_t {
21815 static_assert_uimm_bits!(LANE, 1);
21816 transmute(vld2_lane_s32::<LANE>(transmute(a), transmute(b)))
21817}
21818#[doc = "Load multiple 2-element structures to two registers"]
21819#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_u32)"]
21820#[doc = "## Safety"]
21821#[doc = " * Neon instrinsic unsafe"]
21822#[inline]
21823#[target_feature(enable = "neon")]
21824#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21825#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
21826#[cfg_attr(
21827 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21828 assert_instr(ld2, LANE = 0)
21829)]
21830#[rustc_legacy_const_generics(2)]
21831#[cfg_attr(
21832 not(target_arch = "arm"),
21833 stable(feature = "neon_intrinsics", since = "1.59.0")
21834)]
21835#[cfg_attr(
21836 target_arch = "arm",
21837 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21838)]
21839pub unsafe fn vld2q_lane_u32<const LANE: i32>(a: *const u32, b: uint32x4x2_t) -> uint32x4x2_t {
21840 static_assert_uimm_bits!(LANE, 2);
21841 transmute(vld2q_lane_s32::<LANE>(transmute(a), transmute(b)))
21842}
21843#[doc = "Load multiple 2-element structures to two registers"]
21844#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_p8)"]
21845#[doc = "## Safety"]
21846#[doc = " * Neon instrinsic unsafe"]
21847#[inline]
21848#[target_feature(enable = "neon")]
21849#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21850#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
21851#[cfg_attr(
21852 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21853 assert_instr(ld2, LANE = 0)
21854)]
21855#[rustc_legacy_const_generics(2)]
21856#[cfg_attr(
21857 not(target_arch = "arm"),
21858 stable(feature = "neon_intrinsics", since = "1.59.0")
21859)]
21860#[cfg_attr(
21861 target_arch = "arm",
21862 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21863)]
21864pub unsafe fn vld2_lane_p8<const LANE: i32>(a: *const p8, b: poly8x8x2_t) -> poly8x8x2_t {
21865 static_assert_uimm_bits!(LANE, 3);
21866 transmute(vld2_lane_s8::<LANE>(transmute(a), transmute(b)))
21867}
21868#[doc = "Load multiple 2-element structures to two registers"]
21869#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_p16)"]
21870#[doc = "## Safety"]
21871#[doc = " * Neon instrinsic unsafe"]
21872#[inline]
21873#[target_feature(enable = "neon")]
21874#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21875#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
21876#[cfg_attr(
21877 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21878 assert_instr(ld2, LANE = 0)
21879)]
21880#[rustc_legacy_const_generics(2)]
21881#[cfg_attr(
21882 not(target_arch = "arm"),
21883 stable(feature = "neon_intrinsics", since = "1.59.0")
21884)]
21885#[cfg_attr(
21886 target_arch = "arm",
21887 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21888)]
21889pub unsafe fn vld2_lane_p16<const LANE: i32>(a: *const p16, b: poly16x4x2_t) -> poly16x4x2_t {
21890 static_assert_uimm_bits!(LANE, 2);
21891 transmute(vld2_lane_s16::<LANE>(transmute(a), transmute(b)))
21892}
21893#[doc = "Load multiple 2-element structures to two registers"]
21894#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_p16)"]
21895#[doc = "## Safety"]
21896#[doc = " * Neon instrinsic unsafe"]
21897#[inline]
21898#[target_feature(enable = "neon")]
21899#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21900#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
21901#[cfg_attr(
21902 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21903 assert_instr(ld2, LANE = 0)
21904)]
21905#[rustc_legacy_const_generics(2)]
21906#[cfg_attr(
21907 not(target_arch = "arm"),
21908 stable(feature = "neon_intrinsics", since = "1.59.0")
21909)]
21910#[cfg_attr(
21911 target_arch = "arm",
21912 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21913)]
21914pub unsafe fn vld2q_lane_p16<const LANE: i32>(a: *const p16, b: poly16x8x2_t) -> poly16x8x2_t {
21915 static_assert_uimm_bits!(LANE, 3);
21916 transmute(vld2q_lane_s16::<LANE>(transmute(a), transmute(b)))
21917}
21918#[doc = "Load multiple 2-element structures to two registers"]
21919#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_p64)"]
21920#[doc = "## Safety"]
21921#[doc = " * Neon instrinsic unsafe"]
21922#[inline]
21923#[target_feature(enable = "neon,aes")]
21924#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
21925#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
21926#[cfg_attr(
21927 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21928 assert_instr(nop)
21929)]
21930#[cfg_attr(
21931 not(target_arch = "arm"),
21932 stable(feature = "neon_intrinsics", since = "1.59.0")
21933)]
21934#[cfg_attr(
21935 target_arch = "arm",
21936 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21937)]
21938pub unsafe fn vld2_p64(a: *const p64) -> poly64x1x2_t {
21939 transmute(vld2_s64(transmute(a)))
21940}
21941#[doc = "Load multiple 2-element structures to two registers"]
21942#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s64)"]
21943#[doc = "## Safety"]
21944#[doc = " * Neon instrinsic unsafe"]
21945#[inline]
21946#[target_feature(enable = "neon,v7")]
21947#[cfg(target_arch = "arm")]
21948#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21949#[cfg_attr(test, assert_instr(nop))]
21950pub unsafe fn vld2_s64(a: *const i64) -> int64x1x2_t {
21951 unsafe extern "unadjusted" {
21952 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v1i64")]
21953 fn _vld2_s64(ptr: *const i8, size: i32) -> int64x1x2_t;
21954 }
21955 _vld2_s64(a as *const i8, 8)
21956}
21957#[doc = "Load multiple 2-element structures to two registers"]
21958#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s64)"]
21959#[doc = "## Safety"]
21960#[doc = " * Neon instrinsic unsafe"]
21961#[inline]
21962#[target_feature(enable = "neon")]
21963#[cfg(not(target_arch = "arm"))]
21964#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21965#[cfg_attr(test, assert_instr(nop))]
21966pub unsafe fn vld2_s64(a: *const i64) -> int64x1x2_t {
21967 unsafe extern "unadjusted" {
21968 #[cfg_attr(
21969 any(target_arch = "aarch64", target_arch = "arm64ec"),
21970 link_name = "llvm.aarch64.neon.ld2.v1i64.p0"
21971 )]
21972 fn _vld2_s64(ptr: *const int64x1_t) -> int64x1x2_t;
21973 }
21974 _vld2_s64(a as _)
21975}
21976#[doc = "Load multiple 2-element structures to two registers"]
21977#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u64)"]
21978#[doc = "## Safety"]
21979#[doc = " * Neon instrinsic unsafe"]
21980#[inline]
21981#[target_feature(enable = "neon")]
21982#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21983#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
21984#[cfg_attr(
21985 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21986 assert_instr(nop)
21987)]
21988#[cfg_attr(
21989 not(target_arch = "arm"),
21990 stable(feature = "neon_intrinsics", since = "1.59.0")
21991)]
21992#[cfg_attr(
21993 target_arch = "arm",
21994 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21995)]
21996pub unsafe fn vld2_u64(a: *const u64) -> uint64x1x2_t {
21997 transmute(vld2_s64(transmute(a)))
21998}
21999#[doc = "Load multiple 2-element structures to two registers"]
22000#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u8)"]
22001#[doc = "## Safety"]
22002#[doc = " * Neon instrinsic unsafe"]
22003#[inline]
22004#[cfg(target_endian = "little")]
22005#[target_feature(enable = "neon")]
22006#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22007#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22008#[cfg_attr(
22009 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22010 assert_instr(ld2)
22011)]
22012#[cfg_attr(
22013 not(target_arch = "arm"),
22014 stable(feature = "neon_intrinsics", since = "1.59.0")
22015)]
22016#[cfg_attr(
22017 target_arch = "arm",
22018 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22019)]
22020pub unsafe fn vld2_u8(a: *const u8) -> uint8x8x2_t {
22021 transmute(vld2_s8(transmute(a)))
22022}
22023#[doc = "Load multiple 2-element structures to two registers"]
22024#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u8)"]
22025#[doc = "## Safety"]
22026#[doc = " * Neon instrinsic unsafe"]
22027#[inline]
22028#[cfg(target_endian = "big")]
22029#[target_feature(enable = "neon")]
22030#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22031#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22032#[cfg_attr(
22033 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22034 assert_instr(ld2)
22035)]
22036#[cfg_attr(
22037 not(target_arch = "arm"),
22038 stable(feature = "neon_intrinsics", since = "1.59.0")
22039)]
22040#[cfg_attr(
22041 target_arch = "arm",
22042 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22043)]
22044pub unsafe fn vld2_u8(a: *const u8) -> uint8x8x2_t {
22045 let mut ret_val: uint8x8x2_t = transmute(vld2_s8(transmute(a)));
22046 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
22047 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
22048 ret_val
22049}
22050#[doc = "Load multiple 2-element structures to two registers"]
22051#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_u8)"]
22052#[doc = "## Safety"]
22053#[doc = " * Neon instrinsic unsafe"]
22054#[inline]
22055#[cfg(target_endian = "little")]
22056#[target_feature(enable = "neon")]
22057#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22058#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22059#[cfg_attr(
22060 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22061 assert_instr(ld2)
22062)]
22063#[cfg_attr(
22064 not(target_arch = "arm"),
22065 stable(feature = "neon_intrinsics", since = "1.59.0")
22066)]
22067#[cfg_attr(
22068 target_arch = "arm",
22069 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22070)]
22071pub unsafe fn vld2q_u8(a: *const u8) -> uint8x16x2_t {
22072 transmute(vld2q_s8(transmute(a)))
22073}
22074#[doc = "Load multiple 2-element structures to two registers"]
22075#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_u8)"]
22076#[doc = "## Safety"]
22077#[doc = " * Neon instrinsic unsafe"]
22078#[inline]
22079#[cfg(target_endian = "big")]
22080#[target_feature(enable = "neon")]
22081#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22082#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22083#[cfg_attr(
22084 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22085 assert_instr(ld2)
22086)]
22087#[cfg_attr(
22088 not(target_arch = "arm"),
22089 stable(feature = "neon_intrinsics", since = "1.59.0")
22090)]
22091#[cfg_attr(
22092 target_arch = "arm",
22093 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22094)]
22095pub unsafe fn vld2q_u8(a: *const u8) -> uint8x16x2_t {
22096 let mut ret_val: uint8x16x2_t = transmute(vld2q_s8(transmute(a)));
22097 ret_val.0 = unsafe {
22098 simd_shuffle!(
22099 ret_val.0,
22100 ret_val.0,
22101 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
22102 )
22103 };
22104 ret_val.1 = unsafe {
22105 simd_shuffle!(
22106 ret_val.1,
22107 ret_val.1,
22108 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
22109 )
22110 };
22111 ret_val
22112}
22113#[doc = "Load multiple 2-element structures to two registers"]
22114#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u16)"]
22115#[doc = "## Safety"]
22116#[doc = " * Neon instrinsic unsafe"]
22117#[inline]
22118#[cfg(target_endian = "little")]
22119#[target_feature(enable = "neon")]
22120#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22121#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22122#[cfg_attr(
22123 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22124 assert_instr(ld2)
22125)]
22126#[cfg_attr(
22127 not(target_arch = "arm"),
22128 stable(feature = "neon_intrinsics", since = "1.59.0")
22129)]
22130#[cfg_attr(
22131 target_arch = "arm",
22132 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22133)]
22134pub unsafe fn vld2_u16(a: *const u16) -> uint16x4x2_t {
22135 transmute(vld2_s16(transmute(a)))
22136}
22137#[doc = "Load multiple 2-element structures to two registers"]
22138#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u16)"]
22139#[doc = "## Safety"]
22140#[doc = " * Neon instrinsic unsafe"]
22141#[inline]
22142#[cfg(target_endian = "big")]
22143#[target_feature(enable = "neon")]
22144#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22145#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22146#[cfg_attr(
22147 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22148 assert_instr(ld2)
22149)]
22150#[cfg_attr(
22151 not(target_arch = "arm"),
22152 stable(feature = "neon_intrinsics", since = "1.59.0")
22153)]
22154#[cfg_attr(
22155 target_arch = "arm",
22156 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22157)]
22158pub unsafe fn vld2_u16(a: *const u16) -> uint16x4x2_t {
22159 let mut ret_val: uint16x4x2_t = transmute(vld2_s16(transmute(a)));
22160 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
22161 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
22162 ret_val
22163}
22164#[doc = "Load multiple 2-element structures to two registers"]
22165#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_u16)"]
22166#[doc = "## Safety"]
22167#[doc = " * Neon instrinsic unsafe"]
22168#[inline]
22169#[cfg(target_endian = "little")]
22170#[target_feature(enable = "neon")]
22171#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22172#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22173#[cfg_attr(
22174 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22175 assert_instr(ld2)
22176)]
22177#[cfg_attr(
22178 not(target_arch = "arm"),
22179 stable(feature = "neon_intrinsics", since = "1.59.0")
22180)]
22181#[cfg_attr(
22182 target_arch = "arm",
22183 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22184)]
22185pub unsafe fn vld2q_u16(a: *const u16) -> uint16x8x2_t {
22186 transmute(vld2q_s16(transmute(a)))
22187}
22188#[doc = "Load multiple 2-element structures to two registers"]
22189#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_u16)"]
22190#[doc = "## Safety"]
22191#[doc = " * Neon instrinsic unsafe"]
22192#[inline]
22193#[cfg(target_endian = "big")]
22194#[target_feature(enable = "neon")]
22195#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22196#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22197#[cfg_attr(
22198 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22199 assert_instr(ld2)
22200)]
22201#[cfg_attr(
22202 not(target_arch = "arm"),
22203 stable(feature = "neon_intrinsics", since = "1.59.0")
22204)]
22205#[cfg_attr(
22206 target_arch = "arm",
22207 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22208)]
22209pub unsafe fn vld2q_u16(a: *const u16) -> uint16x8x2_t {
22210 let mut ret_val: uint16x8x2_t = transmute(vld2q_s16(transmute(a)));
22211 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
22212 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
22213 ret_val
22214}
22215#[doc = "Load multiple 2-element structures to two registers"]
22216#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u32)"]
22217#[doc = "## Safety"]
22218#[doc = " * Neon instrinsic unsafe"]
22219#[inline]
22220#[cfg(target_endian = "little")]
22221#[target_feature(enable = "neon")]
22222#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22223#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22224#[cfg_attr(
22225 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22226 assert_instr(ld2)
22227)]
22228#[cfg_attr(
22229 not(target_arch = "arm"),
22230 stable(feature = "neon_intrinsics", since = "1.59.0")
22231)]
22232#[cfg_attr(
22233 target_arch = "arm",
22234 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22235)]
22236pub unsafe fn vld2_u32(a: *const u32) -> uint32x2x2_t {
22237 transmute(vld2_s32(transmute(a)))
22238}
22239#[doc = "Load multiple 2-element structures to two registers"]
22240#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u32)"]
22241#[doc = "## Safety"]
22242#[doc = " * Neon instrinsic unsafe"]
22243#[inline]
22244#[cfg(target_endian = "big")]
22245#[target_feature(enable = "neon")]
22246#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22247#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22248#[cfg_attr(
22249 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22250 assert_instr(ld2)
22251)]
22252#[cfg_attr(
22253 not(target_arch = "arm"),
22254 stable(feature = "neon_intrinsics", since = "1.59.0")
22255)]
22256#[cfg_attr(
22257 target_arch = "arm",
22258 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22259)]
22260pub unsafe fn vld2_u32(a: *const u32) -> uint32x2x2_t {
22261 let mut ret_val: uint32x2x2_t = transmute(vld2_s32(transmute(a)));
22262 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
22263 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
22264 ret_val
22265}
22266#[doc = "Load multiple 2-element structures to two registers"]
22267#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_u32)"]
22268#[doc = "## Safety"]
22269#[doc = " * Neon instrinsic unsafe"]
22270#[inline]
22271#[cfg(target_endian = "little")]
22272#[target_feature(enable = "neon")]
22273#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22274#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22275#[cfg_attr(
22276 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22277 assert_instr(ld2)
22278)]
22279#[cfg_attr(
22280 not(target_arch = "arm"),
22281 stable(feature = "neon_intrinsics", since = "1.59.0")
22282)]
22283#[cfg_attr(
22284 target_arch = "arm",
22285 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22286)]
22287pub unsafe fn vld2q_u32(a: *const u32) -> uint32x4x2_t {
22288 transmute(vld2q_s32(transmute(a)))
22289}
22290#[doc = "Load multiple 2-element structures to two registers"]
22291#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_u32)"]
22292#[doc = "## Safety"]
22293#[doc = " * Neon instrinsic unsafe"]
22294#[inline]
22295#[cfg(target_endian = "big")]
22296#[target_feature(enable = "neon")]
22297#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22298#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22299#[cfg_attr(
22300 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22301 assert_instr(ld2)
22302)]
22303#[cfg_attr(
22304 not(target_arch = "arm"),
22305 stable(feature = "neon_intrinsics", since = "1.59.0")
22306)]
22307#[cfg_attr(
22308 target_arch = "arm",
22309 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22310)]
22311pub unsafe fn vld2q_u32(a: *const u32) -> uint32x4x2_t {
22312 let mut ret_val: uint32x4x2_t = transmute(vld2q_s32(transmute(a)));
22313 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
22314 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
22315 ret_val
22316}
22317#[doc = "Load multiple 2-element structures to two registers"]
22318#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_p8)"]
22319#[doc = "## Safety"]
22320#[doc = " * Neon instrinsic unsafe"]
22321#[inline]
22322#[cfg(target_endian = "little")]
22323#[target_feature(enable = "neon")]
22324#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22325#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22326#[cfg_attr(
22327 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22328 assert_instr(ld2)
22329)]
22330#[cfg_attr(
22331 not(target_arch = "arm"),
22332 stable(feature = "neon_intrinsics", since = "1.59.0")
22333)]
22334#[cfg_attr(
22335 target_arch = "arm",
22336 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22337)]
22338pub unsafe fn vld2_p8(a: *const p8) -> poly8x8x2_t {
22339 transmute(vld2_s8(transmute(a)))
22340}
22341#[doc = "Load multiple 2-element structures to two registers"]
22342#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_p8)"]
22343#[doc = "## Safety"]
22344#[doc = " * Neon instrinsic unsafe"]
22345#[inline]
22346#[cfg(target_endian = "big")]
22347#[target_feature(enable = "neon")]
22348#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22349#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22350#[cfg_attr(
22351 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22352 assert_instr(ld2)
22353)]
22354#[cfg_attr(
22355 not(target_arch = "arm"),
22356 stable(feature = "neon_intrinsics", since = "1.59.0")
22357)]
22358#[cfg_attr(
22359 target_arch = "arm",
22360 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22361)]
22362pub unsafe fn vld2_p8(a: *const p8) -> poly8x8x2_t {
22363 let mut ret_val: poly8x8x2_t = transmute(vld2_s8(transmute(a)));
22364 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
22365 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
22366 ret_val
22367}
22368#[doc = "Load multiple 2-element structures to two registers"]
22369#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_p8)"]
22370#[doc = "## Safety"]
22371#[doc = " * Neon instrinsic unsafe"]
22372#[inline]
22373#[cfg(target_endian = "little")]
22374#[target_feature(enable = "neon")]
22375#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22376#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22377#[cfg_attr(
22378 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22379 assert_instr(ld2)
22380)]
22381#[cfg_attr(
22382 not(target_arch = "arm"),
22383 stable(feature = "neon_intrinsics", since = "1.59.0")
22384)]
22385#[cfg_attr(
22386 target_arch = "arm",
22387 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22388)]
22389pub unsafe fn vld2q_p8(a: *const p8) -> poly8x16x2_t {
22390 transmute(vld2q_s8(transmute(a)))
22391}
22392#[doc = "Load multiple 2-element structures to two registers"]
22393#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_p8)"]
22394#[doc = "## Safety"]
22395#[doc = " * Neon instrinsic unsafe"]
22396#[inline]
22397#[cfg(target_endian = "big")]
22398#[target_feature(enable = "neon")]
22399#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22400#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22401#[cfg_attr(
22402 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22403 assert_instr(ld2)
22404)]
22405#[cfg_attr(
22406 not(target_arch = "arm"),
22407 stable(feature = "neon_intrinsics", since = "1.59.0")
22408)]
22409#[cfg_attr(
22410 target_arch = "arm",
22411 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22412)]
22413pub unsafe fn vld2q_p8(a: *const p8) -> poly8x16x2_t {
22414 let mut ret_val: poly8x16x2_t = transmute(vld2q_s8(transmute(a)));
22415 ret_val.0 = unsafe {
22416 simd_shuffle!(
22417 ret_val.0,
22418 ret_val.0,
22419 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
22420 )
22421 };
22422 ret_val.1 = unsafe {
22423 simd_shuffle!(
22424 ret_val.1,
22425 ret_val.1,
22426 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
22427 )
22428 };
22429 ret_val
22430}
22431#[doc = "Load multiple 2-element structures to two registers"]
22432#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_p16)"]
22433#[doc = "## Safety"]
22434#[doc = " * Neon instrinsic unsafe"]
22435#[inline]
22436#[cfg(target_endian = "little")]
22437#[target_feature(enable = "neon")]
22438#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22439#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22440#[cfg_attr(
22441 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22442 assert_instr(ld2)
22443)]
22444#[cfg_attr(
22445 not(target_arch = "arm"),
22446 stable(feature = "neon_intrinsics", since = "1.59.0")
22447)]
22448#[cfg_attr(
22449 target_arch = "arm",
22450 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22451)]
22452pub unsafe fn vld2_p16(a: *const p16) -> poly16x4x2_t {
22453 transmute(vld2_s16(transmute(a)))
22454}
22455#[doc = "Load multiple 2-element structures to two registers"]
22456#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_p16)"]
22457#[doc = "## Safety"]
22458#[doc = " * Neon instrinsic unsafe"]
22459#[inline]
22460#[cfg(target_endian = "big")]
22461#[target_feature(enable = "neon")]
22462#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22463#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22464#[cfg_attr(
22465 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22466 assert_instr(ld2)
22467)]
22468#[cfg_attr(
22469 not(target_arch = "arm"),
22470 stable(feature = "neon_intrinsics", since = "1.59.0")
22471)]
22472#[cfg_attr(
22473 target_arch = "arm",
22474 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22475)]
22476pub unsafe fn vld2_p16(a: *const p16) -> poly16x4x2_t {
22477 let mut ret_val: poly16x4x2_t = transmute(vld2_s16(transmute(a)));
22478 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
22479 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
22480 ret_val
22481}
22482#[doc = "Load multiple 2-element structures to two registers"]
22483#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_p16)"]
22484#[doc = "## Safety"]
22485#[doc = " * Neon instrinsic unsafe"]
22486#[inline]
22487#[cfg(target_endian = "little")]
22488#[target_feature(enable = "neon")]
22489#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22490#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22491#[cfg_attr(
22492 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22493 assert_instr(ld2)
22494)]
22495#[cfg_attr(
22496 not(target_arch = "arm"),
22497 stable(feature = "neon_intrinsics", since = "1.59.0")
22498)]
22499#[cfg_attr(
22500 target_arch = "arm",
22501 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22502)]
22503pub unsafe fn vld2q_p16(a: *const p16) -> poly16x8x2_t {
22504 transmute(vld2q_s16(transmute(a)))
22505}
22506#[doc = "Load multiple 2-element structures to two registers"]
22507#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_p16)"]
22508#[doc = "## Safety"]
22509#[doc = " * Neon instrinsic unsafe"]
22510#[inline]
22511#[cfg(target_endian = "big")]
22512#[target_feature(enable = "neon")]
22513#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22514#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
22515#[cfg_attr(
22516 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22517 assert_instr(ld2)
22518)]
22519#[cfg_attr(
22520 not(target_arch = "arm"),
22521 stable(feature = "neon_intrinsics", since = "1.59.0")
22522)]
22523#[cfg_attr(
22524 target_arch = "arm",
22525 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22526)]
22527pub unsafe fn vld2q_p16(a: *const p16) -> poly16x8x2_t {
22528 let mut ret_val: poly16x8x2_t = transmute(vld2q_s16(transmute(a)));
22529 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
22530 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
22531 ret_val
22532}
22533#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
22534#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_f16)"]
22535#[doc = "## Safety"]
22536#[doc = " * Neon instrinsic unsafe"]
22537#[inline]
22538#[target_feature(enable = "neon")]
22539#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22540#[cfg(target_arch = "arm")]
22541#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22542#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
22543#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
22544#[cfg(not(target_arch = "arm64ec"))]
22545pub unsafe fn vld3_dup_f16(a: *const f16) -> float16x4x3_t {
22546 unsafe extern "unadjusted" {
22547 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v4f16.p0")]
22548 fn _vld3_dup_f16(ptr: *const f16, size: i32) -> float16x4x3_t;
22549 }
22550 _vld3_dup_f16(a as _, 2)
22551}
22552#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
22553#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_f16)"]
22554#[doc = "## Safety"]
22555#[doc = " * Neon instrinsic unsafe"]
22556#[inline]
22557#[target_feature(enable = "neon")]
22558#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22559#[cfg(target_arch = "arm")]
22560#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22561#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
22562#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
22563#[cfg(not(target_arch = "arm64ec"))]
22564pub unsafe fn vld3q_dup_f16(a: *const f16) -> float16x8x3_t {
22565 unsafe extern "unadjusted" {
22566 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v8f16.p0")]
22567 fn _vld3q_dup_f16(ptr: *const f16, size: i32) -> float16x8x3_t;
22568 }
22569 _vld3q_dup_f16(a as _, 2)
22570}
22571#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
22572#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_f16)"]
22573#[doc = "## Safety"]
22574#[doc = " * Neon instrinsic unsafe"]
22575#[inline]
22576#[target_feature(enable = "neon")]
22577#[cfg(not(target_arch = "arm"))]
22578#[cfg_attr(
22579 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22580 assert_instr(ld3r)
22581)]
22582#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
22583#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
22584#[cfg(not(target_arch = "arm64ec"))]
22585pub unsafe fn vld3_dup_f16(a: *const f16) -> float16x4x3_t {
22586 unsafe extern "unadjusted" {
22587 #[cfg_attr(
22588 any(target_arch = "aarch64", target_arch = "arm64ec"),
22589 link_name = "llvm.aarch64.neon.ld3r.v4f16.p0"
22590 )]
22591 fn _vld3_dup_f16(ptr: *const f16) -> float16x4x3_t;
22592 }
22593 _vld3_dup_f16(a as _)
22594}
22595#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
22596#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_f16)"]
22597#[doc = "## Safety"]
22598#[doc = " * Neon instrinsic unsafe"]
22599#[inline]
22600#[target_feature(enable = "neon")]
22601#[cfg(not(target_arch = "arm"))]
22602#[cfg_attr(
22603 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22604 assert_instr(ld3r)
22605)]
22606#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
22607#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
22608#[cfg(not(target_arch = "arm64ec"))]
22609pub unsafe fn vld3q_dup_f16(a: *const f16) -> float16x8x3_t {
22610 unsafe extern "unadjusted" {
22611 #[cfg_attr(
22612 any(target_arch = "aarch64", target_arch = "arm64ec"),
22613 link_name = "llvm.aarch64.neon.ld3r.v8f16.p0"
22614 )]
22615 fn _vld3q_dup_f16(ptr: *const f16) -> float16x8x3_t;
22616 }
22617 _vld3q_dup_f16(a as _)
22618}
22619#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22620#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_f32)"]
22621#[doc = "## Safety"]
22622#[doc = " * Neon instrinsic unsafe"]
22623#[inline]
22624#[target_feature(enable = "neon")]
22625#[cfg(not(target_arch = "arm"))]
22626#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22627#[cfg_attr(test, assert_instr(ld3r))]
22628pub unsafe fn vld3_dup_f32(a: *const f32) -> float32x2x3_t {
22629 unsafe extern "unadjusted" {
22630 #[cfg_attr(
22631 any(target_arch = "aarch64", target_arch = "arm64ec"),
22632 link_name = "llvm.aarch64.neon.ld3r.v2f32.p0"
22633 )]
22634 fn _vld3_dup_f32(ptr: *const f32) -> float32x2x3_t;
22635 }
22636 _vld3_dup_f32(a as _)
22637}
22638#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22639#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_f32)"]
22640#[doc = "## Safety"]
22641#[doc = " * Neon instrinsic unsafe"]
22642#[inline]
22643#[target_feature(enable = "neon")]
22644#[cfg(not(target_arch = "arm"))]
22645#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22646#[cfg_attr(test, assert_instr(ld3r))]
22647pub unsafe fn vld3q_dup_f32(a: *const f32) -> float32x4x3_t {
22648 unsafe extern "unadjusted" {
22649 #[cfg_attr(
22650 any(target_arch = "aarch64", target_arch = "arm64ec"),
22651 link_name = "llvm.aarch64.neon.ld3r.v4f32.p0"
22652 )]
22653 fn _vld3q_dup_f32(ptr: *const f32) -> float32x4x3_t;
22654 }
22655 _vld3q_dup_f32(a as _)
22656}
22657#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22658#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s8)"]
22659#[doc = "## Safety"]
22660#[doc = " * Neon instrinsic unsafe"]
22661#[inline]
22662#[target_feature(enable = "neon")]
22663#[cfg(not(target_arch = "arm"))]
22664#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22665#[cfg_attr(test, assert_instr(ld3r))]
22666pub unsafe fn vld3_dup_s8(a: *const i8) -> int8x8x3_t {
22667 unsafe extern "unadjusted" {
22668 #[cfg_attr(
22669 any(target_arch = "aarch64", target_arch = "arm64ec"),
22670 link_name = "llvm.aarch64.neon.ld3r.v8i8.p0"
22671 )]
22672 fn _vld3_dup_s8(ptr: *const i8) -> int8x8x3_t;
22673 }
22674 _vld3_dup_s8(a as _)
22675}
22676#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22677#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s8)"]
22678#[doc = "## Safety"]
22679#[doc = " * Neon instrinsic unsafe"]
22680#[inline]
22681#[target_feature(enable = "neon")]
22682#[cfg(not(target_arch = "arm"))]
22683#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22684#[cfg_attr(test, assert_instr(ld3r))]
22685pub unsafe fn vld3q_dup_s8(a: *const i8) -> int8x16x3_t {
22686 unsafe extern "unadjusted" {
22687 #[cfg_attr(
22688 any(target_arch = "aarch64", target_arch = "arm64ec"),
22689 link_name = "llvm.aarch64.neon.ld3r.v16i8.p0"
22690 )]
22691 fn _vld3q_dup_s8(ptr: *const i8) -> int8x16x3_t;
22692 }
22693 _vld3q_dup_s8(a as _)
22694}
22695#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22696#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s16)"]
22697#[doc = "## Safety"]
22698#[doc = " * Neon instrinsic unsafe"]
22699#[inline]
22700#[target_feature(enable = "neon")]
22701#[cfg(not(target_arch = "arm"))]
22702#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22703#[cfg_attr(test, assert_instr(ld3r))]
22704pub unsafe fn vld3_dup_s16(a: *const i16) -> int16x4x3_t {
22705 unsafe extern "unadjusted" {
22706 #[cfg_attr(
22707 any(target_arch = "aarch64", target_arch = "arm64ec"),
22708 link_name = "llvm.aarch64.neon.ld3r.v4i16.p0"
22709 )]
22710 fn _vld3_dup_s16(ptr: *const i16) -> int16x4x3_t;
22711 }
22712 _vld3_dup_s16(a as _)
22713}
22714#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22715#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s16)"]
22716#[doc = "## Safety"]
22717#[doc = " * Neon instrinsic unsafe"]
22718#[inline]
22719#[target_feature(enable = "neon")]
22720#[cfg(not(target_arch = "arm"))]
22721#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22722#[cfg_attr(test, assert_instr(ld3r))]
22723pub unsafe fn vld3q_dup_s16(a: *const i16) -> int16x8x3_t {
22724 unsafe extern "unadjusted" {
22725 #[cfg_attr(
22726 any(target_arch = "aarch64", target_arch = "arm64ec"),
22727 link_name = "llvm.aarch64.neon.ld3r.v8i16.p0"
22728 )]
22729 fn _vld3q_dup_s16(ptr: *const i16) -> int16x8x3_t;
22730 }
22731 _vld3q_dup_s16(a as _)
22732}
22733#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22734#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s32)"]
22735#[doc = "## Safety"]
22736#[doc = " * Neon instrinsic unsafe"]
22737#[inline]
22738#[target_feature(enable = "neon")]
22739#[cfg(not(target_arch = "arm"))]
22740#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22741#[cfg_attr(test, assert_instr(ld3r))]
22742pub unsafe fn vld3_dup_s32(a: *const i32) -> int32x2x3_t {
22743 unsafe extern "unadjusted" {
22744 #[cfg_attr(
22745 any(target_arch = "aarch64", target_arch = "arm64ec"),
22746 link_name = "llvm.aarch64.neon.ld3r.v2i32.p0"
22747 )]
22748 fn _vld3_dup_s32(ptr: *const i32) -> int32x2x3_t;
22749 }
22750 _vld3_dup_s32(a as _)
22751}
22752#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22753#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s32)"]
22754#[doc = "## Safety"]
22755#[doc = " * Neon instrinsic unsafe"]
22756#[inline]
22757#[target_feature(enable = "neon")]
22758#[cfg(not(target_arch = "arm"))]
22759#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22760#[cfg_attr(test, assert_instr(ld3r))]
22761pub unsafe fn vld3q_dup_s32(a: *const i32) -> int32x4x3_t {
22762 unsafe extern "unadjusted" {
22763 #[cfg_attr(
22764 any(target_arch = "aarch64", target_arch = "arm64ec"),
22765 link_name = "llvm.aarch64.neon.ld3r.v4i32.p0"
22766 )]
22767 fn _vld3q_dup_s32(ptr: *const i32) -> int32x4x3_t;
22768 }
22769 _vld3q_dup_s32(a as _)
22770}
22771#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22772#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s64)"]
22773#[doc = "## Safety"]
22774#[doc = " * Neon instrinsic unsafe"]
22775#[inline]
22776#[target_feature(enable = "neon")]
22777#[cfg(not(target_arch = "arm"))]
22778#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22779#[cfg_attr(test, assert_instr(ld3r))]
22780pub unsafe fn vld3_dup_s64(a: *const i64) -> int64x1x3_t {
22781 unsafe extern "unadjusted" {
22782 #[cfg_attr(
22783 any(target_arch = "aarch64", target_arch = "arm64ec"),
22784 link_name = "llvm.aarch64.neon.ld3r.v1i64.p0"
22785 )]
22786 fn _vld3_dup_s64(ptr: *const i64) -> int64x1x3_t;
22787 }
22788 _vld3_dup_s64(a as _)
22789}
22790#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22791#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_f32)"]
22792#[doc = "## Safety"]
22793#[doc = " * Neon instrinsic unsafe"]
22794#[inline]
22795#[target_feature(enable = "neon,v7")]
22796#[cfg(target_arch = "arm")]
22797#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22798#[cfg_attr(test, assert_instr(vld3))]
22799pub unsafe fn vld3_dup_f32(a: *const f32) -> float32x2x3_t {
22800 unsafe extern "unadjusted" {
22801 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v2f32.p0")]
22802 fn _vld3_dup_f32(ptr: *const i8, size: i32) -> float32x2x3_t;
22803 }
22804 _vld3_dup_f32(a as *const i8, 4)
22805}
22806#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22807#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_f32)"]
22808#[doc = "## Safety"]
22809#[doc = " * Neon instrinsic unsafe"]
22810#[inline]
22811#[target_feature(enable = "neon,v7")]
22812#[cfg(target_arch = "arm")]
22813#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22814#[cfg_attr(test, assert_instr(vld3))]
22815pub unsafe fn vld3q_dup_f32(a: *const f32) -> float32x4x3_t {
22816 unsafe extern "unadjusted" {
22817 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v4f32.p0")]
22818 fn _vld3q_dup_f32(ptr: *const i8, size: i32) -> float32x4x3_t;
22819 }
22820 _vld3q_dup_f32(a as *const i8, 4)
22821}
22822#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22823#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s8)"]
22824#[doc = "## Safety"]
22825#[doc = " * Neon instrinsic unsafe"]
22826#[inline]
22827#[target_feature(enable = "neon,v7")]
22828#[cfg(target_arch = "arm")]
22829#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22830#[cfg_attr(test, assert_instr(vld3))]
22831pub unsafe fn vld3_dup_s8(a: *const i8) -> int8x8x3_t {
22832 unsafe extern "unadjusted" {
22833 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v8i8.p0")]
22834 fn _vld3_dup_s8(ptr: *const i8, size: i32) -> int8x8x3_t;
22835 }
22836 _vld3_dup_s8(a as *const i8, 1)
22837}
22838#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22839#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s8)"]
22840#[doc = "## Safety"]
22841#[doc = " * Neon instrinsic unsafe"]
22842#[inline]
22843#[target_feature(enable = "neon,v7")]
22844#[cfg(target_arch = "arm")]
22845#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22846#[cfg_attr(test, assert_instr(vld3))]
22847pub unsafe fn vld3q_dup_s8(a: *const i8) -> int8x16x3_t {
22848 unsafe extern "unadjusted" {
22849 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v16i8.p0")]
22850 fn _vld3q_dup_s8(ptr: *const i8, size: i32) -> int8x16x3_t;
22851 }
22852 _vld3q_dup_s8(a as *const i8, 1)
22853}
22854#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22855#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s16)"]
22856#[doc = "## Safety"]
22857#[doc = " * Neon instrinsic unsafe"]
22858#[inline]
22859#[target_feature(enable = "neon,v7")]
22860#[cfg(target_arch = "arm")]
22861#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22862#[cfg_attr(test, assert_instr(vld3))]
22863pub unsafe fn vld3_dup_s16(a: *const i16) -> int16x4x3_t {
22864 unsafe extern "unadjusted" {
22865 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v4i16.p0")]
22866 fn _vld3_dup_s16(ptr: *const i8, size: i32) -> int16x4x3_t;
22867 }
22868 _vld3_dup_s16(a as *const i8, 2)
22869}
22870#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22871#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s16)"]
22872#[doc = "## Safety"]
22873#[doc = " * Neon instrinsic unsafe"]
22874#[inline]
22875#[target_feature(enable = "neon,v7")]
22876#[cfg(target_arch = "arm")]
22877#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22878#[cfg_attr(test, assert_instr(vld3))]
22879pub unsafe fn vld3q_dup_s16(a: *const i16) -> int16x8x3_t {
22880 unsafe extern "unadjusted" {
22881 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v8i16.p0")]
22882 fn _vld3q_dup_s16(ptr: *const i8, size: i32) -> int16x8x3_t;
22883 }
22884 _vld3q_dup_s16(a as *const i8, 2)
22885}
22886#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22887#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s32)"]
22888#[doc = "## Safety"]
22889#[doc = " * Neon instrinsic unsafe"]
22890#[inline]
22891#[target_feature(enable = "neon,v7")]
22892#[cfg(target_arch = "arm")]
22893#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22894#[cfg_attr(test, assert_instr(vld3))]
22895pub unsafe fn vld3_dup_s32(a: *const i32) -> int32x2x3_t {
22896 unsafe extern "unadjusted" {
22897 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v2i32.p0")]
22898 fn _vld3_dup_s32(ptr: *const i8, size: i32) -> int32x2x3_t;
22899 }
22900 _vld3_dup_s32(a as *const i8, 4)
22901}
22902#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22903#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s32)"]
22904#[doc = "## Safety"]
22905#[doc = " * Neon instrinsic unsafe"]
22906#[inline]
22907#[target_feature(enable = "neon,v7")]
22908#[cfg(target_arch = "arm")]
22909#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22910#[cfg_attr(test, assert_instr(vld3))]
22911pub unsafe fn vld3q_dup_s32(a: *const i32) -> int32x4x3_t {
22912 unsafe extern "unadjusted" {
22913 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v4i32.p0")]
22914 fn _vld3q_dup_s32(ptr: *const i8, size: i32) -> int32x4x3_t;
22915 }
22916 _vld3q_dup_s32(a as *const i8, 4)
22917}
22918#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22919#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p64)"]
22920#[doc = "## Safety"]
22921#[doc = " * Neon instrinsic unsafe"]
22922#[inline]
22923#[target_feature(enable = "neon,aes")]
22924#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
22925#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
22926#[cfg_attr(
22927 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22928 assert_instr(ld3r)
22929)]
22930#[cfg_attr(
22931 not(target_arch = "arm"),
22932 stable(feature = "neon_intrinsics", since = "1.59.0")
22933)]
22934#[cfg_attr(
22935 target_arch = "arm",
22936 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22937)]
22938pub unsafe fn vld3_dup_p64(a: *const p64) -> poly64x1x3_t {
22939 transmute(vld3_dup_s64(transmute(a)))
22940}
22941#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22942#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s64)"]
22943#[doc = "## Safety"]
22944#[doc = " * Neon instrinsic unsafe"]
22945#[inline]
22946#[cfg(target_arch = "arm")]
22947#[target_feature(enable = "neon,v7")]
22948#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22949#[cfg_attr(test, assert_instr(nop))]
22950pub unsafe fn vld3_dup_s64(a: *const i64) -> int64x1x3_t {
22951 unsafe extern "unadjusted" {
22952 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v1i64.p0")]
22953 fn _vld3_dup_s64(ptr: *const i8, size: i32) -> int64x1x3_t;
22954 }
22955 _vld3_dup_s64(a as *const i8, 8)
22956}
22957#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22958#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u64)"]
22959#[doc = "## Safety"]
22960#[doc = " * Neon instrinsic unsafe"]
22961#[inline]
22962#[target_feature(enable = "neon")]
22963#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22964#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
22965#[cfg_attr(
22966 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22967 assert_instr(ld3r)
22968)]
22969#[cfg_attr(
22970 not(target_arch = "arm"),
22971 stable(feature = "neon_intrinsics", since = "1.59.0")
22972)]
22973#[cfg_attr(
22974 target_arch = "arm",
22975 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22976)]
22977pub unsafe fn vld3_dup_u64(a: *const u64) -> uint64x1x3_t {
22978 transmute(vld3_dup_s64(transmute(a)))
22979}
22980#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
22981#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u8)"]
22982#[doc = "## Safety"]
22983#[doc = " * Neon instrinsic unsafe"]
22984#[inline]
22985#[cfg(target_endian = "little")]
22986#[target_feature(enable = "neon")]
22987#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22988#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22989#[cfg_attr(
22990 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22991 assert_instr(ld3r)
22992)]
22993#[cfg_attr(
22994 not(target_arch = "arm"),
22995 stable(feature = "neon_intrinsics", since = "1.59.0")
22996)]
22997#[cfg_attr(
22998 target_arch = "arm",
22999 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23000)]
23001pub unsafe fn vld3_dup_u8(a: *const u8) -> uint8x8x3_t {
23002 transmute(vld3_dup_s8(transmute(a)))
23003}
23004#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23005#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u8)"]
23006#[doc = "## Safety"]
23007#[doc = " * Neon instrinsic unsafe"]
23008#[inline]
23009#[cfg(target_endian = "big")]
23010#[target_feature(enable = "neon")]
23011#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23012#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23013#[cfg_attr(
23014 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23015 assert_instr(ld3r)
23016)]
23017#[cfg_attr(
23018 not(target_arch = "arm"),
23019 stable(feature = "neon_intrinsics", since = "1.59.0")
23020)]
23021#[cfg_attr(
23022 target_arch = "arm",
23023 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23024)]
23025pub unsafe fn vld3_dup_u8(a: *const u8) -> uint8x8x3_t {
23026 let mut ret_val: uint8x8x3_t = transmute(vld3_dup_s8(transmute(a)));
23027 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
23028 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
23029 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
23030 ret_val
23031}
23032#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23033#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u8)"]
23034#[doc = "## Safety"]
23035#[doc = " * Neon instrinsic unsafe"]
23036#[inline]
23037#[cfg(target_endian = "little")]
23038#[target_feature(enable = "neon")]
23039#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23040#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23041#[cfg_attr(
23042 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23043 assert_instr(ld3r)
23044)]
23045#[cfg_attr(
23046 not(target_arch = "arm"),
23047 stable(feature = "neon_intrinsics", since = "1.59.0")
23048)]
23049#[cfg_attr(
23050 target_arch = "arm",
23051 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23052)]
23053pub unsafe fn vld3q_dup_u8(a: *const u8) -> uint8x16x3_t {
23054 transmute(vld3q_dup_s8(transmute(a)))
23055}
23056#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23057#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u8)"]
23058#[doc = "## Safety"]
23059#[doc = " * Neon instrinsic unsafe"]
23060#[inline]
23061#[cfg(target_endian = "big")]
23062#[target_feature(enable = "neon")]
23063#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23064#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23065#[cfg_attr(
23066 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23067 assert_instr(ld3r)
23068)]
23069#[cfg_attr(
23070 not(target_arch = "arm"),
23071 stable(feature = "neon_intrinsics", since = "1.59.0")
23072)]
23073#[cfg_attr(
23074 target_arch = "arm",
23075 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23076)]
23077pub unsafe fn vld3q_dup_u8(a: *const u8) -> uint8x16x3_t {
23078 let mut ret_val: uint8x16x3_t = transmute(vld3q_dup_s8(transmute(a)));
23079 ret_val.0 = unsafe {
23080 simd_shuffle!(
23081 ret_val.0,
23082 ret_val.0,
23083 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23084 )
23085 };
23086 ret_val.1 = unsafe {
23087 simd_shuffle!(
23088 ret_val.1,
23089 ret_val.1,
23090 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23091 )
23092 };
23093 ret_val.2 = unsafe {
23094 simd_shuffle!(
23095 ret_val.2,
23096 ret_val.2,
23097 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23098 )
23099 };
23100 ret_val
23101}
23102#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23103#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u16)"]
23104#[doc = "## Safety"]
23105#[doc = " * Neon instrinsic unsafe"]
23106#[inline]
23107#[cfg(target_endian = "little")]
23108#[target_feature(enable = "neon")]
23109#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23110#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23111#[cfg_attr(
23112 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23113 assert_instr(ld3r)
23114)]
23115#[cfg_attr(
23116 not(target_arch = "arm"),
23117 stable(feature = "neon_intrinsics", since = "1.59.0")
23118)]
23119#[cfg_attr(
23120 target_arch = "arm",
23121 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23122)]
23123pub unsafe fn vld3_dup_u16(a: *const u16) -> uint16x4x3_t {
23124 transmute(vld3_dup_s16(transmute(a)))
23125}
23126#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u16)"]
23128#[doc = "## Safety"]
23129#[doc = " * Neon instrinsic unsafe"]
23130#[inline]
23131#[cfg(target_endian = "big")]
23132#[target_feature(enable = "neon")]
23133#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23134#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23135#[cfg_attr(
23136 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23137 assert_instr(ld3r)
23138)]
23139#[cfg_attr(
23140 not(target_arch = "arm"),
23141 stable(feature = "neon_intrinsics", since = "1.59.0")
23142)]
23143#[cfg_attr(
23144 target_arch = "arm",
23145 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23146)]
23147pub unsafe fn vld3_dup_u16(a: *const u16) -> uint16x4x3_t {
23148 let mut ret_val: uint16x4x3_t = transmute(vld3_dup_s16(transmute(a)));
23149 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
23150 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
23151 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
23152 ret_val
23153}
23154#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23155#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u16)"]
23156#[doc = "## Safety"]
23157#[doc = " * Neon instrinsic unsafe"]
23158#[inline]
23159#[cfg(target_endian = "little")]
23160#[target_feature(enable = "neon")]
23161#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23162#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23163#[cfg_attr(
23164 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23165 assert_instr(ld3r)
23166)]
23167#[cfg_attr(
23168 not(target_arch = "arm"),
23169 stable(feature = "neon_intrinsics", since = "1.59.0")
23170)]
23171#[cfg_attr(
23172 target_arch = "arm",
23173 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23174)]
23175pub unsafe fn vld3q_dup_u16(a: *const u16) -> uint16x8x3_t {
23176 transmute(vld3q_dup_s16(transmute(a)))
23177}
23178#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23179#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u16)"]
23180#[doc = "## Safety"]
23181#[doc = " * Neon instrinsic unsafe"]
23182#[inline]
23183#[cfg(target_endian = "big")]
23184#[target_feature(enable = "neon")]
23185#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23186#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23187#[cfg_attr(
23188 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23189 assert_instr(ld3r)
23190)]
23191#[cfg_attr(
23192 not(target_arch = "arm"),
23193 stable(feature = "neon_intrinsics", since = "1.59.0")
23194)]
23195#[cfg_attr(
23196 target_arch = "arm",
23197 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23198)]
23199pub unsafe fn vld3q_dup_u16(a: *const u16) -> uint16x8x3_t {
23200 let mut ret_val: uint16x8x3_t = transmute(vld3q_dup_s16(transmute(a)));
23201 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
23202 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
23203 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
23204 ret_val
23205}
23206#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23207#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u32)"]
23208#[doc = "## Safety"]
23209#[doc = " * Neon instrinsic unsafe"]
23210#[inline]
23211#[cfg(target_endian = "little")]
23212#[target_feature(enable = "neon")]
23213#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23214#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23215#[cfg_attr(
23216 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23217 assert_instr(ld3r)
23218)]
23219#[cfg_attr(
23220 not(target_arch = "arm"),
23221 stable(feature = "neon_intrinsics", since = "1.59.0")
23222)]
23223#[cfg_attr(
23224 target_arch = "arm",
23225 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23226)]
23227pub unsafe fn vld3_dup_u32(a: *const u32) -> uint32x2x3_t {
23228 transmute(vld3_dup_s32(transmute(a)))
23229}
23230#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23231#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u32)"]
23232#[doc = "## Safety"]
23233#[doc = " * Neon instrinsic unsafe"]
23234#[inline]
23235#[cfg(target_endian = "big")]
23236#[target_feature(enable = "neon")]
23237#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23238#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23239#[cfg_attr(
23240 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23241 assert_instr(ld3r)
23242)]
23243#[cfg_attr(
23244 not(target_arch = "arm"),
23245 stable(feature = "neon_intrinsics", since = "1.59.0")
23246)]
23247#[cfg_attr(
23248 target_arch = "arm",
23249 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23250)]
23251pub unsafe fn vld3_dup_u32(a: *const u32) -> uint32x2x3_t {
23252 let mut ret_val: uint32x2x3_t = transmute(vld3_dup_s32(transmute(a)));
23253 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
23254 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
23255 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
23256 ret_val
23257}
23258#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23259#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u32)"]
23260#[doc = "## Safety"]
23261#[doc = " * Neon instrinsic unsafe"]
23262#[inline]
23263#[cfg(target_endian = "little")]
23264#[target_feature(enable = "neon")]
23265#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23266#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23267#[cfg_attr(
23268 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23269 assert_instr(ld3r)
23270)]
23271#[cfg_attr(
23272 not(target_arch = "arm"),
23273 stable(feature = "neon_intrinsics", since = "1.59.0")
23274)]
23275#[cfg_attr(
23276 target_arch = "arm",
23277 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23278)]
23279pub unsafe fn vld3q_dup_u32(a: *const u32) -> uint32x4x3_t {
23280 transmute(vld3q_dup_s32(transmute(a)))
23281}
23282#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23283#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u32)"]
23284#[doc = "## Safety"]
23285#[doc = " * Neon instrinsic unsafe"]
23286#[inline]
23287#[cfg(target_endian = "big")]
23288#[target_feature(enable = "neon")]
23289#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23290#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23291#[cfg_attr(
23292 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23293 assert_instr(ld3r)
23294)]
23295#[cfg_attr(
23296 not(target_arch = "arm"),
23297 stable(feature = "neon_intrinsics", since = "1.59.0")
23298)]
23299#[cfg_attr(
23300 target_arch = "arm",
23301 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23302)]
23303pub unsafe fn vld3q_dup_u32(a: *const u32) -> uint32x4x3_t {
23304 let mut ret_val: uint32x4x3_t = transmute(vld3q_dup_s32(transmute(a)));
23305 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
23306 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
23307 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
23308 ret_val
23309}
23310#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23311#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p8)"]
23312#[doc = "## Safety"]
23313#[doc = " * Neon instrinsic unsafe"]
23314#[inline]
23315#[cfg(target_endian = "little")]
23316#[target_feature(enable = "neon")]
23317#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23318#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23319#[cfg_attr(
23320 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23321 assert_instr(ld3r)
23322)]
23323#[cfg_attr(
23324 not(target_arch = "arm"),
23325 stable(feature = "neon_intrinsics", since = "1.59.0")
23326)]
23327#[cfg_attr(
23328 target_arch = "arm",
23329 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23330)]
23331pub unsafe fn vld3_dup_p8(a: *const p8) -> poly8x8x3_t {
23332 transmute(vld3_dup_s8(transmute(a)))
23333}
23334#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23335#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p8)"]
23336#[doc = "## Safety"]
23337#[doc = " * Neon instrinsic unsafe"]
23338#[inline]
23339#[cfg(target_endian = "big")]
23340#[target_feature(enable = "neon")]
23341#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23342#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23343#[cfg_attr(
23344 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23345 assert_instr(ld3r)
23346)]
23347#[cfg_attr(
23348 not(target_arch = "arm"),
23349 stable(feature = "neon_intrinsics", since = "1.59.0")
23350)]
23351#[cfg_attr(
23352 target_arch = "arm",
23353 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23354)]
23355pub unsafe fn vld3_dup_p8(a: *const p8) -> poly8x8x3_t {
23356 let mut ret_val: poly8x8x3_t = transmute(vld3_dup_s8(transmute(a)));
23357 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
23358 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
23359 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
23360 ret_val
23361}
23362#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23363#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_p8)"]
23364#[doc = "## Safety"]
23365#[doc = " * Neon instrinsic unsafe"]
23366#[inline]
23367#[cfg(target_endian = "little")]
23368#[target_feature(enable = "neon")]
23369#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23370#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23371#[cfg_attr(
23372 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23373 assert_instr(ld3r)
23374)]
23375#[cfg_attr(
23376 not(target_arch = "arm"),
23377 stable(feature = "neon_intrinsics", since = "1.59.0")
23378)]
23379#[cfg_attr(
23380 target_arch = "arm",
23381 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23382)]
23383pub unsafe fn vld3q_dup_p8(a: *const p8) -> poly8x16x3_t {
23384 transmute(vld3q_dup_s8(transmute(a)))
23385}
23386#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23387#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_p8)"]
23388#[doc = "## Safety"]
23389#[doc = " * Neon instrinsic unsafe"]
23390#[inline]
23391#[cfg(target_endian = "big")]
23392#[target_feature(enable = "neon")]
23393#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23394#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23395#[cfg_attr(
23396 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23397 assert_instr(ld3r)
23398)]
23399#[cfg_attr(
23400 not(target_arch = "arm"),
23401 stable(feature = "neon_intrinsics", since = "1.59.0")
23402)]
23403#[cfg_attr(
23404 target_arch = "arm",
23405 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23406)]
23407pub unsafe fn vld3q_dup_p8(a: *const p8) -> poly8x16x3_t {
23408 let mut ret_val: poly8x16x3_t = transmute(vld3q_dup_s8(transmute(a)));
23409 ret_val.0 = unsafe {
23410 simd_shuffle!(
23411 ret_val.0,
23412 ret_val.0,
23413 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23414 )
23415 };
23416 ret_val.1 = unsafe {
23417 simd_shuffle!(
23418 ret_val.1,
23419 ret_val.1,
23420 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23421 )
23422 };
23423 ret_val.2 = unsafe {
23424 simd_shuffle!(
23425 ret_val.2,
23426 ret_val.2,
23427 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23428 )
23429 };
23430 ret_val
23431}
23432#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23433#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p16)"]
23434#[doc = "## Safety"]
23435#[doc = " * Neon instrinsic unsafe"]
23436#[inline]
23437#[cfg(target_endian = "little")]
23438#[target_feature(enable = "neon")]
23439#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23440#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23441#[cfg_attr(
23442 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23443 assert_instr(ld3r)
23444)]
23445#[cfg_attr(
23446 not(target_arch = "arm"),
23447 stable(feature = "neon_intrinsics", since = "1.59.0")
23448)]
23449#[cfg_attr(
23450 target_arch = "arm",
23451 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23452)]
23453pub unsafe fn vld3_dup_p16(a: *const p16) -> poly16x4x3_t {
23454 transmute(vld3_dup_s16(transmute(a)))
23455}
23456#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23457#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p16)"]
23458#[doc = "## Safety"]
23459#[doc = " * Neon instrinsic unsafe"]
23460#[inline]
23461#[cfg(target_endian = "big")]
23462#[target_feature(enable = "neon")]
23463#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23464#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23465#[cfg_attr(
23466 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23467 assert_instr(ld3r)
23468)]
23469#[cfg_attr(
23470 not(target_arch = "arm"),
23471 stable(feature = "neon_intrinsics", since = "1.59.0")
23472)]
23473#[cfg_attr(
23474 target_arch = "arm",
23475 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23476)]
23477pub unsafe fn vld3_dup_p16(a: *const p16) -> poly16x4x3_t {
23478 let mut ret_val: poly16x4x3_t = transmute(vld3_dup_s16(transmute(a)));
23479 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
23480 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
23481 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
23482 ret_val
23483}
23484#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23485#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_p16)"]
23486#[doc = "## Safety"]
23487#[doc = " * Neon instrinsic unsafe"]
23488#[inline]
23489#[cfg(target_endian = "little")]
23490#[target_feature(enable = "neon")]
23491#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23492#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23493#[cfg_attr(
23494 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23495 assert_instr(ld3r)
23496)]
23497#[cfg_attr(
23498 not(target_arch = "arm"),
23499 stable(feature = "neon_intrinsics", since = "1.59.0")
23500)]
23501#[cfg_attr(
23502 target_arch = "arm",
23503 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23504)]
23505pub unsafe fn vld3q_dup_p16(a: *const p16) -> poly16x8x3_t {
23506 transmute(vld3q_dup_s16(transmute(a)))
23507}
23508#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
23509#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_p16)"]
23510#[doc = "## Safety"]
23511#[doc = " * Neon instrinsic unsafe"]
23512#[inline]
23513#[cfg(target_endian = "big")]
23514#[target_feature(enable = "neon")]
23515#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23516#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23517#[cfg_attr(
23518 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23519 assert_instr(ld3r)
23520)]
23521#[cfg_attr(
23522 not(target_arch = "arm"),
23523 stable(feature = "neon_intrinsics", since = "1.59.0")
23524)]
23525#[cfg_attr(
23526 target_arch = "arm",
23527 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23528)]
23529pub unsafe fn vld3q_dup_p16(a: *const p16) -> poly16x8x3_t {
23530 let mut ret_val: poly16x8x3_t = transmute(vld3q_dup_s16(transmute(a)));
23531 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
23532 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
23533 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
23534 ret_val
23535}
23536#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
23537#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_f16)"]
23538#[doc = "## Safety"]
23539#[doc = " * Neon instrinsic unsafe"]
23540#[inline]
23541#[target_feature(enable = "neon")]
23542#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23543#[cfg(target_arch = "arm")]
23544#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23545#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
23546#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23547#[cfg(not(target_arch = "arm64ec"))]
23548pub unsafe fn vld3_f16(a: *const f16) -> float16x4x3_t {
23549 unsafe extern "unadjusted" {
23550 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v4f16.p0")]
23551 fn _vld3_f16(ptr: *const f16, size: i32) -> float16x4x3_t;
23552 }
23553 _vld3_f16(a as _, 2)
23554}
23555#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
23556#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_f16)"]
23557#[doc = "## Safety"]
23558#[doc = " * Neon instrinsic unsafe"]
23559#[inline]
23560#[target_feature(enable = "neon")]
23561#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23562#[cfg(target_arch = "arm")]
23563#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23564#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
23565#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23566#[cfg(not(target_arch = "arm64ec"))]
23567pub unsafe fn vld3q_f16(a: *const f16) -> float16x8x3_t {
23568 unsafe extern "unadjusted" {
23569 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v8f16.p0")]
23570 fn _vld3q_f16(ptr: *const f16, size: i32) -> float16x8x3_t;
23571 }
23572 _vld3q_f16(a as _, 2)
23573}
23574#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
23575#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_f16)"]
23576#[doc = "## Safety"]
23577#[doc = " * Neon instrinsic unsafe"]
23578#[inline]
23579#[target_feature(enable = "neon")]
23580#[cfg(not(target_arch = "arm"))]
23581#[cfg_attr(
23582 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23583 assert_instr(ld3)
23584)]
23585#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
23586#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23587#[cfg(not(target_arch = "arm64ec"))]
23588pub unsafe fn vld3_f16(a: *const f16) -> float16x4x3_t {
23589 unsafe extern "unadjusted" {
23590 #[cfg_attr(
23591 any(target_arch = "aarch64", target_arch = "arm64ec"),
23592 link_name = "llvm.aarch64.neon.ld3.v4f16.p0"
23593 )]
23594 fn _vld3_f16(ptr: *const f16) -> float16x4x3_t;
23595 }
23596 _vld3_f16(a as _)
23597}
23598#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
23599#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_f16)"]
23600#[doc = "## Safety"]
23601#[doc = " * Neon instrinsic unsafe"]
23602#[inline]
23603#[target_feature(enable = "neon")]
23604#[cfg(not(target_arch = "arm"))]
23605#[cfg_attr(
23606 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23607 assert_instr(ld3)
23608)]
23609#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
23610#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23611#[cfg(not(target_arch = "arm64ec"))]
23612pub unsafe fn vld3q_f16(a: *const f16) -> float16x8x3_t {
23613 unsafe extern "unadjusted" {
23614 #[cfg_attr(
23615 any(target_arch = "aarch64", target_arch = "arm64ec"),
23616 link_name = "llvm.aarch64.neon.ld3.v8f16.p0"
23617 )]
23618 fn _vld3q_f16(ptr: *const f16) -> float16x8x3_t;
23619 }
23620 _vld3q_f16(a as _)
23621}
23622#[doc = "Load multiple 3-element structures to three registers"]
23623#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_f32)"]
23624#[doc = "## Safety"]
23625#[doc = " * Neon instrinsic unsafe"]
23626#[inline]
23627#[target_feature(enable = "neon")]
23628#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23629#[cfg(not(target_arch = "arm"))]
23630#[cfg_attr(test, assert_instr(ld3))]
23631pub unsafe fn vld3_f32(a: *const f32) -> float32x2x3_t {
23632 unsafe extern "unadjusted" {
23633 #[cfg_attr(
23634 any(target_arch = "aarch64", target_arch = "arm64ec"),
23635 link_name = "llvm.aarch64.neon.ld3.v2f32.p0"
23636 )]
23637 fn _vld3_f32(ptr: *const float32x2_t) -> float32x2x3_t;
23638 }
23639 _vld3_f32(a as _)
23640}
23641#[doc = "Load multiple 3-element structures to three registers"]
23642#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_f32)"]
23643#[doc = "## Safety"]
23644#[doc = " * Neon instrinsic unsafe"]
23645#[inline]
23646#[target_feature(enable = "neon")]
23647#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23648#[cfg(not(target_arch = "arm"))]
23649#[cfg_attr(test, assert_instr(ld3))]
23650pub unsafe fn vld3q_f32(a: *const f32) -> float32x4x3_t {
23651 unsafe extern "unadjusted" {
23652 #[cfg_attr(
23653 any(target_arch = "aarch64", target_arch = "arm64ec"),
23654 link_name = "llvm.aarch64.neon.ld3.v4f32.p0"
23655 )]
23656 fn _vld3q_f32(ptr: *const float32x4_t) -> float32x4x3_t;
23657 }
23658 _vld3q_f32(a as _)
23659}
23660#[doc = "Load multiple 3-element structures to three registers"]
23661#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s8)"]
23662#[doc = "## Safety"]
23663#[doc = " * Neon instrinsic unsafe"]
23664#[inline]
23665#[target_feature(enable = "neon")]
23666#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23667#[cfg(not(target_arch = "arm"))]
23668#[cfg_attr(test, assert_instr(ld3))]
23669pub unsafe fn vld3_s8(a: *const i8) -> int8x8x3_t {
23670 unsafe extern "unadjusted" {
23671 #[cfg_attr(
23672 any(target_arch = "aarch64", target_arch = "arm64ec"),
23673 link_name = "llvm.aarch64.neon.ld3.v8i8.p0"
23674 )]
23675 fn _vld3_s8(ptr: *const int8x8_t) -> int8x8x3_t;
23676 }
23677 _vld3_s8(a as _)
23678}
23679#[doc = "Load multiple 3-element structures to three registers"]
23680#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s8)"]
23681#[doc = "## Safety"]
23682#[doc = " * Neon instrinsic unsafe"]
23683#[inline]
23684#[target_feature(enable = "neon")]
23685#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23686#[cfg(not(target_arch = "arm"))]
23687#[cfg_attr(test, assert_instr(ld3))]
23688pub unsafe fn vld3q_s8(a: *const i8) -> int8x16x3_t {
23689 unsafe extern "unadjusted" {
23690 #[cfg_attr(
23691 any(target_arch = "aarch64", target_arch = "arm64ec"),
23692 link_name = "llvm.aarch64.neon.ld3.v16i8.p0"
23693 )]
23694 fn _vld3q_s8(ptr: *const int8x16_t) -> int8x16x3_t;
23695 }
23696 _vld3q_s8(a as _)
23697}
23698#[doc = "Load multiple 3-element structures to three registers"]
23699#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s16)"]
23700#[doc = "## Safety"]
23701#[doc = " * Neon instrinsic unsafe"]
23702#[inline]
23703#[target_feature(enable = "neon")]
23704#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23705#[cfg(not(target_arch = "arm"))]
23706#[cfg_attr(test, assert_instr(ld3))]
23707pub unsafe fn vld3_s16(a: *const i16) -> int16x4x3_t {
23708 unsafe extern "unadjusted" {
23709 #[cfg_attr(
23710 any(target_arch = "aarch64", target_arch = "arm64ec"),
23711 link_name = "llvm.aarch64.neon.ld3.v4i16.p0"
23712 )]
23713 fn _vld3_s16(ptr: *const int16x4_t) -> int16x4x3_t;
23714 }
23715 _vld3_s16(a as _)
23716}
23717#[doc = "Load multiple 3-element structures to three registers"]
23718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s16)"]
23719#[doc = "## Safety"]
23720#[doc = " * Neon instrinsic unsafe"]
23721#[inline]
23722#[target_feature(enable = "neon")]
23723#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23724#[cfg(not(target_arch = "arm"))]
23725#[cfg_attr(test, assert_instr(ld3))]
23726pub unsafe fn vld3q_s16(a: *const i16) -> int16x8x3_t {
23727 unsafe extern "unadjusted" {
23728 #[cfg_attr(
23729 any(target_arch = "aarch64", target_arch = "arm64ec"),
23730 link_name = "llvm.aarch64.neon.ld3.v8i16.p0"
23731 )]
23732 fn _vld3q_s16(ptr: *const int16x8_t) -> int16x8x3_t;
23733 }
23734 _vld3q_s16(a as _)
23735}
23736#[doc = "Load multiple 3-element structures to three registers"]
23737#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s32)"]
23738#[doc = "## Safety"]
23739#[doc = " * Neon instrinsic unsafe"]
23740#[inline]
23741#[target_feature(enable = "neon")]
23742#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23743#[cfg(not(target_arch = "arm"))]
23744#[cfg_attr(test, assert_instr(ld3))]
23745pub unsafe fn vld3_s32(a: *const i32) -> int32x2x3_t {
23746 unsafe extern "unadjusted" {
23747 #[cfg_attr(
23748 any(target_arch = "aarch64", target_arch = "arm64ec"),
23749 link_name = "llvm.aarch64.neon.ld3.v2i32.p0"
23750 )]
23751 fn _vld3_s32(ptr: *const int32x2_t) -> int32x2x3_t;
23752 }
23753 _vld3_s32(a as _)
23754}
23755#[doc = "Load multiple 3-element structures to three registers"]
23756#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s32)"]
23757#[doc = "## Safety"]
23758#[doc = " * Neon instrinsic unsafe"]
23759#[inline]
23760#[target_feature(enable = "neon")]
23761#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23762#[cfg(not(target_arch = "arm"))]
23763#[cfg_attr(test, assert_instr(ld3))]
23764pub unsafe fn vld3q_s32(a: *const i32) -> int32x4x3_t {
23765 unsafe extern "unadjusted" {
23766 #[cfg_attr(
23767 any(target_arch = "aarch64", target_arch = "arm64ec"),
23768 link_name = "llvm.aarch64.neon.ld3.v4i32.p0"
23769 )]
23770 fn _vld3q_s32(ptr: *const int32x4_t) -> int32x4x3_t;
23771 }
23772 _vld3q_s32(a as _)
23773}
23774#[doc = "Load multiple 3-element structures to three registers"]
23775#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_f32)"]
23776#[doc = "## Safety"]
23777#[doc = " * Neon instrinsic unsafe"]
23778#[inline]
23779#[cfg(target_arch = "arm")]
23780#[target_feature(enable = "neon,v7")]
23781#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23782#[cfg_attr(test, assert_instr(vld3))]
23783pub unsafe fn vld3_f32(a: *const f32) -> float32x2x3_t {
23784 unsafe extern "unadjusted" {
23785 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v2f32.p0")]
23786 fn _vld3_f32(ptr: *const i8, size: i32) -> float32x2x3_t;
23787 }
23788 _vld3_f32(a as *const i8, 4)
23789}
23790#[doc = "Load multiple 3-element structures to three registers"]
23791#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_f32)"]
23792#[doc = "## Safety"]
23793#[doc = " * Neon instrinsic unsafe"]
23794#[inline]
23795#[cfg(target_arch = "arm")]
23796#[target_feature(enable = "neon,v7")]
23797#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23798#[cfg_attr(test, assert_instr(vld3))]
23799pub unsafe fn vld3q_f32(a: *const f32) -> float32x4x3_t {
23800 unsafe extern "unadjusted" {
23801 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v4f32.p0")]
23802 fn _vld3q_f32(ptr: *const i8, size: i32) -> float32x4x3_t;
23803 }
23804 _vld3q_f32(a as *const i8, 4)
23805}
23806#[doc = "Load multiple 3-element structures to three registers"]
23807#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s8)"]
23808#[doc = "## Safety"]
23809#[doc = " * Neon instrinsic unsafe"]
23810#[inline]
23811#[cfg(target_arch = "arm")]
23812#[target_feature(enable = "neon,v7")]
23813#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23814#[cfg_attr(test, assert_instr(vld3))]
23815pub unsafe fn vld3_s8(a: *const i8) -> int8x8x3_t {
23816 unsafe extern "unadjusted" {
23817 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v8i8.p0")]
23818 fn _vld3_s8(ptr: *const i8, size: i32) -> int8x8x3_t;
23819 }
23820 _vld3_s8(a as *const i8, 1)
23821}
23822#[doc = "Load multiple 3-element structures to three registers"]
23823#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s8)"]
23824#[doc = "## Safety"]
23825#[doc = " * Neon instrinsic unsafe"]
23826#[inline]
23827#[cfg(target_arch = "arm")]
23828#[target_feature(enable = "neon,v7")]
23829#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23830#[cfg_attr(test, assert_instr(vld3))]
23831pub unsafe fn vld3q_s8(a: *const i8) -> int8x16x3_t {
23832 unsafe extern "unadjusted" {
23833 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v16i8.p0")]
23834 fn _vld3q_s8(ptr: *const i8, size: i32) -> int8x16x3_t;
23835 }
23836 _vld3q_s8(a as *const i8, 1)
23837}
23838#[doc = "Load multiple 3-element structures to three registers"]
23839#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s16)"]
23840#[doc = "## Safety"]
23841#[doc = " * Neon instrinsic unsafe"]
23842#[inline]
23843#[cfg(target_arch = "arm")]
23844#[target_feature(enable = "neon,v7")]
23845#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23846#[cfg_attr(test, assert_instr(vld3))]
23847pub unsafe fn vld3_s16(a: *const i16) -> int16x4x3_t {
23848 unsafe extern "unadjusted" {
23849 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v4i16.p0")]
23850 fn _vld3_s16(ptr: *const i8, size: i32) -> int16x4x3_t;
23851 }
23852 _vld3_s16(a as *const i8, 2)
23853}
23854#[doc = "Load multiple 3-element structures to three registers"]
23855#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s16)"]
23856#[doc = "## Safety"]
23857#[doc = " * Neon instrinsic unsafe"]
23858#[inline]
23859#[cfg(target_arch = "arm")]
23860#[target_feature(enable = "neon,v7")]
23861#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23862#[cfg_attr(test, assert_instr(vld3))]
23863pub unsafe fn vld3q_s16(a: *const i16) -> int16x8x3_t {
23864 unsafe extern "unadjusted" {
23865 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v8i16.p0")]
23866 fn _vld3q_s16(ptr: *const i8, size: i32) -> int16x8x3_t;
23867 }
23868 _vld3q_s16(a as *const i8, 2)
23869}
23870#[doc = "Load multiple 3-element structures to three registers"]
23871#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s32)"]
23872#[doc = "## Safety"]
23873#[doc = " * Neon instrinsic unsafe"]
23874#[inline]
23875#[cfg(target_arch = "arm")]
23876#[target_feature(enable = "neon,v7")]
23877#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23878#[cfg_attr(test, assert_instr(vld3))]
23879pub unsafe fn vld3_s32(a: *const i32) -> int32x2x3_t {
23880 unsafe extern "unadjusted" {
23881 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v2i32.p0")]
23882 fn _vld3_s32(ptr: *const i8, size: i32) -> int32x2x3_t;
23883 }
23884 _vld3_s32(a as *const i8, 4)
23885}
23886#[doc = "Load multiple 3-element structures to three registers"]
23887#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s32)"]
23888#[doc = "## Safety"]
23889#[doc = " * Neon instrinsic unsafe"]
23890#[inline]
23891#[cfg(target_arch = "arm")]
23892#[target_feature(enable = "neon,v7")]
23893#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23894#[cfg_attr(test, assert_instr(vld3))]
23895pub unsafe fn vld3q_s32(a: *const i32) -> int32x4x3_t {
23896 unsafe extern "unadjusted" {
23897 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v4i32.p0")]
23898 fn _vld3q_s32(ptr: *const i8, size: i32) -> int32x4x3_t;
23899 }
23900 _vld3q_s32(a as *const i8, 4)
23901}
23902#[doc = "Load multiple 3-element structures to two registers"]
23903#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_f16)"]
23904#[doc = "## Safety"]
23905#[doc = " * Neon instrinsic unsafe"]
23906#[inline]
23907#[target_feature(enable = "neon,v7")]
23908#[cfg(target_arch = "arm")]
23909#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
23910#[rustc_legacy_const_generics(2)]
23911#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
23912#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23913#[cfg(not(target_arch = "arm64ec"))]
23914pub unsafe fn vld3_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x3_t) -> float16x4x3_t {
23915 static_assert_uimm_bits!(LANE, 2);
23916 unsafe extern "unadjusted" {
23917 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v4f16.p0")]
23918 fn _vld3_lane_f16(
23919 ptr: *const f16,
23920 a: float16x4_t,
23921 b: float16x4_t,
23922 c: float16x4_t,
23923 n: i32,
23924 size: i32,
23925 ) -> float16x4x3_t;
23926 }
23927 _vld3_lane_f16(a as _, b.0, b.1, b.2, LANE, 2)
23928}
23929#[doc = "Load multiple 3-element structures to two registers"]
23930#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_f16)"]
23931#[doc = "## Safety"]
23932#[doc = " * Neon instrinsic unsafe"]
23933#[inline]
23934#[target_feature(enable = "neon,v7")]
23935#[cfg(target_arch = "arm")]
23936#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
23937#[rustc_legacy_const_generics(2)]
23938#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
23939#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23940#[cfg(not(target_arch = "arm64ec"))]
23941pub unsafe fn vld3q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x3_t) -> float16x8x3_t {
23942 static_assert_uimm_bits!(LANE, 3);
23943 unsafe extern "unadjusted" {
23944 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v8f16.p0")]
23945 fn _vld3q_lane_f16(
23946 ptr: *const f16,
23947 a: float16x8_t,
23948 b: float16x8_t,
23949 c: float16x8_t,
23950 n: i32,
23951 size: i32,
23952 ) -> float16x8x3_t;
23953 }
23954 _vld3q_lane_f16(a as _, b.0, b.1, b.2, LANE, 2)
23955}
23956#[doc = "Load multiple 3-element structures to two registers"]
23957#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_f16)"]
23958#[doc = "## Safety"]
23959#[doc = " * Neon instrinsic unsafe"]
23960#[inline]
23961#[target_feature(enable = "neon")]
23962#[cfg(not(target_arch = "arm"))]
23963#[cfg_attr(
23964 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23965 assert_instr(ld3, LANE = 0)
23966)]
23967#[rustc_legacy_const_generics(2)]
23968#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
23969#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23970#[cfg(not(target_arch = "arm64ec"))]
23971pub unsafe fn vld3_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x3_t) -> float16x4x3_t {
23972 static_assert_uimm_bits!(LANE, 2);
23973 unsafe extern "unadjusted" {
23974 #[cfg_attr(
23975 any(target_arch = "aarch64", target_arch = "arm64ec"),
23976 link_name = "llvm.aarch64.neon.ld3lane.v4f16.p0"
23977 )]
23978 fn _vld3_lane_f16(
23979 a: float16x4_t,
23980 b: float16x4_t,
23981 c: float16x4_t,
23982 n: i64,
23983 ptr: *const f16,
23984 ) -> float16x4x3_t;
23985 }
23986 _vld3_lane_f16(b.0, b.1, b.2, LANE as i64, a as _)
23987}
23988#[doc = "Load multiple 3-element structures to two registers"]
23989#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_f16)"]
23990#[doc = "## Safety"]
23991#[doc = " * Neon instrinsic unsafe"]
23992#[inline]
23993#[target_feature(enable = "neon")]
23994#[cfg(not(target_arch = "arm"))]
23995#[cfg_attr(
23996 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23997 assert_instr(ld3, LANE = 0)
23998)]
23999#[rustc_legacy_const_generics(2)]
24000#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
24001#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24002#[cfg(not(target_arch = "arm64ec"))]
24003pub unsafe fn vld3q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x3_t) -> float16x8x3_t {
24004 static_assert_uimm_bits!(LANE, 3);
24005 unsafe extern "unadjusted" {
24006 #[cfg_attr(
24007 any(target_arch = "aarch64", target_arch = "arm64ec"),
24008 link_name = "llvm.aarch64.neon.ld3lane.v8f16.p0"
24009 )]
24010 fn _vld3q_lane_f16(
24011 a: float16x8_t,
24012 b: float16x8_t,
24013 c: float16x8_t,
24014 n: i64,
24015 ptr: *const f16,
24016 ) -> float16x8x3_t;
24017 }
24018 _vld3q_lane_f16(b.0, b.1, b.2, LANE as i64, a as _)
24019}
24020#[doc = "Load multiple 3-element structures to three registers"]
24021#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_f32)"]
24022#[doc = "## Safety"]
24023#[doc = " * Neon instrinsic unsafe"]
24024#[inline]
24025#[target_feature(enable = "neon")]
24026#[cfg(not(target_arch = "arm"))]
24027#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
24028#[rustc_legacy_const_generics(2)]
24029#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24030pub unsafe fn vld3_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x3_t) -> float32x2x3_t {
24031 static_assert_uimm_bits!(LANE, 1);
24032 unsafe extern "unadjusted" {
24033 #[cfg_attr(
24034 any(target_arch = "aarch64", target_arch = "arm64ec"),
24035 link_name = "llvm.aarch64.neon.ld3lane.v2f32.p0"
24036 )]
24037 fn _vld3_lane_f32(
24038 a: float32x2_t,
24039 b: float32x2_t,
24040 c: float32x2_t,
24041 n: i64,
24042 ptr: *const i8,
24043 ) -> float32x2x3_t;
24044 }
24045 _vld3_lane_f32(b.0, b.1, b.2, LANE as i64, a as _)
24046}
24047#[doc = "Load multiple 3-element structures to three registers"]
24048#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_f32)"]
24049#[doc = "## Safety"]
24050#[doc = " * Neon instrinsic unsafe"]
24051#[inline]
24052#[target_feature(enable = "neon")]
24053#[cfg(not(target_arch = "arm"))]
24054#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
24055#[rustc_legacy_const_generics(2)]
24056#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24057pub unsafe fn vld3q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x3_t) -> float32x4x3_t {
24058 static_assert_uimm_bits!(LANE, 2);
24059 unsafe extern "unadjusted" {
24060 #[cfg_attr(
24061 any(target_arch = "aarch64", target_arch = "arm64ec"),
24062 link_name = "llvm.aarch64.neon.ld3lane.v4f32.p0"
24063 )]
24064 fn _vld3q_lane_f32(
24065 a: float32x4_t,
24066 b: float32x4_t,
24067 c: float32x4_t,
24068 n: i64,
24069 ptr: *const i8,
24070 ) -> float32x4x3_t;
24071 }
24072 _vld3q_lane_f32(b.0, b.1, b.2, LANE as i64, a as _)
24073}
24074#[doc = "Load multiple 3-element structures to three registers"]
24075#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_f32)"]
24076#[doc = "## Safety"]
24077#[doc = " * Neon instrinsic unsafe"]
24078#[inline]
24079#[cfg(target_arch = "arm")]
24080#[target_feature(enable = "neon,v7")]
24081#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
24082#[rustc_legacy_const_generics(2)]
24083#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24084pub unsafe fn vld3_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x3_t) -> float32x2x3_t {
24085 static_assert_uimm_bits!(LANE, 1);
24086 unsafe extern "unadjusted" {
24087 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v2f32.p0")]
24088 fn _vld3_lane_f32(
24089 ptr: *const i8,
24090 a: float32x2_t,
24091 b: float32x2_t,
24092 c: float32x2_t,
24093 n: i32,
24094 size: i32,
24095 ) -> float32x2x3_t;
24096 }
24097 _vld3_lane_f32(a as _, b.0, b.1, b.2, LANE, 4)
24098}
24099#[doc = "Load multiple 3-element structures to two registers"]
24100#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s8)"]
24101#[doc = "## Safety"]
24102#[doc = " * Neon instrinsic unsafe"]
24103#[inline]
24104#[target_feature(enable = "neon")]
24105#[cfg(not(target_arch = "arm"))]
24106#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
24107#[rustc_legacy_const_generics(2)]
24108#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24109pub unsafe fn vld3_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x3_t) -> int8x8x3_t {
24110 static_assert_uimm_bits!(LANE, 3);
24111 unsafe extern "unadjusted" {
24112 #[cfg_attr(
24113 any(target_arch = "aarch64", target_arch = "arm64ec"),
24114 link_name = "llvm.aarch64.neon.ld3lane.v8i8.p0"
24115 )]
24116 fn _vld3_lane_s8(
24117 a: int8x8_t,
24118 b: int8x8_t,
24119 c: int8x8_t,
24120 n: i64,
24121 ptr: *const i8,
24122 ) -> int8x8x3_t;
24123 }
24124 _vld3_lane_s8(b.0, b.1, b.2, LANE as i64, a as _)
24125}
24126#[doc = "Load multiple 3-element structures to two registers"]
24127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s16)"]
24128#[doc = "## Safety"]
24129#[doc = " * Neon instrinsic unsafe"]
24130#[inline]
24131#[target_feature(enable = "neon")]
24132#[cfg(not(target_arch = "arm"))]
24133#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
24134#[rustc_legacy_const_generics(2)]
24135#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24136pub unsafe fn vld3_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x3_t) -> int16x4x3_t {
24137 static_assert_uimm_bits!(LANE, 2);
24138 unsafe extern "unadjusted" {
24139 #[cfg_attr(
24140 any(target_arch = "aarch64", target_arch = "arm64ec"),
24141 link_name = "llvm.aarch64.neon.ld3lane.v4i16.p0"
24142 )]
24143 fn _vld3_lane_s16(
24144 a: int16x4_t,
24145 b: int16x4_t,
24146 c: int16x4_t,
24147 n: i64,
24148 ptr: *const i8,
24149 ) -> int16x4x3_t;
24150 }
24151 _vld3_lane_s16(b.0, b.1, b.2, LANE as i64, a as _)
24152}
24153#[doc = "Load multiple 3-element structures to two registers"]
24154#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_s16)"]
24155#[doc = "## Safety"]
24156#[doc = " * Neon instrinsic unsafe"]
24157#[inline]
24158#[target_feature(enable = "neon")]
24159#[cfg(not(target_arch = "arm"))]
24160#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
24161#[rustc_legacy_const_generics(2)]
24162#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24163pub unsafe fn vld3q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x3_t) -> int16x8x3_t {
24164 static_assert_uimm_bits!(LANE, 4);
24165 unsafe extern "unadjusted" {
24166 #[cfg_attr(
24167 any(target_arch = "aarch64", target_arch = "arm64ec"),
24168 link_name = "llvm.aarch64.neon.ld3lane.v8i16.p0"
24169 )]
24170 fn _vld3q_lane_s16(
24171 a: int16x8_t,
24172 b: int16x8_t,
24173 c: int16x8_t,
24174 n: i64,
24175 ptr: *const i8,
24176 ) -> int16x8x3_t;
24177 }
24178 _vld3q_lane_s16(b.0, b.1, b.2, LANE as i64, a as _)
24179}
24180#[doc = "Load multiple 3-element structures to two registers"]
24181#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s32)"]
24182#[doc = "## Safety"]
24183#[doc = " * Neon instrinsic unsafe"]
24184#[inline]
24185#[target_feature(enable = "neon")]
24186#[cfg(not(target_arch = "arm"))]
24187#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
24188#[rustc_legacy_const_generics(2)]
24189#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24190pub unsafe fn vld3_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x3_t) -> int32x2x3_t {
24191 static_assert_uimm_bits!(LANE, 1);
24192 unsafe extern "unadjusted" {
24193 #[cfg_attr(
24194 any(target_arch = "aarch64", target_arch = "arm64ec"),
24195 link_name = "llvm.aarch64.neon.ld3lane.v2i32.p0"
24196 )]
24197 fn _vld3_lane_s32(
24198 a: int32x2_t,
24199 b: int32x2_t,
24200 c: int32x2_t,
24201 n: i64,
24202 ptr: *const i8,
24203 ) -> int32x2x3_t;
24204 }
24205 _vld3_lane_s32(b.0, b.1, b.2, LANE as i64, a as _)
24206}
24207#[doc = "Load multiple 3-element structures to two registers"]
24208#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_s32)"]
24209#[doc = "## Safety"]
24210#[doc = " * Neon instrinsic unsafe"]
24211#[inline]
24212#[target_feature(enable = "neon")]
24213#[cfg(not(target_arch = "arm"))]
24214#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
24215#[rustc_legacy_const_generics(2)]
24216#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24217pub unsafe fn vld3q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x3_t) -> int32x4x3_t {
24218 static_assert_uimm_bits!(LANE, 2);
24219 unsafe extern "unadjusted" {
24220 #[cfg_attr(
24221 any(target_arch = "aarch64", target_arch = "arm64ec"),
24222 link_name = "llvm.aarch64.neon.ld3lane.v4i32.p0"
24223 )]
24224 fn _vld3q_lane_s32(
24225 a: int32x4_t,
24226 b: int32x4_t,
24227 c: int32x4_t,
24228 n: i64,
24229 ptr: *const i8,
24230 ) -> int32x4x3_t;
24231 }
24232 _vld3q_lane_s32(b.0, b.1, b.2, LANE as i64, a as _)
24233}
24234#[doc = "Load multiple 3-element structures to two registers"]
24235#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s8)"]
24236#[doc = "## Safety"]
24237#[doc = " * Neon instrinsic unsafe"]
24238#[inline]
24239#[cfg(target_arch = "arm")]
24240#[target_feature(enable = "neon,v7")]
24241#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
24242#[rustc_legacy_const_generics(2)]
24243#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24244pub unsafe fn vld3_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x3_t) -> int8x8x3_t {
24245 static_assert_uimm_bits!(LANE, 3);
24246 unsafe extern "unadjusted" {
24247 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v8i8.p0")]
24248 fn _vld3_lane_s8(
24249 ptr: *const i8,
24250 a: int8x8_t,
24251 b: int8x8_t,
24252 c: int8x8_t,
24253 n: i32,
24254 size: i32,
24255 ) -> int8x8x3_t;
24256 }
24257 _vld3_lane_s8(a as _, b.0, b.1, b.2, LANE, 1)
24258}
24259#[doc = "Load multiple 3-element structures to two registers"]
24260#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s16)"]
24261#[doc = "## Safety"]
24262#[doc = " * Neon instrinsic unsafe"]
24263#[inline]
24264#[cfg(target_arch = "arm")]
24265#[target_feature(enable = "neon,v7")]
24266#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
24267#[rustc_legacy_const_generics(2)]
24268#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24269pub unsafe fn vld3_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x3_t) -> int16x4x3_t {
24270 static_assert_uimm_bits!(LANE, 2);
24271 unsafe extern "unadjusted" {
24272 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v4i16.p0")]
24273 fn _vld3_lane_s16(
24274 ptr: *const i8,
24275 a: int16x4_t,
24276 b: int16x4_t,
24277 c: int16x4_t,
24278 n: i32,
24279 size: i32,
24280 ) -> int16x4x3_t;
24281 }
24282 _vld3_lane_s16(a as _, b.0, b.1, b.2, LANE, 2)
24283}
24284#[doc = "Load multiple 3-element structures to two registers"]
24285#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_s16)"]
24286#[doc = "## Safety"]
24287#[doc = " * Neon instrinsic unsafe"]
24288#[inline]
24289#[cfg(target_arch = "arm")]
24290#[target_feature(enable = "neon,v7")]
24291#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
24292#[rustc_legacy_const_generics(2)]
24293#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24294pub unsafe fn vld3q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x3_t) -> int16x8x3_t {
24295 static_assert_uimm_bits!(LANE, 3);
24296 unsafe extern "unadjusted" {
24297 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v8i16.p0")]
24298 fn _vld3q_lane_s16(
24299 ptr: *const i8,
24300 a: int16x8_t,
24301 b: int16x8_t,
24302 c: int16x8_t,
24303 n: i32,
24304 size: i32,
24305 ) -> int16x8x3_t;
24306 }
24307 _vld3q_lane_s16(a as _, b.0, b.1, b.2, LANE, 2)
24308}
24309#[doc = "Load multiple 3-element structures to two registers"]
24310#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s32)"]
24311#[doc = "## Safety"]
24312#[doc = " * Neon instrinsic unsafe"]
24313#[inline]
24314#[cfg(target_arch = "arm")]
24315#[target_feature(enable = "neon,v7")]
24316#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
24317#[rustc_legacy_const_generics(2)]
24318#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24319pub unsafe fn vld3_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x3_t) -> int32x2x3_t {
24320 static_assert_uimm_bits!(LANE, 1);
24321 unsafe extern "unadjusted" {
24322 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v2i32.p0")]
24323 fn _vld3_lane_s32(
24324 ptr: *const i8,
24325 a: int32x2_t,
24326 b: int32x2_t,
24327 c: int32x2_t,
24328 n: i32,
24329 size: i32,
24330 ) -> int32x2x3_t;
24331 }
24332 _vld3_lane_s32(a as _, b.0, b.1, b.2, LANE, 4)
24333}
24334#[doc = "Load multiple 3-element structures to two registers"]
24335#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_s32)"]
24336#[doc = "## Safety"]
24337#[doc = " * Neon instrinsic unsafe"]
24338#[inline]
24339#[cfg(target_arch = "arm")]
24340#[target_feature(enable = "neon,v7")]
24341#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
24342#[rustc_legacy_const_generics(2)]
24343#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24344pub unsafe fn vld3q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x3_t) -> int32x4x3_t {
24345 static_assert_uimm_bits!(LANE, 2);
24346 unsafe extern "unadjusted" {
24347 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v4i32.p0")]
24348 fn _vld3q_lane_s32(
24349 ptr: *const i8,
24350 a: int32x4_t,
24351 b: int32x4_t,
24352 c: int32x4_t,
24353 n: i32,
24354 size: i32,
24355 ) -> int32x4x3_t;
24356 }
24357 _vld3q_lane_s32(a as _, b.0, b.1, b.2, LANE, 4)
24358}
24359#[doc = "Load multiple 3-element structures to three registers"]
24360#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_u8)"]
24361#[doc = "## Safety"]
24362#[doc = " * Neon instrinsic unsafe"]
24363#[inline]
24364#[target_feature(enable = "neon")]
24365#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24366#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
24367#[cfg_attr(
24368 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24369 assert_instr(ld3, LANE = 0)
24370)]
24371#[rustc_legacy_const_generics(2)]
24372#[cfg_attr(
24373 not(target_arch = "arm"),
24374 stable(feature = "neon_intrinsics", since = "1.59.0")
24375)]
24376#[cfg_attr(
24377 target_arch = "arm",
24378 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24379)]
24380pub unsafe fn vld3_lane_u8<const LANE: i32>(a: *const u8, b: uint8x8x3_t) -> uint8x8x3_t {
24381 static_assert_uimm_bits!(LANE, 3);
24382 transmute(vld3_lane_s8::<LANE>(transmute(a), transmute(b)))
24383}
24384#[doc = "Load multiple 3-element structures to three registers"]
24385#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_u16)"]
24386#[doc = "## Safety"]
24387#[doc = " * Neon instrinsic unsafe"]
24388#[inline]
24389#[target_feature(enable = "neon")]
24390#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24391#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
24392#[cfg_attr(
24393 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24394 assert_instr(ld3, LANE = 0)
24395)]
24396#[rustc_legacy_const_generics(2)]
24397#[cfg_attr(
24398 not(target_arch = "arm"),
24399 stable(feature = "neon_intrinsics", since = "1.59.0")
24400)]
24401#[cfg_attr(
24402 target_arch = "arm",
24403 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24404)]
24405pub unsafe fn vld3_lane_u16<const LANE: i32>(a: *const u16, b: uint16x4x3_t) -> uint16x4x3_t {
24406 static_assert_uimm_bits!(LANE, 2);
24407 transmute(vld3_lane_s16::<LANE>(transmute(a), transmute(b)))
24408}
24409#[doc = "Load multiple 3-element structures to three registers"]
24410#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_u16)"]
24411#[doc = "## Safety"]
24412#[doc = " * Neon instrinsic unsafe"]
24413#[inline]
24414#[target_feature(enable = "neon")]
24415#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24416#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
24417#[cfg_attr(
24418 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24419 assert_instr(ld3, LANE = 0)
24420)]
24421#[rustc_legacy_const_generics(2)]
24422#[cfg_attr(
24423 not(target_arch = "arm"),
24424 stable(feature = "neon_intrinsics", since = "1.59.0")
24425)]
24426#[cfg_attr(
24427 target_arch = "arm",
24428 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24429)]
24430pub unsafe fn vld3q_lane_u16<const LANE: i32>(a: *const u16, b: uint16x8x3_t) -> uint16x8x3_t {
24431 static_assert_uimm_bits!(LANE, 3);
24432 transmute(vld3q_lane_s16::<LANE>(transmute(a), transmute(b)))
24433}
24434#[doc = "Load multiple 3-element structures to three registers"]
24435#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_u32)"]
24436#[doc = "## Safety"]
24437#[doc = " * Neon instrinsic unsafe"]
24438#[inline]
24439#[target_feature(enable = "neon")]
24440#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24441#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
24442#[cfg_attr(
24443 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24444 assert_instr(ld3, LANE = 0)
24445)]
24446#[rustc_legacy_const_generics(2)]
24447#[cfg_attr(
24448 not(target_arch = "arm"),
24449 stable(feature = "neon_intrinsics", since = "1.59.0")
24450)]
24451#[cfg_attr(
24452 target_arch = "arm",
24453 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24454)]
24455pub unsafe fn vld3_lane_u32<const LANE: i32>(a: *const u32, b: uint32x2x3_t) -> uint32x2x3_t {
24456 static_assert_uimm_bits!(LANE, 1);
24457 transmute(vld3_lane_s32::<LANE>(transmute(a), transmute(b)))
24458}
24459#[doc = "Load multiple 3-element structures to three registers"]
24460#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_u32)"]
24461#[doc = "## Safety"]
24462#[doc = " * Neon instrinsic unsafe"]
24463#[inline]
24464#[target_feature(enable = "neon")]
24465#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24466#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
24467#[cfg_attr(
24468 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24469 assert_instr(ld3, LANE = 0)
24470)]
24471#[rustc_legacy_const_generics(2)]
24472#[cfg_attr(
24473 not(target_arch = "arm"),
24474 stable(feature = "neon_intrinsics", since = "1.59.0")
24475)]
24476#[cfg_attr(
24477 target_arch = "arm",
24478 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24479)]
24480pub unsafe fn vld3q_lane_u32<const LANE: i32>(a: *const u32, b: uint32x4x3_t) -> uint32x4x3_t {
24481 static_assert_uimm_bits!(LANE, 2);
24482 transmute(vld3q_lane_s32::<LANE>(transmute(a), transmute(b)))
24483}
24484#[doc = "Load multiple 3-element structures to three registers"]
24485#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_p8)"]
24486#[doc = "## Safety"]
24487#[doc = " * Neon instrinsic unsafe"]
24488#[inline]
24489#[target_feature(enable = "neon")]
24490#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24491#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
24492#[cfg_attr(
24493 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24494 assert_instr(ld3, LANE = 0)
24495)]
24496#[rustc_legacy_const_generics(2)]
24497#[cfg_attr(
24498 not(target_arch = "arm"),
24499 stable(feature = "neon_intrinsics", since = "1.59.0")
24500)]
24501#[cfg_attr(
24502 target_arch = "arm",
24503 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24504)]
24505pub unsafe fn vld3_lane_p8<const LANE: i32>(a: *const p8, b: poly8x8x3_t) -> poly8x8x3_t {
24506 static_assert_uimm_bits!(LANE, 3);
24507 transmute(vld3_lane_s8::<LANE>(transmute(a), transmute(b)))
24508}
24509#[doc = "Load multiple 3-element structures to three registers"]
24510#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_p16)"]
24511#[doc = "## Safety"]
24512#[doc = " * Neon instrinsic unsafe"]
24513#[inline]
24514#[target_feature(enable = "neon")]
24515#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24516#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
24517#[cfg_attr(
24518 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24519 assert_instr(ld3, LANE = 0)
24520)]
24521#[rustc_legacy_const_generics(2)]
24522#[cfg_attr(
24523 not(target_arch = "arm"),
24524 stable(feature = "neon_intrinsics", since = "1.59.0")
24525)]
24526#[cfg_attr(
24527 target_arch = "arm",
24528 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24529)]
24530pub unsafe fn vld3_lane_p16<const LANE: i32>(a: *const p16, b: poly16x4x3_t) -> poly16x4x3_t {
24531 static_assert_uimm_bits!(LANE, 2);
24532 transmute(vld3_lane_s16::<LANE>(transmute(a), transmute(b)))
24533}
24534#[doc = "Load multiple 3-element structures to three registers"]
24535#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_p16)"]
24536#[doc = "## Safety"]
24537#[doc = " * Neon instrinsic unsafe"]
24538#[inline]
24539#[target_feature(enable = "neon")]
24540#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24541#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
24542#[cfg_attr(
24543 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24544 assert_instr(ld3, LANE = 0)
24545)]
24546#[rustc_legacy_const_generics(2)]
24547#[cfg_attr(
24548 not(target_arch = "arm"),
24549 stable(feature = "neon_intrinsics", since = "1.59.0")
24550)]
24551#[cfg_attr(
24552 target_arch = "arm",
24553 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24554)]
24555pub unsafe fn vld3q_lane_p16<const LANE: i32>(a: *const p16, b: poly16x8x3_t) -> poly16x8x3_t {
24556 static_assert_uimm_bits!(LANE, 3);
24557 transmute(vld3q_lane_s16::<LANE>(transmute(a), transmute(b)))
24558}
24559#[doc = "Load multiple 3-element structures to three registers"]
24560#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_p64)"]
24561#[doc = "## Safety"]
24562#[doc = " * Neon instrinsic unsafe"]
24563#[inline]
24564#[target_feature(enable = "neon,aes")]
24565#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
24566#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
24567#[cfg_attr(
24568 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24569 assert_instr(nop)
24570)]
24571#[cfg_attr(
24572 not(target_arch = "arm"),
24573 stable(feature = "neon_intrinsics", since = "1.59.0")
24574)]
24575#[cfg_attr(
24576 target_arch = "arm",
24577 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24578)]
24579pub unsafe fn vld3_p64(a: *const p64) -> poly64x1x3_t {
24580 transmute(vld3_s64(transmute(a)))
24581}
24582#[doc = "Load multiple 3-element structures to three registers"]
24583#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s64)"]
24584#[doc = "## Safety"]
24585#[doc = " * Neon instrinsic unsafe"]
24586#[inline]
24587#[target_feature(enable = "neon")]
24588#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24589#[cfg(not(target_arch = "arm"))]
24590#[cfg_attr(test, assert_instr(nop))]
24591pub unsafe fn vld3_s64(a: *const i64) -> int64x1x3_t {
24592 unsafe extern "unadjusted" {
24593 #[cfg_attr(
24594 any(target_arch = "aarch64", target_arch = "arm64ec"),
24595 link_name = "llvm.aarch64.neon.ld3.v1i64.p0"
24596 )]
24597 fn _vld3_s64(ptr: *const int64x1_t) -> int64x1x3_t;
24598 }
24599 _vld3_s64(a as _)
24600}
24601#[doc = "Load multiple 3-element structures to three registers"]
24602#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s64)"]
24603#[doc = "## Safety"]
24604#[doc = " * Neon instrinsic unsafe"]
24605#[inline]
24606#[cfg(target_arch = "arm")]
24607#[target_feature(enable = "neon,v7")]
24608#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24609#[cfg_attr(test, assert_instr(nop))]
24610pub unsafe fn vld3_s64(a: *const i64) -> int64x1x3_t {
24611 unsafe extern "unadjusted" {
24612 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v1i64.p0")]
24613 fn _vld3_s64(ptr: *const i8, size: i32) -> int64x1x3_t;
24614 }
24615 _vld3_s64(a as *const i8, 8)
24616}
24617#[doc = "Load multiple 3-element structures to three registers"]
24618#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u64)"]
24619#[doc = "## Safety"]
24620#[doc = " * Neon instrinsic unsafe"]
24621#[inline]
24622#[target_feature(enable = "neon")]
24623#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24624#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
24625#[cfg_attr(
24626 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24627 assert_instr(nop)
24628)]
24629#[cfg_attr(
24630 not(target_arch = "arm"),
24631 stable(feature = "neon_intrinsics", since = "1.59.0")
24632)]
24633#[cfg_attr(
24634 target_arch = "arm",
24635 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24636)]
24637pub unsafe fn vld3_u64(a: *const u64) -> uint64x1x3_t {
24638 transmute(vld3_s64(transmute(a)))
24639}
24640#[doc = "Load multiple 3-element structures to three registers"]
24641#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u8)"]
24642#[doc = "## Safety"]
24643#[doc = " * Neon instrinsic unsafe"]
24644#[inline]
24645#[cfg(target_endian = "little")]
24646#[target_feature(enable = "neon")]
24647#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24648#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24649#[cfg_attr(
24650 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24651 assert_instr(ld3)
24652)]
24653#[cfg_attr(
24654 not(target_arch = "arm"),
24655 stable(feature = "neon_intrinsics", since = "1.59.0")
24656)]
24657#[cfg_attr(
24658 target_arch = "arm",
24659 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24660)]
24661pub unsafe fn vld3_u8(a: *const u8) -> uint8x8x3_t {
24662 transmute(vld3_s8(transmute(a)))
24663}
24664#[doc = "Load multiple 3-element structures to three registers"]
24665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u8)"]
24666#[doc = "## Safety"]
24667#[doc = " * Neon instrinsic unsafe"]
24668#[inline]
24669#[cfg(target_endian = "big")]
24670#[target_feature(enable = "neon")]
24671#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24672#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24673#[cfg_attr(
24674 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24675 assert_instr(ld3)
24676)]
24677#[cfg_attr(
24678 not(target_arch = "arm"),
24679 stable(feature = "neon_intrinsics", since = "1.59.0")
24680)]
24681#[cfg_attr(
24682 target_arch = "arm",
24683 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24684)]
24685pub unsafe fn vld3_u8(a: *const u8) -> uint8x8x3_t {
24686 let mut ret_val: uint8x8x3_t = transmute(vld3_s8(transmute(a)));
24687 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
24688 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
24689 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
24690 ret_val
24691}
24692#[doc = "Load multiple 3-element structures to three registers"]
24693#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_u8)"]
24694#[doc = "## Safety"]
24695#[doc = " * Neon instrinsic unsafe"]
24696#[inline]
24697#[cfg(target_endian = "little")]
24698#[target_feature(enable = "neon")]
24699#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24700#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24701#[cfg_attr(
24702 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24703 assert_instr(ld3)
24704)]
24705#[cfg_attr(
24706 not(target_arch = "arm"),
24707 stable(feature = "neon_intrinsics", since = "1.59.0")
24708)]
24709#[cfg_attr(
24710 target_arch = "arm",
24711 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24712)]
24713pub unsafe fn vld3q_u8(a: *const u8) -> uint8x16x3_t {
24714 transmute(vld3q_s8(transmute(a)))
24715}
24716#[doc = "Load multiple 3-element structures to three registers"]
24717#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_u8)"]
24718#[doc = "## Safety"]
24719#[doc = " * Neon instrinsic unsafe"]
24720#[inline]
24721#[cfg(target_endian = "big")]
24722#[target_feature(enable = "neon")]
24723#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24724#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24725#[cfg_attr(
24726 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24727 assert_instr(ld3)
24728)]
24729#[cfg_attr(
24730 not(target_arch = "arm"),
24731 stable(feature = "neon_intrinsics", since = "1.59.0")
24732)]
24733#[cfg_attr(
24734 target_arch = "arm",
24735 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24736)]
24737pub unsafe fn vld3q_u8(a: *const u8) -> uint8x16x3_t {
24738 let mut ret_val: uint8x16x3_t = transmute(vld3q_s8(transmute(a)));
24739 ret_val.0 = unsafe {
24740 simd_shuffle!(
24741 ret_val.0,
24742 ret_val.0,
24743 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
24744 )
24745 };
24746 ret_val.1 = unsafe {
24747 simd_shuffle!(
24748 ret_val.1,
24749 ret_val.1,
24750 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
24751 )
24752 };
24753 ret_val.2 = unsafe {
24754 simd_shuffle!(
24755 ret_val.2,
24756 ret_val.2,
24757 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
24758 )
24759 };
24760 ret_val
24761}
24762#[doc = "Load multiple 3-element structures to three registers"]
24763#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u16)"]
24764#[doc = "## Safety"]
24765#[doc = " * Neon instrinsic unsafe"]
24766#[inline]
24767#[cfg(target_endian = "little")]
24768#[target_feature(enable = "neon")]
24769#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24770#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24771#[cfg_attr(
24772 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24773 assert_instr(ld3)
24774)]
24775#[cfg_attr(
24776 not(target_arch = "arm"),
24777 stable(feature = "neon_intrinsics", since = "1.59.0")
24778)]
24779#[cfg_attr(
24780 target_arch = "arm",
24781 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24782)]
24783pub unsafe fn vld3_u16(a: *const u16) -> uint16x4x3_t {
24784 transmute(vld3_s16(transmute(a)))
24785}
24786#[doc = "Load multiple 3-element structures to three registers"]
24787#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u16)"]
24788#[doc = "## Safety"]
24789#[doc = " * Neon instrinsic unsafe"]
24790#[inline]
24791#[cfg(target_endian = "big")]
24792#[target_feature(enable = "neon")]
24793#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24794#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24795#[cfg_attr(
24796 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24797 assert_instr(ld3)
24798)]
24799#[cfg_attr(
24800 not(target_arch = "arm"),
24801 stable(feature = "neon_intrinsics", since = "1.59.0")
24802)]
24803#[cfg_attr(
24804 target_arch = "arm",
24805 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24806)]
24807pub unsafe fn vld3_u16(a: *const u16) -> uint16x4x3_t {
24808 let mut ret_val: uint16x4x3_t = transmute(vld3_s16(transmute(a)));
24809 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
24810 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
24811 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
24812 ret_val
24813}
24814#[doc = "Load multiple 3-element structures to three registers"]
24815#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_u16)"]
24816#[doc = "## Safety"]
24817#[doc = " * Neon instrinsic unsafe"]
24818#[inline]
24819#[cfg(target_endian = "little")]
24820#[target_feature(enable = "neon")]
24821#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24822#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24823#[cfg_attr(
24824 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24825 assert_instr(ld3)
24826)]
24827#[cfg_attr(
24828 not(target_arch = "arm"),
24829 stable(feature = "neon_intrinsics", since = "1.59.0")
24830)]
24831#[cfg_attr(
24832 target_arch = "arm",
24833 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24834)]
24835pub unsafe fn vld3q_u16(a: *const u16) -> uint16x8x3_t {
24836 transmute(vld3q_s16(transmute(a)))
24837}
24838#[doc = "Load multiple 3-element structures to three registers"]
24839#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_u16)"]
24840#[doc = "## Safety"]
24841#[doc = " * Neon instrinsic unsafe"]
24842#[inline]
24843#[cfg(target_endian = "big")]
24844#[target_feature(enable = "neon")]
24845#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24846#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24847#[cfg_attr(
24848 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24849 assert_instr(ld3)
24850)]
24851#[cfg_attr(
24852 not(target_arch = "arm"),
24853 stable(feature = "neon_intrinsics", since = "1.59.0")
24854)]
24855#[cfg_attr(
24856 target_arch = "arm",
24857 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24858)]
24859pub unsafe fn vld3q_u16(a: *const u16) -> uint16x8x3_t {
24860 let mut ret_val: uint16x8x3_t = transmute(vld3q_s16(transmute(a)));
24861 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
24862 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
24863 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
24864 ret_val
24865}
24866#[doc = "Load multiple 3-element structures to three registers"]
24867#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u32)"]
24868#[doc = "## Safety"]
24869#[doc = " * Neon instrinsic unsafe"]
24870#[inline]
24871#[cfg(target_endian = "little")]
24872#[target_feature(enable = "neon")]
24873#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24874#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24875#[cfg_attr(
24876 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24877 assert_instr(ld3)
24878)]
24879#[cfg_attr(
24880 not(target_arch = "arm"),
24881 stable(feature = "neon_intrinsics", since = "1.59.0")
24882)]
24883#[cfg_attr(
24884 target_arch = "arm",
24885 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24886)]
24887pub unsafe fn vld3_u32(a: *const u32) -> uint32x2x3_t {
24888 transmute(vld3_s32(transmute(a)))
24889}
24890#[doc = "Load multiple 3-element structures to three registers"]
24891#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u32)"]
24892#[doc = "## Safety"]
24893#[doc = " * Neon instrinsic unsafe"]
24894#[inline]
24895#[cfg(target_endian = "big")]
24896#[target_feature(enable = "neon")]
24897#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24898#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24899#[cfg_attr(
24900 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24901 assert_instr(ld3)
24902)]
24903#[cfg_attr(
24904 not(target_arch = "arm"),
24905 stable(feature = "neon_intrinsics", since = "1.59.0")
24906)]
24907#[cfg_attr(
24908 target_arch = "arm",
24909 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24910)]
24911pub unsafe fn vld3_u32(a: *const u32) -> uint32x2x3_t {
24912 let mut ret_val: uint32x2x3_t = transmute(vld3_s32(transmute(a)));
24913 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
24914 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
24915 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
24916 ret_val
24917}
24918#[doc = "Load multiple 3-element structures to three registers"]
24919#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_u32)"]
24920#[doc = "## Safety"]
24921#[doc = " * Neon instrinsic unsafe"]
24922#[inline]
24923#[cfg(target_endian = "little")]
24924#[target_feature(enable = "neon")]
24925#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24926#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24927#[cfg_attr(
24928 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24929 assert_instr(ld3)
24930)]
24931#[cfg_attr(
24932 not(target_arch = "arm"),
24933 stable(feature = "neon_intrinsics", since = "1.59.0")
24934)]
24935#[cfg_attr(
24936 target_arch = "arm",
24937 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24938)]
24939pub unsafe fn vld3q_u32(a: *const u32) -> uint32x4x3_t {
24940 transmute(vld3q_s32(transmute(a)))
24941}
24942#[doc = "Load multiple 3-element structures to three registers"]
24943#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_u32)"]
24944#[doc = "## Safety"]
24945#[doc = " * Neon instrinsic unsafe"]
24946#[inline]
24947#[cfg(target_endian = "big")]
24948#[target_feature(enable = "neon")]
24949#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24950#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24951#[cfg_attr(
24952 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24953 assert_instr(ld3)
24954)]
24955#[cfg_attr(
24956 not(target_arch = "arm"),
24957 stable(feature = "neon_intrinsics", since = "1.59.0")
24958)]
24959#[cfg_attr(
24960 target_arch = "arm",
24961 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24962)]
24963pub unsafe fn vld3q_u32(a: *const u32) -> uint32x4x3_t {
24964 let mut ret_val: uint32x4x3_t = transmute(vld3q_s32(transmute(a)));
24965 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
24966 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
24967 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
24968 ret_val
24969}
24970#[doc = "Load multiple 3-element structures to three registers"]
24971#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_p8)"]
24972#[doc = "## Safety"]
24973#[doc = " * Neon instrinsic unsafe"]
24974#[inline]
24975#[cfg(target_endian = "little")]
24976#[target_feature(enable = "neon")]
24977#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24978#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
24979#[cfg_attr(
24980 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24981 assert_instr(ld3)
24982)]
24983#[cfg_attr(
24984 not(target_arch = "arm"),
24985 stable(feature = "neon_intrinsics", since = "1.59.0")
24986)]
24987#[cfg_attr(
24988 target_arch = "arm",
24989 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24990)]
24991pub unsafe fn vld3_p8(a: *const p8) -> poly8x8x3_t {
24992 transmute(vld3_s8(transmute(a)))
24993}
24994#[doc = "Load multiple 3-element structures to three registers"]
24995#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_p8)"]
24996#[doc = "## Safety"]
24997#[doc = " * Neon instrinsic unsafe"]
24998#[inline]
24999#[cfg(target_endian = "big")]
25000#[target_feature(enable = "neon")]
25001#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25002#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
25003#[cfg_attr(
25004 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25005 assert_instr(ld3)
25006)]
25007#[cfg_attr(
25008 not(target_arch = "arm"),
25009 stable(feature = "neon_intrinsics", since = "1.59.0")
25010)]
25011#[cfg_attr(
25012 target_arch = "arm",
25013 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25014)]
25015pub unsafe fn vld3_p8(a: *const p8) -> poly8x8x3_t {
25016 let mut ret_val: poly8x8x3_t = transmute(vld3_s8(transmute(a)));
25017 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
25018 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
25019 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
25020 ret_val
25021}
25022#[doc = "Load multiple 3-element structures to three registers"]
25023#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_p8)"]
25024#[doc = "## Safety"]
25025#[doc = " * Neon instrinsic unsafe"]
25026#[inline]
25027#[cfg(target_endian = "little")]
25028#[target_feature(enable = "neon")]
25029#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25030#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
25031#[cfg_attr(
25032 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25033 assert_instr(ld3)
25034)]
25035#[cfg_attr(
25036 not(target_arch = "arm"),
25037 stable(feature = "neon_intrinsics", since = "1.59.0")
25038)]
25039#[cfg_attr(
25040 target_arch = "arm",
25041 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25042)]
25043pub unsafe fn vld3q_p8(a: *const p8) -> poly8x16x3_t {
25044 transmute(vld3q_s8(transmute(a)))
25045}
25046#[doc = "Load multiple 3-element structures to three registers"]
25047#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_p8)"]
25048#[doc = "## Safety"]
25049#[doc = " * Neon instrinsic unsafe"]
25050#[inline]
25051#[cfg(target_endian = "big")]
25052#[target_feature(enable = "neon")]
25053#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25054#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
25055#[cfg_attr(
25056 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25057 assert_instr(ld3)
25058)]
25059#[cfg_attr(
25060 not(target_arch = "arm"),
25061 stable(feature = "neon_intrinsics", since = "1.59.0")
25062)]
25063#[cfg_attr(
25064 target_arch = "arm",
25065 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25066)]
25067pub unsafe fn vld3q_p8(a: *const p8) -> poly8x16x3_t {
25068 let mut ret_val: poly8x16x3_t = transmute(vld3q_s8(transmute(a)));
25069 ret_val.0 = unsafe {
25070 simd_shuffle!(
25071 ret_val.0,
25072 ret_val.0,
25073 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
25074 )
25075 };
25076 ret_val.1 = unsafe {
25077 simd_shuffle!(
25078 ret_val.1,
25079 ret_val.1,
25080 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
25081 )
25082 };
25083 ret_val.2 = unsafe {
25084 simd_shuffle!(
25085 ret_val.2,
25086 ret_val.2,
25087 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
25088 )
25089 };
25090 ret_val
25091}
25092#[doc = "Load multiple 3-element structures to three registers"]
25093#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_p16)"]
25094#[doc = "## Safety"]
25095#[doc = " * Neon instrinsic unsafe"]
25096#[inline]
25097#[cfg(target_endian = "little")]
25098#[target_feature(enable = "neon")]
25099#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25100#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
25101#[cfg_attr(
25102 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25103 assert_instr(ld3)
25104)]
25105#[cfg_attr(
25106 not(target_arch = "arm"),
25107 stable(feature = "neon_intrinsics", since = "1.59.0")
25108)]
25109#[cfg_attr(
25110 target_arch = "arm",
25111 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25112)]
25113pub unsafe fn vld3_p16(a: *const p16) -> poly16x4x3_t {
25114 transmute(vld3_s16(transmute(a)))
25115}
25116#[doc = "Load multiple 3-element structures to three registers"]
25117#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_p16)"]
25118#[doc = "## Safety"]
25119#[doc = " * Neon instrinsic unsafe"]
25120#[inline]
25121#[cfg(target_endian = "big")]
25122#[target_feature(enable = "neon")]
25123#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25124#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
25125#[cfg_attr(
25126 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25127 assert_instr(ld3)
25128)]
25129#[cfg_attr(
25130 not(target_arch = "arm"),
25131 stable(feature = "neon_intrinsics", since = "1.59.0")
25132)]
25133#[cfg_attr(
25134 target_arch = "arm",
25135 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25136)]
25137pub unsafe fn vld3_p16(a: *const p16) -> poly16x4x3_t {
25138 let mut ret_val: poly16x4x3_t = transmute(vld3_s16(transmute(a)));
25139 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
25140 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
25141 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
25142 ret_val
25143}
25144#[doc = "Load multiple 3-element structures to three registers"]
25145#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_p16)"]
25146#[doc = "## Safety"]
25147#[doc = " * Neon instrinsic unsafe"]
25148#[inline]
25149#[cfg(target_endian = "little")]
25150#[target_feature(enable = "neon")]
25151#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25152#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
25153#[cfg_attr(
25154 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25155 assert_instr(ld3)
25156)]
25157#[cfg_attr(
25158 not(target_arch = "arm"),
25159 stable(feature = "neon_intrinsics", since = "1.59.0")
25160)]
25161#[cfg_attr(
25162 target_arch = "arm",
25163 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25164)]
25165pub unsafe fn vld3q_p16(a: *const p16) -> poly16x8x3_t {
25166 transmute(vld3q_s16(transmute(a)))
25167}
25168#[doc = "Load multiple 3-element structures to three registers"]
25169#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_p16)"]
25170#[doc = "## Safety"]
25171#[doc = " * Neon instrinsic unsafe"]
25172#[inline]
25173#[cfg(target_endian = "big")]
25174#[target_feature(enable = "neon")]
25175#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25176#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
25177#[cfg_attr(
25178 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25179 assert_instr(ld3)
25180)]
25181#[cfg_attr(
25182 not(target_arch = "arm"),
25183 stable(feature = "neon_intrinsics", since = "1.59.0")
25184)]
25185#[cfg_attr(
25186 target_arch = "arm",
25187 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25188)]
25189pub unsafe fn vld3q_p16(a: *const p16) -> poly16x8x3_t {
25190 let mut ret_val: poly16x8x3_t = transmute(vld3q_s16(transmute(a)));
25191 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
25192 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
25193 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
25194 ret_val
25195}
25196#[doc = "Load multiple 3-element structures to three registers"]
25197#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_f32)"]
25198#[doc = "## Safety"]
25199#[doc = " * Neon instrinsic unsafe"]
25200#[inline]
25201#[cfg(target_arch = "arm")]
25202#[target_feature(enable = "neon,v7")]
25203#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
25204#[rustc_legacy_const_generics(2)]
25205#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25206pub unsafe fn vld3q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x3_t) -> float32x4x3_t {
25207 static_assert_uimm_bits!(LANE, 2);
25208 unsafe extern "unadjusted" {
25209 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v4f32.p0")]
25210 fn _vld3q_lane_f32(
25211 ptr: *const i8,
25212 a: float32x4_t,
25213 b: float32x4_t,
25214 c: float32x4_t,
25215 n: i32,
25216 size: i32,
25217 ) -> float32x4x3_t;
25218 }
25219 _vld3q_lane_f32(a as _, b.0, b.1, b.2, LANE, 4)
25220}
25221#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
25222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_f16)"]
25223#[doc = "## Safety"]
25224#[doc = " * Neon instrinsic unsafe"]
25225#[inline]
25226#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25227#[cfg(target_arch = "arm")]
25228#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25229#[target_feature(enable = "neon,fp16")]
25230#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
25231#[cfg(not(target_arch = "arm64ec"))]
25232pub unsafe fn vld4_dup_f16(a: *const f16) -> float16x4x4_t {
25233 unsafe extern "unadjusted" {
25234 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v4f16.p0")]
25235 fn _vld4_dup_f16(ptr: *const f16, size: i32) -> float16x4x4_t;
25236 }
25237 _vld4_dup_f16(a as _, 2)
25238}
25239#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
25240#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_f16)"]
25241#[doc = "## Safety"]
25242#[doc = " * Neon instrinsic unsafe"]
25243#[inline]
25244#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25245#[cfg(target_arch = "arm")]
25246#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25247#[target_feature(enable = "neon,fp16")]
25248#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
25249#[cfg(not(target_arch = "arm64ec"))]
25250pub unsafe fn vld4q_dup_f16(a: *const f16) -> float16x8x4_t {
25251 unsafe extern "unadjusted" {
25252 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v8f16.p0")]
25253 fn _vld4q_dup_f16(ptr: *const f16, size: i32) -> float16x8x4_t;
25254 }
25255 _vld4q_dup_f16(a as _, 2)
25256}
25257#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
25258#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_f16)"]
25259#[doc = "## Safety"]
25260#[doc = " * Neon instrinsic unsafe"]
25261#[inline]
25262#[cfg(not(target_arch = "arm"))]
25263#[cfg_attr(
25264 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25265 assert_instr(ld4r)
25266)]
25267#[target_feature(enable = "neon,fp16")]
25268#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
25269#[cfg(not(target_arch = "arm64ec"))]
25270pub unsafe fn vld4_dup_f16(a: *const f16) -> float16x4x4_t {
25271 unsafe extern "unadjusted" {
25272 #[cfg_attr(
25273 any(target_arch = "aarch64", target_arch = "arm64ec"),
25274 link_name = "llvm.aarch64.neon.ld4r.v4f16.p0"
25275 )]
25276 fn _vld4_dup_f16(ptr: *const f16) -> float16x4x4_t;
25277 }
25278 _vld4_dup_f16(a as _)
25279}
25280#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
25281#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_f16)"]
25282#[doc = "## Safety"]
25283#[doc = " * Neon instrinsic unsafe"]
25284#[inline]
25285#[cfg(not(target_arch = "arm"))]
25286#[cfg_attr(
25287 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25288 assert_instr(ld4r)
25289)]
25290#[target_feature(enable = "neon,fp16")]
25291#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
25292#[cfg(not(target_arch = "arm64ec"))]
25293pub unsafe fn vld4q_dup_f16(a: *const f16) -> float16x8x4_t {
25294 unsafe extern "unadjusted" {
25295 #[cfg_attr(
25296 any(target_arch = "aarch64", target_arch = "arm64ec"),
25297 link_name = "llvm.aarch64.neon.ld4r.v8f16.p0"
25298 )]
25299 fn _vld4q_dup_f16(ptr: *const f16) -> float16x8x4_t;
25300 }
25301 _vld4q_dup_f16(a as _)
25302}
25303#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25304#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_f32)"]
25305#[doc = "## Safety"]
25306#[doc = " * Neon instrinsic unsafe"]
25307#[inline]
25308#[cfg(target_arch = "arm")]
25309#[target_feature(enable = "neon,v7")]
25310#[cfg_attr(test, assert_instr(vld4))]
25311#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25312pub unsafe fn vld4_dup_f32(a: *const f32) -> float32x2x4_t {
25313 unsafe extern "unadjusted" {
25314 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v2f32.p0")]
25315 fn _vld4_dup_f32(ptr: *const i8, size: i32) -> float32x2x4_t;
25316 }
25317 _vld4_dup_f32(a as *const i8, 4)
25318}
25319#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25320#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_f32)"]
25321#[doc = "## Safety"]
25322#[doc = " * Neon instrinsic unsafe"]
25323#[inline]
25324#[cfg(target_arch = "arm")]
25325#[target_feature(enable = "neon,v7")]
25326#[cfg_attr(test, assert_instr(vld4))]
25327#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25328pub unsafe fn vld4q_dup_f32(a: *const f32) -> float32x4x4_t {
25329 unsafe extern "unadjusted" {
25330 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v4f32.p0")]
25331 fn _vld4q_dup_f32(ptr: *const i8, size: i32) -> float32x4x4_t;
25332 }
25333 _vld4q_dup_f32(a as *const i8, 4)
25334}
25335#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25336#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s8)"]
25337#[doc = "## Safety"]
25338#[doc = " * Neon instrinsic unsafe"]
25339#[inline]
25340#[cfg(target_arch = "arm")]
25341#[target_feature(enable = "neon,v7")]
25342#[cfg_attr(test, assert_instr(vld4))]
25343#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25344pub unsafe fn vld4_dup_s8(a: *const i8) -> int8x8x4_t {
25345 unsafe extern "unadjusted" {
25346 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v8i8.p0")]
25347 fn _vld4_dup_s8(ptr: *const i8, size: i32) -> int8x8x4_t;
25348 }
25349 _vld4_dup_s8(a as *const i8, 1)
25350}
25351#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25352#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s8)"]
25353#[doc = "## Safety"]
25354#[doc = " * Neon instrinsic unsafe"]
25355#[inline]
25356#[cfg(target_arch = "arm")]
25357#[target_feature(enable = "neon,v7")]
25358#[cfg_attr(test, assert_instr(vld4))]
25359#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25360pub unsafe fn vld4q_dup_s8(a: *const i8) -> int8x16x4_t {
25361 unsafe extern "unadjusted" {
25362 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v16i8.p0")]
25363 fn _vld4q_dup_s8(ptr: *const i8, size: i32) -> int8x16x4_t;
25364 }
25365 _vld4q_dup_s8(a as *const i8, 1)
25366}
25367#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25368#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s16)"]
25369#[doc = "## Safety"]
25370#[doc = " * Neon instrinsic unsafe"]
25371#[inline]
25372#[cfg(target_arch = "arm")]
25373#[target_feature(enable = "neon,v7")]
25374#[cfg_attr(test, assert_instr(vld4))]
25375#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25376pub unsafe fn vld4_dup_s16(a: *const i16) -> int16x4x4_t {
25377 unsafe extern "unadjusted" {
25378 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v4i16.p0")]
25379 fn _vld4_dup_s16(ptr: *const i8, size: i32) -> int16x4x4_t;
25380 }
25381 _vld4_dup_s16(a as *const i8, 2)
25382}
25383#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25384#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s16)"]
25385#[doc = "## Safety"]
25386#[doc = " * Neon instrinsic unsafe"]
25387#[inline]
25388#[cfg(target_arch = "arm")]
25389#[target_feature(enable = "neon,v7")]
25390#[cfg_attr(test, assert_instr(vld4))]
25391#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25392pub unsafe fn vld4q_dup_s16(a: *const i16) -> int16x8x4_t {
25393 unsafe extern "unadjusted" {
25394 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v8i16.p0")]
25395 fn _vld4q_dup_s16(ptr: *const i8, size: i32) -> int16x8x4_t;
25396 }
25397 _vld4q_dup_s16(a as *const i8, 2)
25398}
25399#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25400#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s32)"]
25401#[doc = "## Safety"]
25402#[doc = " * Neon instrinsic unsafe"]
25403#[inline]
25404#[cfg(target_arch = "arm")]
25405#[target_feature(enable = "neon,v7")]
25406#[cfg_attr(test, assert_instr(vld4))]
25407#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25408pub unsafe fn vld4_dup_s32(a: *const i32) -> int32x2x4_t {
25409 unsafe extern "unadjusted" {
25410 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v2i32.p0")]
25411 fn _vld4_dup_s32(ptr: *const i8, size: i32) -> int32x2x4_t;
25412 }
25413 _vld4_dup_s32(a as *const i8, 4)
25414}
25415#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25416#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s32)"]
25417#[doc = "## Safety"]
25418#[doc = " * Neon instrinsic unsafe"]
25419#[inline]
25420#[cfg(target_arch = "arm")]
25421#[target_feature(enable = "neon,v7")]
25422#[cfg_attr(test, assert_instr(vld4))]
25423#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25424pub unsafe fn vld4q_dup_s32(a: *const i32) -> int32x4x4_t {
25425 unsafe extern "unadjusted" {
25426 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v4i32.p0")]
25427 fn _vld4q_dup_s32(ptr: *const i8, size: i32) -> int32x4x4_t;
25428 }
25429 _vld4q_dup_s32(a as *const i8, 4)
25430}
25431#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25432#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_f32)"]
25433#[doc = "## Safety"]
25434#[doc = " * Neon instrinsic unsafe"]
25435#[inline]
25436#[target_feature(enable = "neon")]
25437#[cfg(not(target_arch = "arm"))]
25438#[cfg_attr(test, assert_instr(ld4r))]
25439#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25440pub unsafe fn vld4_dup_f32(a: *const f32) -> float32x2x4_t {
25441 unsafe extern "unadjusted" {
25442 #[cfg_attr(
25443 any(target_arch = "aarch64", target_arch = "arm64ec"),
25444 link_name = "llvm.aarch64.neon.ld4r.v2f32.p0.p0"
25445 )]
25446 fn _vld4_dup_f32(ptr: *const f32) -> float32x2x4_t;
25447 }
25448 _vld4_dup_f32(a as _)
25449}
25450#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25451#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_f32)"]
25452#[doc = "## Safety"]
25453#[doc = " * Neon instrinsic unsafe"]
25454#[inline]
25455#[target_feature(enable = "neon")]
25456#[cfg(not(target_arch = "arm"))]
25457#[cfg_attr(test, assert_instr(ld4r))]
25458#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25459pub unsafe fn vld4q_dup_f32(a: *const f32) -> float32x4x4_t {
25460 unsafe extern "unadjusted" {
25461 #[cfg_attr(
25462 any(target_arch = "aarch64", target_arch = "arm64ec"),
25463 link_name = "llvm.aarch64.neon.ld4r.v4f32.p0.p0"
25464 )]
25465 fn _vld4q_dup_f32(ptr: *const f32) -> float32x4x4_t;
25466 }
25467 _vld4q_dup_f32(a as _)
25468}
25469#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25470#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s8)"]
25471#[doc = "## Safety"]
25472#[doc = " * Neon instrinsic unsafe"]
25473#[inline]
25474#[target_feature(enable = "neon")]
25475#[cfg(not(target_arch = "arm"))]
25476#[cfg_attr(test, assert_instr(ld4r))]
25477#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25478pub unsafe fn vld4_dup_s8(a: *const i8) -> int8x8x4_t {
25479 unsafe extern "unadjusted" {
25480 #[cfg_attr(
25481 any(target_arch = "aarch64", target_arch = "arm64ec"),
25482 link_name = "llvm.aarch64.neon.ld4r.v8i8.p0.p0"
25483 )]
25484 fn _vld4_dup_s8(ptr: *const i8) -> int8x8x4_t;
25485 }
25486 _vld4_dup_s8(a as _)
25487}
25488#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25489#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s8)"]
25490#[doc = "## Safety"]
25491#[doc = " * Neon instrinsic unsafe"]
25492#[inline]
25493#[target_feature(enable = "neon")]
25494#[cfg(not(target_arch = "arm"))]
25495#[cfg_attr(test, assert_instr(ld4r))]
25496#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25497pub unsafe fn vld4q_dup_s8(a: *const i8) -> int8x16x4_t {
25498 unsafe extern "unadjusted" {
25499 #[cfg_attr(
25500 any(target_arch = "aarch64", target_arch = "arm64ec"),
25501 link_name = "llvm.aarch64.neon.ld4r.v16i8.p0.p0"
25502 )]
25503 fn _vld4q_dup_s8(ptr: *const i8) -> int8x16x4_t;
25504 }
25505 _vld4q_dup_s8(a as _)
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/vld4_dup_s16)"]
25509#[doc = "## Safety"]
25510#[doc = " * Neon instrinsic unsafe"]
25511#[inline]
25512#[target_feature(enable = "neon")]
25513#[cfg(not(target_arch = "arm"))]
25514#[cfg_attr(test, assert_instr(ld4r))]
25515#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25516pub unsafe fn vld4_dup_s16(a: *const i16) -> int16x4x4_t {
25517 unsafe extern "unadjusted" {
25518 #[cfg_attr(
25519 any(target_arch = "aarch64", target_arch = "arm64ec"),
25520 link_name = "llvm.aarch64.neon.ld4r.v4i16.p0.p0"
25521 )]
25522 fn _vld4_dup_s16(ptr: *const i16) -> int16x4x4_t;
25523 }
25524 _vld4_dup_s16(a as _)
25525}
25526#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25527#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s16)"]
25528#[doc = "## Safety"]
25529#[doc = " * Neon instrinsic unsafe"]
25530#[inline]
25531#[target_feature(enable = "neon")]
25532#[cfg(not(target_arch = "arm"))]
25533#[cfg_attr(test, assert_instr(ld4r))]
25534#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25535pub unsafe fn vld4q_dup_s16(a: *const i16) -> int16x8x4_t {
25536 unsafe extern "unadjusted" {
25537 #[cfg_attr(
25538 any(target_arch = "aarch64", target_arch = "arm64ec"),
25539 link_name = "llvm.aarch64.neon.ld4r.v8i16.p0.p0"
25540 )]
25541 fn _vld4q_dup_s16(ptr: *const i16) -> int16x8x4_t;
25542 }
25543 _vld4q_dup_s16(a as _)
25544}
25545#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25546#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s32)"]
25547#[doc = "## Safety"]
25548#[doc = " * Neon instrinsic unsafe"]
25549#[inline]
25550#[target_feature(enable = "neon")]
25551#[cfg(not(target_arch = "arm"))]
25552#[cfg_attr(test, assert_instr(ld4r))]
25553#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25554pub unsafe fn vld4_dup_s32(a: *const i32) -> int32x2x4_t {
25555 unsafe extern "unadjusted" {
25556 #[cfg_attr(
25557 any(target_arch = "aarch64", target_arch = "arm64ec"),
25558 link_name = "llvm.aarch64.neon.ld4r.v2i32.p0.p0"
25559 )]
25560 fn _vld4_dup_s32(ptr: *const i32) -> int32x2x4_t;
25561 }
25562 _vld4_dup_s32(a as _)
25563}
25564#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25565#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s32)"]
25566#[doc = "## Safety"]
25567#[doc = " * Neon instrinsic unsafe"]
25568#[inline]
25569#[target_feature(enable = "neon")]
25570#[cfg(not(target_arch = "arm"))]
25571#[cfg_attr(test, assert_instr(ld4r))]
25572#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25573pub unsafe fn vld4q_dup_s32(a: *const i32) -> int32x4x4_t {
25574 unsafe extern "unadjusted" {
25575 #[cfg_attr(
25576 any(target_arch = "aarch64", target_arch = "arm64ec"),
25577 link_name = "llvm.aarch64.neon.ld4r.v4i32.p0.p0"
25578 )]
25579 fn _vld4q_dup_s32(ptr: *const i32) -> int32x4x4_t;
25580 }
25581 _vld4q_dup_s32(a as _)
25582}
25583#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25584#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s64)"]
25585#[doc = "## Safety"]
25586#[doc = " * Neon instrinsic unsafe"]
25587#[inline]
25588#[target_feature(enable = "neon")]
25589#[cfg(not(target_arch = "arm"))]
25590#[cfg_attr(test, assert_instr(ld4r))]
25591#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25592pub unsafe fn vld4_dup_s64(a: *const i64) -> int64x1x4_t {
25593 unsafe extern "unadjusted" {
25594 #[cfg_attr(
25595 any(target_arch = "aarch64", target_arch = "arm64ec"),
25596 link_name = "llvm.aarch64.neon.ld4r.v1i64.p0.p0"
25597 )]
25598 fn _vld4_dup_s64(ptr: *const i64) -> int64x1x4_t;
25599 }
25600 _vld4_dup_s64(a as _)
25601}
25602#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25603#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p64)"]
25604#[doc = "## Safety"]
25605#[doc = " * Neon instrinsic unsafe"]
25606#[inline]
25607#[target_feature(enable = "neon,aes")]
25608#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
25609#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
25610#[cfg_attr(
25611 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25612 assert_instr(ld4r)
25613)]
25614#[cfg_attr(
25615 not(target_arch = "arm"),
25616 stable(feature = "neon_intrinsics", since = "1.59.0")
25617)]
25618#[cfg_attr(
25619 target_arch = "arm",
25620 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25621)]
25622pub unsafe fn vld4_dup_p64(a: *const p64) -> poly64x1x4_t {
25623 transmute(vld4_dup_s64(transmute(a)))
25624}
25625#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25626#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s64)"]
25627#[doc = "## Safety"]
25628#[doc = " * Neon instrinsic unsafe"]
25629#[inline]
25630#[cfg(target_arch = "arm")]
25631#[target_feature(enable = "neon,v7")]
25632#[cfg_attr(test, assert_instr(nop))]
25633#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25634pub unsafe fn vld4_dup_s64(a: *const i64) -> int64x1x4_t {
25635 unsafe extern "unadjusted" {
25636 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v1i64.p0")]
25637 fn _vld4_dup_s64(ptr: *const i8, size: i32) -> int64x1x4_t;
25638 }
25639 _vld4_dup_s64(a as *const i8, 8)
25640}
25641#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25642#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u64)"]
25643#[doc = "## Safety"]
25644#[doc = " * Neon instrinsic unsafe"]
25645#[inline]
25646#[target_feature(enable = "neon")]
25647#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25648#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
25649#[cfg_attr(
25650 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25651 assert_instr(ld4r)
25652)]
25653#[cfg_attr(
25654 not(target_arch = "arm"),
25655 stable(feature = "neon_intrinsics", since = "1.59.0")
25656)]
25657#[cfg_attr(
25658 target_arch = "arm",
25659 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25660)]
25661pub unsafe fn vld4_dup_u64(a: *const u64) -> uint64x1x4_t {
25662 transmute(vld4_dup_s64(transmute(a)))
25663}
25664#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u8)"]
25666#[doc = "## Safety"]
25667#[doc = " * Neon instrinsic unsafe"]
25668#[inline]
25669#[cfg(target_endian = "little")]
25670#[target_feature(enable = "neon")]
25671#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25672#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25673#[cfg_attr(
25674 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25675 assert_instr(ld4r)
25676)]
25677#[cfg_attr(
25678 not(target_arch = "arm"),
25679 stable(feature = "neon_intrinsics", since = "1.59.0")
25680)]
25681#[cfg_attr(
25682 target_arch = "arm",
25683 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25684)]
25685pub unsafe fn vld4_dup_u8(a: *const u8) -> uint8x8x4_t {
25686 transmute(vld4_dup_s8(transmute(a)))
25687}
25688#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25689#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u8)"]
25690#[doc = "## Safety"]
25691#[doc = " * Neon instrinsic unsafe"]
25692#[inline]
25693#[cfg(target_endian = "big")]
25694#[target_feature(enable = "neon")]
25695#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25696#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25697#[cfg_attr(
25698 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25699 assert_instr(ld4r)
25700)]
25701#[cfg_attr(
25702 not(target_arch = "arm"),
25703 stable(feature = "neon_intrinsics", since = "1.59.0")
25704)]
25705#[cfg_attr(
25706 target_arch = "arm",
25707 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25708)]
25709pub unsafe fn vld4_dup_u8(a: *const u8) -> uint8x8x4_t {
25710 let mut ret_val: uint8x8x4_t = transmute(vld4_dup_s8(transmute(a)));
25711 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
25712 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
25713 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
25714 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
25715 ret_val
25716}
25717#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u8)"]
25719#[doc = "## Safety"]
25720#[doc = " * Neon instrinsic unsafe"]
25721#[inline]
25722#[cfg(target_endian = "little")]
25723#[target_feature(enable = "neon")]
25724#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25725#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25726#[cfg_attr(
25727 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25728 assert_instr(ld4r)
25729)]
25730#[cfg_attr(
25731 not(target_arch = "arm"),
25732 stable(feature = "neon_intrinsics", since = "1.59.0")
25733)]
25734#[cfg_attr(
25735 target_arch = "arm",
25736 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25737)]
25738pub unsafe fn vld4q_dup_u8(a: *const u8) -> uint8x16x4_t {
25739 transmute(vld4q_dup_s8(transmute(a)))
25740}
25741#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25742#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u8)"]
25743#[doc = "## Safety"]
25744#[doc = " * Neon instrinsic unsafe"]
25745#[inline]
25746#[cfg(target_endian = "big")]
25747#[target_feature(enable = "neon")]
25748#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25749#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25750#[cfg_attr(
25751 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25752 assert_instr(ld4r)
25753)]
25754#[cfg_attr(
25755 not(target_arch = "arm"),
25756 stable(feature = "neon_intrinsics", since = "1.59.0")
25757)]
25758#[cfg_attr(
25759 target_arch = "arm",
25760 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25761)]
25762pub unsafe fn vld4q_dup_u8(a: *const u8) -> uint8x16x4_t {
25763 let mut ret_val: uint8x16x4_t = transmute(vld4q_dup_s8(transmute(a)));
25764 ret_val.0 = unsafe {
25765 simd_shuffle!(
25766 ret_val.0,
25767 ret_val.0,
25768 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
25769 )
25770 };
25771 ret_val.1 = unsafe {
25772 simd_shuffle!(
25773 ret_val.1,
25774 ret_val.1,
25775 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
25776 )
25777 };
25778 ret_val.2 = unsafe {
25779 simd_shuffle!(
25780 ret_val.2,
25781 ret_val.2,
25782 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
25783 )
25784 };
25785 ret_val.3 = unsafe {
25786 simd_shuffle!(
25787 ret_val.3,
25788 ret_val.3,
25789 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
25790 )
25791 };
25792 ret_val
25793}
25794#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25795#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u16)"]
25796#[doc = "## Safety"]
25797#[doc = " * Neon instrinsic unsafe"]
25798#[inline]
25799#[cfg(target_endian = "little")]
25800#[target_feature(enable = "neon")]
25801#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25802#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25803#[cfg_attr(
25804 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25805 assert_instr(ld4r)
25806)]
25807#[cfg_attr(
25808 not(target_arch = "arm"),
25809 stable(feature = "neon_intrinsics", since = "1.59.0")
25810)]
25811#[cfg_attr(
25812 target_arch = "arm",
25813 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25814)]
25815pub unsafe fn vld4_dup_u16(a: *const u16) -> uint16x4x4_t {
25816 transmute(vld4_dup_s16(transmute(a)))
25817}
25818#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25819#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u16)"]
25820#[doc = "## Safety"]
25821#[doc = " * Neon instrinsic unsafe"]
25822#[inline]
25823#[cfg(target_endian = "big")]
25824#[target_feature(enable = "neon")]
25825#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25826#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25827#[cfg_attr(
25828 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25829 assert_instr(ld4r)
25830)]
25831#[cfg_attr(
25832 not(target_arch = "arm"),
25833 stable(feature = "neon_intrinsics", since = "1.59.0")
25834)]
25835#[cfg_attr(
25836 target_arch = "arm",
25837 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25838)]
25839pub unsafe fn vld4_dup_u16(a: *const u16) -> uint16x4x4_t {
25840 let mut ret_val: uint16x4x4_t = transmute(vld4_dup_s16(transmute(a)));
25841 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
25842 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
25843 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
25844 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
25845 ret_val
25846}
25847#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25848#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u16)"]
25849#[doc = "## Safety"]
25850#[doc = " * Neon instrinsic unsafe"]
25851#[inline]
25852#[cfg(target_endian = "little")]
25853#[target_feature(enable = "neon")]
25854#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25855#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25856#[cfg_attr(
25857 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25858 assert_instr(ld4r)
25859)]
25860#[cfg_attr(
25861 not(target_arch = "arm"),
25862 stable(feature = "neon_intrinsics", since = "1.59.0")
25863)]
25864#[cfg_attr(
25865 target_arch = "arm",
25866 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25867)]
25868pub unsafe fn vld4q_dup_u16(a: *const u16) -> uint16x8x4_t {
25869 transmute(vld4q_dup_s16(transmute(a)))
25870}
25871#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25872#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u16)"]
25873#[doc = "## Safety"]
25874#[doc = " * Neon instrinsic unsafe"]
25875#[inline]
25876#[cfg(target_endian = "big")]
25877#[target_feature(enable = "neon")]
25878#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25879#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25880#[cfg_attr(
25881 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25882 assert_instr(ld4r)
25883)]
25884#[cfg_attr(
25885 not(target_arch = "arm"),
25886 stable(feature = "neon_intrinsics", since = "1.59.0")
25887)]
25888#[cfg_attr(
25889 target_arch = "arm",
25890 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25891)]
25892pub unsafe fn vld4q_dup_u16(a: *const u16) -> uint16x8x4_t {
25893 let mut ret_val: uint16x8x4_t = transmute(vld4q_dup_s16(transmute(a)));
25894 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
25895 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
25896 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
25897 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
25898 ret_val
25899}
25900#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25901#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u32)"]
25902#[doc = "## Safety"]
25903#[doc = " * Neon instrinsic unsafe"]
25904#[inline]
25905#[cfg(target_endian = "little")]
25906#[target_feature(enable = "neon")]
25907#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25908#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25909#[cfg_attr(
25910 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25911 assert_instr(ld4r)
25912)]
25913#[cfg_attr(
25914 not(target_arch = "arm"),
25915 stable(feature = "neon_intrinsics", since = "1.59.0")
25916)]
25917#[cfg_attr(
25918 target_arch = "arm",
25919 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25920)]
25921pub unsafe fn vld4_dup_u32(a: *const u32) -> uint32x2x4_t {
25922 transmute(vld4_dup_s32(transmute(a)))
25923}
25924#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25925#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u32)"]
25926#[doc = "## Safety"]
25927#[doc = " * Neon instrinsic unsafe"]
25928#[inline]
25929#[cfg(target_endian = "big")]
25930#[target_feature(enable = "neon")]
25931#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25932#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25933#[cfg_attr(
25934 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25935 assert_instr(ld4r)
25936)]
25937#[cfg_attr(
25938 not(target_arch = "arm"),
25939 stable(feature = "neon_intrinsics", since = "1.59.0")
25940)]
25941#[cfg_attr(
25942 target_arch = "arm",
25943 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25944)]
25945pub unsafe fn vld4_dup_u32(a: *const u32) -> uint32x2x4_t {
25946 let mut ret_val: uint32x2x4_t = transmute(vld4_dup_s32(transmute(a)));
25947 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
25948 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
25949 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
25950 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [1, 0]) };
25951 ret_val
25952}
25953#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25954#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u32)"]
25955#[doc = "## Safety"]
25956#[doc = " * Neon instrinsic unsafe"]
25957#[inline]
25958#[cfg(target_endian = "little")]
25959#[target_feature(enable = "neon")]
25960#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25961#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25962#[cfg_attr(
25963 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25964 assert_instr(ld4r)
25965)]
25966#[cfg_attr(
25967 not(target_arch = "arm"),
25968 stable(feature = "neon_intrinsics", since = "1.59.0")
25969)]
25970#[cfg_attr(
25971 target_arch = "arm",
25972 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25973)]
25974pub unsafe fn vld4q_dup_u32(a: *const u32) -> uint32x4x4_t {
25975 transmute(vld4q_dup_s32(transmute(a)))
25976}
25977#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
25978#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u32)"]
25979#[doc = "## Safety"]
25980#[doc = " * Neon instrinsic unsafe"]
25981#[inline]
25982#[cfg(target_endian = "big")]
25983#[target_feature(enable = "neon")]
25984#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25985#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25986#[cfg_attr(
25987 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25988 assert_instr(ld4r)
25989)]
25990#[cfg_attr(
25991 not(target_arch = "arm"),
25992 stable(feature = "neon_intrinsics", since = "1.59.0")
25993)]
25994#[cfg_attr(
25995 target_arch = "arm",
25996 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25997)]
25998pub unsafe fn vld4q_dup_u32(a: *const u32) -> uint32x4x4_t {
25999 let mut ret_val: uint32x4x4_t = transmute(vld4q_dup_s32(transmute(a)));
26000 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
26001 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
26002 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
26003 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
26004 ret_val
26005}
26006#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
26007#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p8)"]
26008#[doc = "## Safety"]
26009#[doc = " * Neon instrinsic unsafe"]
26010#[inline]
26011#[cfg(target_endian = "little")]
26012#[target_feature(enable = "neon")]
26013#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26014#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
26015#[cfg_attr(
26016 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26017 assert_instr(ld4r)
26018)]
26019#[cfg_attr(
26020 not(target_arch = "arm"),
26021 stable(feature = "neon_intrinsics", since = "1.59.0")
26022)]
26023#[cfg_attr(
26024 target_arch = "arm",
26025 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26026)]
26027pub unsafe fn vld4_dup_p8(a: *const p8) -> poly8x8x4_t {
26028 transmute(vld4_dup_s8(transmute(a)))
26029}
26030#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
26031#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p8)"]
26032#[doc = "## Safety"]
26033#[doc = " * Neon instrinsic unsafe"]
26034#[inline]
26035#[cfg(target_endian = "big")]
26036#[target_feature(enable = "neon")]
26037#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26038#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
26039#[cfg_attr(
26040 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26041 assert_instr(ld4r)
26042)]
26043#[cfg_attr(
26044 not(target_arch = "arm"),
26045 stable(feature = "neon_intrinsics", since = "1.59.0")
26046)]
26047#[cfg_attr(
26048 target_arch = "arm",
26049 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26050)]
26051pub unsafe fn vld4_dup_p8(a: *const p8) -> poly8x8x4_t {
26052 let mut ret_val: poly8x8x4_t = transmute(vld4_dup_s8(transmute(a)));
26053 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
26054 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
26055 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
26056 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
26057 ret_val
26058}
26059#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
26060#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_p8)"]
26061#[doc = "## Safety"]
26062#[doc = " * Neon instrinsic unsafe"]
26063#[inline]
26064#[cfg(target_endian = "little")]
26065#[target_feature(enable = "neon")]
26066#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26067#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
26068#[cfg_attr(
26069 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26070 assert_instr(ld4r)
26071)]
26072#[cfg_attr(
26073 not(target_arch = "arm"),
26074 stable(feature = "neon_intrinsics", since = "1.59.0")
26075)]
26076#[cfg_attr(
26077 target_arch = "arm",
26078 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26079)]
26080pub unsafe fn vld4q_dup_p8(a: *const p8) -> poly8x16x4_t {
26081 transmute(vld4q_dup_s8(transmute(a)))
26082}
26083#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
26084#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_p8)"]
26085#[doc = "## Safety"]
26086#[doc = " * Neon instrinsic unsafe"]
26087#[inline]
26088#[cfg(target_endian = "big")]
26089#[target_feature(enable = "neon")]
26090#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26091#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
26092#[cfg_attr(
26093 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26094 assert_instr(ld4r)
26095)]
26096#[cfg_attr(
26097 not(target_arch = "arm"),
26098 stable(feature = "neon_intrinsics", since = "1.59.0")
26099)]
26100#[cfg_attr(
26101 target_arch = "arm",
26102 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26103)]
26104pub unsafe fn vld4q_dup_p8(a: *const p8) -> poly8x16x4_t {
26105 let mut ret_val: poly8x16x4_t = transmute(vld4q_dup_s8(transmute(a)));
26106 ret_val.0 = unsafe {
26107 simd_shuffle!(
26108 ret_val.0,
26109 ret_val.0,
26110 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
26111 )
26112 };
26113 ret_val.1 = unsafe {
26114 simd_shuffle!(
26115 ret_val.1,
26116 ret_val.1,
26117 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
26118 )
26119 };
26120 ret_val.2 = unsafe {
26121 simd_shuffle!(
26122 ret_val.2,
26123 ret_val.2,
26124 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
26125 )
26126 };
26127 ret_val.3 = unsafe {
26128 simd_shuffle!(
26129 ret_val.3,
26130 ret_val.3,
26131 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
26132 )
26133 };
26134 ret_val
26135}
26136#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
26137#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p16)"]
26138#[doc = "## Safety"]
26139#[doc = " * Neon instrinsic unsafe"]
26140#[inline]
26141#[cfg(target_endian = "little")]
26142#[target_feature(enable = "neon")]
26143#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26144#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
26145#[cfg_attr(
26146 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26147 assert_instr(ld4r)
26148)]
26149#[cfg_attr(
26150 not(target_arch = "arm"),
26151 stable(feature = "neon_intrinsics", since = "1.59.0")
26152)]
26153#[cfg_attr(
26154 target_arch = "arm",
26155 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26156)]
26157pub unsafe fn vld4_dup_p16(a: *const p16) -> poly16x4x4_t {
26158 transmute(vld4_dup_s16(transmute(a)))
26159}
26160#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
26161#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p16)"]
26162#[doc = "## Safety"]
26163#[doc = " * Neon instrinsic unsafe"]
26164#[inline]
26165#[cfg(target_endian = "big")]
26166#[target_feature(enable = "neon")]
26167#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26168#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
26169#[cfg_attr(
26170 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26171 assert_instr(ld4r)
26172)]
26173#[cfg_attr(
26174 not(target_arch = "arm"),
26175 stable(feature = "neon_intrinsics", since = "1.59.0")
26176)]
26177#[cfg_attr(
26178 target_arch = "arm",
26179 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26180)]
26181pub unsafe fn vld4_dup_p16(a: *const p16) -> poly16x4x4_t {
26182 let mut ret_val: poly16x4x4_t = transmute(vld4_dup_s16(transmute(a)));
26183 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
26184 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
26185 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
26186 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
26187 ret_val
26188}
26189#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
26190#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_p16)"]
26191#[doc = "## Safety"]
26192#[doc = " * Neon instrinsic unsafe"]
26193#[inline]
26194#[cfg(target_endian = "little")]
26195#[target_feature(enable = "neon")]
26196#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26197#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
26198#[cfg_attr(
26199 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26200 assert_instr(ld4r)
26201)]
26202#[cfg_attr(
26203 not(target_arch = "arm"),
26204 stable(feature = "neon_intrinsics", since = "1.59.0")
26205)]
26206#[cfg_attr(
26207 target_arch = "arm",
26208 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26209)]
26210pub unsafe fn vld4q_dup_p16(a: *const p16) -> poly16x8x4_t {
26211 transmute(vld4q_dup_s16(transmute(a)))
26212}
26213#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
26214#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_p16)"]
26215#[doc = "## Safety"]
26216#[doc = " * Neon instrinsic unsafe"]
26217#[inline]
26218#[cfg(target_endian = "big")]
26219#[target_feature(enable = "neon")]
26220#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26221#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
26222#[cfg_attr(
26223 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26224 assert_instr(ld4r)
26225)]
26226#[cfg_attr(
26227 not(target_arch = "arm"),
26228 stable(feature = "neon_intrinsics", since = "1.59.0")
26229)]
26230#[cfg_attr(
26231 target_arch = "arm",
26232 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26233)]
26234pub unsafe fn vld4q_dup_p16(a: *const p16) -> poly16x8x4_t {
26235 let mut ret_val: poly16x8x4_t = transmute(vld4q_dup_s16(transmute(a)));
26236 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
26237 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
26238 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
26239 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
26240 ret_val
26241}
26242#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
26243#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_f16)"]
26244#[doc = "## Safety"]
26245#[doc = " * Neon instrinsic unsafe"]
26246#[inline]
26247#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26248#[cfg(target_arch = "arm")]
26249#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
26250#[target_feature(enable = "neon,fp16")]
26251#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
26252#[cfg(not(target_arch = "arm64ec"))]
26253pub unsafe fn vld4_f16(a: *const f16) -> float16x4x4_t {
26254 unsafe extern "unadjusted" {
26255 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v4f16.p0")]
26256 fn _vld4_f16(ptr: *const f16, size: i32) -> float16x4x4_t;
26257 }
26258 _vld4_f16(a as _, 2)
26259}
26260#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
26261#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_f16)"]
26262#[doc = "## Safety"]
26263#[doc = " * Neon instrinsic unsafe"]
26264#[inline]
26265#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26266#[cfg(target_arch = "arm")]
26267#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
26268#[target_feature(enable = "neon,fp16")]
26269#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
26270#[cfg(not(target_arch = "arm64ec"))]
26271pub unsafe fn vld4q_f16(a: *const f16) -> float16x8x4_t {
26272 unsafe extern "unadjusted" {
26273 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v8f16.p0")]
26274 fn _vld4q_f16(ptr: *const f16, size: i32) -> float16x8x4_t;
26275 }
26276 _vld4q_f16(a as _, 2)
26277}
26278#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
26279#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_f16)"]
26280#[doc = "## Safety"]
26281#[doc = " * Neon instrinsic unsafe"]
26282#[inline]
26283#[cfg(not(target_arch = "arm"))]
26284#[cfg_attr(
26285 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26286 assert_instr(ld4)
26287)]
26288#[target_feature(enable = "neon,fp16")]
26289#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
26290#[cfg(not(target_arch = "arm64ec"))]
26291pub unsafe fn vld4_f16(a: *const f16) -> float16x4x4_t {
26292 unsafe extern "unadjusted" {
26293 #[cfg_attr(
26294 any(target_arch = "aarch64", target_arch = "arm64ec"),
26295 link_name = "llvm.aarch64.neon.ld4.v4f16.p0"
26296 )]
26297 fn _vld4_f16(ptr: *const f16) -> float16x4x4_t;
26298 }
26299 _vld4_f16(a as _)
26300}
26301#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
26302#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_f16)"]
26303#[doc = "## Safety"]
26304#[doc = " * Neon instrinsic unsafe"]
26305#[inline]
26306#[cfg(not(target_arch = "arm"))]
26307#[cfg_attr(
26308 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26309 assert_instr(ld4)
26310)]
26311#[target_feature(enable = "neon,fp16")]
26312#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
26313#[cfg(not(target_arch = "arm64ec"))]
26314pub unsafe fn vld4q_f16(a: *const f16) -> float16x8x4_t {
26315 unsafe extern "unadjusted" {
26316 #[cfg_attr(
26317 any(target_arch = "aarch64", target_arch = "arm64ec"),
26318 link_name = "llvm.aarch64.neon.ld4.v8f16.p0"
26319 )]
26320 fn _vld4q_f16(ptr: *const f16) -> float16x8x4_t;
26321 }
26322 _vld4q_f16(a as _)
26323}
26324#[doc = "Load multiple 4-element structures to four registers"]
26325#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_f32)"]
26326#[doc = "## Safety"]
26327#[doc = " * Neon instrinsic unsafe"]
26328#[inline]
26329#[target_feature(enable = "neon")]
26330#[cfg(not(target_arch = "arm"))]
26331#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26332#[cfg_attr(test, assert_instr(ld4))]
26333pub unsafe fn vld4_f32(a: *const f32) -> float32x2x4_t {
26334 unsafe extern "unadjusted" {
26335 #[cfg_attr(
26336 any(target_arch = "aarch64", target_arch = "arm64ec"),
26337 link_name = "llvm.aarch64.neon.ld4.v2f32.p0"
26338 )]
26339 fn _vld4_f32(ptr: *const float32x2_t) -> float32x2x4_t;
26340 }
26341 _vld4_f32(a as _)
26342}
26343#[doc = "Load multiple 4-element structures to four registers"]
26344#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_f32)"]
26345#[doc = "## Safety"]
26346#[doc = " * Neon instrinsic unsafe"]
26347#[inline]
26348#[target_feature(enable = "neon")]
26349#[cfg(not(target_arch = "arm"))]
26350#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26351#[cfg_attr(test, assert_instr(ld4))]
26352pub unsafe fn vld4q_f32(a: *const f32) -> float32x4x4_t {
26353 unsafe extern "unadjusted" {
26354 #[cfg_attr(
26355 any(target_arch = "aarch64", target_arch = "arm64ec"),
26356 link_name = "llvm.aarch64.neon.ld4.v4f32.p0"
26357 )]
26358 fn _vld4q_f32(ptr: *const float32x4_t) -> float32x4x4_t;
26359 }
26360 _vld4q_f32(a as _)
26361}
26362#[doc = "Load multiple 4-element structures to four registers"]
26363#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s8)"]
26364#[doc = "## Safety"]
26365#[doc = " * Neon instrinsic unsafe"]
26366#[inline]
26367#[target_feature(enable = "neon")]
26368#[cfg(not(target_arch = "arm"))]
26369#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26370#[cfg_attr(test, assert_instr(ld4))]
26371pub unsafe fn vld4_s8(a: *const i8) -> int8x8x4_t {
26372 unsafe extern "unadjusted" {
26373 #[cfg_attr(
26374 any(target_arch = "aarch64", target_arch = "arm64ec"),
26375 link_name = "llvm.aarch64.neon.ld4.v8i8.p0"
26376 )]
26377 fn _vld4_s8(ptr: *const int8x8_t) -> int8x8x4_t;
26378 }
26379 _vld4_s8(a as _)
26380}
26381#[doc = "Load multiple 4-element structures to four registers"]
26382#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s8)"]
26383#[doc = "## Safety"]
26384#[doc = " * Neon instrinsic unsafe"]
26385#[inline]
26386#[target_feature(enable = "neon")]
26387#[cfg(not(target_arch = "arm"))]
26388#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26389#[cfg_attr(test, assert_instr(ld4))]
26390pub unsafe fn vld4q_s8(a: *const i8) -> int8x16x4_t {
26391 unsafe extern "unadjusted" {
26392 #[cfg_attr(
26393 any(target_arch = "aarch64", target_arch = "arm64ec"),
26394 link_name = "llvm.aarch64.neon.ld4.v16i8.p0"
26395 )]
26396 fn _vld4q_s8(ptr: *const int8x16_t) -> int8x16x4_t;
26397 }
26398 _vld4q_s8(a as _)
26399}
26400#[doc = "Load multiple 4-element structures to four registers"]
26401#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s16)"]
26402#[doc = "## Safety"]
26403#[doc = " * Neon instrinsic unsafe"]
26404#[inline]
26405#[target_feature(enable = "neon")]
26406#[cfg(not(target_arch = "arm"))]
26407#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26408#[cfg_attr(test, assert_instr(ld4))]
26409pub unsafe fn vld4_s16(a: *const i16) -> int16x4x4_t {
26410 unsafe extern "unadjusted" {
26411 #[cfg_attr(
26412 any(target_arch = "aarch64", target_arch = "arm64ec"),
26413 link_name = "llvm.aarch64.neon.ld4.v4i16.p0"
26414 )]
26415 fn _vld4_s16(ptr: *const int16x4_t) -> int16x4x4_t;
26416 }
26417 _vld4_s16(a as _)
26418}
26419#[doc = "Load multiple 4-element structures to four registers"]
26420#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s16)"]
26421#[doc = "## Safety"]
26422#[doc = " * Neon instrinsic unsafe"]
26423#[inline]
26424#[target_feature(enable = "neon")]
26425#[cfg(not(target_arch = "arm"))]
26426#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26427#[cfg_attr(test, assert_instr(ld4))]
26428pub unsafe fn vld4q_s16(a: *const i16) -> int16x8x4_t {
26429 unsafe extern "unadjusted" {
26430 #[cfg_attr(
26431 any(target_arch = "aarch64", target_arch = "arm64ec"),
26432 link_name = "llvm.aarch64.neon.ld4.v8i16.p0"
26433 )]
26434 fn _vld4q_s16(ptr: *const int16x8_t) -> int16x8x4_t;
26435 }
26436 _vld4q_s16(a as _)
26437}
26438#[doc = "Load multiple 4-element structures to four registers"]
26439#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s32)"]
26440#[doc = "## Safety"]
26441#[doc = " * Neon instrinsic unsafe"]
26442#[inline]
26443#[target_feature(enable = "neon")]
26444#[cfg(not(target_arch = "arm"))]
26445#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26446#[cfg_attr(test, assert_instr(ld4))]
26447pub unsafe fn vld4_s32(a: *const i32) -> int32x2x4_t {
26448 unsafe extern "unadjusted" {
26449 #[cfg_attr(
26450 any(target_arch = "aarch64", target_arch = "arm64ec"),
26451 link_name = "llvm.aarch64.neon.ld4.v2i32.p0"
26452 )]
26453 fn _vld4_s32(ptr: *const int32x2_t) -> int32x2x4_t;
26454 }
26455 _vld4_s32(a as _)
26456}
26457#[doc = "Load multiple 4-element structures to four registers"]
26458#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s32)"]
26459#[doc = "## Safety"]
26460#[doc = " * Neon instrinsic unsafe"]
26461#[inline]
26462#[target_feature(enable = "neon")]
26463#[cfg(not(target_arch = "arm"))]
26464#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26465#[cfg_attr(test, assert_instr(ld4))]
26466pub unsafe fn vld4q_s32(a: *const i32) -> int32x4x4_t {
26467 unsafe extern "unadjusted" {
26468 #[cfg_attr(
26469 any(target_arch = "aarch64", target_arch = "arm64ec"),
26470 link_name = "llvm.aarch64.neon.ld4.v4i32.p0"
26471 )]
26472 fn _vld4q_s32(ptr: *const int32x4_t) -> int32x4x4_t;
26473 }
26474 _vld4q_s32(a as _)
26475}
26476#[doc = "Load multiple 4-element structures to four registers"]
26477#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_f32)"]
26478#[doc = "## Safety"]
26479#[doc = " * Neon instrinsic unsafe"]
26480#[inline]
26481#[target_feature(enable = "neon,v7")]
26482#[cfg(target_arch = "arm")]
26483#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26484#[cfg_attr(test, assert_instr(vld4))]
26485pub unsafe fn vld4_f32(a: *const f32) -> float32x2x4_t {
26486 unsafe extern "unadjusted" {
26487 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v2f32.p0")]
26488 fn _vld4_f32(ptr: *const i8, size: i32) -> float32x2x4_t;
26489 }
26490 _vld4_f32(a as *const i8, 4)
26491}
26492#[doc = "Load multiple 4-element structures to four registers"]
26493#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_f32)"]
26494#[doc = "## Safety"]
26495#[doc = " * Neon instrinsic unsafe"]
26496#[inline]
26497#[target_feature(enable = "neon,v7")]
26498#[cfg(target_arch = "arm")]
26499#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26500#[cfg_attr(test, assert_instr(vld4))]
26501pub unsafe fn vld4q_f32(a: *const f32) -> float32x4x4_t {
26502 unsafe extern "unadjusted" {
26503 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v4f32.p0")]
26504 fn _vld4q_f32(ptr: *const i8, size: i32) -> float32x4x4_t;
26505 }
26506 _vld4q_f32(a as *const i8, 4)
26507}
26508#[doc = "Load multiple 4-element structures to four registers"]
26509#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s8)"]
26510#[doc = "## Safety"]
26511#[doc = " * Neon instrinsic unsafe"]
26512#[inline]
26513#[target_feature(enable = "neon,v7")]
26514#[cfg(target_arch = "arm")]
26515#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26516#[cfg_attr(test, assert_instr(vld4))]
26517pub unsafe fn vld4_s8(a: *const i8) -> int8x8x4_t {
26518 unsafe extern "unadjusted" {
26519 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v8i8.p0")]
26520 fn _vld4_s8(ptr: *const i8, size: i32) -> int8x8x4_t;
26521 }
26522 _vld4_s8(a as *const i8, 1)
26523}
26524#[doc = "Load multiple 4-element structures to four registers"]
26525#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s8)"]
26526#[doc = "## Safety"]
26527#[doc = " * Neon instrinsic unsafe"]
26528#[inline]
26529#[target_feature(enable = "neon,v7")]
26530#[cfg(target_arch = "arm")]
26531#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26532#[cfg_attr(test, assert_instr(vld4))]
26533pub unsafe fn vld4q_s8(a: *const i8) -> int8x16x4_t {
26534 unsafe extern "unadjusted" {
26535 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v16i8.p0")]
26536 fn _vld4q_s8(ptr: *const i8, size: i32) -> int8x16x4_t;
26537 }
26538 _vld4q_s8(a as *const i8, 1)
26539}
26540#[doc = "Load multiple 4-element structures to four registers"]
26541#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s16)"]
26542#[doc = "## Safety"]
26543#[doc = " * Neon instrinsic unsafe"]
26544#[inline]
26545#[target_feature(enable = "neon,v7")]
26546#[cfg(target_arch = "arm")]
26547#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26548#[cfg_attr(test, assert_instr(vld4))]
26549pub unsafe fn vld4_s16(a: *const i16) -> int16x4x4_t {
26550 unsafe extern "unadjusted" {
26551 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v4i16.p0")]
26552 fn _vld4_s16(ptr: *const i8, size: i32) -> int16x4x4_t;
26553 }
26554 _vld4_s16(a as *const i8, 2)
26555}
26556#[doc = "Load multiple 4-element structures to four registers"]
26557#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s16)"]
26558#[doc = "## Safety"]
26559#[doc = " * Neon instrinsic unsafe"]
26560#[inline]
26561#[target_feature(enable = "neon,v7")]
26562#[cfg(target_arch = "arm")]
26563#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26564#[cfg_attr(test, assert_instr(vld4))]
26565pub unsafe fn vld4q_s16(a: *const i16) -> int16x8x4_t {
26566 unsafe extern "unadjusted" {
26567 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v8i16.p0")]
26568 fn _vld4q_s16(ptr: *const i8, size: i32) -> int16x8x4_t;
26569 }
26570 _vld4q_s16(a as *const i8, 2)
26571}
26572#[doc = "Load multiple 4-element structures to four registers"]
26573#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s32)"]
26574#[doc = "## Safety"]
26575#[doc = " * Neon instrinsic unsafe"]
26576#[inline]
26577#[target_feature(enable = "neon,v7")]
26578#[cfg(target_arch = "arm")]
26579#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26580#[cfg_attr(test, assert_instr(vld4))]
26581pub unsafe fn vld4_s32(a: *const i32) -> int32x2x4_t {
26582 unsafe extern "unadjusted" {
26583 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v2i32.p0")]
26584 fn _vld4_s32(ptr: *const i8, size: i32) -> int32x2x4_t;
26585 }
26586 _vld4_s32(a as *const i8, 4)
26587}
26588#[doc = "Load multiple 4-element structures to four registers"]
26589#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s32)"]
26590#[doc = "## Safety"]
26591#[doc = " * Neon instrinsic unsafe"]
26592#[inline]
26593#[target_feature(enable = "neon,v7")]
26594#[cfg(target_arch = "arm")]
26595#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26596#[cfg_attr(test, assert_instr(vld4))]
26597pub unsafe fn vld4q_s32(a: *const i32) -> int32x4x4_t {
26598 unsafe extern "unadjusted" {
26599 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v4i32.p0")]
26600 fn _vld4q_s32(ptr: *const i8, size: i32) -> int32x4x4_t;
26601 }
26602 _vld4q_s32(a as *const i8, 4)
26603}
26604#[doc = "Load multiple 4-element structures to two registers"]
26605#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_f16)"]
26606#[doc = "## Safety"]
26607#[doc = " * Neon instrinsic unsafe"]
26608#[inline]
26609#[target_feature(enable = "neon,v7")]
26610#[cfg(target_arch = "arm")]
26611#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
26612#[rustc_legacy_const_generics(2)]
26613#[target_feature(enable = "neon,fp16")]
26614#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
26615#[cfg(not(target_arch = "arm64ec"))]
26616pub unsafe fn vld4_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x4_t) -> float16x4x4_t {
26617 static_assert_uimm_bits!(LANE, 2);
26618 unsafe extern "unadjusted" {
26619 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v4f16.p0")]
26620 fn _vld4_lane_f16(
26621 ptr: *const f16,
26622 a: float16x4_t,
26623 b: float16x4_t,
26624 c: float16x4_t,
26625 d: float16x4_t,
26626 n: i32,
26627 size: i32,
26628 ) -> float16x4x4_t;
26629 }
26630 _vld4_lane_f16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
26631}
26632#[doc = "Load multiple 4-element structures to two registers"]
26633#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_f16)"]
26634#[doc = "## Safety"]
26635#[doc = " * Neon instrinsic unsafe"]
26636#[inline]
26637#[target_feature(enable = "neon,v7")]
26638#[cfg(target_arch = "arm")]
26639#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
26640#[rustc_legacy_const_generics(2)]
26641#[target_feature(enable = "neon,fp16")]
26642#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
26643#[cfg(not(target_arch = "arm64ec"))]
26644pub unsafe fn vld4q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x4_t) -> float16x8x4_t {
26645 static_assert_uimm_bits!(LANE, 3);
26646 unsafe extern "unadjusted" {
26647 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v8f16.p0")]
26648 fn _vld4q_lane_f16(
26649 ptr: *const f16,
26650 a: float16x8_t,
26651 b: float16x8_t,
26652 c: float16x8_t,
26653 d: float16x8_t,
26654 n: i32,
26655 size: i32,
26656 ) -> float16x8x4_t;
26657 }
26658 _vld4q_lane_f16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
26659}
26660#[doc = "Load multiple 4-element structures to two registers"]
26661#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_f16)"]
26662#[doc = "## Safety"]
26663#[doc = " * Neon instrinsic unsafe"]
26664#[inline]
26665#[cfg(not(target_arch = "arm"))]
26666#[cfg_attr(
26667 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26668 assert_instr(ld4, LANE = 0)
26669)]
26670#[rustc_legacy_const_generics(2)]
26671#[target_feature(enable = "neon,fp16")]
26672#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
26673#[cfg(not(target_arch = "arm64ec"))]
26674pub unsafe fn vld4_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x4_t) -> float16x4x4_t {
26675 static_assert_uimm_bits!(LANE, 2);
26676 unsafe extern "unadjusted" {
26677 #[cfg_attr(
26678 any(target_arch = "aarch64", target_arch = "arm64ec"),
26679 link_name = "llvm.aarch64.neon.ld4lane.v4f16.p0"
26680 )]
26681 fn _vld4_lane_f16(
26682 a: float16x4_t,
26683 b: float16x4_t,
26684 c: float16x4_t,
26685 d: float16x4_t,
26686 n: i64,
26687 ptr: *const f16,
26688 ) -> float16x4x4_t;
26689 }
26690 _vld4_lane_f16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
26691}
26692#[doc = "Load multiple 4-element structures to two registers"]
26693#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_f16)"]
26694#[doc = "## Safety"]
26695#[doc = " * Neon instrinsic unsafe"]
26696#[inline]
26697#[cfg(not(target_arch = "arm"))]
26698#[cfg_attr(
26699 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26700 assert_instr(ld4, LANE = 0)
26701)]
26702#[rustc_legacy_const_generics(2)]
26703#[target_feature(enable = "neon,fp16")]
26704#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
26705#[cfg(not(target_arch = "arm64ec"))]
26706pub unsafe fn vld4q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x4_t) -> float16x8x4_t {
26707 static_assert_uimm_bits!(LANE, 3);
26708 unsafe extern "unadjusted" {
26709 #[cfg_attr(
26710 any(target_arch = "aarch64", target_arch = "arm64ec"),
26711 link_name = "llvm.aarch64.neon.ld4lane.v8f16.p0"
26712 )]
26713 fn _vld4q_lane_f16(
26714 a: float16x8_t,
26715 b: float16x8_t,
26716 c: float16x8_t,
26717 d: float16x8_t,
26718 n: i64,
26719 ptr: *const f16,
26720 ) -> float16x8x4_t;
26721 }
26722 _vld4q_lane_f16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
26723}
26724#[doc = "Load multiple 4-element structures to four registers"]
26725#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_f32)"]
26726#[doc = "## Safety"]
26727#[doc = " * Neon instrinsic unsafe"]
26728#[inline]
26729#[target_feature(enable = "neon")]
26730#[cfg(not(target_arch = "arm"))]
26731#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
26732#[rustc_legacy_const_generics(2)]
26733#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26734pub unsafe fn vld4_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x4_t) -> float32x2x4_t {
26735 static_assert_uimm_bits!(LANE, 1);
26736 unsafe extern "unadjusted" {
26737 #[cfg_attr(
26738 any(target_arch = "aarch64", target_arch = "arm64ec"),
26739 link_name = "llvm.aarch64.neon.ld4lane.v2f32.p0"
26740 )]
26741 fn _vld4_lane_f32(
26742 a: float32x2_t,
26743 b: float32x2_t,
26744 c: float32x2_t,
26745 d: float32x2_t,
26746 n: i64,
26747 ptr: *const i8,
26748 ) -> float32x2x4_t;
26749 }
26750 _vld4_lane_f32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
26751}
26752#[doc = "Load multiple 4-element structures to four registers"]
26753#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_f32)"]
26754#[doc = "## Safety"]
26755#[doc = " * Neon instrinsic unsafe"]
26756#[inline]
26757#[target_feature(enable = "neon")]
26758#[cfg(not(target_arch = "arm"))]
26759#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
26760#[rustc_legacy_const_generics(2)]
26761#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26762pub unsafe fn vld4q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x4_t) -> float32x4x4_t {
26763 static_assert_uimm_bits!(LANE, 2);
26764 unsafe extern "unadjusted" {
26765 #[cfg_attr(
26766 any(target_arch = "aarch64", target_arch = "arm64ec"),
26767 link_name = "llvm.aarch64.neon.ld4lane.v4f32.p0"
26768 )]
26769 fn _vld4q_lane_f32(
26770 a: float32x4_t,
26771 b: float32x4_t,
26772 c: float32x4_t,
26773 d: float32x4_t,
26774 n: i64,
26775 ptr: *const i8,
26776 ) -> float32x4x4_t;
26777 }
26778 _vld4q_lane_f32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
26779}
26780#[doc = "Load multiple 4-element structures to four registers"]
26781#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s8)"]
26782#[doc = "## Safety"]
26783#[doc = " * Neon instrinsic unsafe"]
26784#[inline]
26785#[target_feature(enable = "neon")]
26786#[cfg(not(target_arch = "arm"))]
26787#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
26788#[rustc_legacy_const_generics(2)]
26789#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26790pub unsafe fn vld4_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x4_t) -> int8x8x4_t {
26791 static_assert_uimm_bits!(LANE, 3);
26792 unsafe extern "unadjusted" {
26793 #[cfg_attr(
26794 any(target_arch = "aarch64", target_arch = "arm64ec"),
26795 link_name = "llvm.aarch64.neon.ld4lane.v8i8.p0"
26796 )]
26797 fn _vld4_lane_s8(
26798 a: int8x8_t,
26799 b: int8x8_t,
26800 c: int8x8_t,
26801 d: int8x8_t,
26802 n: i64,
26803 ptr: *const i8,
26804 ) -> int8x8x4_t;
26805 }
26806 _vld4_lane_s8(b.0, b.1, b.2, b.3, LANE as i64, a as _)
26807}
26808#[doc = "Load multiple 4-element structures to four registers"]
26809#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s16)"]
26810#[doc = "## Safety"]
26811#[doc = " * Neon instrinsic unsafe"]
26812#[inline]
26813#[target_feature(enable = "neon")]
26814#[cfg(not(target_arch = "arm"))]
26815#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
26816#[rustc_legacy_const_generics(2)]
26817#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26818pub unsafe fn vld4_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x4_t) -> int16x4x4_t {
26819 static_assert_uimm_bits!(LANE, 2);
26820 unsafe extern "unadjusted" {
26821 #[cfg_attr(
26822 any(target_arch = "aarch64", target_arch = "arm64ec"),
26823 link_name = "llvm.aarch64.neon.ld4lane.v4i16.p0"
26824 )]
26825 fn _vld4_lane_s16(
26826 a: int16x4_t,
26827 b: int16x4_t,
26828 c: int16x4_t,
26829 d: int16x4_t,
26830 n: i64,
26831 ptr: *const i8,
26832 ) -> int16x4x4_t;
26833 }
26834 _vld4_lane_s16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
26835}
26836#[doc = "Load multiple 4-element structures to four registers"]
26837#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_s16)"]
26838#[doc = "## Safety"]
26839#[doc = " * Neon instrinsic unsafe"]
26840#[inline]
26841#[target_feature(enable = "neon")]
26842#[cfg(not(target_arch = "arm"))]
26843#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
26844#[rustc_legacy_const_generics(2)]
26845#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26846pub unsafe fn vld4q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x4_t) -> int16x8x4_t {
26847 static_assert_uimm_bits!(LANE, 3);
26848 unsafe extern "unadjusted" {
26849 #[cfg_attr(
26850 any(target_arch = "aarch64", target_arch = "arm64ec"),
26851 link_name = "llvm.aarch64.neon.ld4lane.v8i16.p0"
26852 )]
26853 fn _vld4q_lane_s16(
26854 a: int16x8_t,
26855 b: int16x8_t,
26856 c: int16x8_t,
26857 d: int16x8_t,
26858 n: i64,
26859 ptr: *const i8,
26860 ) -> int16x8x4_t;
26861 }
26862 _vld4q_lane_s16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
26863}
26864#[doc = "Load multiple 4-element structures to four registers"]
26865#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s32)"]
26866#[doc = "## Safety"]
26867#[doc = " * Neon instrinsic unsafe"]
26868#[inline]
26869#[target_feature(enable = "neon")]
26870#[cfg(not(target_arch = "arm"))]
26871#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
26872#[rustc_legacy_const_generics(2)]
26873#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26874pub unsafe fn vld4_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x4_t) -> int32x2x4_t {
26875 static_assert_uimm_bits!(LANE, 1);
26876 unsafe extern "unadjusted" {
26877 #[cfg_attr(
26878 any(target_arch = "aarch64", target_arch = "arm64ec"),
26879 link_name = "llvm.aarch64.neon.ld4lane.v2i32.p0"
26880 )]
26881 fn _vld4_lane_s32(
26882 a: int32x2_t,
26883 b: int32x2_t,
26884 c: int32x2_t,
26885 d: int32x2_t,
26886 n: i64,
26887 ptr: *const i8,
26888 ) -> int32x2x4_t;
26889 }
26890 _vld4_lane_s32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
26891}
26892#[doc = "Load multiple 4-element structures to four registers"]
26893#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_s32)"]
26894#[doc = "## Safety"]
26895#[doc = " * Neon instrinsic unsafe"]
26896#[inline]
26897#[target_feature(enable = "neon")]
26898#[cfg(not(target_arch = "arm"))]
26899#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
26900#[rustc_legacy_const_generics(2)]
26901#[stable(feature = "neon_intrinsics", since = "1.59.0")]
26902pub unsafe fn vld4q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x4_t) -> int32x4x4_t {
26903 static_assert_uimm_bits!(LANE, 2);
26904 unsafe extern "unadjusted" {
26905 #[cfg_attr(
26906 any(target_arch = "aarch64", target_arch = "arm64ec"),
26907 link_name = "llvm.aarch64.neon.ld4lane.v4i32.p0"
26908 )]
26909 fn _vld4q_lane_s32(
26910 a: int32x4_t,
26911 b: int32x4_t,
26912 c: int32x4_t,
26913 d: int32x4_t,
26914 n: i64,
26915 ptr: *const i8,
26916 ) -> int32x4x4_t;
26917 }
26918 _vld4q_lane_s32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
26919}
26920#[doc = "Load multiple 4-element structures to four registers"]
26921#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_f32)"]
26922#[doc = "## Safety"]
26923#[doc = " * Neon instrinsic unsafe"]
26924#[inline]
26925#[target_feature(enable = "neon,v7")]
26926#[cfg(target_arch = "arm")]
26927#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
26928#[rustc_legacy_const_generics(2)]
26929#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26930pub unsafe fn vld4_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x4_t) -> float32x2x4_t {
26931 static_assert_uimm_bits!(LANE, 1);
26932 unsafe extern "unadjusted" {
26933 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v2f32.p0")]
26934 fn _vld4_lane_f32(
26935 ptr: *const i8,
26936 a: float32x2_t,
26937 b: float32x2_t,
26938 c: float32x2_t,
26939 d: float32x2_t,
26940 n: i32,
26941 size: i32,
26942 ) -> float32x2x4_t;
26943 }
26944 _vld4_lane_f32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
26945}
26946#[doc = "Load multiple 4-element structures to four registers"]
26947#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_f32)"]
26948#[doc = "## Safety"]
26949#[doc = " * Neon instrinsic unsafe"]
26950#[inline]
26951#[target_feature(enable = "neon,v7")]
26952#[cfg(target_arch = "arm")]
26953#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
26954#[rustc_legacy_const_generics(2)]
26955#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26956pub unsafe fn vld4q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x4_t) -> float32x4x4_t {
26957 static_assert_uimm_bits!(LANE, 2);
26958 unsafe extern "unadjusted" {
26959 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v4f32.p0")]
26960 fn _vld4q_lane_f32(
26961 ptr: *const i8,
26962 a: float32x4_t,
26963 b: float32x4_t,
26964 c: float32x4_t,
26965 d: float32x4_t,
26966 n: i32,
26967 size: i32,
26968 ) -> float32x4x4_t;
26969 }
26970 _vld4q_lane_f32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
26971}
26972#[doc = "Load multiple 4-element structures to four registers"]
26973#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s8)"]
26974#[doc = "## Safety"]
26975#[doc = " * Neon instrinsic unsafe"]
26976#[inline]
26977#[target_feature(enable = "neon,v7")]
26978#[cfg(target_arch = "arm")]
26979#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
26980#[rustc_legacy_const_generics(2)]
26981#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
26982pub unsafe fn vld4_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x4_t) -> int8x8x4_t {
26983 static_assert_uimm_bits!(LANE, 3);
26984 unsafe extern "unadjusted" {
26985 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v8i8.p0")]
26986 fn _vld4_lane_s8(
26987 ptr: *const i8,
26988 a: int8x8_t,
26989 b: int8x8_t,
26990 c: int8x8_t,
26991 d: int8x8_t,
26992 n: i32,
26993 size: i32,
26994 ) -> int8x8x4_t;
26995 }
26996 _vld4_lane_s8(a as _, b.0, b.1, b.2, b.3, LANE, 1)
26997}
26998#[doc = "Load multiple 4-element structures to four registers"]
26999#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s16)"]
27000#[doc = "## Safety"]
27001#[doc = " * Neon instrinsic unsafe"]
27002#[inline]
27003#[target_feature(enable = "neon,v7")]
27004#[cfg(target_arch = "arm")]
27005#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
27006#[rustc_legacy_const_generics(2)]
27007#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
27008pub unsafe fn vld4_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x4_t) -> int16x4x4_t {
27009 static_assert_uimm_bits!(LANE, 2);
27010 unsafe extern "unadjusted" {
27011 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v4i16.p0")]
27012 fn _vld4_lane_s16(
27013 ptr: *const i8,
27014 a: int16x4_t,
27015 b: int16x4_t,
27016 c: int16x4_t,
27017 d: int16x4_t,
27018 n: i32,
27019 size: i32,
27020 ) -> int16x4x4_t;
27021 }
27022 _vld4_lane_s16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
27023}
27024#[doc = "Load multiple 4-element structures to four registers"]
27025#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_s16)"]
27026#[doc = "## Safety"]
27027#[doc = " * Neon instrinsic unsafe"]
27028#[inline]
27029#[target_feature(enable = "neon,v7")]
27030#[cfg(target_arch = "arm")]
27031#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
27032#[rustc_legacy_const_generics(2)]
27033#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
27034pub unsafe fn vld4q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x4_t) -> int16x8x4_t {
27035 static_assert_uimm_bits!(LANE, 3);
27036 unsafe extern "unadjusted" {
27037 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v8i16.p0")]
27038 fn _vld4q_lane_s16(
27039 ptr: *const i8,
27040 a: int16x8_t,
27041 b: int16x8_t,
27042 c: int16x8_t,
27043 d: int16x8_t,
27044 n: i32,
27045 size: i32,
27046 ) -> int16x8x4_t;
27047 }
27048 _vld4q_lane_s16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
27049}
27050#[doc = "Load multiple 4-element structures to four registers"]
27051#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s32)"]
27052#[doc = "## Safety"]
27053#[doc = " * Neon instrinsic unsafe"]
27054#[inline]
27055#[target_feature(enable = "neon,v7")]
27056#[cfg(target_arch = "arm")]
27057#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
27058#[rustc_legacy_const_generics(2)]
27059#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
27060pub unsafe fn vld4_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x4_t) -> int32x2x4_t {
27061 static_assert_uimm_bits!(LANE, 1);
27062 unsafe extern "unadjusted" {
27063 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v2i32.p0")]
27064 fn _vld4_lane_s32(
27065 ptr: *const i8,
27066 a: int32x2_t,
27067 b: int32x2_t,
27068 c: int32x2_t,
27069 d: int32x2_t,
27070 n: i32,
27071 size: i32,
27072 ) -> int32x2x4_t;
27073 }
27074 _vld4_lane_s32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
27075}
27076#[doc = "Load multiple 4-element structures to four registers"]
27077#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_s32)"]
27078#[doc = "## Safety"]
27079#[doc = " * Neon instrinsic unsafe"]
27080#[inline]
27081#[target_feature(enable = "neon,v7")]
27082#[cfg(target_arch = "arm")]
27083#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
27084#[rustc_legacy_const_generics(2)]
27085#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
27086pub unsafe fn vld4q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x4_t) -> int32x4x4_t {
27087 static_assert_uimm_bits!(LANE, 2);
27088 unsafe extern "unadjusted" {
27089 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v4i32.p0")]
27090 fn _vld4q_lane_s32(
27091 ptr: *const i8,
27092 a: int32x4_t,
27093 b: int32x4_t,
27094 c: int32x4_t,
27095 d: int32x4_t,
27096 n: i32,
27097 size: i32,
27098 ) -> int32x4x4_t;
27099 }
27100 _vld4q_lane_s32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
27101}
27102#[doc = "Load multiple 4-element structures to four registers"]
27103#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_u8)"]
27104#[doc = "## Safety"]
27105#[doc = " * Neon instrinsic unsafe"]
27106#[inline]
27107#[target_feature(enable = "neon")]
27108#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27109#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
27110#[cfg_attr(
27111 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27112 assert_instr(ld4, LANE = 0)
27113)]
27114#[rustc_legacy_const_generics(2)]
27115#[cfg_attr(
27116 not(target_arch = "arm"),
27117 stable(feature = "neon_intrinsics", since = "1.59.0")
27118)]
27119#[cfg_attr(
27120 target_arch = "arm",
27121 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27122)]
27123pub unsafe fn vld4_lane_u8<const LANE: i32>(a: *const u8, b: uint8x8x4_t) -> uint8x8x4_t {
27124 static_assert_uimm_bits!(LANE, 3);
27125 transmute(vld4_lane_s8::<LANE>(transmute(a), transmute(b)))
27126}
27127#[doc = "Load multiple 4-element structures to four registers"]
27128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_u16)"]
27129#[doc = "## Safety"]
27130#[doc = " * Neon instrinsic unsafe"]
27131#[inline]
27132#[target_feature(enable = "neon")]
27133#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27134#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
27135#[cfg_attr(
27136 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27137 assert_instr(ld4, LANE = 0)
27138)]
27139#[rustc_legacy_const_generics(2)]
27140#[cfg_attr(
27141 not(target_arch = "arm"),
27142 stable(feature = "neon_intrinsics", since = "1.59.0")
27143)]
27144#[cfg_attr(
27145 target_arch = "arm",
27146 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27147)]
27148pub unsafe fn vld4_lane_u16<const LANE: i32>(a: *const u16, b: uint16x4x4_t) -> uint16x4x4_t {
27149 static_assert_uimm_bits!(LANE, 2);
27150 transmute(vld4_lane_s16::<LANE>(transmute(a), transmute(b)))
27151}
27152#[doc = "Load multiple 4-element structures to four registers"]
27153#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_u16)"]
27154#[doc = "## Safety"]
27155#[doc = " * Neon instrinsic unsafe"]
27156#[inline]
27157#[target_feature(enable = "neon")]
27158#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27159#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
27160#[cfg_attr(
27161 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27162 assert_instr(ld4, LANE = 0)
27163)]
27164#[rustc_legacy_const_generics(2)]
27165#[cfg_attr(
27166 not(target_arch = "arm"),
27167 stable(feature = "neon_intrinsics", since = "1.59.0")
27168)]
27169#[cfg_attr(
27170 target_arch = "arm",
27171 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27172)]
27173pub unsafe fn vld4q_lane_u16<const LANE: i32>(a: *const u16, b: uint16x8x4_t) -> uint16x8x4_t {
27174 static_assert_uimm_bits!(LANE, 3);
27175 transmute(vld4q_lane_s16::<LANE>(transmute(a), transmute(b)))
27176}
27177#[doc = "Load multiple 4-element structures to four registers"]
27178#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_u32)"]
27179#[doc = "## Safety"]
27180#[doc = " * Neon instrinsic unsafe"]
27181#[inline]
27182#[target_feature(enable = "neon")]
27183#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27184#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
27185#[cfg_attr(
27186 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27187 assert_instr(ld4, LANE = 0)
27188)]
27189#[rustc_legacy_const_generics(2)]
27190#[cfg_attr(
27191 not(target_arch = "arm"),
27192 stable(feature = "neon_intrinsics", since = "1.59.0")
27193)]
27194#[cfg_attr(
27195 target_arch = "arm",
27196 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27197)]
27198pub unsafe fn vld4_lane_u32<const LANE: i32>(a: *const u32, b: uint32x2x4_t) -> uint32x2x4_t {
27199 static_assert_uimm_bits!(LANE, 1);
27200 transmute(vld4_lane_s32::<LANE>(transmute(a), transmute(b)))
27201}
27202#[doc = "Load multiple 4-element structures to four registers"]
27203#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_u32)"]
27204#[doc = "## Safety"]
27205#[doc = " * Neon instrinsic unsafe"]
27206#[inline]
27207#[target_feature(enable = "neon")]
27208#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27209#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
27210#[cfg_attr(
27211 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27212 assert_instr(ld4, LANE = 0)
27213)]
27214#[rustc_legacy_const_generics(2)]
27215#[cfg_attr(
27216 not(target_arch = "arm"),
27217 stable(feature = "neon_intrinsics", since = "1.59.0")
27218)]
27219#[cfg_attr(
27220 target_arch = "arm",
27221 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27222)]
27223pub unsafe fn vld4q_lane_u32<const LANE: i32>(a: *const u32, b: uint32x4x4_t) -> uint32x4x4_t {
27224 static_assert_uimm_bits!(LANE, 2);
27225 transmute(vld4q_lane_s32::<LANE>(transmute(a), transmute(b)))
27226}
27227#[doc = "Load multiple 4-element structures to four registers"]
27228#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_p8)"]
27229#[doc = "## Safety"]
27230#[doc = " * Neon instrinsic unsafe"]
27231#[inline]
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, LANE = 0))]
27235#[cfg_attr(
27236 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27237 assert_instr(ld4, LANE = 0)
27238)]
27239#[rustc_legacy_const_generics(2)]
27240#[cfg_attr(
27241 not(target_arch = "arm"),
27242 stable(feature = "neon_intrinsics", since = "1.59.0")
27243)]
27244#[cfg_attr(
27245 target_arch = "arm",
27246 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27247)]
27248pub unsafe fn vld4_lane_p8<const LANE: i32>(a: *const p8, b: poly8x8x4_t) -> poly8x8x4_t {
27249 static_assert_uimm_bits!(LANE, 3);
27250 transmute(vld4_lane_s8::<LANE>(transmute(a), transmute(b)))
27251}
27252#[doc = "Load multiple 4-element structures to four registers"]
27253#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_p16)"]
27254#[doc = "## Safety"]
27255#[doc = " * Neon instrinsic unsafe"]
27256#[inline]
27257#[target_feature(enable = "neon")]
27258#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27259#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
27260#[cfg_attr(
27261 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27262 assert_instr(ld4, LANE = 0)
27263)]
27264#[rustc_legacy_const_generics(2)]
27265#[cfg_attr(
27266 not(target_arch = "arm"),
27267 stable(feature = "neon_intrinsics", since = "1.59.0")
27268)]
27269#[cfg_attr(
27270 target_arch = "arm",
27271 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27272)]
27273pub unsafe fn vld4_lane_p16<const LANE: i32>(a: *const p16, b: poly16x4x4_t) -> poly16x4x4_t {
27274 static_assert_uimm_bits!(LANE, 2);
27275 transmute(vld4_lane_s16::<LANE>(transmute(a), transmute(b)))
27276}
27277#[doc = "Load multiple 4-element structures to four registers"]
27278#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_p16)"]
27279#[doc = "## Safety"]
27280#[doc = " * Neon instrinsic unsafe"]
27281#[inline]
27282#[target_feature(enable = "neon")]
27283#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27284#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
27285#[cfg_attr(
27286 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27287 assert_instr(ld4, LANE = 0)
27288)]
27289#[rustc_legacy_const_generics(2)]
27290#[cfg_attr(
27291 not(target_arch = "arm"),
27292 stable(feature = "neon_intrinsics", since = "1.59.0")
27293)]
27294#[cfg_attr(
27295 target_arch = "arm",
27296 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27297)]
27298pub unsafe fn vld4q_lane_p16<const LANE: i32>(a: *const p16, b: poly16x8x4_t) -> poly16x8x4_t {
27299 static_assert_uimm_bits!(LANE, 3);
27300 transmute(vld4q_lane_s16::<LANE>(transmute(a), transmute(b)))
27301}
27302#[doc = "Load multiple 4-element structures to four registers"]
27303#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_p64)"]
27304#[doc = "## Safety"]
27305#[doc = " * Neon instrinsic unsafe"]
27306#[inline]
27307#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
27308#[target_feature(enable = "neon,aes")]
27309#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
27310#[cfg_attr(
27311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27312 assert_instr(nop)
27313)]
27314#[cfg_attr(
27315 not(target_arch = "arm"),
27316 stable(feature = "neon_intrinsics", since = "1.59.0")
27317)]
27318#[cfg_attr(
27319 target_arch = "arm",
27320 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27321)]
27322pub unsafe fn vld4_p64(a: *const p64) -> poly64x1x4_t {
27323 transmute(vld4_s64(transmute(a)))
27324}
27325#[doc = "Load multiple 4-element structures to four registers"]
27326#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s64)"]
27327#[doc = "## Safety"]
27328#[doc = " * Neon instrinsic unsafe"]
27329#[inline]
27330#[target_feature(enable = "neon")]
27331#[cfg(not(target_arch = "arm"))]
27332#[stable(feature = "neon_intrinsics", since = "1.59.0")]
27333#[cfg_attr(test, assert_instr(nop))]
27334pub unsafe fn vld4_s64(a: *const i64) -> int64x1x4_t {
27335 unsafe extern "unadjusted" {
27336 #[cfg_attr(
27337 any(target_arch = "aarch64", target_arch = "arm64ec"),
27338 link_name = "llvm.aarch64.neon.ld4.v1i64.p0"
27339 )]
27340 fn _vld4_s64(ptr: *const int64x1_t) -> int64x1x4_t;
27341 }
27342 _vld4_s64(a as _)
27343}
27344#[doc = "Load multiple 4-element structures to four registers"]
27345#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s64)"]
27346#[doc = "## Safety"]
27347#[doc = " * Neon instrinsic unsafe"]
27348#[inline]
27349#[target_feature(enable = "neon,v7")]
27350#[cfg(target_arch = "arm")]
27351#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
27352#[cfg_attr(test, assert_instr(nop))]
27353pub unsafe fn vld4_s64(a: *const i64) -> int64x1x4_t {
27354 unsafe extern "unadjusted" {
27355 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v1i64.p0")]
27356 fn _vld4_s64(ptr: *const i8, size: i32) -> int64x1x4_t;
27357 }
27358 _vld4_s64(a as *const i8, 8)
27359}
27360#[doc = "Load multiple 4-element structures to four registers"]
27361#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u64)"]
27362#[doc = "## Safety"]
27363#[doc = " * Neon instrinsic unsafe"]
27364#[inline]
27365#[target_feature(enable = "neon")]
27366#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27367#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
27368#[cfg_attr(
27369 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27370 assert_instr(nop)
27371)]
27372#[cfg_attr(
27373 not(target_arch = "arm"),
27374 stable(feature = "neon_intrinsics", since = "1.59.0")
27375)]
27376#[cfg_attr(
27377 target_arch = "arm",
27378 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27379)]
27380pub unsafe fn vld4_u64(a: *const u64) -> uint64x1x4_t {
27381 transmute(vld4_s64(transmute(a)))
27382}
27383#[doc = "Load multiple 4-element structures to four registers"]
27384#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u8)"]
27385#[doc = "## Safety"]
27386#[doc = " * Neon instrinsic unsafe"]
27387#[inline]
27388#[cfg(target_endian = "little")]
27389#[target_feature(enable = "neon")]
27390#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27391#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27392#[cfg_attr(
27393 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27394 assert_instr(ld4)
27395)]
27396#[cfg_attr(
27397 not(target_arch = "arm"),
27398 stable(feature = "neon_intrinsics", since = "1.59.0")
27399)]
27400#[cfg_attr(
27401 target_arch = "arm",
27402 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27403)]
27404pub unsafe fn vld4_u8(a: *const u8) -> uint8x8x4_t {
27405 transmute(vld4_s8(transmute(a)))
27406}
27407#[doc = "Load multiple 4-element structures to four registers"]
27408#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u8)"]
27409#[doc = "## Safety"]
27410#[doc = " * Neon instrinsic unsafe"]
27411#[inline]
27412#[cfg(target_endian = "big")]
27413#[target_feature(enable = "neon")]
27414#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27415#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27416#[cfg_attr(
27417 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27418 assert_instr(ld4)
27419)]
27420#[cfg_attr(
27421 not(target_arch = "arm"),
27422 stable(feature = "neon_intrinsics", since = "1.59.0")
27423)]
27424#[cfg_attr(
27425 target_arch = "arm",
27426 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27427)]
27428pub unsafe fn vld4_u8(a: *const u8) -> uint8x8x4_t {
27429 let mut ret_val: uint8x8x4_t = transmute(vld4_s8(transmute(a)));
27430 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
27431 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
27432 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
27433 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
27434 ret_val
27435}
27436#[doc = "Load multiple 4-element structures to four registers"]
27437#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_u8)"]
27438#[doc = "## Safety"]
27439#[doc = " * Neon instrinsic unsafe"]
27440#[inline]
27441#[cfg(target_endian = "little")]
27442#[target_feature(enable = "neon")]
27443#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27444#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27445#[cfg_attr(
27446 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27447 assert_instr(ld4)
27448)]
27449#[cfg_attr(
27450 not(target_arch = "arm"),
27451 stable(feature = "neon_intrinsics", since = "1.59.0")
27452)]
27453#[cfg_attr(
27454 target_arch = "arm",
27455 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27456)]
27457pub unsafe fn vld4q_u8(a: *const u8) -> uint8x16x4_t {
27458 transmute(vld4q_s8(transmute(a)))
27459}
27460#[doc = "Load multiple 4-element structures to four registers"]
27461#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_u8)"]
27462#[doc = "## Safety"]
27463#[doc = " * Neon instrinsic unsafe"]
27464#[inline]
27465#[cfg(target_endian = "big")]
27466#[target_feature(enable = "neon")]
27467#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27468#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27469#[cfg_attr(
27470 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27471 assert_instr(ld4)
27472)]
27473#[cfg_attr(
27474 not(target_arch = "arm"),
27475 stable(feature = "neon_intrinsics", since = "1.59.0")
27476)]
27477#[cfg_attr(
27478 target_arch = "arm",
27479 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27480)]
27481pub unsafe fn vld4q_u8(a: *const u8) -> uint8x16x4_t {
27482 let mut ret_val: uint8x16x4_t = transmute(vld4q_s8(transmute(a)));
27483 ret_val.0 = unsafe {
27484 simd_shuffle!(
27485 ret_val.0,
27486 ret_val.0,
27487 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
27488 )
27489 };
27490 ret_val.1 = unsafe {
27491 simd_shuffle!(
27492 ret_val.1,
27493 ret_val.1,
27494 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
27495 )
27496 };
27497 ret_val.2 = unsafe {
27498 simd_shuffle!(
27499 ret_val.2,
27500 ret_val.2,
27501 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
27502 )
27503 };
27504 ret_val.3 = unsafe {
27505 simd_shuffle!(
27506 ret_val.3,
27507 ret_val.3,
27508 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
27509 )
27510 };
27511 ret_val
27512}
27513#[doc = "Load multiple 4-element structures to four registers"]
27514#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u16)"]
27515#[doc = "## Safety"]
27516#[doc = " * Neon instrinsic unsafe"]
27517#[inline]
27518#[cfg(target_endian = "little")]
27519#[target_feature(enable = "neon")]
27520#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27521#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27522#[cfg_attr(
27523 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27524 assert_instr(ld4)
27525)]
27526#[cfg_attr(
27527 not(target_arch = "arm"),
27528 stable(feature = "neon_intrinsics", since = "1.59.0")
27529)]
27530#[cfg_attr(
27531 target_arch = "arm",
27532 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27533)]
27534pub unsafe fn vld4_u16(a: *const u16) -> uint16x4x4_t {
27535 transmute(vld4_s16(transmute(a)))
27536}
27537#[doc = "Load multiple 4-element structures to four registers"]
27538#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u16)"]
27539#[doc = "## Safety"]
27540#[doc = " * Neon instrinsic unsafe"]
27541#[inline]
27542#[cfg(target_endian = "big")]
27543#[target_feature(enable = "neon")]
27544#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27545#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27546#[cfg_attr(
27547 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27548 assert_instr(ld4)
27549)]
27550#[cfg_attr(
27551 not(target_arch = "arm"),
27552 stable(feature = "neon_intrinsics", since = "1.59.0")
27553)]
27554#[cfg_attr(
27555 target_arch = "arm",
27556 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27557)]
27558pub unsafe fn vld4_u16(a: *const u16) -> uint16x4x4_t {
27559 let mut ret_val: uint16x4x4_t = transmute(vld4_s16(transmute(a)));
27560 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
27561 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
27562 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
27563 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
27564 ret_val
27565}
27566#[doc = "Load multiple 4-element structures to four registers"]
27567#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_u16)"]
27568#[doc = "## Safety"]
27569#[doc = " * Neon instrinsic unsafe"]
27570#[inline]
27571#[cfg(target_endian = "little")]
27572#[target_feature(enable = "neon")]
27573#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27574#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27575#[cfg_attr(
27576 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27577 assert_instr(ld4)
27578)]
27579#[cfg_attr(
27580 not(target_arch = "arm"),
27581 stable(feature = "neon_intrinsics", since = "1.59.0")
27582)]
27583#[cfg_attr(
27584 target_arch = "arm",
27585 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27586)]
27587pub unsafe fn vld4q_u16(a: *const u16) -> uint16x8x4_t {
27588 transmute(vld4q_s16(transmute(a)))
27589}
27590#[doc = "Load multiple 4-element structures to four registers"]
27591#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_u16)"]
27592#[doc = "## Safety"]
27593#[doc = " * Neon instrinsic unsafe"]
27594#[inline]
27595#[cfg(target_endian = "big")]
27596#[target_feature(enable = "neon")]
27597#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27598#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27599#[cfg_attr(
27600 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27601 assert_instr(ld4)
27602)]
27603#[cfg_attr(
27604 not(target_arch = "arm"),
27605 stable(feature = "neon_intrinsics", since = "1.59.0")
27606)]
27607#[cfg_attr(
27608 target_arch = "arm",
27609 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27610)]
27611pub unsafe fn vld4q_u16(a: *const u16) -> uint16x8x4_t {
27612 let mut ret_val: uint16x8x4_t = transmute(vld4q_s16(transmute(a)));
27613 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
27614 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
27615 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
27616 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
27617 ret_val
27618}
27619#[doc = "Load multiple 4-element structures to four registers"]
27620#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u32)"]
27621#[doc = "## Safety"]
27622#[doc = " * Neon instrinsic unsafe"]
27623#[inline]
27624#[cfg(target_endian = "little")]
27625#[target_feature(enable = "neon")]
27626#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27627#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27628#[cfg_attr(
27629 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27630 assert_instr(ld4)
27631)]
27632#[cfg_attr(
27633 not(target_arch = "arm"),
27634 stable(feature = "neon_intrinsics", since = "1.59.0")
27635)]
27636#[cfg_attr(
27637 target_arch = "arm",
27638 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27639)]
27640pub unsafe fn vld4_u32(a: *const u32) -> uint32x2x4_t {
27641 transmute(vld4_s32(transmute(a)))
27642}
27643#[doc = "Load multiple 4-element structures to four registers"]
27644#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u32)"]
27645#[doc = "## Safety"]
27646#[doc = " * Neon instrinsic unsafe"]
27647#[inline]
27648#[cfg(target_endian = "big")]
27649#[target_feature(enable = "neon")]
27650#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27651#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27652#[cfg_attr(
27653 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27654 assert_instr(ld4)
27655)]
27656#[cfg_attr(
27657 not(target_arch = "arm"),
27658 stable(feature = "neon_intrinsics", since = "1.59.0")
27659)]
27660#[cfg_attr(
27661 target_arch = "arm",
27662 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27663)]
27664pub unsafe fn vld4_u32(a: *const u32) -> uint32x2x4_t {
27665 let mut ret_val: uint32x2x4_t = transmute(vld4_s32(transmute(a)));
27666 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
27667 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
27668 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
27669 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [1, 0]) };
27670 ret_val
27671}
27672#[doc = "Load multiple 4-element structures to four registers"]
27673#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_u32)"]
27674#[doc = "## Safety"]
27675#[doc = " * Neon instrinsic unsafe"]
27676#[inline]
27677#[cfg(target_endian = "little")]
27678#[target_feature(enable = "neon")]
27679#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27680#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27681#[cfg_attr(
27682 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27683 assert_instr(ld4)
27684)]
27685#[cfg_attr(
27686 not(target_arch = "arm"),
27687 stable(feature = "neon_intrinsics", since = "1.59.0")
27688)]
27689#[cfg_attr(
27690 target_arch = "arm",
27691 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27692)]
27693pub unsafe fn vld4q_u32(a: *const u32) -> uint32x4x4_t {
27694 transmute(vld4q_s32(transmute(a)))
27695}
27696#[doc = "Load multiple 4-element structures to four registers"]
27697#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_u32)"]
27698#[doc = "## Safety"]
27699#[doc = " * Neon instrinsic unsafe"]
27700#[inline]
27701#[cfg(target_endian = "big")]
27702#[target_feature(enable = "neon")]
27703#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27704#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27705#[cfg_attr(
27706 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27707 assert_instr(ld4)
27708)]
27709#[cfg_attr(
27710 not(target_arch = "arm"),
27711 stable(feature = "neon_intrinsics", since = "1.59.0")
27712)]
27713#[cfg_attr(
27714 target_arch = "arm",
27715 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27716)]
27717pub unsafe fn vld4q_u32(a: *const u32) -> uint32x4x4_t {
27718 let mut ret_val: uint32x4x4_t = transmute(vld4q_s32(transmute(a)));
27719 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
27720 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
27721 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
27722 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
27723 ret_val
27724}
27725#[doc = "Load multiple 4-element structures to four registers"]
27726#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_p8)"]
27727#[doc = "## Safety"]
27728#[doc = " * Neon instrinsic unsafe"]
27729#[inline]
27730#[cfg(target_endian = "little")]
27731#[target_feature(enable = "neon")]
27732#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27733#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27734#[cfg_attr(
27735 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27736 assert_instr(ld4)
27737)]
27738#[cfg_attr(
27739 not(target_arch = "arm"),
27740 stable(feature = "neon_intrinsics", since = "1.59.0")
27741)]
27742#[cfg_attr(
27743 target_arch = "arm",
27744 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27745)]
27746pub unsafe fn vld4_p8(a: *const p8) -> poly8x8x4_t {
27747 transmute(vld4_s8(transmute(a)))
27748}
27749#[doc = "Load multiple 4-element structures to four registers"]
27750#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_p8)"]
27751#[doc = "## Safety"]
27752#[doc = " * Neon instrinsic unsafe"]
27753#[inline]
27754#[cfg(target_endian = "big")]
27755#[target_feature(enable = "neon")]
27756#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27757#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27758#[cfg_attr(
27759 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27760 assert_instr(ld4)
27761)]
27762#[cfg_attr(
27763 not(target_arch = "arm"),
27764 stable(feature = "neon_intrinsics", since = "1.59.0")
27765)]
27766#[cfg_attr(
27767 target_arch = "arm",
27768 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27769)]
27770pub unsafe fn vld4_p8(a: *const p8) -> poly8x8x4_t {
27771 let mut ret_val: poly8x8x4_t = transmute(vld4_s8(transmute(a)));
27772 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
27773 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
27774 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
27775 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
27776 ret_val
27777}
27778#[doc = "Load multiple 4-element structures to four registers"]
27779#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_p8)"]
27780#[doc = "## Safety"]
27781#[doc = " * Neon instrinsic unsafe"]
27782#[inline]
27783#[cfg(target_endian = "little")]
27784#[target_feature(enable = "neon")]
27785#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27786#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27787#[cfg_attr(
27788 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27789 assert_instr(ld4)
27790)]
27791#[cfg_attr(
27792 not(target_arch = "arm"),
27793 stable(feature = "neon_intrinsics", since = "1.59.0")
27794)]
27795#[cfg_attr(
27796 target_arch = "arm",
27797 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27798)]
27799pub unsafe fn vld4q_p8(a: *const p8) -> poly8x16x4_t {
27800 transmute(vld4q_s8(transmute(a)))
27801}
27802#[doc = "Load multiple 4-element structures to four registers"]
27803#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_p8)"]
27804#[doc = "## Safety"]
27805#[doc = " * Neon instrinsic unsafe"]
27806#[inline]
27807#[cfg(target_endian = "big")]
27808#[target_feature(enable = "neon")]
27809#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27810#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27811#[cfg_attr(
27812 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27813 assert_instr(ld4)
27814)]
27815#[cfg_attr(
27816 not(target_arch = "arm"),
27817 stable(feature = "neon_intrinsics", since = "1.59.0")
27818)]
27819#[cfg_attr(
27820 target_arch = "arm",
27821 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27822)]
27823pub unsafe fn vld4q_p8(a: *const p8) -> poly8x16x4_t {
27824 let mut ret_val: poly8x16x4_t = transmute(vld4q_s8(transmute(a)));
27825 ret_val.0 = unsafe {
27826 simd_shuffle!(
27827 ret_val.0,
27828 ret_val.0,
27829 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
27830 )
27831 };
27832 ret_val.1 = unsafe {
27833 simd_shuffle!(
27834 ret_val.1,
27835 ret_val.1,
27836 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
27837 )
27838 };
27839 ret_val.2 = unsafe {
27840 simd_shuffle!(
27841 ret_val.2,
27842 ret_val.2,
27843 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
27844 )
27845 };
27846 ret_val.3 = unsafe {
27847 simd_shuffle!(
27848 ret_val.3,
27849 ret_val.3,
27850 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
27851 )
27852 };
27853 ret_val
27854}
27855#[doc = "Load multiple 4-element structures to four registers"]
27856#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_p16)"]
27857#[doc = "## Safety"]
27858#[doc = " * Neon instrinsic unsafe"]
27859#[inline]
27860#[cfg(target_endian = "little")]
27861#[target_feature(enable = "neon")]
27862#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27863#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27864#[cfg_attr(
27865 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27866 assert_instr(ld4)
27867)]
27868#[cfg_attr(
27869 not(target_arch = "arm"),
27870 stable(feature = "neon_intrinsics", since = "1.59.0")
27871)]
27872#[cfg_attr(
27873 target_arch = "arm",
27874 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27875)]
27876pub unsafe fn vld4_p16(a: *const p16) -> poly16x4x4_t {
27877 transmute(vld4_s16(transmute(a)))
27878}
27879#[doc = "Load multiple 4-element structures to four registers"]
27880#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_p16)"]
27881#[doc = "## Safety"]
27882#[doc = " * Neon instrinsic unsafe"]
27883#[inline]
27884#[cfg(target_endian = "big")]
27885#[target_feature(enable = "neon")]
27886#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27887#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27888#[cfg_attr(
27889 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27890 assert_instr(ld4)
27891)]
27892#[cfg_attr(
27893 not(target_arch = "arm"),
27894 stable(feature = "neon_intrinsics", since = "1.59.0")
27895)]
27896#[cfg_attr(
27897 target_arch = "arm",
27898 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27899)]
27900pub unsafe fn vld4_p16(a: *const p16) -> poly16x4x4_t {
27901 let mut ret_val: poly16x4x4_t = transmute(vld4_s16(transmute(a)));
27902 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
27903 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
27904 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
27905 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
27906 ret_val
27907}
27908#[doc = "Load multiple 4-element structures to four registers"]
27909#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_p16)"]
27910#[doc = "## Safety"]
27911#[doc = " * Neon instrinsic unsafe"]
27912#[inline]
27913#[cfg(target_endian = "little")]
27914#[target_feature(enable = "neon")]
27915#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27916#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27917#[cfg_attr(
27918 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27919 assert_instr(ld4)
27920)]
27921#[cfg_attr(
27922 not(target_arch = "arm"),
27923 stable(feature = "neon_intrinsics", since = "1.59.0")
27924)]
27925#[cfg_attr(
27926 target_arch = "arm",
27927 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27928)]
27929pub unsafe fn vld4q_p16(a: *const p16) -> poly16x8x4_t {
27930 transmute(vld4q_s16(transmute(a)))
27931}
27932#[doc = "Load multiple 4-element structures to four registers"]
27933#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_p16)"]
27934#[doc = "## Safety"]
27935#[doc = " * Neon instrinsic unsafe"]
27936#[inline]
27937#[cfg(target_endian = "big")]
27938#[target_feature(enable = "neon")]
27939#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27940#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
27941#[cfg_attr(
27942 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27943 assert_instr(ld4)
27944)]
27945#[cfg_attr(
27946 not(target_arch = "arm"),
27947 stable(feature = "neon_intrinsics", since = "1.59.0")
27948)]
27949#[cfg_attr(
27950 target_arch = "arm",
27951 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27952)]
27953pub unsafe fn vld4q_p16(a: *const p16) -> poly16x8x4_t {
27954 let mut ret_val: poly16x8x4_t = transmute(vld4q_s16(transmute(a)));
27955 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
27956 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
27957 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
27958 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
27959 ret_val
27960}
27961#[doc = "Store SIMD&FP register (immediate offset)"]
27962#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vldrq_p128)"]
27963#[doc = "## Safety"]
27964#[doc = " * Neon instrinsic unsafe"]
27965#[inline]
27966#[target_feature(enable = "neon")]
27967#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27968#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
27969#[cfg_attr(
27970 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27971 assert_instr(nop)
27972)]
27973#[cfg_attr(
27974 not(target_arch = "arm"),
27975 stable(feature = "neon_intrinsics", since = "1.59.0")
27976)]
27977#[cfg_attr(
27978 target_arch = "arm",
27979 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27980)]
27981pub unsafe fn vldrq_p128(a: *const p128) -> p128 {
27982 *a
27983}
27984#[doc = "Maximum (vector)"]
27985#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_f16)"]
27986#[inline]
27987#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
27988#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
27989#[cfg_attr(
27990 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27991 assert_instr(fmax)
27992)]
27993#[target_feature(enable = "neon,fp16")]
27994#[cfg_attr(
27995 not(target_arch = "arm"),
27996 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
27997)]
27998#[cfg_attr(
27999 target_arch = "arm",
28000 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28001)]
28002#[cfg(not(target_arch = "arm64ec"))]
28003pub fn vmax_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
28004 unsafe extern "unadjusted" {
28005 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v4f16")]
28006 #[cfg_attr(
28007 any(target_arch = "aarch64", target_arch = "arm64ec"),
28008 link_name = "llvm.aarch64.neon.fmax.v4f16"
28009 )]
28010 fn _vmax_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
28011 }
28012 unsafe { _vmax_f16(a, b) }
28013}
28014#[doc = "Maximum (vector)"]
28015#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_f16)"]
28016#[inline]
28017#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
28018#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
28019#[cfg_attr(
28020 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28021 assert_instr(fmax)
28022)]
28023#[target_feature(enable = "neon,fp16")]
28024#[cfg_attr(
28025 not(target_arch = "arm"),
28026 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
28027)]
28028#[cfg_attr(
28029 target_arch = "arm",
28030 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28031)]
28032#[cfg(not(target_arch = "arm64ec"))]
28033pub fn vmaxq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
28034 unsafe extern "unadjusted" {
28035 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v8f16")]
28036 #[cfg_attr(
28037 any(target_arch = "aarch64", target_arch = "arm64ec"),
28038 link_name = "llvm.aarch64.neon.fmax.v8f16"
28039 )]
28040 fn _vmaxq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
28041 }
28042 unsafe { _vmaxq_f16(a, b) }
28043}
28044#[doc = "Maximum (vector)"]
28045#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_f32)"]
28046#[inline]
28047#[target_feature(enable = "neon")]
28048#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28049#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
28050#[cfg_attr(
28051 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28052 assert_instr(fmax)
28053)]
28054#[cfg_attr(
28055 not(target_arch = "arm"),
28056 stable(feature = "neon_intrinsics", since = "1.59.0")
28057)]
28058#[cfg_attr(
28059 target_arch = "arm",
28060 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28061)]
28062pub fn vmax_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
28063 unsafe extern "unadjusted" {
28064 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v2f32")]
28065 #[cfg_attr(
28066 any(target_arch = "aarch64", target_arch = "arm64ec"),
28067 link_name = "llvm.aarch64.neon.fmax.v2f32"
28068 )]
28069 fn _vmax_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
28070 }
28071 unsafe { _vmax_f32(a, b) }
28072}
28073#[doc = "Maximum (vector)"]
28074#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_f32)"]
28075#[inline]
28076#[target_feature(enable = "neon")]
28077#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28078#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
28079#[cfg_attr(
28080 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28081 assert_instr(fmax)
28082)]
28083#[cfg_attr(
28084 not(target_arch = "arm"),
28085 stable(feature = "neon_intrinsics", since = "1.59.0")
28086)]
28087#[cfg_attr(
28088 target_arch = "arm",
28089 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28090)]
28091pub fn vmaxq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
28092 unsafe extern "unadjusted" {
28093 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v4f32")]
28094 #[cfg_attr(
28095 any(target_arch = "aarch64", target_arch = "arm64ec"),
28096 link_name = "llvm.aarch64.neon.fmax.v4f32"
28097 )]
28098 fn _vmaxq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
28099 }
28100 unsafe { _vmaxq_f32(a, b) }
28101}
28102#[doc = "Maximum (vector)"]
28103#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_s8)"]
28104#[inline]
28105#[target_feature(enable = "neon")]
28106#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28107#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
28108#[cfg_attr(
28109 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28110 assert_instr(smax)
28111)]
28112#[cfg_attr(
28113 not(target_arch = "arm"),
28114 stable(feature = "neon_intrinsics", since = "1.59.0")
28115)]
28116#[cfg_attr(
28117 target_arch = "arm",
28118 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28119)]
28120pub fn vmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
28121 unsafe {
28122 let mask: int8x8_t = simd_ge(a, b);
28123 simd_select(mask, a, b)
28124 }
28125}
28126#[doc = "Maximum (vector)"]
28127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s8)"]
28128#[inline]
28129#[target_feature(enable = "neon")]
28130#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28131#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
28132#[cfg_attr(
28133 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28134 assert_instr(smax)
28135)]
28136#[cfg_attr(
28137 not(target_arch = "arm"),
28138 stable(feature = "neon_intrinsics", since = "1.59.0")
28139)]
28140#[cfg_attr(
28141 target_arch = "arm",
28142 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28143)]
28144pub fn vmaxq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
28145 unsafe {
28146 let mask: int8x16_t = simd_ge(a, b);
28147 simd_select(mask, a, b)
28148 }
28149}
28150#[doc = "Maximum (vector)"]
28151#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_s16)"]
28152#[inline]
28153#[target_feature(enable = "neon")]
28154#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28155#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
28156#[cfg_attr(
28157 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28158 assert_instr(smax)
28159)]
28160#[cfg_attr(
28161 not(target_arch = "arm"),
28162 stable(feature = "neon_intrinsics", since = "1.59.0")
28163)]
28164#[cfg_attr(
28165 target_arch = "arm",
28166 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28167)]
28168pub fn vmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
28169 unsafe {
28170 let mask: int16x4_t = simd_ge(a, b);
28171 simd_select(mask, a, b)
28172 }
28173}
28174#[doc = "Maximum (vector)"]
28175#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s16)"]
28176#[inline]
28177#[target_feature(enable = "neon")]
28178#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28179#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
28180#[cfg_attr(
28181 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28182 assert_instr(smax)
28183)]
28184#[cfg_attr(
28185 not(target_arch = "arm"),
28186 stable(feature = "neon_intrinsics", since = "1.59.0")
28187)]
28188#[cfg_attr(
28189 target_arch = "arm",
28190 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28191)]
28192pub fn vmaxq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
28193 unsafe {
28194 let mask: int16x8_t = simd_ge(a, b);
28195 simd_select(mask, a, b)
28196 }
28197}
28198#[doc = "Maximum (vector)"]
28199#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_s32)"]
28200#[inline]
28201#[target_feature(enable = "neon")]
28202#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28203#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
28204#[cfg_attr(
28205 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28206 assert_instr(smax)
28207)]
28208#[cfg_attr(
28209 not(target_arch = "arm"),
28210 stable(feature = "neon_intrinsics", since = "1.59.0")
28211)]
28212#[cfg_attr(
28213 target_arch = "arm",
28214 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28215)]
28216pub fn vmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
28217 unsafe {
28218 let mask: int32x2_t = simd_ge(a, b);
28219 simd_select(mask, a, b)
28220 }
28221}
28222#[doc = "Maximum (vector)"]
28223#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s32)"]
28224#[inline]
28225#[target_feature(enable = "neon")]
28226#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28227#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
28228#[cfg_attr(
28229 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28230 assert_instr(smax)
28231)]
28232#[cfg_attr(
28233 not(target_arch = "arm"),
28234 stable(feature = "neon_intrinsics", since = "1.59.0")
28235)]
28236#[cfg_attr(
28237 target_arch = "arm",
28238 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28239)]
28240pub fn vmaxq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
28241 unsafe {
28242 let mask: int32x4_t = simd_ge(a, b);
28243 simd_select(mask, a, b)
28244 }
28245}
28246#[doc = "Maximum (vector)"]
28247#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u8)"]
28248#[inline]
28249#[target_feature(enable = "neon")]
28250#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28251#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
28252#[cfg_attr(
28253 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28254 assert_instr(umax)
28255)]
28256#[cfg_attr(
28257 not(target_arch = "arm"),
28258 stable(feature = "neon_intrinsics", since = "1.59.0")
28259)]
28260#[cfg_attr(
28261 target_arch = "arm",
28262 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28263)]
28264pub fn vmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
28265 unsafe {
28266 let mask: uint8x8_t = simd_ge(a, b);
28267 simd_select(mask, a, b)
28268 }
28269}
28270#[doc = "Maximum (vector)"]
28271#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u8)"]
28272#[inline]
28273#[target_feature(enable = "neon")]
28274#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28275#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
28276#[cfg_attr(
28277 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28278 assert_instr(umax)
28279)]
28280#[cfg_attr(
28281 not(target_arch = "arm"),
28282 stable(feature = "neon_intrinsics", since = "1.59.0")
28283)]
28284#[cfg_attr(
28285 target_arch = "arm",
28286 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28287)]
28288pub fn vmaxq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
28289 unsafe {
28290 let mask: uint8x16_t = simd_ge(a, b);
28291 simd_select(mask, a, b)
28292 }
28293}
28294#[doc = "Maximum (vector)"]
28295#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u16)"]
28296#[inline]
28297#[target_feature(enable = "neon")]
28298#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28299#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
28300#[cfg_attr(
28301 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28302 assert_instr(umax)
28303)]
28304#[cfg_attr(
28305 not(target_arch = "arm"),
28306 stable(feature = "neon_intrinsics", since = "1.59.0")
28307)]
28308#[cfg_attr(
28309 target_arch = "arm",
28310 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28311)]
28312pub fn vmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
28313 unsafe {
28314 let mask: uint16x4_t = simd_ge(a, b);
28315 simd_select(mask, a, b)
28316 }
28317}
28318#[doc = "Maximum (vector)"]
28319#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u16)"]
28320#[inline]
28321#[target_feature(enable = "neon")]
28322#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28323#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
28324#[cfg_attr(
28325 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28326 assert_instr(umax)
28327)]
28328#[cfg_attr(
28329 not(target_arch = "arm"),
28330 stable(feature = "neon_intrinsics", since = "1.59.0")
28331)]
28332#[cfg_attr(
28333 target_arch = "arm",
28334 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28335)]
28336pub fn vmaxq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
28337 unsafe {
28338 let mask: uint16x8_t = simd_ge(a, b);
28339 simd_select(mask, a, b)
28340 }
28341}
28342#[doc = "Maximum (vector)"]
28343#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u32)"]
28344#[inline]
28345#[target_feature(enable = "neon")]
28346#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28347#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
28348#[cfg_attr(
28349 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28350 assert_instr(umax)
28351)]
28352#[cfg_attr(
28353 not(target_arch = "arm"),
28354 stable(feature = "neon_intrinsics", since = "1.59.0")
28355)]
28356#[cfg_attr(
28357 target_arch = "arm",
28358 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28359)]
28360pub fn vmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
28361 unsafe {
28362 let mask: uint32x2_t = simd_ge(a, b);
28363 simd_select(mask, a, b)
28364 }
28365}
28366#[doc = "Maximum (vector)"]
28367#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u32)"]
28368#[inline]
28369#[target_feature(enable = "neon")]
28370#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28371#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
28372#[cfg_attr(
28373 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28374 assert_instr(umax)
28375)]
28376#[cfg_attr(
28377 not(target_arch = "arm"),
28378 stable(feature = "neon_intrinsics", since = "1.59.0")
28379)]
28380#[cfg_attr(
28381 target_arch = "arm",
28382 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28383)]
28384pub fn vmaxq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
28385 unsafe {
28386 let mask: uint32x4_t = simd_ge(a, b);
28387 simd_select(mask, a, b)
28388 }
28389}
28390#[doc = "Floating-point Maximum Number (vector)"]
28391#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnm_f16)"]
28392#[inline]
28393#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
28394#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmaxnm))]
28395#[cfg_attr(
28396 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28397 assert_instr(fmaxnm)
28398)]
28399#[target_feature(enable = "neon,fp16")]
28400#[cfg_attr(
28401 not(target_arch = "arm"),
28402 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
28403)]
28404#[cfg_attr(
28405 target_arch = "arm",
28406 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28407)]
28408#[cfg(not(target_arch = "arm64ec"))]
28409pub fn vmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
28410 unsafe { simd_fmax(a, b) }
28411}
28412#[doc = "Floating-point Maximum Number (vector)"]
28413#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f16)"]
28414#[inline]
28415#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
28416#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmaxnm))]
28417#[cfg_attr(
28418 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28419 assert_instr(fmaxnm)
28420)]
28421#[target_feature(enable = "neon,fp16")]
28422#[cfg_attr(
28423 not(target_arch = "arm"),
28424 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
28425)]
28426#[cfg_attr(
28427 target_arch = "arm",
28428 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28429)]
28430#[cfg(not(target_arch = "arm64ec"))]
28431pub fn vmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
28432 unsafe { simd_fmax(a, b) }
28433}
28434#[doc = "Floating-point Maximum Number (vector)"]
28435#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnm_f32)"]
28436#[inline]
28437#[target_feature(enable = "neon")]
28438#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
28439#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmaxnm))]
28440#[cfg_attr(
28441 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28442 assert_instr(fmaxnm)
28443)]
28444#[cfg_attr(
28445 not(target_arch = "arm"),
28446 stable(feature = "neon_intrinsics", since = "1.59.0")
28447)]
28448#[cfg_attr(
28449 target_arch = "arm",
28450 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28451)]
28452pub fn vmaxnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
28453 unsafe { simd_fmax(a, b) }
28454}
28455#[doc = "Floating-point Maximum Number (vector)"]
28456#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f32)"]
28457#[inline]
28458#[target_feature(enable = "neon")]
28459#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
28460#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmaxnm))]
28461#[cfg_attr(
28462 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28463 assert_instr(fmaxnm)
28464)]
28465#[cfg_attr(
28466 not(target_arch = "arm"),
28467 stable(feature = "neon_intrinsics", since = "1.59.0")
28468)]
28469#[cfg_attr(
28470 target_arch = "arm",
28471 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28472)]
28473pub fn vmaxnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
28474 unsafe { simd_fmax(a, b) }
28475}
28476#[doc = "Minimum (vector)"]
28477#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_f16)"]
28478#[inline]
28479#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
28480#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28481#[cfg_attr(
28482 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28483 assert_instr(fmin)
28484)]
28485#[target_feature(enable = "neon,fp16")]
28486#[cfg_attr(
28487 not(target_arch = "arm"),
28488 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
28489)]
28490#[cfg_attr(
28491 target_arch = "arm",
28492 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28493)]
28494#[cfg(not(target_arch = "arm64ec"))]
28495pub fn vmin_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
28496 unsafe extern "unadjusted" {
28497 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v4f16")]
28498 #[cfg_attr(
28499 any(target_arch = "aarch64", target_arch = "arm64ec"),
28500 link_name = "llvm.aarch64.neon.fmin.v4f16"
28501 )]
28502 fn _vmin_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
28503 }
28504 unsafe { _vmin_f16(a, b) }
28505}
28506#[doc = "Minimum (vector)"]
28507#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_f16)"]
28508#[inline]
28509#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
28510#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28511#[cfg_attr(
28512 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28513 assert_instr(fmin)
28514)]
28515#[target_feature(enable = "neon,fp16")]
28516#[cfg_attr(
28517 not(target_arch = "arm"),
28518 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
28519)]
28520#[cfg_attr(
28521 target_arch = "arm",
28522 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28523)]
28524#[cfg(not(target_arch = "arm64ec"))]
28525pub fn vminq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
28526 unsafe extern "unadjusted" {
28527 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v8f16")]
28528 #[cfg_attr(
28529 any(target_arch = "aarch64", target_arch = "arm64ec"),
28530 link_name = "llvm.aarch64.neon.fmin.v8f16"
28531 )]
28532 fn _vminq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
28533 }
28534 unsafe { _vminq_f16(a, b) }
28535}
28536#[doc = "Minimum (vector)"]
28537#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_f32)"]
28538#[inline]
28539#[target_feature(enable = "neon")]
28540#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28541#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28542#[cfg_attr(
28543 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28544 assert_instr(fmin)
28545)]
28546#[cfg_attr(
28547 not(target_arch = "arm"),
28548 stable(feature = "neon_intrinsics", since = "1.59.0")
28549)]
28550#[cfg_attr(
28551 target_arch = "arm",
28552 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28553)]
28554pub fn vmin_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
28555 unsafe extern "unadjusted" {
28556 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v2f32")]
28557 #[cfg_attr(
28558 any(target_arch = "aarch64", target_arch = "arm64ec"),
28559 link_name = "llvm.aarch64.neon.fmin.v2f32"
28560 )]
28561 fn _vmin_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
28562 }
28563 unsafe { _vmin_f32(a, b) }
28564}
28565#[doc = "Minimum (vector)"]
28566#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_f32)"]
28567#[inline]
28568#[target_feature(enable = "neon")]
28569#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28570#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28571#[cfg_attr(
28572 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28573 assert_instr(fmin)
28574)]
28575#[cfg_attr(
28576 not(target_arch = "arm"),
28577 stable(feature = "neon_intrinsics", since = "1.59.0")
28578)]
28579#[cfg_attr(
28580 target_arch = "arm",
28581 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28582)]
28583pub fn vminq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
28584 unsafe extern "unadjusted" {
28585 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v4f32")]
28586 #[cfg_attr(
28587 any(target_arch = "aarch64", target_arch = "arm64ec"),
28588 link_name = "llvm.aarch64.neon.fmin.v4f32"
28589 )]
28590 fn _vminq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
28591 }
28592 unsafe { _vminq_f32(a, b) }
28593}
28594#[doc = "Minimum (vector)"]
28595#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_s8)"]
28596#[inline]
28597#[target_feature(enable = "neon")]
28598#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28599#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28600#[cfg_attr(
28601 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28602 assert_instr(smin)
28603)]
28604#[cfg_attr(
28605 not(target_arch = "arm"),
28606 stable(feature = "neon_intrinsics", since = "1.59.0")
28607)]
28608#[cfg_attr(
28609 target_arch = "arm",
28610 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28611)]
28612pub fn vmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
28613 unsafe {
28614 let mask: int8x8_t = simd_le(a, b);
28615 simd_select(mask, a, b)
28616 }
28617}
28618#[doc = "Minimum (vector)"]
28619#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s8)"]
28620#[inline]
28621#[target_feature(enable = "neon")]
28622#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28623#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28624#[cfg_attr(
28625 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28626 assert_instr(smin)
28627)]
28628#[cfg_attr(
28629 not(target_arch = "arm"),
28630 stable(feature = "neon_intrinsics", since = "1.59.0")
28631)]
28632#[cfg_attr(
28633 target_arch = "arm",
28634 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28635)]
28636pub fn vminq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
28637 unsafe {
28638 let mask: int8x16_t = simd_le(a, b);
28639 simd_select(mask, a, b)
28640 }
28641}
28642#[doc = "Minimum (vector)"]
28643#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_s16)"]
28644#[inline]
28645#[target_feature(enable = "neon")]
28646#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28647#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28648#[cfg_attr(
28649 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28650 assert_instr(smin)
28651)]
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 vmin_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
28661 unsafe {
28662 let mask: int16x4_t = simd_le(a, b);
28663 simd_select(mask, a, b)
28664 }
28665}
28666#[doc = "Minimum (vector)"]
28667#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s16)"]
28668#[inline]
28669#[target_feature(enable = "neon")]
28670#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28671#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28672#[cfg_attr(
28673 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28674 assert_instr(smin)
28675)]
28676#[cfg_attr(
28677 not(target_arch = "arm"),
28678 stable(feature = "neon_intrinsics", since = "1.59.0")
28679)]
28680#[cfg_attr(
28681 target_arch = "arm",
28682 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28683)]
28684pub fn vminq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
28685 unsafe {
28686 let mask: int16x8_t = simd_le(a, b);
28687 simd_select(mask, a, b)
28688 }
28689}
28690#[doc = "Minimum (vector)"]
28691#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_s32)"]
28692#[inline]
28693#[target_feature(enable = "neon")]
28694#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28695#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28696#[cfg_attr(
28697 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28698 assert_instr(smin)
28699)]
28700#[cfg_attr(
28701 not(target_arch = "arm"),
28702 stable(feature = "neon_intrinsics", since = "1.59.0")
28703)]
28704#[cfg_attr(
28705 target_arch = "arm",
28706 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28707)]
28708pub fn vmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
28709 unsafe {
28710 let mask: int32x2_t = simd_le(a, b);
28711 simd_select(mask, a, b)
28712 }
28713}
28714#[doc = "Minimum (vector)"]
28715#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s32)"]
28716#[inline]
28717#[target_feature(enable = "neon")]
28718#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28719#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28720#[cfg_attr(
28721 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28722 assert_instr(smin)
28723)]
28724#[cfg_attr(
28725 not(target_arch = "arm"),
28726 stable(feature = "neon_intrinsics", since = "1.59.0")
28727)]
28728#[cfg_attr(
28729 target_arch = "arm",
28730 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28731)]
28732pub fn vminq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
28733 unsafe {
28734 let mask: int32x4_t = simd_le(a, b);
28735 simd_select(mask, a, b)
28736 }
28737}
28738#[doc = "Minimum (vector)"]
28739#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u8)"]
28740#[inline]
28741#[target_feature(enable = "neon")]
28742#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28743#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28744#[cfg_attr(
28745 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28746 assert_instr(umin)
28747)]
28748#[cfg_attr(
28749 not(target_arch = "arm"),
28750 stable(feature = "neon_intrinsics", since = "1.59.0")
28751)]
28752#[cfg_attr(
28753 target_arch = "arm",
28754 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28755)]
28756pub fn vmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
28757 unsafe {
28758 let mask: uint8x8_t = simd_le(a, b);
28759 simd_select(mask, a, b)
28760 }
28761}
28762#[doc = "Minimum (vector)"]
28763#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u8)"]
28764#[inline]
28765#[target_feature(enable = "neon")]
28766#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28767#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28768#[cfg_attr(
28769 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28770 assert_instr(umin)
28771)]
28772#[cfg_attr(
28773 not(target_arch = "arm"),
28774 stable(feature = "neon_intrinsics", since = "1.59.0")
28775)]
28776#[cfg_attr(
28777 target_arch = "arm",
28778 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28779)]
28780pub fn vminq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
28781 unsafe {
28782 let mask: uint8x16_t = simd_le(a, b);
28783 simd_select(mask, a, b)
28784 }
28785}
28786#[doc = "Minimum (vector)"]
28787#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u16)"]
28788#[inline]
28789#[target_feature(enable = "neon")]
28790#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28791#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28792#[cfg_attr(
28793 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28794 assert_instr(umin)
28795)]
28796#[cfg_attr(
28797 not(target_arch = "arm"),
28798 stable(feature = "neon_intrinsics", since = "1.59.0")
28799)]
28800#[cfg_attr(
28801 target_arch = "arm",
28802 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28803)]
28804pub fn vmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
28805 unsafe {
28806 let mask: uint16x4_t = simd_le(a, b);
28807 simd_select(mask, a, b)
28808 }
28809}
28810#[doc = "Minimum (vector)"]
28811#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u16)"]
28812#[inline]
28813#[target_feature(enable = "neon")]
28814#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28815#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28816#[cfg_attr(
28817 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28818 assert_instr(umin)
28819)]
28820#[cfg_attr(
28821 not(target_arch = "arm"),
28822 stable(feature = "neon_intrinsics", since = "1.59.0")
28823)]
28824#[cfg_attr(
28825 target_arch = "arm",
28826 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28827)]
28828pub fn vminq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
28829 unsafe {
28830 let mask: uint16x8_t = simd_le(a, b);
28831 simd_select(mask, a, b)
28832 }
28833}
28834#[doc = "Minimum (vector)"]
28835#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u32)"]
28836#[inline]
28837#[target_feature(enable = "neon")]
28838#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28839#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28840#[cfg_attr(
28841 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28842 assert_instr(umin)
28843)]
28844#[cfg_attr(
28845 not(target_arch = "arm"),
28846 stable(feature = "neon_intrinsics", since = "1.59.0")
28847)]
28848#[cfg_attr(
28849 target_arch = "arm",
28850 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28851)]
28852pub fn vmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
28853 unsafe {
28854 let mask: uint32x2_t = simd_le(a, b);
28855 simd_select(mask, a, b)
28856 }
28857}
28858#[doc = "Minimum (vector)"]
28859#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u32)"]
28860#[inline]
28861#[target_feature(enable = "neon")]
28862#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28863#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
28864#[cfg_attr(
28865 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28866 assert_instr(umin)
28867)]
28868#[cfg_attr(
28869 not(target_arch = "arm"),
28870 stable(feature = "neon_intrinsics", since = "1.59.0")
28871)]
28872#[cfg_attr(
28873 target_arch = "arm",
28874 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28875)]
28876pub fn vminq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
28877 unsafe {
28878 let mask: uint32x4_t = simd_le(a, b);
28879 simd_select(mask, a, b)
28880 }
28881}
28882#[doc = "Floating-point Minimum Number (vector)"]
28883#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnm_f16)"]
28884#[inline]
28885#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
28886#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vminnm))]
28887#[cfg_attr(
28888 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28889 assert_instr(fminnm)
28890)]
28891#[target_feature(enable = "neon,fp16")]
28892#[cfg_attr(
28893 not(target_arch = "arm"),
28894 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
28895)]
28896#[cfg_attr(
28897 target_arch = "arm",
28898 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28899)]
28900#[cfg(not(target_arch = "arm64ec"))]
28901pub fn vminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
28902 unsafe { simd_fmin(a, b) }
28903}
28904#[doc = "Floating-point Minimum Number (vector)"]
28905#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f16)"]
28906#[inline]
28907#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
28908#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vminnm))]
28909#[cfg_attr(
28910 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28911 assert_instr(fminnm)
28912)]
28913#[target_feature(enable = "neon,fp16")]
28914#[cfg_attr(
28915 not(target_arch = "arm"),
28916 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
28917)]
28918#[cfg_attr(
28919 target_arch = "arm",
28920 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28921)]
28922#[cfg(not(target_arch = "arm64ec"))]
28923pub fn vminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
28924 unsafe { simd_fmin(a, b) }
28925}
28926#[doc = "Floating-point Minimum Number (vector)"]
28927#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnm_f32)"]
28928#[inline]
28929#[target_feature(enable = "neon")]
28930#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
28931#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vminnm))]
28932#[cfg_attr(
28933 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28934 assert_instr(fminnm)
28935)]
28936#[cfg_attr(
28937 not(target_arch = "arm"),
28938 stable(feature = "neon_intrinsics", since = "1.59.0")
28939)]
28940#[cfg_attr(
28941 target_arch = "arm",
28942 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28943)]
28944pub fn vminnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
28945 unsafe { simd_fmin(a, b) }
28946}
28947#[doc = "Floating-point Minimum Number (vector)"]
28948#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f32)"]
28949#[inline]
28950#[target_feature(enable = "neon")]
28951#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
28952#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vminnm))]
28953#[cfg_attr(
28954 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28955 assert_instr(fminnm)
28956)]
28957#[cfg_attr(
28958 not(target_arch = "arm"),
28959 stable(feature = "neon_intrinsics", since = "1.59.0")
28960)]
28961#[cfg_attr(
28962 target_arch = "arm",
28963 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28964)]
28965pub fn vminnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
28966 unsafe { simd_fmin(a, b) }
28967}
28968#[doc = "Floating-point multiply-add to accumulator"]
28969#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_f32)"]
28970#[inline]
28971#[target_feature(enable = "neon")]
28972#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28973#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32"))]
28974#[cfg_attr(
28975 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28976 assert_instr(fmul)
28977)]
28978#[cfg_attr(
28979 not(target_arch = "arm"),
28980 stable(feature = "neon_intrinsics", since = "1.59.0")
28981)]
28982#[cfg_attr(
28983 target_arch = "arm",
28984 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28985)]
28986pub fn vmla_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t) -> float32x2_t {
28987 unsafe { simd_add(a, simd_mul(b, c)) }
28988}
28989#[doc = "Floating-point multiply-add to accumulator"]
28990#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_f32)"]
28991#[inline]
28992#[target_feature(enable = "neon")]
28993#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28994#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32"))]
28995#[cfg_attr(
28996 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28997 assert_instr(fmul)
28998)]
28999#[cfg_attr(
29000 not(target_arch = "arm"),
29001 stable(feature = "neon_intrinsics", since = "1.59.0")
29002)]
29003#[cfg_attr(
29004 target_arch = "arm",
29005 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29006)]
29007pub fn vmlaq_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t) -> float32x4_t {
29008 unsafe { simd_add(a, simd_mul(b, c)) }
29009}
29010#[doc = "Vector multiply accumulate with scalar"]
29011#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_f32)"]
29012#[inline]
29013#[target_feature(enable = "neon")]
29014#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29015#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32", LANE = 1))]
29016#[cfg_attr(
29017 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29018 assert_instr(fmul, LANE = 1)
29019)]
29020#[rustc_legacy_const_generics(3)]
29021#[cfg_attr(
29022 not(target_arch = "arm"),
29023 stable(feature = "neon_intrinsics", since = "1.59.0")
29024)]
29025#[cfg_attr(
29026 target_arch = "arm",
29027 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29028)]
29029pub fn vmla_lane_f32<const LANE: i32>(
29030 a: float32x2_t,
29031 b: float32x2_t,
29032 c: float32x2_t,
29033) -> float32x2_t {
29034 static_assert_uimm_bits!(LANE, 1);
29035 unsafe { vmla_f32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29036}
29037#[doc = "Vector multiply accumulate with scalar"]
29038#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_f32)"]
29039#[inline]
29040#[target_feature(enable = "neon")]
29041#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29042#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32", LANE = 1))]
29043#[cfg_attr(
29044 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29045 assert_instr(fmul, LANE = 1)
29046)]
29047#[rustc_legacy_const_generics(3)]
29048#[cfg_attr(
29049 not(target_arch = "arm"),
29050 stable(feature = "neon_intrinsics", since = "1.59.0")
29051)]
29052#[cfg_attr(
29053 target_arch = "arm",
29054 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29055)]
29056pub fn vmla_laneq_f32<const LANE: i32>(
29057 a: float32x2_t,
29058 b: float32x2_t,
29059 c: float32x4_t,
29060) -> float32x2_t {
29061 static_assert_uimm_bits!(LANE, 2);
29062 unsafe { vmla_f32(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/vmlaq_lane_f32)"]
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.f32", LANE = 1))]
29070#[cfg_attr(
29071 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29072 assert_instr(fmul, 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 vmlaq_lane_f32<const LANE: i32>(
29084 a: float32x4_t,
29085 b: float32x4_t,
29086 c: float32x2_t,
29087) -> float32x4_t {
29088 static_assert_uimm_bits!(LANE, 1);
29089 unsafe {
29090 vmlaq_f32(
29091 a,
29092 b,
29093 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29094 )
29095 }
29096}
29097#[doc = "Vector multiply accumulate with scalar"]
29098#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_f32)"]
29099#[inline]
29100#[target_feature(enable = "neon")]
29101#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29102#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32", LANE = 1))]
29103#[cfg_attr(
29104 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29105 assert_instr(fmul, LANE = 1)
29106)]
29107#[rustc_legacy_const_generics(3)]
29108#[cfg_attr(
29109 not(target_arch = "arm"),
29110 stable(feature = "neon_intrinsics", since = "1.59.0")
29111)]
29112#[cfg_attr(
29113 target_arch = "arm",
29114 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29115)]
29116pub fn vmlaq_laneq_f32<const LANE: i32>(
29117 a: float32x4_t,
29118 b: float32x4_t,
29119 c: float32x4_t,
29120) -> float32x4_t {
29121 static_assert_uimm_bits!(LANE, 2);
29122 unsafe {
29123 vmlaq_f32(
29124 a,
29125 b,
29126 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29127 )
29128 }
29129}
29130#[doc = "Vector multiply accumulate with scalar"]
29131#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_s16)"]
29132#[inline]
29133#[target_feature(enable = "neon")]
29134#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29135#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
29136#[cfg_attr(
29137 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29138 assert_instr(mla, LANE = 1)
29139)]
29140#[rustc_legacy_const_generics(3)]
29141#[cfg_attr(
29142 not(target_arch = "arm"),
29143 stable(feature = "neon_intrinsics", since = "1.59.0")
29144)]
29145#[cfg_attr(
29146 target_arch = "arm",
29147 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29148)]
29149pub fn vmla_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
29150 static_assert_uimm_bits!(LANE, 2);
29151 unsafe {
29152 vmla_s16(
29153 a,
29154 b,
29155 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29156 )
29157 }
29158}
29159#[doc = "Vector multiply accumulate with scalar"]
29160#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_u16)"]
29161#[inline]
29162#[target_feature(enable = "neon")]
29163#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29164#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
29165#[cfg_attr(
29166 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29167 assert_instr(mla, LANE = 1)
29168)]
29169#[rustc_legacy_const_generics(3)]
29170#[cfg_attr(
29171 not(target_arch = "arm"),
29172 stable(feature = "neon_intrinsics", since = "1.59.0")
29173)]
29174#[cfg_attr(
29175 target_arch = "arm",
29176 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29177)]
29178pub fn vmla_lane_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t, c: uint16x4_t) -> uint16x4_t {
29179 static_assert_uimm_bits!(LANE, 2);
29180 unsafe {
29181 vmla_u16(
29182 a,
29183 b,
29184 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29185 )
29186 }
29187}
29188#[doc = "Vector multiply accumulate with scalar"]
29189#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_s16)"]
29190#[inline]
29191#[target_feature(enable = "neon")]
29192#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29193#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
29194#[cfg_attr(
29195 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29196 assert_instr(mla, LANE = 1)
29197)]
29198#[rustc_legacy_const_generics(3)]
29199#[cfg_attr(
29200 not(target_arch = "arm"),
29201 stable(feature = "neon_intrinsics", since = "1.59.0")
29202)]
29203#[cfg_attr(
29204 target_arch = "arm",
29205 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29206)]
29207pub fn vmla_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t, c: int16x8_t) -> int16x4_t {
29208 static_assert_uimm_bits!(LANE, 3);
29209 unsafe {
29210 vmla_s16(
29211 a,
29212 b,
29213 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29214 )
29215 }
29216}
29217#[doc = "Vector multiply accumulate with scalar"]
29218#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_u16)"]
29219#[inline]
29220#[target_feature(enable = "neon")]
29221#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29222#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
29223#[cfg_attr(
29224 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29225 assert_instr(mla, LANE = 1)
29226)]
29227#[rustc_legacy_const_generics(3)]
29228#[cfg_attr(
29229 not(target_arch = "arm"),
29230 stable(feature = "neon_intrinsics", since = "1.59.0")
29231)]
29232#[cfg_attr(
29233 target_arch = "arm",
29234 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29235)]
29236pub fn vmla_laneq_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t, c: uint16x8_t) -> uint16x4_t {
29237 static_assert_uimm_bits!(LANE, 3);
29238 unsafe {
29239 vmla_u16(
29240 a,
29241 b,
29242 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29243 )
29244 }
29245}
29246#[doc = "Vector multiply accumulate with scalar"]
29247#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_lane_s16)"]
29248#[inline]
29249#[target_feature(enable = "neon")]
29250#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29251#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
29252#[cfg_attr(
29253 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29254 assert_instr(mla, LANE = 1)
29255)]
29256#[rustc_legacy_const_generics(3)]
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_lane_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t, c: int16x4_t) -> int16x8_t {
29266 static_assert_uimm_bits!(LANE, 2);
29267 unsafe {
29268 vmlaq_s16(
29269 a,
29270 b,
29271 simd_shuffle!(
29272 c,
29273 c,
29274 [
29275 LANE as u32,
29276 LANE as u32,
29277 LANE as u32,
29278 LANE as u32,
29279 LANE as u32,
29280 LANE as u32,
29281 LANE as u32,
29282 LANE as u32
29283 ]
29284 ),
29285 )
29286 }
29287}
29288#[doc = "Vector multiply accumulate with scalar"]
29289#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_lane_u16)"]
29290#[inline]
29291#[target_feature(enable = "neon")]
29292#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29293#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
29294#[cfg_attr(
29295 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29296 assert_instr(mla, LANE = 1)
29297)]
29298#[rustc_legacy_const_generics(3)]
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_lane_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t, c: uint16x4_t) -> uint16x8_t {
29308 static_assert_uimm_bits!(LANE, 2);
29309 unsafe {
29310 vmlaq_u16(
29311 a,
29312 b,
29313 simd_shuffle!(
29314 c,
29315 c,
29316 [
29317 LANE as u32,
29318 LANE as u32,
29319 LANE as u32,
29320 LANE as u32,
29321 LANE as u32,
29322 LANE as u32,
29323 LANE as u32,
29324 LANE as u32
29325 ]
29326 ),
29327 )
29328 }
29329}
29330#[doc = "Vector multiply accumulate with scalar"]
29331#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_s16)"]
29332#[inline]
29333#[target_feature(enable = "neon")]
29334#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29335#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
29336#[cfg_attr(
29337 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29338 assert_instr(mla, LANE = 1)
29339)]
29340#[rustc_legacy_const_generics(3)]
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_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
29350 static_assert_uimm_bits!(LANE, 3);
29351 unsafe {
29352 vmlaq_s16(
29353 a,
29354 b,
29355 simd_shuffle!(
29356 c,
29357 c,
29358 [
29359 LANE as u32,
29360 LANE as u32,
29361 LANE as u32,
29362 LANE as u32,
29363 LANE as u32,
29364 LANE as u32,
29365 LANE as u32,
29366 LANE as u32
29367 ]
29368 ),
29369 )
29370 }
29371}
29372#[doc = "Vector multiply accumulate with scalar"]
29373#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_u16)"]
29374#[inline]
29375#[target_feature(enable = "neon")]
29376#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29377#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
29378#[cfg_attr(
29379 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29380 assert_instr(mla, LANE = 1)
29381)]
29382#[rustc_legacy_const_generics(3)]
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_laneq_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t, c: uint16x8_t) -> uint16x8_t {
29392 static_assert_uimm_bits!(LANE, 3);
29393 unsafe {
29394 vmlaq_u16(
29395 a,
29396 b,
29397 simd_shuffle!(
29398 c,
29399 c,
29400 [
29401 LANE as u32,
29402 LANE as u32,
29403 LANE as u32,
29404 LANE as u32,
29405 LANE as u32,
29406 LANE as u32,
29407 LANE as u32,
29408 LANE as u32
29409 ]
29410 ),
29411 )
29412 }
29413}
29414#[doc = "Vector multiply accumulate with scalar"]
29415#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_s32)"]
29416#[inline]
29417#[target_feature(enable = "neon")]
29418#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29419#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
29420#[cfg_attr(
29421 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29422 assert_instr(mla, LANE = 1)
29423)]
29424#[rustc_legacy_const_generics(3)]
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 vmla_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
29434 static_assert_uimm_bits!(LANE, 1);
29435 unsafe { vmla_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29436}
29437#[doc = "Vector multiply accumulate with scalar"]
29438#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_u32)"]
29439#[inline]
29440#[target_feature(enable = "neon")]
29441#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29442#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
29443#[cfg_attr(
29444 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29445 assert_instr(mla, LANE = 1)
29446)]
29447#[rustc_legacy_const_generics(3)]
29448#[cfg_attr(
29449 not(target_arch = "arm"),
29450 stable(feature = "neon_intrinsics", since = "1.59.0")
29451)]
29452#[cfg_attr(
29453 target_arch = "arm",
29454 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29455)]
29456pub fn vmla_lane_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t, c: uint32x2_t) -> uint32x2_t {
29457 static_assert_uimm_bits!(LANE, 1);
29458 unsafe { vmla_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29459}
29460#[doc = "Vector multiply accumulate with scalar"]
29461#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_s32)"]
29462#[inline]
29463#[target_feature(enable = "neon")]
29464#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29465#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
29466#[cfg_attr(
29467 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29468 assert_instr(mla, LANE = 1)
29469)]
29470#[rustc_legacy_const_generics(3)]
29471#[cfg_attr(
29472 not(target_arch = "arm"),
29473 stable(feature = "neon_intrinsics", since = "1.59.0")
29474)]
29475#[cfg_attr(
29476 target_arch = "arm",
29477 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29478)]
29479pub fn vmla_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t, c: int32x4_t) -> int32x2_t {
29480 static_assert_uimm_bits!(LANE, 2);
29481 unsafe { vmla_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29482}
29483#[doc = "Vector multiply accumulate with scalar"]
29484#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_u32)"]
29485#[inline]
29486#[target_feature(enable = "neon")]
29487#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29488#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
29489#[cfg_attr(
29490 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29491 assert_instr(mla, LANE = 1)
29492)]
29493#[rustc_legacy_const_generics(3)]
29494#[cfg_attr(
29495 not(target_arch = "arm"),
29496 stable(feature = "neon_intrinsics", since = "1.59.0")
29497)]
29498#[cfg_attr(
29499 target_arch = "arm",
29500 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29501)]
29502pub fn vmla_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t, c: uint32x4_t) -> uint32x2_t {
29503 static_assert_uimm_bits!(LANE, 2);
29504 unsafe { vmla_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29505}
29506#[doc = "Vector multiply accumulate with scalar"]
29507#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_lane_s32)"]
29508#[inline]
29509#[target_feature(enable = "neon")]
29510#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29511#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
29512#[cfg_attr(
29513 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29514 assert_instr(mla, LANE = 1)
29515)]
29516#[rustc_legacy_const_generics(3)]
29517#[cfg_attr(
29518 not(target_arch = "arm"),
29519 stable(feature = "neon_intrinsics", since = "1.59.0")
29520)]
29521#[cfg_attr(
29522 target_arch = "arm",
29523 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29524)]
29525pub fn vmlaq_lane_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t, c: int32x2_t) -> int32x4_t {
29526 static_assert_uimm_bits!(LANE, 1);
29527 unsafe {
29528 vmlaq_s32(
29529 a,
29530 b,
29531 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29532 )
29533 }
29534}
29535#[doc = "Vector multiply accumulate with scalar"]
29536#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_lane_u32)"]
29537#[inline]
29538#[target_feature(enable = "neon")]
29539#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29540#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
29541#[cfg_attr(
29542 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29543 assert_instr(mla, LANE = 1)
29544)]
29545#[rustc_legacy_const_generics(3)]
29546#[cfg_attr(
29547 not(target_arch = "arm"),
29548 stable(feature = "neon_intrinsics", since = "1.59.0")
29549)]
29550#[cfg_attr(
29551 target_arch = "arm",
29552 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29553)]
29554pub fn vmlaq_lane_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t, c: uint32x2_t) -> uint32x4_t {
29555 static_assert_uimm_bits!(LANE, 1);
29556 unsafe {
29557 vmlaq_u32(
29558 a,
29559 b,
29560 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29561 )
29562 }
29563}
29564#[doc = "Vector multiply accumulate with scalar"]
29565#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_s32)"]
29566#[inline]
29567#[target_feature(enable = "neon")]
29568#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29569#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
29570#[cfg_attr(
29571 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29572 assert_instr(mla, LANE = 1)
29573)]
29574#[rustc_legacy_const_generics(3)]
29575#[cfg_attr(
29576 not(target_arch = "arm"),
29577 stable(feature = "neon_intrinsics", since = "1.59.0")
29578)]
29579#[cfg_attr(
29580 target_arch = "arm",
29581 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29582)]
29583pub fn vmlaq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
29584 static_assert_uimm_bits!(LANE, 2);
29585 unsafe {
29586 vmlaq_s32(
29587 a,
29588 b,
29589 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29590 )
29591 }
29592}
29593#[doc = "Vector multiply accumulate with scalar"]
29594#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_u32)"]
29595#[inline]
29596#[target_feature(enable = "neon")]
29597#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29598#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
29599#[cfg_attr(
29600 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29601 assert_instr(mla, LANE = 1)
29602)]
29603#[rustc_legacy_const_generics(3)]
29604#[cfg_attr(
29605 not(target_arch = "arm"),
29606 stable(feature = "neon_intrinsics", since = "1.59.0")
29607)]
29608#[cfg_attr(
29609 target_arch = "arm",
29610 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29611)]
29612pub fn vmlaq_laneq_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t, c: uint32x4_t) -> uint32x4_t {
29613 static_assert_uimm_bits!(LANE, 2);
29614 unsafe {
29615 vmlaq_u32(
29616 a,
29617 b,
29618 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29619 )
29620 }
29621}
29622#[doc = "Vector multiply accumulate with scalar"]
29623#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_f32)"]
29624#[inline]
29625#[target_feature(enable = "neon")]
29626#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29627#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32"))]
29628#[cfg_attr(
29629 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29630 assert_instr(fmul)
29631)]
29632#[cfg_attr(
29633 not(target_arch = "arm"),
29634 stable(feature = "neon_intrinsics", since = "1.59.0")
29635)]
29636#[cfg_attr(
29637 target_arch = "arm",
29638 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29639)]
29640pub fn vmla_n_f32(a: float32x2_t, b: float32x2_t, c: f32) -> float32x2_t {
29641 vmla_f32(a, b, vdup_n_f32(c))
29642}
29643#[doc = "Vector multiply accumulate with scalar"]
29644#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_f32)"]
29645#[inline]
29646#[target_feature(enable = "neon")]
29647#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29648#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32"))]
29649#[cfg_attr(
29650 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29651 assert_instr(fmul)
29652)]
29653#[cfg_attr(
29654 not(target_arch = "arm"),
29655 stable(feature = "neon_intrinsics", since = "1.59.0")
29656)]
29657#[cfg_attr(
29658 target_arch = "arm",
29659 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29660)]
29661pub fn vmlaq_n_f32(a: float32x4_t, b: float32x4_t, c: f32) -> float32x4_t {
29662 vmlaq_f32(a, b, vdupq_n_f32(c))
29663}
29664#[doc = "Vector multiply accumulate with scalar"]
29665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_s16)"]
29666#[inline]
29667#[target_feature(enable = "neon")]
29668#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29669#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
29670#[cfg_attr(
29671 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29672 assert_instr(mla)
29673)]
29674#[cfg_attr(
29675 not(target_arch = "arm"),
29676 stable(feature = "neon_intrinsics", since = "1.59.0")
29677)]
29678#[cfg_attr(
29679 target_arch = "arm",
29680 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29681)]
29682pub fn vmla_n_s16(a: int16x4_t, b: int16x4_t, c: i16) -> int16x4_t {
29683 vmla_s16(a, b, vdup_n_s16(c))
29684}
29685#[doc = "Vector multiply accumulate with scalar"]
29686#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_s16)"]
29687#[inline]
29688#[target_feature(enable = "neon")]
29689#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29690#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
29691#[cfg_attr(
29692 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29693 assert_instr(mla)
29694)]
29695#[cfg_attr(
29696 not(target_arch = "arm"),
29697 stable(feature = "neon_intrinsics", since = "1.59.0")
29698)]
29699#[cfg_attr(
29700 target_arch = "arm",
29701 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29702)]
29703pub fn vmlaq_n_s16(a: int16x8_t, b: int16x8_t, c: i16) -> int16x8_t {
29704 vmlaq_s16(a, b, vdupq_n_s16(c))
29705}
29706#[doc = "Vector multiply accumulate with scalar"]
29707#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_u16)"]
29708#[inline]
29709#[target_feature(enable = "neon")]
29710#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29711#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
29712#[cfg_attr(
29713 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29714 assert_instr(mla)
29715)]
29716#[cfg_attr(
29717 not(target_arch = "arm"),
29718 stable(feature = "neon_intrinsics", since = "1.59.0")
29719)]
29720#[cfg_attr(
29721 target_arch = "arm",
29722 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29723)]
29724pub fn vmla_n_u16(a: uint16x4_t, b: uint16x4_t, c: u16) -> uint16x4_t {
29725 vmla_u16(a, b, vdup_n_u16(c))
29726}
29727#[doc = "Vector multiply accumulate with scalar"]
29728#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_u16)"]
29729#[inline]
29730#[target_feature(enable = "neon")]
29731#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29732#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
29733#[cfg_attr(
29734 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29735 assert_instr(mla)
29736)]
29737#[cfg_attr(
29738 not(target_arch = "arm"),
29739 stable(feature = "neon_intrinsics", since = "1.59.0")
29740)]
29741#[cfg_attr(
29742 target_arch = "arm",
29743 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29744)]
29745pub fn vmlaq_n_u16(a: uint16x8_t, b: uint16x8_t, c: u16) -> uint16x8_t {
29746 vmlaq_u16(a, b, vdupq_n_u16(c))
29747}
29748#[doc = "Vector multiply accumulate with scalar"]
29749#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_s32)"]
29750#[inline]
29751#[target_feature(enable = "neon")]
29752#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29753#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
29754#[cfg_attr(
29755 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29756 assert_instr(mla)
29757)]
29758#[cfg_attr(
29759 not(target_arch = "arm"),
29760 stable(feature = "neon_intrinsics", since = "1.59.0")
29761)]
29762#[cfg_attr(
29763 target_arch = "arm",
29764 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29765)]
29766pub fn vmla_n_s32(a: int32x2_t, b: int32x2_t, c: i32) -> int32x2_t {
29767 vmla_s32(a, b, vdup_n_s32(c))
29768}
29769#[doc = "Vector multiply accumulate with scalar"]
29770#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_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("vmla.i32"))]
29775#[cfg_attr(
29776 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29777 assert_instr(mla)
29778)]
29779#[cfg_attr(
29780 not(target_arch = "arm"),
29781 stable(feature = "neon_intrinsics", since = "1.59.0")
29782)]
29783#[cfg_attr(
29784 target_arch = "arm",
29785 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29786)]
29787pub fn vmlaq_n_s32(a: int32x4_t, b: int32x4_t, c: i32) -> int32x4_t {
29788 vmlaq_s32(a, b, vdupq_n_s32(c))
29789}
29790#[doc = "Vector multiply accumulate with scalar"]
29791#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_u32)"]
29792#[inline]
29793#[target_feature(enable = "neon")]
29794#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29795#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
29796#[cfg_attr(
29797 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29798 assert_instr(mla)
29799)]
29800#[cfg_attr(
29801 not(target_arch = "arm"),
29802 stable(feature = "neon_intrinsics", since = "1.59.0")
29803)]
29804#[cfg_attr(
29805 target_arch = "arm",
29806 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29807)]
29808pub fn vmla_n_u32(a: uint32x2_t, b: uint32x2_t, c: u32) -> uint32x2_t {
29809 vmla_u32(a, b, vdup_n_u32(c))
29810}
29811#[doc = "Vector multiply accumulate with scalar"]
29812#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_u32)"]
29813#[inline]
29814#[target_feature(enable = "neon")]
29815#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29816#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
29817#[cfg_attr(
29818 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29819 assert_instr(mla)
29820)]
29821#[cfg_attr(
29822 not(target_arch = "arm"),
29823 stable(feature = "neon_intrinsics", since = "1.59.0")
29824)]
29825#[cfg_attr(
29826 target_arch = "arm",
29827 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29828)]
29829pub fn vmlaq_n_u32(a: uint32x4_t, b: uint32x4_t, c: u32) -> uint32x4_t {
29830 vmlaq_u32(a, b, vdupq_n_u32(c))
29831}
29832#[doc = "Multiply-add to accumulator"]
29833#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_s8)"]
29834#[inline]
29835#[target_feature(enable = "neon")]
29836#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29837#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i8"))]
29838#[cfg_attr(
29839 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29840 assert_instr(mla)
29841)]
29842#[cfg_attr(
29843 not(target_arch = "arm"),
29844 stable(feature = "neon_intrinsics", since = "1.59.0")
29845)]
29846#[cfg_attr(
29847 target_arch = "arm",
29848 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29849)]
29850pub fn vmla_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
29851 unsafe { simd_add(a, simd_mul(b, c)) }
29852}
29853#[doc = "Multiply-add to accumulator"]
29854#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_s8)"]
29855#[inline]
29856#[target_feature(enable = "neon")]
29857#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29858#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i8"))]
29859#[cfg_attr(
29860 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29861 assert_instr(mla)
29862)]
29863#[cfg_attr(
29864 not(target_arch = "arm"),
29865 stable(feature = "neon_intrinsics", since = "1.59.0")
29866)]
29867#[cfg_attr(
29868 target_arch = "arm",
29869 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29870)]
29871pub fn vmlaq_s8(a: int8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t {
29872 unsafe { simd_add(a, simd_mul(b, c)) }
29873}
29874#[doc = "Multiply-add to accumulator"]
29875#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_s16)"]
29876#[inline]
29877#[target_feature(enable = "neon")]
29878#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29879#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
29880#[cfg_attr(
29881 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29882 assert_instr(mla)
29883)]
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 vmla_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
29893 unsafe { simd_add(a, simd_mul(b, c)) }
29894}
29895#[doc = "Multiply-add to accumulator"]
29896#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_s16)"]
29897#[inline]
29898#[target_feature(enable = "neon")]
29899#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29900#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
29901#[cfg_attr(
29902 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29903 assert_instr(mla)
29904)]
29905#[cfg_attr(
29906 not(target_arch = "arm"),
29907 stable(feature = "neon_intrinsics", since = "1.59.0")
29908)]
29909#[cfg_attr(
29910 target_arch = "arm",
29911 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29912)]
29913pub fn vmlaq_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
29914 unsafe { simd_add(a, simd_mul(b, c)) }
29915}
29916#[doc = "Multiply-add to accumulator"]
29917#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_s32)"]
29918#[inline]
29919#[target_feature(enable = "neon")]
29920#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29921#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
29922#[cfg_attr(
29923 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29924 assert_instr(mla)
29925)]
29926#[cfg_attr(
29927 not(target_arch = "arm"),
29928 stable(feature = "neon_intrinsics", since = "1.59.0")
29929)]
29930#[cfg_attr(
29931 target_arch = "arm",
29932 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29933)]
29934pub fn vmla_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
29935 unsafe { simd_add(a, simd_mul(b, c)) }
29936}
29937#[doc = "Multiply-add to accumulator"]
29938#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_s32)"]
29939#[inline]
29940#[target_feature(enable = "neon")]
29941#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29942#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
29943#[cfg_attr(
29944 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29945 assert_instr(mla)
29946)]
29947#[cfg_attr(
29948 not(target_arch = "arm"),
29949 stable(feature = "neon_intrinsics", since = "1.59.0")
29950)]
29951#[cfg_attr(
29952 target_arch = "arm",
29953 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29954)]
29955pub fn vmlaq_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
29956 unsafe { simd_add(a, simd_mul(b, c)) }
29957}
29958#[doc = "Multiply-add to accumulator"]
29959#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_u8)"]
29960#[inline]
29961#[target_feature(enable = "neon")]
29962#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29963#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i8"))]
29964#[cfg_attr(
29965 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29966 assert_instr(mla)
29967)]
29968#[cfg_attr(
29969 not(target_arch = "arm"),
29970 stable(feature = "neon_intrinsics", since = "1.59.0")
29971)]
29972#[cfg_attr(
29973 target_arch = "arm",
29974 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29975)]
29976pub fn vmla_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
29977 unsafe { simd_add(a, simd_mul(b, c)) }
29978}
29979#[doc = "Multiply-add to accumulator"]
29980#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_u8)"]
29981#[inline]
29982#[target_feature(enable = "neon")]
29983#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29984#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i8"))]
29985#[cfg_attr(
29986 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29987 assert_instr(mla)
29988)]
29989#[cfg_attr(
29990 not(target_arch = "arm"),
29991 stable(feature = "neon_intrinsics", since = "1.59.0")
29992)]
29993#[cfg_attr(
29994 target_arch = "arm",
29995 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29996)]
29997pub fn vmlaq_u8(a: uint8x16_t, b: uint8x16_t, c: uint8x16_t) -> uint8x16_t {
29998 unsafe { simd_add(a, simd_mul(b, c)) }
29999}
30000#[doc = "Multiply-add to accumulator"]
30001#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_u16)"]
30002#[inline]
30003#[target_feature(enable = "neon")]
30004#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30005#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
30006#[cfg_attr(
30007 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30008 assert_instr(mla)
30009)]
30010#[cfg_attr(
30011 not(target_arch = "arm"),
30012 stable(feature = "neon_intrinsics", since = "1.59.0")
30013)]
30014#[cfg_attr(
30015 target_arch = "arm",
30016 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30017)]
30018pub fn vmla_u16(a: uint16x4_t, b: uint16x4_t, c: uint16x4_t) -> uint16x4_t {
30019 unsafe { simd_add(a, simd_mul(b, c)) }
30020}
30021#[doc = "Multiply-add to accumulator"]
30022#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_u16)"]
30023#[inline]
30024#[target_feature(enable = "neon")]
30025#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30026#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
30027#[cfg_attr(
30028 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30029 assert_instr(mla)
30030)]
30031#[cfg_attr(
30032 not(target_arch = "arm"),
30033 stable(feature = "neon_intrinsics", since = "1.59.0")
30034)]
30035#[cfg_attr(
30036 target_arch = "arm",
30037 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30038)]
30039pub fn vmlaq_u16(a: uint16x8_t, b: uint16x8_t, c: uint16x8_t) -> uint16x8_t {
30040 unsafe { simd_add(a, simd_mul(b, c)) }
30041}
30042#[doc = "Multiply-add to accumulator"]
30043#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_u32)"]
30044#[inline]
30045#[target_feature(enable = "neon")]
30046#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30047#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
30048#[cfg_attr(
30049 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30050 assert_instr(mla)
30051)]
30052#[cfg_attr(
30053 not(target_arch = "arm"),
30054 stable(feature = "neon_intrinsics", since = "1.59.0")
30055)]
30056#[cfg_attr(
30057 target_arch = "arm",
30058 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30059)]
30060pub fn vmla_u32(a: uint32x2_t, b: uint32x2_t, c: uint32x2_t) -> uint32x2_t {
30061 unsafe { simd_add(a, simd_mul(b, c)) }
30062}
30063#[doc = "Multiply-add to accumulator"]
30064#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_u32)"]
30065#[inline]
30066#[target_feature(enable = "neon")]
30067#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30068#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
30069#[cfg_attr(
30070 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30071 assert_instr(mla)
30072)]
30073#[cfg_attr(
30074 not(target_arch = "arm"),
30075 stable(feature = "neon_intrinsics", since = "1.59.0")
30076)]
30077#[cfg_attr(
30078 target_arch = "arm",
30079 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30080)]
30081pub fn vmlaq_u32(a: uint32x4_t, b: uint32x4_t, c: uint32x4_t) -> uint32x4_t {
30082 unsafe { simd_add(a, simd_mul(b, c)) }
30083}
30084#[doc = "Vector widening multiply accumulate with scalar"]
30085#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_lane_s16)"]
30086#[inline]
30087#[target_feature(enable = "neon")]
30088#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30089#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s16", LANE = 1))]
30090#[cfg_attr(
30091 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30092 assert_instr(smlal, LANE = 1)
30093)]
30094#[rustc_legacy_const_generics(3)]
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_lane_s16<const LANE: i32>(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
30104 static_assert_uimm_bits!(LANE, 2);
30105 unsafe {
30106 vmlal_s16(
30107 a,
30108 b,
30109 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30110 )
30111 }
30112}
30113#[doc = "Vector widening multiply accumulate with scalar"]
30114#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_laneq_s16)"]
30115#[inline]
30116#[target_feature(enable = "neon")]
30117#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30118#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s16", LANE = 1))]
30119#[cfg_attr(
30120 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30121 assert_instr(smlal, LANE = 1)
30122)]
30123#[rustc_legacy_const_generics(3)]
30124#[cfg_attr(
30125 not(target_arch = "arm"),
30126 stable(feature = "neon_intrinsics", since = "1.59.0")
30127)]
30128#[cfg_attr(
30129 target_arch = "arm",
30130 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30131)]
30132pub fn vmlal_laneq_s16<const LANE: i32>(a: int32x4_t, b: int16x4_t, c: int16x8_t) -> int32x4_t {
30133 static_assert_uimm_bits!(LANE, 3);
30134 unsafe {
30135 vmlal_s16(
30136 a,
30137 b,
30138 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30139 )
30140 }
30141}
30142#[doc = "Vector widening multiply accumulate with scalar"]
30143#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_lane_s32)"]
30144#[inline]
30145#[target_feature(enable = "neon")]
30146#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30147#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s32", LANE = 1))]
30148#[cfg_attr(
30149 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30150 assert_instr(smlal, LANE = 1)
30151)]
30152#[rustc_legacy_const_generics(3)]
30153#[cfg_attr(
30154 not(target_arch = "arm"),
30155 stable(feature = "neon_intrinsics", since = "1.59.0")
30156)]
30157#[cfg_attr(
30158 target_arch = "arm",
30159 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30160)]
30161pub fn vmlal_lane_s32<const LANE: i32>(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
30162 static_assert_uimm_bits!(LANE, 1);
30163 unsafe { vmlal_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
30164}
30165#[doc = "Vector widening multiply accumulate with scalar"]
30166#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_laneq_s32)"]
30167#[inline]
30168#[target_feature(enable = "neon")]
30169#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30170#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s32", LANE = 1))]
30171#[cfg_attr(
30172 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30173 assert_instr(smlal, LANE = 1)
30174)]
30175#[rustc_legacy_const_generics(3)]
30176#[cfg_attr(
30177 not(target_arch = "arm"),
30178 stable(feature = "neon_intrinsics", since = "1.59.0")
30179)]
30180#[cfg_attr(
30181 target_arch = "arm",
30182 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30183)]
30184pub fn vmlal_laneq_s32<const LANE: i32>(a: int64x2_t, b: int32x2_t, c: int32x4_t) -> int64x2_t {
30185 static_assert_uimm_bits!(LANE, 2);
30186 unsafe { vmlal_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
30187}
30188#[doc = "Vector widening multiply accumulate with scalar"]
30189#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_lane_u16)"]
30190#[inline]
30191#[target_feature(enable = "neon")]
30192#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30193#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u16", LANE = 1))]
30194#[cfg_attr(
30195 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30196 assert_instr(umlal, LANE = 1)
30197)]
30198#[rustc_legacy_const_generics(3)]
30199#[cfg_attr(
30200 not(target_arch = "arm"),
30201 stable(feature = "neon_intrinsics", since = "1.59.0")
30202)]
30203#[cfg_attr(
30204 target_arch = "arm",
30205 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30206)]
30207pub fn vmlal_lane_u16<const LANE: i32>(a: uint32x4_t, b: uint16x4_t, c: uint16x4_t) -> uint32x4_t {
30208 static_assert_uimm_bits!(LANE, 2);
30209 unsafe {
30210 vmlal_u16(
30211 a,
30212 b,
30213 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30214 )
30215 }
30216}
30217#[doc = "Vector widening multiply accumulate with scalar"]
30218#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_laneq_u16)"]
30219#[inline]
30220#[target_feature(enable = "neon")]
30221#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30222#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u16", LANE = 1))]
30223#[cfg_attr(
30224 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30225 assert_instr(umlal, LANE = 1)
30226)]
30227#[rustc_legacy_const_generics(3)]
30228#[cfg_attr(
30229 not(target_arch = "arm"),
30230 stable(feature = "neon_intrinsics", since = "1.59.0")
30231)]
30232#[cfg_attr(
30233 target_arch = "arm",
30234 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30235)]
30236pub fn vmlal_laneq_u16<const LANE: i32>(a: uint32x4_t, b: uint16x4_t, c: uint16x8_t) -> uint32x4_t {
30237 static_assert_uimm_bits!(LANE, 3);
30238 unsafe {
30239 vmlal_u16(
30240 a,
30241 b,
30242 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30243 )
30244 }
30245}
30246#[doc = "Vector widening multiply accumulate with scalar"]
30247#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_lane_u32)"]
30248#[inline]
30249#[target_feature(enable = "neon")]
30250#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30251#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u32", LANE = 1))]
30252#[cfg_attr(
30253 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30254 assert_instr(umlal, LANE = 1)
30255)]
30256#[rustc_legacy_const_generics(3)]
30257#[cfg_attr(
30258 not(target_arch = "arm"),
30259 stable(feature = "neon_intrinsics", since = "1.59.0")
30260)]
30261#[cfg_attr(
30262 target_arch = "arm",
30263 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30264)]
30265pub fn vmlal_lane_u32<const LANE: i32>(a: uint64x2_t, b: uint32x2_t, c: uint32x2_t) -> uint64x2_t {
30266 static_assert_uimm_bits!(LANE, 1);
30267 unsafe { vmlal_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
30268}
30269#[doc = "Vector widening multiply accumulate with scalar"]
30270#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_laneq_u32)"]
30271#[inline]
30272#[target_feature(enable = "neon")]
30273#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30274#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u32", LANE = 1))]
30275#[cfg_attr(
30276 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30277 assert_instr(umlal, LANE = 1)
30278)]
30279#[rustc_legacy_const_generics(3)]
30280#[cfg_attr(
30281 not(target_arch = "arm"),
30282 stable(feature = "neon_intrinsics", since = "1.59.0")
30283)]
30284#[cfg_attr(
30285 target_arch = "arm",
30286 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30287)]
30288pub fn vmlal_laneq_u32<const LANE: i32>(a: uint64x2_t, b: uint32x2_t, c: uint32x4_t) -> uint64x2_t {
30289 static_assert_uimm_bits!(LANE, 2);
30290 unsafe { vmlal_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
30291}
30292#[doc = "Vector widening multiply accumulate with scalar"]
30293#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_n_s16)"]
30294#[inline]
30295#[target_feature(enable = "neon")]
30296#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30297#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s16"))]
30298#[cfg_attr(
30299 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30300 assert_instr(smlal)
30301)]
30302#[cfg_attr(
30303 not(target_arch = "arm"),
30304 stable(feature = "neon_intrinsics", since = "1.59.0")
30305)]
30306#[cfg_attr(
30307 target_arch = "arm",
30308 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30309)]
30310pub fn vmlal_n_s16(a: int32x4_t, b: int16x4_t, c: i16) -> int32x4_t {
30311 vmlal_s16(a, b, vdup_n_s16(c))
30312}
30313#[doc = "Vector widening multiply accumulate with scalar"]
30314#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_n_s32)"]
30315#[inline]
30316#[target_feature(enable = "neon")]
30317#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30318#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s32"))]
30319#[cfg_attr(
30320 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30321 assert_instr(smlal)
30322)]
30323#[cfg_attr(
30324 not(target_arch = "arm"),
30325 stable(feature = "neon_intrinsics", since = "1.59.0")
30326)]
30327#[cfg_attr(
30328 target_arch = "arm",
30329 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30330)]
30331pub fn vmlal_n_s32(a: int64x2_t, b: int32x2_t, c: i32) -> int64x2_t {
30332 vmlal_s32(a, b, vdup_n_s32(c))
30333}
30334#[doc = "Vector widening multiply accumulate with scalar"]
30335#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_n_u16)"]
30336#[inline]
30337#[target_feature(enable = "neon")]
30338#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30339#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u16"))]
30340#[cfg_attr(
30341 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30342 assert_instr(umlal)
30343)]
30344#[cfg_attr(
30345 not(target_arch = "arm"),
30346 stable(feature = "neon_intrinsics", since = "1.59.0")
30347)]
30348#[cfg_attr(
30349 target_arch = "arm",
30350 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30351)]
30352pub fn vmlal_n_u16(a: uint32x4_t, b: uint16x4_t, c: u16) -> uint32x4_t {
30353 vmlal_u16(a, b, vdup_n_u16(c))
30354}
30355#[doc = "Vector widening multiply accumulate with scalar"]
30356#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_n_u32)"]
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("vmlal.u32"))]
30361#[cfg_attr(
30362 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30363 assert_instr(umlal)
30364)]
30365#[cfg_attr(
30366 not(target_arch = "arm"),
30367 stable(feature = "neon_intrinsics", since = "1.59.0")
30368)]
30369#[cfg_attr(
30370 target_arch = "arm",
30371 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30372)]
30373pub fn vmlal_n_u32(a: uint64x2_t, b: uint32x2_t, c: u32) -> uint64x2_t {
30374 vmlal_u32(a, b, vdup_n_u32(c))
30375}
30376#[doc = "Signed multiply-add long"]
30377#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_s8)"]
30378#[inline]
30379#[target_feature(enable = "neon")]
30380#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30381#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s8"))]
30382#[cfg_attr(
30383 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30384 assert_instr(smlal)
30385)]
30386#[cfg_attr(
30387 not(target_arch = "arm"),
30388 stable(feature = "neon_intrinsics", since = "1.59.0")
30389)]
30390#[cfg_attr(
30391 target_arch = "arm",
30392 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30393)]
30394pub fn vmlal_s8(a: int16x8_t, b: int8x8_t, c: int8x8_t) -> int16x8_t {
30395 unsafe { simd_add(a, vmull_s8(b, c)) }
30396}
30397#[doc = "Signed multiply-add long"]
30398#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_s16)"]
30399#[inline]
30400#[target_feature(enable = "neon")]
30401#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30402#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s16"))]
30403#[cfg_attr(
30404 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30405 assert_instr(smlal)
30406)]
30407#[cfg_attr(
30408 not(target_arch = "arm"),
30409 stable(feature = "neon_intrinsics", since = "1.59.0")
30410)]
30411#[cfg_attr(
30412 target_arch = "arm",
30413 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30414)]
30415pub fn vmlal_s16(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
30416 unsafe { simd_add(a, vmull_s16(b, c)) }
30417}
30418#[doc = "Signed multiply-add long"]
30419#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_s32)"]
30420#[inline]
30421#[target_feature(enable = "neon")]
30422#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30423#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s32"))]
30424#[cfg_attr(
30425 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30426 assert_instr(smlal)
30427)]
30428#[cfg_attr(
30429 not(target_arch = "arm"),
30430 stable(feature = "neon_intrinsics", since = "1.59.0")
30431)]
30432#[cfg_attr(
30433 target_arch = "arm",
30434 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30435)]
30436pub fn vmlal_s32(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
30437 unsafe { simd_add(a, vmull_s32(b, c)) }
30438}
30439#[doc = "Unsigned multiply-add long"]
30440#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_u8)"]
30441#[inline]
30442#[target_feature(enable = "neon")]
30443#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30444#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u8"))]
30445#[cfg_attr(
30446 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30447 assert_instr(umlal)
30448)]
30449#[cfg_attr(
30450 not(target_arch = "arm"),
30451 stable(feature = "neon_intrinsics", since = "1.59.0")
30452)]
30453#[cfg_attr(
30454 target_arch = "arm",
30455 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30456)]
30457pub fn vmlal_u8(a: uint16x8_t, b: uint8x8_t, c: uint8x8_t) -> uint16x8_t {
30458 unsafe { simd_add(a, vmull_u8(b, c)) }
30459}
30460#[doc = "Unsigned multiply-add long"]
30461#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_u16)"]
30462#[inline]
30463#[target_feature(enable = "neon")]
30464#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30465#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u16"))]
30466#[cfg_attr(
30467 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30468 assert_instr(umlal)
30469)]
30470#[cfg_attr(
30471 not(target_arch = "arm"),
30472 stable(feature = "neon_intrinsics", since = "1.59.0")
30473)]
30474#[cfg_attr(
30475 target_arch = "arm",
30476 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30477)]
30478pub fn vmlal_u16(a: uint32x4_t, b: uint16x4_t, c: uint16x4_t) -> uint32x4_t {
30479 unsafe { simd_add(a, vmull_u16(b, c)) }
30480}
30481#[doc = "Unsigned multiply-add long"]
30482#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_u32)"]
30483#[inline]
30484#[target_feature(enable = "neon")]
30485#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30486#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u32"))]
30487#[cfg_attr(
30488 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30489 assert_instr(umlal)
30490)]
30491#[cfg_attr(
30492 not(target_arch = "arm"),
30493 stable(feature = "neon_intrinsics", since = "1.59.0")
30494)]
30495#[cfg_attr(
30496 target_arch = "arm",
30497 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30498)]
30499pub fn vmlal_u32(a: uint64x2_t, b: uint32x2_t, c: uint32x2_t) -> uint64x2_t {
30500 unsafe { simd_add(a, vmull_u32(b, c)) }
30501}
30502#[doc = "Floating-point multiply-subtract from accumulator"]
30503#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_f32)"]
30504#[inline]
30505#[target_feature(enable = "neon")]
30506#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30507#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32"))]
30508#[cfg_attr(
30509 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30510 assert_instr(fmul)
30511)]
30512#[cfg_attr(
30513 not(target_arch = "arm"),
30514 stable(feature = "neon_intrinsics", since = "1.59.0")
30515)]
30516#[cfg_attr(
30517 target_arch = "arm",
30518 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30519)]
30520pub fn vmls_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t) -> float32x2_t {
30521 unsafe { simd_sub(a, simd_mul(b, c)) }
30522}
30523#[doc = "Floating-point multiply-subtract from accumulator"]
30524#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_f32)"]
30525#[inline]
30526#[target_feature(enable = "neon")]
30527#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30528#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32"))]
30529#[cfg_attr(
30530 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30531 assert_instr(fmul)
30532)]
30533#[cfg_attr(
30534 not(target_arch = "arm"),
30535 stable(feature = "neon_intrinsics", since = "1.59.0")
30536)]
30537#[cfg_attr(
30538 target_arch = "arm",
30539 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30540)]
30541pub fn vmlsq_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t) -> float32x4_t {
30542 unsafe { simd_sub(a, simd_mul(b, c)) }
30543}
30544#[doc = "Vector multiply subtract with scalar"]
30545#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_f32)"]
30546#[inline]
30547#[target_feature(enable = "neon")]
30548#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30549#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32", LANE = 1))]
30550#[cfg_attr(
30551 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30552 assert_instr(fmul, LANE = 1)
30553)]
30554#[rustc_legacy_const_generics(3)]
30555#[cfg_attr(
30556 not(target_arch = "arm"),
30557 stable(feature = "neon_intrinsics", since = "1.59.0")
30558)]
30559#[cfg_attr(
30560 target_arch = "arm",
30561 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30562)]
30563pub fn vmls_lane_f32<const LANE: i32>(
30564 a: float32x2_t,
30565 b: float32x2_t,
30566 c: float32x2_t,
30567) -> float32x2_t {
30568 static_assert_uimm_bits!(LANE, 1);
30569 unsafe { vmls_f32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
30570}
30571#[doc = "Vector multiply subtract with scalar"]
30572#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_f32)"]
30573#[inline]
30574#[target_feature(enable = "neon")]
30575#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30576#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32", LANE = 1))]
30577#[cfg_attr(
30578 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30579 assert_instr(fmul, LANE = 1)
30580)]
30581#[rustc_legacy_const_generics(3)]
30582#[cfg_attr(
30583 not(target_arch = "arm"),
30584 stable(feature = "neon_intrinsics", since = "1.59.0")
30585)]
30586#[cfg_attr(
30587 target_arch = "arm",
30588 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30589)]
30590pub fn vmls_laneq_f32<const LANE: i32>(
30591 a: float32x2_t,
30592 b: float32x2_t,
30593 c: float32x4_t,
30594) -> float32x2_t {
30595 static_assert_uimm_bits!(LANE, 2);
30596 unsafe { vmls_f32(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/vmlsq_lane_f32)"]
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.f32", LANE = 1))]
30604#[cfg_attr(
30605 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30606 assert_instr(fmul, 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 vmlsq_lane_f32<const LANE: i32>(
30618 a: float32x4_t,
30619 b: float32x4_t,
30620 c: float32x2_t,
30621) -> float32x4_t {
30622 static_assert_uimm_bits!(LANE, 1);
30623 unsafe {
30624 vmlsq_f32(
30625 a,
30626 b,
30627 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30628 )
30629 }
30630}
30631#[doc = "Vector multiply subtract with scalar"]
30632#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_f32)"]
30633#[inline]
30634#[target_feature(enable = "neon")]
30635#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30636#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32", LANE = 1))]
30637#[cfg_attr(
30638 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30639 assert_instr(fmul, LANE = 1)
30640)]
30641#[rustc_legacy_const_generics(3)]
30642#[cfg_attr(
30643 not(target_arch = "arm"),
30644 stable(feature = "neon_intrinsics", since = "1.59.0")
30645)]
30646#[cfg_attr(
30647 target_arch = "arm",
30648 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30649)]
30650pub fn vmlsq_laneq_f32<const LANE: i32>(
30651 a: float32x4_t,
30652 b: float32x4_t,
30653 c: float32x4_t,
30654) -> float32x4_t {
30655 static_assert_uimm_bits!(LANE, 2);
30656 unsafe {
30657 vmlsq_f32(
30658 a,
30659 b,
30660 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30661 )
30662 }
30663}
30664#[doc = "Vector multiply subtract with scalar"]
30665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_s16)"]
30666#[inline]
30667#[target_feature(enable = "neon")]
30668#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30669#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
30670#[cfg_attr(
30671 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30672 assert_instr(mls, LANE = 1)
30673)]
30674#[rustc_legacy_const_generics(3)]
30675#[cfg_attr(
30676 not(target_arch = "arm"),
30677 stable(feature = "neon_intrinsics", since = "1.59.0")
30678)]
30679#[cfg_attr(
30680 target_arch = "arm",
30681 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30682)]
30683pub fn vmls_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
30684 static_assert_uimm_bits!(LANE, 2);
30685 unsafe {
30686 vmls_s16(
30687 a,
30688 b,
30689 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30690 )
30691 }
30692}
30693#[doc = "Vector multiply subtract with scalar"]
30694#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_u16)"]
30695#[inline]
30696#[target_feature(enable = "neon")]
30697#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30698#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
30699#[cfg_attr(
30700 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30701 assert_instr(mls, LANE = 1)
30702)]
30703#[rustc_legacy_const_generics(3)]
30704#[cfg_attr(
30705 not(target_arch = "arm"),
30706 stable(feature = "neon_intrinsics", since = "1.59.0")
30707)]
30708#[cfg_attr(
30709 target_arch = "arm",
30710 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30711)]
30712pub fn vmls_lane_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t, c: uint16x4_t) -> uint16x4_t {
30713 static_assert_uimm_bits!(LANE, 2);
30714 unsafe {
30715 vmls_u16(
30716 a,
30717 b,
30718 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30719 )
30720 }
30721}
30722#[doc = "Vector multiply subtract with scalar"]
30723#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_s16)"]
30724#[inline]
30725#[target_feature(enable = "neon")]
30726#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30727#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
30728#[cfg_attr(
30729 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30730 assert_instr(mls, LANE = 1)
30731)]
30732#[rustc_legacy_const_generics(3)]
30733#[cfg_attr(
30734 not(target_arch = "arm"),
30735 stable(feature = "neon_intrinsics", since = "1.59.0")
30736)]
30737#[cfg_attr(
30738 target_arch = "arm",
30739 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30740)]
30741pub fn vmls_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t, c: int16x8_t) -> int16x4_t {
30742 static_assert_uimm_bits!(LANE, 3);
30743 unsafe {
30744 vmls_s16(
30745 a,
30746 b,
30747 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30748 )
30749 }
30750}
30751#[doc = "Vector multiply subtract with scalar"]
30752#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_u16)"]
30753#[inline]
30754#[target_feature(enable = "neon")]
30755#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30756#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
30757#[cfg_attr(
30758 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30759 assert_instr(mls, LANE = 1)
30760)]
30761#[rustc_legacy_const_generics(3)]
30762#[cfg_attr(
30763 not(target_arch = "arm"),
30764 stable(feature = "neon_intrinsics", since = "1.59.0")
30765)]
30766#[cfg_attr(
30767 target_arch = "arm",
30768 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30769)]
30770pub fn vmls_laneq_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t, c: uint16x8_t) -> uint16x4_t {
30771 static_assert_uimm_bits!(LANE, 3);
30772 unsafe {
30773 vmls_u16(
30774 a,
30775 b,
30776 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30777 )
30778 }
30779}
30780#[doc = "Vector multiply subtract with scalar"]
30781#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_lane_s16)"]
30782#[inline]
30783#[target_feature(enable = "neon")]
30784#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30785#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
30786#[cfg_attr(
30787 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30788 assert_instr(mls, LANE = 1)
30789)]
30790#[rustc_legacy_const_generics(3)]
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_lane_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t, c: int16x4_t) -> int16x8_t {
30800 static_assert_uimm_bits!(LANE, 2);
30801 unsafe {
30802 vmlsq_s16(
30803 a,
30804 b,
30805 simd_shuffle!(
30806 c,
30807 c,
30808 [
30809 LANE as u32,
30810 LANE as u32,
30811 LANE as u32,
30812 LANE as u32,
30813 LANE as u32,
30814 LANE as u32,
30815 LANE as u32,
30816 LANE as u32
30817 ]
30818 ),
30819 )
30820 }
30821}
30822#[doc = "Vector multiply subtract with scalar"]
30823#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_lane_u16)"]
30824#[inline]
30825#[target_feature(enable = "neon")]
30826#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30827#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
30828#[cfg_attr(
30829 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30830 assert_instr(mls, LANE = 1)
30831)]
30832#[rustc_legacy_const_generics(3)]
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_lane_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t, c: uint16x4_t) -> uint16x8_t {
30842 static_assert_uimm_bits!(LANE, 2);
30843 unsafe {
30844 vmlsq_u16(
30845 a,
30846 b,
30847 simd_shuffle!(
30848 c,
30849 c,
30850 [
30851 LANE as u32,
30852 LANE as u32,
30853 LANE as u32,
30854 LANE as u32,
30855 LANE as u32,
30856 LANE as u32,
30857 LANE as u32,
30858 LANE as u32
30859 ]
30860 ),
30861 )
30862 }
30863}
30864#[doc = "Vector multiply subtract with scalar"]
30865#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_s16)"]
30866#[inline]
30867#[target_feature(enable = "neon")]
30868#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30869#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
30870#[cfg_attr(
30871 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30872 assert_instr(mls, LANE = 1)
30873)]
30874#[rustc_legacy_const_generics(3)]
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_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
30884 static_assert_uimm_bits!(LANE, 3);
30885 unsafe {
30886 vmlsq_s16(
30887 a,
30888 b,
30889 simd_shuffle!(
30890 c,
30891 c,
30892 [
30893 LANE as u32,
30894 LANE as u32,
30895 LANE as u32,
30896 LANE as u32,
30897 LANE as u32,
30898 LANE as u32,
30899 LANE as u32,
30900 LANE as u32
30901 ]
30902 ),
30903 )
30904 }
30905}
30906#[doc = "Vector multiply subtract with scalar"]
30907#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_u16)"]
30908#[inline]
30909#[target_feature(enable = "neon")]
30910#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30911#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
30912#[cfg_attr(
30913 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30914 assert_instr(mls, LANE = 1)
30915)]
30916#[rustc_legacy_const_generics(3)]
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_laneq_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t, c: uint16x8_t) -> uint16x8_t {
30926 static_assert_uimm_bits!(LANE, 3);
30927 unsafe {
30928 vmlsq_u16(
30929 a,
30930 b,
30931 simd_shuffle!(
30932 c,
30933 c,
30934 [
30935 LANE as u32,
30936 LANE as u32,
30937 LANE as u32,
30938 LANE as u32,
30939 LANE as u32,
30940 LANE as u32,
30941 LANE as u32,
30942 LANE as u32
30943 ]
30944 ),
30945 )
30946 }
30947}
30948#[doc = "Vector multiply subtract with scalar"]
30949#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_s32)"]
30950#[inline]
30951#[target_feature(enable = "neon")]
30952#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30953#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
30954#[cfg_attr(
30955 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30956 assert_instr(mls, LANE = 1)
30957)]
30958#[rustc_legacy_const_generics(3)]
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 vmls_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
30968 static_assert_uimm_bits!(LANE, 1);
30969 unsafe { vmls_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
30970}
30971#[doc = "Vector multiply subtract with scalar"]
30972#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_u32)"]
30973#[inline]
30974#[target_feature(enable = "neon")]
30975#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30976#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
30977#[cfg_attr(
30978 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30979 assert_instr(mls, LANE = 1)
30980)]
30981#[rustc_legacy_const_generics(3)]
30982#[cfg_attr(
30983 not(target_arch = "arm"),
30984 stable(feature = "neon_intrinsics", since = "1.59.0")
30985)]
30986#[cfg_attr(
30987 target_arch = "arm",
30988 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30989)]
30990pub fn vmls_lane_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t, c: uint32x2_t) -> uint32x2_t {
30991 static_assert_uimm_bits!(LANE, 1);
30992 unsafe { vmls_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
30993}
30994#[doc = "Vector multiply subtract with scalar"]
30995#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_s32)"]
30996#[inline]
30997#[target_feature(enable = "neon")]
30998#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30999#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
31000#[cfg_attr(
31001 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31002 assert_instr(mls, LANE = 1)
31003)]
31004#[rustc_legacy_const_generics(3)]
31005#[cfg_attr(
31006 not(target_arch = "arm"),
31007 stable(feature = "neon_intrinsics", since = "1.59.0")
31008)]
31009#[cfg_attr(
31010 target_arch = "arm",
31011 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31012)]
31013pub fn vmls_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t, c: int32x4_t) -> int32x2_t {
31014 static_assert_uimm_bits!(LANE, 2);
31015 unsafe { vmls_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
31016}
31017#[doc = "Vector multiply subtract with scalar"]
31018#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_u32)"]
31019#[inline]
31020#[target_feature(enable = "neon")]
31021#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31022#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
31023#[cfg_attr(
31024 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31025 assert_instr(mls, LANE = 1)
31026)]
31027#[rustc_legacy_const_generics(3)]
31028#[cfg_attr(
31029 not(target_arch = "arm"),
31030 stable(feature = "neon_intrinsics", since = "1.59.0")
31031)]
31032#[cfg_attr(
31033 target_arch = "arm",
31034 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31035)]
31036pub fn vmls_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t, c: uint32x4_t) -> uint32x2_t {
31037 static_assert_uimm_bits!(LANE, 2);
31038 unsafe { vmls_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
31039}
31040#[doc = "Vector multiply subtract with scalar"]
31041#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_lane_s32)"]
31042#[inline]
31043#[target_feature(enable = "neon")]
31044#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31045#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
31046#[cfg_attr(
31047 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31048 assert_instr(mls, LANE = 1)
31049)]
31050#[rustc_legacy_const_generics(3)]
31051#[cfg_attr(
31052 not(target_arch = "arm"),
31053 stable(feature = "neon_intrinsics", since = "1.59.0")
31054)]
31055#[cfg_attr(
31056 target_arch = "arm",
31057 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31058)]
31059pub fn vmlsq_lane_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t, c: int32x2_t) -> int32x4_t {
31060 static_assert_uimm_bits!(LANE, 1);
31061 unsafe {
31062 vmlsq_s32(
31063 a,
31064 b,
31065 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31066 )
31067 }
31068}
31069#[doc = "Vector multiply subtract with scalar"]
31070#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_lane_u32)"]
31071#[inline]
31072#[target_feature(enable = "neon")]
31073#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31074#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
31075#[cfg_attr(
31076 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31077 assert_instr(mls, LANE = 1)
31078)]
31079#[rustc_legacy_const_generics(3)]
31080#[cfg_attr(
31081 not(target_arch = "arm"),
31082 stable(feature = "neon_intrinsics", since = "1.59.0")
31083)]
31084#[cfg_attr(
31085 target_arch = "arm",
31086 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31087)]
31088pub fn vmlsq_lane_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t, c: uint32x2_t) -> uint32x4_t {
31089 static_assert_uimm_bits!(LANE, 1);
31090 unsafe {
31091 vmlsq_u32(
31092 a,
31093 b,
31094 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31095 )
31096 }
31097}
31098#[doc = "Vector multiply subtract with scalar"]
31099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_s32)"]
31100#[inline]
31101#[target_feature(enable = "neon")]
31102#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31103#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
31104#[cfg_attr(
31105 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31106 assert_instr(mls, LANE = 1)
31107)]
31108#[rustc_legacy_const_generics(3)]
31109#[cfg_attr(
31110 not(target_arch = "arm"),
31111 stable(feature = "neon_intrinsics", since = "1.59.0")
31112)]
31113#[cfg_attr(
31114 target_arch = "arm",
31115 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31116)]
31117pub fn vmlsq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
31118 static_assert_uimm_bits!(LANE, 2);
31119 unsafe {
31120 vmlsq_s32(
31121 a,
31122 b,
31123 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31124 )
31125 }
31126}
31127#[doc = "Vector multiply subtract with scalar"]
31128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_u32)"]
31129#[inline]
31130#[target_feature(enable = "neon")]
31131#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31132#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
31133#[cfg_attr(
31134 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31135 assert_instr(mls, LANE = 1)
31136)]
31137#[rustc_legacy_const_generics(3)]
31138#[cfg_attr(
31139 not(target_arch = "arm"),
31140 stable(feature = "neon_intrinsics", since = "1.59.0")
31141)]
31142#[cfg_attr(
31143 target_arch = "arm",
31144 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31145)]
31146pub fn vmlsq_laneq_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t, c: uint32x4_t) -> uint32x4_t {
31147 static_assert_uimm_bits!(LANE, 2);
31148 unsafe {
31149 vmlsq_u32(
31150 a,
31151 b,
31152 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31153 )
31154 }
31155}
31156#[doc = "Vector multiply subtract with scalar"]
31157#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_f32)"]
31158#[inline]
31159#[target_feature(enable = "neon")]
31160#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31161#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32"))]
31162#[cfg_attr(
31163 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31164 assert_instr(fmul)
31165)]
31166#[cfg_attr(
31167 not(target_arch = "arm"),
31168 stable(feature = "neon_intrinsics", since = "1.59.0")
31169)]
31170#[cfg_attr(
31171 target_arch = "arm",
31172 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31173)]
31174pub fn vmls_n_f32(a: float32x2_t, b: float32x2_t, c: f32) -> float32x2_t {
31175 vmls_f32(a, b, vdup_n_f32(c))
31176}
31177#[doc = "Vector multiply subtract with scalar"]
31178#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_f32)"]
31179#[inline]
31180#[target_feature(enable = "neon")]
31181#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31182#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32"))]
31183#[cfg_attr(
31184 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31185 assert_instr(fmul)
31186)]
31187#[cfg_attr(
31188 not(target_arch = "arm"),
31189 stable(feature = "neon_intrinsics", since = "1.59.0")
31190)]
31191#[cfg_attr(
31192 target_arch = "arm",
31193 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31194)]
31195pub fn vmlsq_n_f32(a: float32x4_t, b: float32x4_t, c: f32) -> float32x4_t {
31196 vmlsq_f32(a, b, vdupq_n_f32(c))
31197}
31198#[doc = "Vector multiply subtract with scalar"]
31199#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_s16)"]
31200#[inline]
31201#[target_feature(enable = "neon")]
31202#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31203#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
31204#[cfg_attr(
31205 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31206 assert_instr(mls)
31207)]
31208#[cfg_attr(
31209 not(target_arch = "arm"),
31210 stable(feature = "neon_intrinsics", since = "1.59.0")
31211)]
31212#[cfg_attr(
31213 target_arch = "arm",
31214 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31215)]
31216pub fn vmls_n_s16(a: int16x4_t, b: int16x4_t, c: i16) -> int16x4_t {
31217 vmls_s16(a, b, vdup_n_s16(c))
31218}
31219#[doc = "Vector multiply subtract with scalar"]
31220#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_s16)"]
31221#[inline]
31222#[target_feature(enable = "neon")]
31223#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31224#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
31225#[cfg_attr(
31226 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31227 assert_instr(mls)
31228)]
31229#[cfg_attr(
31230 not(target_arch = "arm"),
31231 stable(feature = "neon_intrinsics", since = "1.59.0")
31232)]
31233#[cfg_attr(
31234 target_arch = "arm",
31235 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31236)]
31237pub fn vmlsq_n_s16(a: int16x8_t, b: int16x8_t, c: i16) -> int16x8_t {
31238 vmlsq_s16(a, b, vdupq_n_s16(c))
31239}
31240#[doc = "Vector multiply subtract with scalar"]
31241#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_u16)"]
31242#[inline]
31243#[target_feature(enable = "neon")]
31244#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31245#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
31246#[cfg_attr(
31247 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31248 assert_instr(mls)
31249)]
31250#[cfg_attr(
31251 not(target_arch = "arm"),
31252 stable(feature = "neon_intrinsics", since = "1.59.0")
31253)]
31254#[cfg_attr(
31255 target_arch = "arm",
31256 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31257)]
31258pub fn vmls_n_u16(a: uint16x4_t, b: uint16x4_t, c: u16) -> uint16x4_t {
31259 vmls_u16(a, b, vdup_n_u16(c))
31260}
31261#[doc = "Vector multiply subtract with scalar"]
31262#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_u16)"]
31263#[inline]
31264#[target_feature(enable = "neon")]
31265#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31266#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
31267#[cfg_attr(
31268 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31269 assert_instr(mls)
31270)]
31271#[cfg_attr(
31272 not(target_arch = "arm"),
31273 stable(feature = "neon_intrinsics", since = "1.59.0")
31274)]
31275#[cfg_attr(
31276 target_arch = "arm",
31277 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31278)]
31279pub fn vmlsq_n_u16(a: uint16x8_t, b: uint16x8_t, c: u16) -> uint16x8_t {
31280 vmlsq_u16(a, b, vdupq_n_u16(c))
31281}
31282#[doc = "Vector multiply subtract with scalar"]
31283#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_s32)"]
31284#[inline]
31285#[target_feature(enable = "neon")]
31286#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31287#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
31288#[cfg_attr(
31289 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31290 assert_instr(mls)
31291)]
31292#[cfg_attr(
31293 not(target_arch = "arm"),
31294 stable(feature = "neon_intrinsics", since = "1.59.0")
31295)]
31296#[cfg_attr(
31297 target_arch = "arm",
31298 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31299)]
31300pub fn vmls_n_s32(a: int32x2_t, b: int32x2_t, c: i32) -> int32x2_t {
31301 vmls_s32(a, b, vdup_n_s32(c))
31302}
31303#[doc = "Vector multiply subtract with scalar"]
31304#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_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("vmls.i32"))]
31309#[cfg_attr(
31310 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31311 assert_instr(mls)
31312)]
31313#[cfg_attr(
31314 not(target_arch = "arm"),
31315 stable(feature = "neon_intrinsics", since = "1.59.0")
31316)]
31317#[cfg_attr(
31318 target_arch = "arm",
31319 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31320)]
31321pub fn vmlsq_n_s32(a: int32x4_t, b: int32x4_t, c: i32) -> int32x4_t {
31322 vmlsq_s32(a, b, vdupq_n_s32(c))
31323}
31324#[doc = "Vector multiply subtract with scalar"]
31325#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_u32)"]
31326#[inline]
31327#[target_feature(enable = "neon")]
31328#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31329#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
31330#[cfg_attr(
31331 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31332 assert_instr(mls)
31333)]
31334#[cfg_attr(
31335 not(target_arch = "arm"),
31336 stable(feature = "neon_intrinsics", since = "1.59.0")
31337)]
31338#[cfg_attr(
31339 target_arch = "arm",
31340 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31341)]
31342pub fn vmls_n_u32(a: uint32x2_t, b: uint32x2_t, c: u32) -> uint32x2_t {
31343 vmls_u32(a, b, vdup_n_u32(c))
31344}
31345#[doc = "Vector multiply subtract with scalar"]
31346#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_u32)"]
31347#[inline]
31348#[target_feature(enable = "neon")]
31349#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31350#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
31351#[cfg_attr(
31352 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31353 assert_instr(mls)
31354)]
31355#[cfg_attr(
31356 not(target_arch = "arm"),
31357 stable(feature = "neon_intrinsics", since = "1.59.0")
31358)]
31359#[cfg_attr(
31360 target_arch = "arm",
31361 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31362)]
31363pub fn vmlsq_n_u32(a: uint32x4_t, b: uint32x4_t, c: u32) -> uint32x4_t {
31364 vmlsq_u32(a, b, vdupq_n_u32(c))
31365}
31366#[doc = "Multiply-subtract from accumulator"]
31367#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_s8)"]
31368#[inline]
31369#[target_feature(enable = "neon")]
31370#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31371#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i8"))]
31372#[cfg_attr(
31373 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31374 assert_instr(mls)
31375)]
31376#[cfg_attr(
31377 not(target_arch = "arm"),
31378 stable(feature = "neon_intrinsics", since = "1.59.0")
31379)]
31380#[cfg_attr(
31381 target_arch = "arm",
31382 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31383)]
31384pub fn vmls_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
31385 unsafe { simd_sub(a, simd_mul(b, c)) }
31386}
31387#[doc = "Multiply-subtract from accumulator"]
31388#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_s8)"]
31389#[inline]
31390#[target_feature(enable = "neon")]
31391#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31392#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i8"))]
31393#[cfg_attr(
31394 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31395 assert_instr(mls)
31396)]
31397#[cfg_attr(
31398 not(target_arch = "arm"),
31399 stable(feature = "neon_intrinsics", since = "1.59.0")
31400)]
31401#[cfg_attr(
31402 target_arch = "arm",
31403 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31404)]
31405pub fn vmlsq_s8(a: int8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t {
31406 unsafe { simd_sub(a, simd_mul(b, c)) }
31407}
31408#[doc = "Multiply-subtract from accumulator"]
31409#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_s16)"]
31410#[inline]
31411#[target_feature(enable = "neon")]
31412#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31413#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
31414#[cfg_attr(
31415 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31416 assert_instr(mls)
31417)]
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 vmls_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
31427 unsafe { simd_sub(a, simd_mul(b, c)) }
31428}
31429#[doc = "Multiply-subtract from accumulator"]
31430#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_s16)"]
31431#[inline]
31432#[target_feature(enable = "neon")]
31433#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31434#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
31435#[cfg_attr(
31436 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31437 assert_instr(mls)
31438)]
31439#[cfg_attr(
31440 not(target_arch = "arm"),
31441 stable(feature = "neon_intrinsics", since = "1.59.0")
31442)]
31443#[cfg_attr(
31444 target_arch = "arm",
31445 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31446)]
31447pub fn vmlsq_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
31448 unsafe { simd_sub(a, simd_mul(b, c)) }
31449}
31450#[doc = "Multiply-subtract from accumulator"]
31451#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_s32)"]
31452#[inline]
31453#[target_feature(enable = "neon")]
31454#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31455#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
31456#[cfg_attr(
31457 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31458 assert_instr(mls)
31459)]
31460#[cfg_attr(
31461 not(target_arch = "arm"),
31462 stable(feature = "neon_intrinsics", since = "1.59.0")
31463)]
31464#[cfg_attr(
31465 target_arch = "arm",
31466 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31467)]
31468pub fn vmls_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
31469 unsafe { simd_sub(a, simd_mul(b, c)) }
31470}
31471#[doc = "Multiply-subtract from accumulator"]
31472#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_s32)"]
31473#[inline]
31474#[target_feature(enable = "neon")]
31475#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31476#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
31477#[cfg_attr(
31478 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31479 assert_instr(mls)
31480)]
31481#[cfg_attr(
31482 not(target_arch = "arm"),
31483 stable(feature = "neon_intrinsics", since = "1.59.0")
31484)]
31485#[cfg_attr(
31486 target_arch = "arm",
31487 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31488)]
31489pub fn vmlsq_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
31490 unsafe { simd_sub(a, simd_mul(b, c)) }
31491}
31492#[doc = "Multiply-subtract from accumulator"]
31493#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_u8)"]
31494#[inline]
31495#[target_feature(enable = "neon")]
31496#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31497#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i8"))]
31498#[cfg_attr(
31499 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31500 assert_instr(mls)
31501)]
31502#[cfg_attr(
31503 not(target_arch = "arm"),
31504 stable(feature = "neon_intrinsics", since = "1.59.0")
31505)]
31506#[cfg_attr(
31507 target_arch = "arm",
31508 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31509)]
31510pub fn vmls_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
31511 unsafe { simd_sub(a, simd_mul(b, c)) }
31512}
31513#[doc = "Multiply-subtract from accumulator"]
31514#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_u8)"]
31515#[inline]
31516#[target_feature(enable = "neon")]
31517#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31518#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i8"))]
31519#[cfg_attr(
31520 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31521 assert_instr(mls)
31522)]
31523#[cfg_attr(
31524 not(target_arch = "arm"),
31525 stable(feature = "neon_intrinsics", since = "1.59.0")
31526)]
31527#[cfg_attr(
31528 target_arch = "arm",
31529 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31530)]
31531pub fn vmlsq_u8(a: uint8x16_t, b: uint8x16_t, c: uint8x16_t) -> uint8x16_t {
31532 unsafe { simd_sub(a, simd_mul(b, c)) }
31533}
31534#[doc = "Multiply-subtract from accumulator"]
31535#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_u16)"]
31536#[inline]
31537#[target_feature(enable = "neon")]
31538#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31539#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
31540#[cfg_attr(
31541 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31542 assert_instr(mls)
31543)]
31544#[cfg_attr(
31545 not(target_arch = "arm"),
31546 stable(feature = "neon_intrinsics", since = "1.59.0")
31547)]
31548#[cfg_attr(
31549 target_arch = "arm",
31550 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31551)]
31552pub fn vmls_u16(a: uint16x4_t, b: uint16x4_t, c: uint16x4_t) -> uint16x4_t {
31553 unsafe { simd_sub(a, simd_mul(b, c)) }
31554}
31555#[doc = "Multiply-subtract from accumulator"]
31556#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_u16)"]
31557#[inline]
31558#[target_feature(enable = "neon")]
31559#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31560#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
31561#[cfg_attr(
31562 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31563 assert_instr(mls)
31564)]
31565#[cfg_attr(
31566 not(target_arch = "arm"),
31567 stable(feature = "neon_intrinsics", since = "1.59.0")
31568)]
31569#[cfg_attr(
31570 target_arch = "arm",
31571 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31572)]
31573pub fn vmlsq_u16(a: uint16x8_t, b: uint16x8_t, c: uint16x8_t) -> uint16x8_t {
31574 unsafe { simd_sub(a, simd_mul(b, c)) }
31575}
31576#[doc = "Multiply-subtract from accumulator"]
31577#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_u32)"]
31578#[inline]
31579#[target_feature(enable = "neon")]
31580#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31581#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
31582#[cfg_attr(
31583 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31584 assert_instr(mls)
31585)]
31586#[cfg_attr(
31587 not(target_arch = "arm"),
31588 stable(feature = "neon_intrinsics", since = "1.59.0")
31589)]
31590#[cfg_attr(
31591 target_arch = "arm",
31592 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31593)]
31594pub fn vmls_u32(a: uint32x2_t, b: uint32x2_t, c: uint32x2_t) -> uint32x2_t {
31595 unsafe { simd_sub(a, simd_mul(b, c)) }
31596}
31597#[doc = "Multiply-subtract from accumulator"]
31598#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_u32)"]
31599#[inline]
31600#[target_feature(enable = "neon")]
31601#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31602#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
31603#[cfg_attr(
31604 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31605 assert_instr(mls)
31606)]
31607#[cfg_attr(
31608 not(target_arch = "arm"),
31609 stable(feature = "neon_intrinsics", since = "1.59.0")
31610)]
31611#[cfg_attr(
31612 target_arch = "arm",
31613 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31614)]
31615pub fn vmlsq_u32(a: uint32x4_t, b: uint32x4_t, c: uint32x4_t) -> uint32x4_t {
31616 unsafe { simd_sub(a, simd_mul(b, c)) }
31617}
31618#[doc = "Vector widening multiply subtract with scalar"]
31619#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_lane_s16)"]
31620#[inline]
31621#[target_feature(enable = "neon")]
31622#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31623#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s16", LANE = 1))]
31624#[cfg_attr(
31625 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31626 assert_instr(smlsl, LANE = 1)
31627)]
31628#[rustc_legacy_const_generics(3)]
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_lane_s16<const LANE: i32>(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
31638 static_assert_uimm_bits!(LANE, 2);
31639 unsafe {
31640 vmlsl_s16(
31641 a,
31642 b,
31643 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31644 )
31645 }
31646}
31647#[doc = "Vector widening multiply subtract with scalar"]
31648#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_laneq_s16)"]
31649#[inline]
31650#[target_feature(enable = "neon")]
31651#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31652#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s16", LANE = 1))]
31653#[cfg_attr(
31654 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31655 assert_instr(smlsl, LANE = 1)
31656)]
31657#[rustc_legacy_const_generics(3)]
31658#[cfg_attr(
31659 not(target_arch = "arm"),
31660 stable(feature = "neon_intrinsics", since = "1.59.0")
31661)]
31662#[cfg_attr(
31663 target_arch = "arm",
31664 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31665)]
31666pub fn vmlsl_laneq_s16<const LANE: i32>(a: int32x4_t, b: int16x4_t, c: int16x8_t) -> int32x4_t {
31667 static_assert_uimm_bits!(LANE, 3);
31668 unsafe {
31669 vmlsl_s16(
31670 a,
31671 b,
31672 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31673 )
31674 }
31675}
31676#[doc = "Vector widening multiply subtract with scalar"]
31677#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_lane_s32)"]
31678#[inline]
31679#[target_feature(enable = "neon")]
31680#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31681#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s32", LANE = 1))]
31682#[cfg_attr(
31683 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31684 assert_instr(smlsl, LANE = 1)
31685)]
31686#[rustc_legacy_const_generics(3)]
31687#[cfg_attr(
31688 not(target_arch = "arm"),
31689 stable(feature = "neon_intrinsics", since = "1.59.0")
31690)]
31691#[cfg_attr(
31692 target_arch = "arm",
31693 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31694)]
31695pub fn vmlsl_lane_s32<const LANE: i32>(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
31696 static_assert_uimm_bits!(LANE, 1);
31697 unsafe { vmlsl_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
31698}
31699#[doc = "Vector widening multiply subtract with scalar"]
31700#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_laneq_s32)"]
31701#[inline]
31702#[target_feature(enable = "neon")]
31703#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31704#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s32", LANE = 1))]
31705#[cfg_attr(
31706 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31707 assert_instr(smlsl, LANE = 1)
31708)]
31709#[rustc_legacy_const_generics(3)]
31710#[cfg_attr(
31711 not(target_arch = "arm"),
31712 stable(feature = "neon_intrinsics", since = "1.59.0")
31713)]
31714#[cfg_attr(
31715 target_arch = "arm",
31716 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31717)]
31718pub fn vmlsl_laneq_s32<const LANE: i32>(a: int64x2_t, b: int32x2_t, c: int32x4_t) -> int64x2_t {
31719 static_assert_uimm_bits!(LANE, 2);
31720 unsafe { vmlsl_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
31721}
31722#[doc = "Vector widening multiply subtract with scalar"]
31723#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_lane_u16)"]
31724#[inline]
31725#[target_feature(enable = "neon")]
31726#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31727#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u16", LANE = 1))]
31728#[cfg_attr(
31729 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31730 assert_instr(umlsl, LANE = 1)
31731)]
31732#[rustc_legacy_const_generics(3)]
31733#[cfg_attr(
31734 not(target_arch = "arm"),
31735 stable(feature = "neon_intrinsics", since = "1.59.0")
31736)]
31737#[cfg_attr(
31738 target_arch = "arm",
31739 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31740)]
31741pub fn vmlsl_lane_u16<const LANE: i32>(a: uint32x4_t, b: uint16x4_t, c: uint16x4_t) -> uint32x4_t {
31742 static_assert_uimm_bits!(LANE, 2);
31743 unsafe {
31744 vmlsl_u16(
31745 a,
31746 b,
31747 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31748 )
31749 }
31750}
31751#[doc = "Vector widening multiply subtract with scalar"]
31752#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_laneq_u16)"]
31753#[inline]
31754#[target_feature(enable = "neon")]
31755#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31756#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u16", LANE = 1))]
31757#[cfg_attr(
31758 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31759 assert_instr(umlsl, LANE = 1)
31760)]
31761#[rustc_legacy_const_generics(3)]
31762#[cfg_attr(
31763 not(target_arch = "arm"),
31764 stable(feature = "neon_intrinsics", since = "1.59.0")
31765)]
31766#[cfg_attr(
31767 target_arch = "arm",
31768 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31769)]
31770pub fn vmlsl_laneq_u16<const LANE: i32>(a: uint32x4_t, b: uint16x4_t, c: uint16x8_t) -> uint32x4_t {
31771 static_assert_uimm_bits!(LANE, 3);
31772 unsafe {
31773 vmlsl_u16(
31774 a,
31775 b,
31776 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31777 )
31778 }
31779}
31780#[doc = "Vector widening multiply subtract with scalar"]
31781#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_lane_u32)"]
31782#[inline]
31783#[target_feature(enable = "neon")]
31784#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31785#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u32", LANE = 1))]
31786#[cfg_attr(
31787 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31788 assert_instr(umlsl, LANE = 1)
31789)]
31790#[rustc_legacy_const_generics(3)]
31791#[cfg_attr(
31792 not(target_arch = "arm"),
31793 stable(feature = "neon_intrinsics", since = "1.59.0")
31794)]
31795#[cfg_attr(
31796 target_arch = "arm",
31797 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31798)]
31799pub fn vmlsl_lane_u32<const LANE: i32>(a: uint64x2_t, b: uint32x2_t, c: uint32x2_t) -> uint64x2_t {
31800 static_assert_uimm_bits!(LANE, 1);
31801 unsafe { vmlsl_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
31802}
31803#[doc = "Vector widening multiply subtract with scalar"]
31804#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_laneq_u32)"]
31805#[inline]
31806#[target_feature(enable = "neon")]
31807#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31808#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u32", LANE = 1))]
31809#[cfg_attr(
31810 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31811 assert_instr(umlsl, LANE = 1)
31812)]
31813#[rustc_legacy_const_generics(3)]
31814#[cfg_attr(
31815 not(target_arch = "arm"),
31816 stable(feature = "neon_intrinsics", since = "1.59.0")
31817)]
31818#[cfg_attr(
31819 target_arch = "arm",
31820 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31821)]
31822pub fn vmlsl_laneq_u32<const LANE: i32>(a: uint64x2_t, b: uint32x2_t, c: uint32x4_t) -> uint64x2_t {
31823 static_assert_uimm_bits!(LANE, 2);
31824 unsafe { vmlsl_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
31825}
31826#[doc = "Vector widening multiply subtract with scalar"]
31827#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_n_s16)"]
31828#[inline]
31829#[target_feature(enable = "neon")]
31830#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31831#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s16"))]
31832#[cfg_attr(
31833 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31834 assert_instr(smlsl)
31835)]
31836#[cfg_attr(
31837 not(target_arch = "arm"),
31838 stable(feature = "neon_intrinsics", since = "1.59.0")
31839)]
31840#[cfg_attr(
31841 target_arch = "arm",
31842 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31843)]
31844pub fn vmlsl_n_s16(a: int32x4_t, b: int16x4_t, c: i16) -> int32x4_t {
31845 vmlsl_s16(a, b, vdup_n_s16(c))
31846}
31847#[doc = "Vector widening multiply subtract with scalar"]
31848#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_n_s32)"]
31849#[inline]
31850#[target_feature(enable = "neon")]
31851#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31852#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s32"))]
31853#[cfg_attr(
31854 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31855 assert_instr(smlsl)
31856)]
31857#[cfg_attr(
31858 not(target_arch = "arm"),
31859 stable(feature = "neon_intrinsics", since = "1.59.0")
31860)]
31861#[cfg_attr(
31862 target_arch = "arm",
31863 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31864)]
31865pub fn vmlsl_n_s32(a: int64x2_t, b: int32x2_t, c: i32) -> int64x2_t {
31866 vmlsl_s32(a, b, vdup_n_s32(c))
31867}
31868#[doc = "Vector widening multiply subtract with scalar"]
31869#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_n_u16)"]
31870#[inline]
31871#[target_feature(enable = "neon")]
31872#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31873#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u16"))]
31874#[cfg_attr(
31875 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31876 assert_instr(umlsl)
31877)]
31878#[cfg_attr(
31879 not(target_arch = "arm"),
31880 stable(feature = "neon_intrinsics", since = "1.59.0")
31881)]
31882#[cfg_attr(
31883 target_arch = "arm",
31884 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31885)]
31886pub fn vmlsl_n_u16(a: uint32x4_t, b: uint16x4_t, c: u16) -> uint32x4_t {
31887 vmlsl_u16(a, b, vdup_n_u16(c))
31888}
31889#[doc = "Vector widening multiply subtract with scalar"]
31890#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_n_u32)"]
31891#[inline]
31892#[target_feature(enable = "neon")]
31893#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31894#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u32"))]
31895#[cfg_attr(
31896 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31897 assert_instr(umlsl)
31898)]
31899#[cfg_attr(
31900 not(target_arch = "arm"),
31901 stable(feature = "neon_intrinsics", since = "1.59.0")
31902)]
31903#[cfg_attr(
31904 target_arch = "arm",
31905 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31906)]
31907pub fn vmlsl_n_u32(a: uint64x2_t, b: uint32x2_t, c: u32) -> uint64x2_t {
31908 vmlsl_u32(a, b, vdup_n_u32(c))
31909}
31910#[doc = "Signed multiply-subtract long"]
31911#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_s8)"]
31912#[inline]
31913#[target_feature(enable = "neon")]
31914#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31915#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s8"))]
31916#[cfg_attr(
31917 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31918 assert_instr(smlsl)
31919)]
31920#[cfg_attr(
31921 not(target_arch = "arm"),
31922 stable(feature = "neon_intrinsics", since = "1.59.0")
31923)]
31924#[cfg_attr(
31925 target_arch = "arm",
31926 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31927)]
31928pub fn vmlsl_s8(a: int16x8_t, b: int8x8_t, c: int8x8_t) -> int16x8_t {
31929 unsafe { simd_sub(a, vmull_s8(b, c)) }
31930}
31931#[doc = "Signed multiply-subtract long"]
31932#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_s16)"]
31933#[inline]
31934#[target_feature(enable = "neon")]
31935#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31936#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s16"))]
31937#[cfg_attr(
31938 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31939 assert_instr(smlsl)
31940)]
31941#[cfg_attr(
31942 not(target_arch = "arm"),
31943 stable(feature = "neon_intrinsics", since = "1.59.0")
31944)]
31945#[cfg_attr(
31946 target_arch = "arm",
31947 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31948)]
31949pub fn vmlsl_s16(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
31950 unsafe { simd_sub(a, vmull_s16(b, c)) }
31951}
31952#[doc = "Signed multiply-subtract long"]
31953#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_s32)"]
31954#[inline]
31955#[target_feature(enable = "neon")]
31956#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31957#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s32"))]
31958#[cfg_attr(
31959 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31960 assert_instr(smlsl)
31961)]
31962#[cfg_attr(
31963 not(target_arch = "arm"),
31964 stable(feature = "neon_intrinsics", since = "1.59.0")
31965)]
31966#[cfg_attr(
31967 target_arch = "arm",
31968 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31969)]
31970pub fn vmlsl_s32(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
31971 unsafe { simd_sub(a, vmull_s32(b, c)) }
31972}
31973#[doc = "Unsigned multiply-subtract long"]
31974#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_u8)"]
31975#[inline]
31976#[target_feature(enable = "neon")]
31977#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31978#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u8"))]
31979#[cfg_attr(
31980 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31981 assert_instr(umlsl)
31982)]
31983#[cfg_attr(
31984 not(target_arch = "arm"),
31985 stable(feature = "neon_intrinsics", since = "1.59.0")
31986)]
31987#[cfg_attr(
31988 target_arch = "arm",
31989 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31990)]
31991pub fn vmlsl_u8(a: uint16x8_t, b: uint8x8_t, c: uint8x8_t) -> uint16x8_t {
31992 unsafe { simd_sub(a, vmull_u8(b, c)) }
31993}
31994#[doc = "Unsigned multiply-subtract long"]
31995#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_u16)"]
31996#[inline]
31997#[target_feature(enable = "neon")]
31998#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31999#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u16"))]
32000#[cfg_attr(
32001 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32002 assert_instr(umlsl)
32003)]
32004#[cfg_attr(
32005 not(target_arch = "arm"),
32006 stable(feature = "neon_intrinsics", since = "1.59.0")
32007)]
32008#[cfg_attr(
32009 target_arch = "arm",
32010 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32011)]
32012pub fn vmlsl_u16(a: uint32x4_t, b: uint16x4_t, c: uint16x4_t) -> uint32x4_t {
32013 unsafe { simd_sub(a, vmull_u16(b, c)) }
32014}
32015#[doc = "Unsigned multiply-subtract long"]
32016#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_u32)"]
32017#[inline]
32018#[target_feature(enable = "neon")]
32019#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32020#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u32"))]
32021#[cfg_attr(
32022 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32023 assert_instr(umlsl)
32024)]
32025#[cfg_attr(
32026 not(target_arch = "arm"),
32027 stable(feature = "neon_intrinsics", since = "1.59.0")
32028)]
32029#[cfg_attr(
32030 target_arch = "arm",
32031 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32032)]
32033pub fn vmlsl_u32(a: uint64x2_t, b: uint32x2_t, c: uint32x2_t) -> uint64x2_t {
32034 unsafe { simd_sub(a, vmull_u32(b, c)) }
32035}
32036#[doc = "8-bit integer matrix multiply-accumulate"]
32037#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmmlaq_s32)"]
32038#[inline]
32039#[target_feature(enable = "neon,i8mm")]
32040#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
32041#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
32042#[cfg_attr(
32043 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32044 assert_instr(smmla)
32045)]
32046#[cfg_attr(
32047 not(target_arch = "arm"),
32048 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
32049)]
32050#[cfg_attr(
32051 target_arch = "arm",
32052 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32053)]
32054pub fn vmmlaq_s32(a: int32x4_t, b: int8x16_t, c: int8x16_t) -> int32x4_t {
32055 unsafe extern "unadjusted" {
32056 #[cfg_attr(
32057 any(target_arch = "aarch64", target_arch = "arm64ec"),
32058 link_name = "llvm.aarch64.neon.smmla.v4i32.v16i8"
32059 )]
32060 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.smmla.v4i32.v16i8")]
32061 fn _vmmlaq_s32(a: int32x4_t, b: int8x16_t, c: int8x16_t) -> int32x4_t;
32062 }
32063 unsafe { _vmmlaq_s32(a, b, c) }
32064}
32065#[doc = "8-bit integer matrix multiply-accumulate"]
32066#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmmlaq_u32)"]
32067#[inline]
32068#[target_feature(enable = "neon,i8mm")]
32069#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
32070#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
32071#[cfg_attr(
32072 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32073 assert_instr(ummla)
32074)]
32075#[cfg_attr(
32076 not(target_arch = "arm"),
32077 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
32078)]
32079#[cfg_attr(
32080 target_arch = "arm",
32081 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32082)]
32083pub fn vmmlaq_u32(a: uint32x4_t, b: uint8x16_t, c: uint8x16_t) -> uint32x4_t {
32084 unsafe extern "unadjusted" {
32085 #[cfg_attr(
32086 any(target_arch = "aarch64", target_arch = "arm64ec"),
32087 link_name = "llvm.aarch64.neon.ummla.v4i32.v16i8"
32088 )]
32089 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.ummla.v4i32.v16i8")]
32090 fn _vmmlaq_u32(a: uint32x4_t, b: uint8x16_t, c: uint8x16_t) -> uint32x4_t;
32091 }
32092 unsafe { _vmmlaq_u32(a, b, c) }
32093}
32094#[doc = "Duplicate element to vector"]
32095#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_f16)"]
32096#[inline]
32097#[target_feature(enable = "neon")]
32098#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32099#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
32100#[cfg_attr(
32101 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32102 assert_instr(dup)
32103)]
32104#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
32105#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
32106#[cfg(not(target_arch = "arm64ec"))]
32107pub fn vmov_n_f16(a: f16) -> float16x4_t {
32108 vdup_n_f16(a)
32109}
32110#[doc = "Duplicate element to vector"]
32111#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_f16)"]
32112#[inline]
32113#[target_feature(enable = "neon")]
32114#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32115#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
32116#[cfg_attr(
32117 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32118 assert_instr(dup)
32119)]
32120#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
32121#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
32122#[cfg(not(target_arch = "arm64ec"))]
32123pub fn vmovq_n_f16(a: f16) -> float16x8_t {
32124 vdupq_n_f16(a)
32125}
32126#[doc = "Duplicate vector element to vector or scalar"]
32127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_f32)"]
32128#[inline]
32129#[target_feature(enable = "neon")]
32130#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32131#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
32132#[cfg_attr(
32133 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32134 assert_instr(dup)
32135)]
32136#[cfg_attr(
32137 not(target_arch = "arm"),
32138 stable(feature = "neon_intrinsics", since = "1.59.0")
32139)]
32140#[cfg_attr(
32141 target_arch = "arm",
32142 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32143)]
32144pub fn vmov_n_f32(value: f32) -> float32x2_t {
32145 vdup_n_f32(value)
32146}
32147#[doc = "Duplicate vector element to vector or scalar"]
32148#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_p16)"]
32149#[inline]
32150#[target_feature(enable = "neon")]
32151#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32152#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
32153#[cfg_attr(
32154 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32155 assert_instr(dup)
32156)]
32157#[cfg_attr(
32158 not(target_arch = "arm"),
32159 stable(feature = "neon_intrinsics", since = "1.59.0")
32160)]
32161#[cfg_attr(
32162 target_arch = "arm",
32163 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32164)]
32165pub fn vmov_n_p16(value: p16) -> poly16x4_t {
32166 vdup_n_p16(value)
32167}
32168#[doc = "Duplicate vector element to vector or scalar"]
32169#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_p8)"]
32170#[inline]
32171#[target_feature(enable = "neon")]
32172#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32173#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
32174#[cfg_attr(
32175 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32176 assert_instr(dup)
32177)]
32178#[cfg_attr(
32179 not(target_arch = "arm"),
32180 stable(feature = "neon_intrinsics", since = "1.59.0")
32181)]
32182#[cfg_attr(
32183 target_arch = "arm",
32184 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32185)]
32186pub fn vmov_n_p8(value: p8) -> poly8x8_t {
32187 vdup_n_p8(value)
32188}
32189#[doc = "Duplicate vector element to vector or scalar"]
32190#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_s16)"]
32191#[inline]
32192#[target_feature(enable = "neon")]
32193#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32194#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
32195#[cfg_attr(
32196 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32197 assert_instr(dup)
32198)]
32199#[cfg_attr(
32200 not(target_arch = "arm"),
32201 stable(feature = "neon_intrinsics", since = "1.59.0")
32202)]
32203#[cfg_attr(
32204 target_arch = "arm",
32205 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32206)]
32207pub fn vmov_n_s16(value: i16) -> int16x4_t {
32208 vdup_n_s16(value)
32209}
32210#[doc = "Duplicate vector element to vector or scalar"]
32211#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_s32)"]
32212#[inline]
32213#[target_feature(enable = "neon")]
32214#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32215#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
32216#[cfg_attr(
32217 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32218 assert_instr(dup)
32219)]
32220#[cfg_attr(
32221 not(target_arch = "arm"),
32222 stable(feature = "neon_intrinsics", since = "1.59.0")
32223)]
32224#[cfg_attr(
32225 target_arch = "arm",
32226 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32227)]
32228pub fn vmov_n_s32(value: i32) -> int32x2_t {
32229 vdup_n_s32(value)
32230}
32231#[doc = "Duplicate vector element to vector or scalar"]
32232#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_s64)"]
32233#[inline]
32234#[target_feature(enable = "neon")]
32235#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32236#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
32237#[cfg_attr(
32238 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32239 assert_instr(fmov)
32240)]
32241#[cfg_attr(
32242 not(target_arch = "arm"),
32243 stable(feature = "neon_intrinsics", since = "1.59.0")
32244)]
32245#[cfg_attr(
32246 target_arch = "arm",
32247 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32248)]
32249pub fn vmov_n_s64(value: i64) -> int64x1_t {
32250 vdup_n_s64(value)
32251}
32252#[doc = "Duplicate vector element to vector or scalar"]
32253#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_s8)"]
32254#[inline]
32255#[target_feature(enable = "neon")]
32256#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32257#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
32258#[cfg_attr(
32259 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32260 assert_instr(dup)
32261)]
32262#[cfg_attr(
32263 not(target_arch = "arm"),
32264 stable(feature = "neon_intrinsics", since = "1.59.0")
32265)]
32266#[cfg_attr(
32267 target_arch = "arm",
32268 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32269)]
32270pub fn vmov_n_s8(value: i8) -> int8x8_t {
32271 vdup_n_s8(value)
32272}
32273#[doc = "Duplicate vector element to vector or scalar"]
32274#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_u16)"]
32275#[inline]
32276#[target_feature(enable = "neon")]
32277#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32278#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
32279#[cfg_attr(
32280 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32281 assert_instr(dup)
32282)]
32283#[cfg_attr(
32284 not(target_arch = "arm"),
32285 stable(feature = "neon_intrinsics", since = "1.59.0")
32286)]
32287#[cfg_attr(
32288 target_arch = "arm",
32289 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32290)]
32291pub fn vmov_n_u16(value: u16) -> uint16x4_t {
32292 vdup_n_u16(value)
32293}
32294#[doc = "Duplicate vector element to vector or scalar"]
32295#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_u32)"]
32296#[inline]
32297#[target_feature(enable = "neon")]
32298#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32299#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
32300#[cfg_attr(
32301 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32302 assert_instr(dup)
32303)]
32304#[cfg_attr(
32305 not(target_arch = "arm"),
32306 stable(feature = "neon_intrinsics", since = "1.59.0")
32307)]
32308#[cfg_attr(
32309 target_arch = "arm",
32310 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32311)]
32312pub fn vmov_n_u32(value: u32) -> uint32x2_t {
32313 vdup_n_u32(value)
32314}
32315#[doc = "Duplicate vector element to vector or scalar"]
32316#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_u64)"]
32317#[inline]
32318#[target_feature(enable = "neon")]
32319#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32320#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
32321#[cfg_attr(
32322 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32323 assert_instr(fmov)
32324)]
32325#[cfg_attr(
32326 not(target_arch = "arm"),
32327 stable(feature = "neon_intrinsics", since = "1.59.0")
32328)]
32329#[cfg_attr(
32330 target_arch = "arm",
32331 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32332)]
32333pub fn vmov_n_u64(value: u64) -> uint64x1_t {
32334 vdup_n_u64(value)
32335}
32336#[doc = "Duplicate vector element to vector or scalar"]
32337#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_u8)"]
32338#[inline]
32339#[target_feature(enable = "neon")]
32340#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32341#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
32342#[cfg_attr(
32343 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32344 assert_instr(dup)
32345)]
32346#[cfg_attr(
32347 not(target_arch = "arm"),
32348 stable(feature = "neon_intrinsics", since = "1.59.0")
32349)]
32350#[cfg_attr(
32351 target_arch = "arm",
32352 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32353)]
32354pub fn vmov_n_u8(value: u8) -> uint8x8_t {
32355 vdup_n_u8(value)
32356}
32357#[doc = "Duplicate vector element to vector or scalar"]
32358#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_f32)"]
32359#[inline]
32360#[target_feature(enable = "neon")]
32361#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32362#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
32363#[cfg_attr(
32364 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32365 assert_instr(dup)
32366)]
32367#[cfg_attr(
32368 not(target_arch = "arm"),
32369 stable(feature = "neon_intrinsics", since = "1.59.0")
32370)]
32371#[cfg_attr(
32372 target_arch = "arm",
32373 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32374)]
32375pub fn vmovq_n_f32(value: f32) -> float32x4_t {
32376 vdupq_n_f32(value)
32377}
32378#[doc = "Duplicate vector element to vector or scalar"]
32379#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_p16)"]
32380#[inline]
32381#[target_feature(enable = "neon")]
32382#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32383#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
32384#[cfg_attr(
32385 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32386 assert_instr(dup)
32387)]
32388#[cfg_attr(
32389 not(target_arch = "arm"),
32390 stable(feature = "neon_intrinsics", since = "1.59.0")
32391)]
32392#[cfg_attr(
32393 target_arch = "arm",
32394 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32395)]
32396pub fn vmovq_n_p16(value: p16) -> poly16x8_t {
32397 vdupq_n_p16(value)
32398}
32399#[doc = "Duplicate vector element to vector or scalar"]
32400#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_p8)"]
32401#[inline]
32402#[target_feature(enable = "neon")]
32403#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32404#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
32405#[cfg_attr(
32406 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32407 assert_instr(dup)
32408)]
32409#[cfg_attr(
32410 not(target_arch = "arm"),
32411 stable(feature = "neon_intrinsics", since = "1.59.0")
32412)]
32413#[cfg_attr(
32414 target_arch = "arm",
32415 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32416)]
32417pub fn vmovq_n_p8(value: p8) -> poly8x16_t {
32418 vdupq_n_p8(value)
32419}
32420#[doc = "Duplicate vector element to vector or scalar"]
32421#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_s16)"]
32422#[inline]
32423#[target_feature(enable = "neon")]
32424#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32425#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
32426#[cfg_attr(
32427 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32428 assert_instr(dup)
32429)]
32430#[cfg_attr(
32431 not(target_arch = "arm"),
32432 stable(feature = "neon_intrinsics", since = "1.59.0")
32433)]
32434#[cfg_attr(
32435 target_arch = "arm",
32436 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32437)]
32438pub fn vmovq_n_s16(value: i16) -> int16x8_t {
32439 vdupq_n_s16(value)
32440}
32441#[doc = "Duplicate vector element to vector or scalar"]
32442#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_s32)"]
32443#[inline]
32444#[target_feature(enable = "neon")]
32445#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32446#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
32447#[cfg_attr(
32448 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32449 assert_instr(dup)
32450)]
32451#[cfg_attr(
32452 not(target_arch = "arm"),
32453 stable(feature = "neon_intrinsics", since = "1.59.0")
32454)]
32455#[cfg_attr(
32456 target_arch = "arm",
32457 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32458)]
32459pub fn vmovq_n_s32(value: i32) -> int32x4_t {
32460 vdupq_n_s32(value)
32461}
32462#[doc = "Duplicate vector element to vector or scalar"]
32463#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_s64)"]
32464#[inline]
32465#[target_feature(enable = "neon")]
32466#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32467#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
32468#[cfg_attr(
32469 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32470 assert_instr(dup)
32471)]
32472#[cfg_attr(
32473 not(target_arch = "arm"),
32474 stable(feature = "neon_intrinsics", since = "1.59.0")
32475)]
32476#[cfg_attr(
32477 target_arch = "arm",
32478 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32479)]
32480pub fn vmovq_n_s64(value: i64) -> int64x2_t {
32481 vdupq_n_s64(value)
32482}
32483#[doc = "Duplicate vector element to vector or scalar"]
32484#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_s8)"]
32485#[inline]
32486#[target_feature(enable = "neon")]
32487#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32488#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
32489#[cfg_attr(
32490 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32491 assert_instr(dup)
32492)]
32493#[cfg_attr(
32494 not(target_arch = "arm"),
32495 stable(feature = "neon_intrinsics", since = "1.59.0")
32496)]
32497#[cfg_attr(
32498 target_arch = "arm",
32499 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32500)]
32501pub fn vmovq_n_s8(value: i8) -> int8x16_t {
32502 vdupq_n_s8(value)
32503}
32504#[doc = "Duplicate vector element to vector or scalar"]
32505#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_u16)"]
32506#[inline]
32507#[target_feature(enable = "neon")]
32508#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32509#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
32510#[cfg_attr(
32511 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32512 assert_instr(dup)
32513)]
32514#[cfg_attr(
32515 not(target_arch = "arm"),
32516 stable(feature = "neon_intrinsics", since = "1.59.0")
32517)]
32518#[cfg_attr(
32519 target_arch = "arm",
32520 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32521)]
32522pub fn vmovq_n_u16(value: u16) -> uint16x8_t {
32523 vdupq_n_u16(value)
32524}
32525#[doc = "Duplicate vector element to vector or scalar"]
32526#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_u32)"]
32527#[inline]
32528#[target_feature(enable = "neon")]
32529#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32530#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
32531#[cfg_attr(
32532 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32533 assert_instr(dup)
32534)]
32535#[cfg_attr(
32536 not(target_arch = "arm"),
32537 stable(feature = "neon_intrinsics", since = "1.59.0")
32538)]
32539#[cfg_attr(
32540 target_arch = "arm",
32541 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32542)]
32543pub fn vmovq_n_u32(value: u32) -> uint32x4_t {
32544 vdupq_n_u32(value)
32545}
32546#[doc = "Duplicate vector element to vector or scalar"]
32547#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_u64)"]
32548#[inline]
32549#[target_feature(enable = "neon")]
32550#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32551#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
32552#[cfg_attr(
32553 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32554 assert_instr(dup)
32555)]
32556#[cfg_attr(
32557 not(target_arch = "arm"),
32558 stable(feature = "neon_intrinsics", since = "1.59.0")
32559)]
32560#[cfg_attr(
32561 target_arch = "arm",
32562 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32563)]
32564pub fn vmovq_n_u64(value: u64) -> uint64x2_t {
32565 vdupq_n_u64(value)
32566}
32567#[doc = "Duplicate vector element to vector or scalar"]
32568#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_u8)"]
32569#[inline]
32570#[target_feature(enable = "neon")]
32571#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32572#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
32573#[cfg_attr(
32574 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32575 assert_instr(dup)
32576)]
32577#[cfg_attr(
32578 not(target_arch = "arm"),
32579 stable(feature = "neon_intrinsics", since = "1.59.0")
32580)]
32581#[cfg_attr(
32582 target_arch = "arm",
32583 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32584)]
32585pub fn vmovq_n_u8(value: u8) -> uint8x16_t {
32586 vdupq_n_u8(value)
32587}
32588#[doc = "Vector long move."]
32589#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_s16)"]
32590#[inline]
32591#[target_feature(enable = "neon")]
32592#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32593#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
32594#[cfg_attr(
32595 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32596 assert_instr(sxtl)
32597)]
32598#[cfg_attr(
32599 not(target_arch = "arm"),
32600 stable(feature = "neon_intrinsics", since = "1.59.0")
32601)]
32602#[cfg_attr(
32603 target_arch = "arm",
32604 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32605)]
32606pub fn vmovl_s16(a: int16x4_t) -> int32x4_t {
32607 unsafe { simd_cast(a) }
32608}
32609#[doc = "Vector long move."]
32610#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_s32)"]
32611#[inline]
32612#[target_feature(enable = "neon")]
32613#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32614#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
32615#[cfg_attr(
32616 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32617 assert_instr(sxtl)
32618)]
32619#[cfg_attr(
32620 not(target_arch = "arm"),
32621 stable(feature = "neon_intrinsics", since = "1.59.0")
32622)]
32623#[cfg_attr(
32624 target_arch = "arm",
32625 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32626)]
32627pub fn vmovl_s32(a: int32x2_t) -> int64x2_t {
32628 unsafe { simd_cast(a) }
32629}
32630#[doc = "Vector long move."]
32631#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_s8)"]
32632#[inline]
32633#[target_feature(enable = "neon")]
32634#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32635#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
32636#[cfg_attr(
32637 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32638 assert_instr(sxtl)
32639)]
32640#[cfg_attr(
32641 not(target_arch = "arm"),
32642 stable(feature = "neon_intrinsics", since = "1.59.0")
32643)]
32644#[cfg_attr(
32645 target_arch = "arm",
32646 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32647)]
32648pub fn vmovl_s8(a: int8x8_t) -> int16x8_t {
32649 unsafe { simd_cast(a) }
32650}
32651#[doc = "Vector long move."]
32652#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_u16)"]
32653#[inline]
32654#[target_feature(enable = "neon")]
32655#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32656#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
32657#[cfg_attr(
32658 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32659 assert_instr(uxtl)
32660)]
32661#[cfg_attr(
32662 not(target_arch = "arm"),
32663 stable(feature = "neon_intrinsics", since = "1.59.0")
32664)]
32665#[cfg_attr(
32666 target_arch = "arm",
32667 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32668)]
32669pub fn vmovl_u16(a: uint16x4_t) -> uint32x4_t {
32670 unsafe { simd_cast(a) }
32671}
32672#[doc = "Vector long move."]
32673#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_u32)"]
32674#[inline]
32675#[target_feature(enable = "neon")]
32676#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32677#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
32678#[cfg_attr(
32679 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32680 assert_instr(uxtl)
32681)]
32682#[cfg_attr(
32683 not(target_arch = "arm"),
32684 stable(feature = "neon_intrinsics", since = "1.59.0")
32685)]
32686#[cfg_attr(
32687 target_arch = "arm",
32688 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32689)]
32690pub fn vmovl_u32(a: uint32x2_t) -> uint64x2_t {
32691 unsafe { simd_cast(a) }
32692}
32693#[doc = "Vector long move."]
32694#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_u8)"]
32695#[inline]
32696#[target_feature(enable = "neon")]
32697#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32698#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
32699#[cfg_attr(
32700 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32701 assert_instr(uxtl)
32702)]
32703#[cfg_attr(
32704 not(target_arch = "arm"),
32705 stable(feature = "neon_intrinsics", since = "1.59.0")
32706)]
32707#[cfg_attr(
32708 target_arch = "arm",
32709 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32710)]
32711pub fn vmovl_u8(a: uint8x8_t) -> uint16x8_t {
32712 unsafe { simd_cast(a) }
32713}
32714#[doc = "Vector narrow integer."]
32715#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_s16)"]
32716#[inline]
32717#[target_feature(enable = "neon")]
32718#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32719#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
32720#[cfg_attr(
32721 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32722 assert_instr(xtn)
32723)]
32724#[cfg_attr(
32725 not(target_arch = "arm"),
32726 stable(feature = "neon_intrinsics", since = "1.59.0")
32727)]
32728#[cfg_attr(
32729 target_arch = "arm",
32730 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32731)]
32732pub fn vmovn_s16(a: int16x8_t) -> int8x8_t {
32733 unsafe { simd_cast(a) }
32734}
32735#[doc = "Vector narrow integer."]
32736#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_s32)"]
32737#[inline]
32738#[target_feature(enable = "neon")]
32739#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32740#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
32741#[cfg_attr(
32742 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32743 assert_instr(xtn)
32744)]
32745#[cfg_attr(
32746 not(target_arch = "arm"),
32747 stable(feature = "neon_intrinsics", since = "1.59.0")
32748)]
32749#[cfg_attr(
32750 target_arch = "arm",
32751 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32752)]
32753pub fn vmovn_s32(a: int32x4_t) -> int16x4_t {
32754 unsafe { simd_cast(a) }
32755}
32756#[doc = "Vector narrow integer."]
32757#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_s64)"]
32758#[inline]
32759#[target_feature(enable = "neon")]
32760#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32761#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
32762#[cfg_attr(
32763 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32764 assert_instr(xtn)
32765)]
32766#[cfg_attr(
32767 not(target_arch = "arm"),
32768 stable(feature = "neon_intrinsics", since = "1.59.0")
32769)]
32770#[cfg_attr(
32771 target_arch = "arm",
32772 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32773)]
32774pub fn vmovn_s64(a: int64x2_t) -> int32x2_t {
32775 unsafe { simd_cast(a) }
32776}
32777#[doc = "Vector narrow integer."]
32778#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_u16)"]
32779#[inline]
32780#[target_feature(enable = "neon")]
32781#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32782#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
32783#[cfg_attr(
32784 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32785 assert_instr(xtn)
32786)]
32787#[cfg_attr(
32788 not(target_arch = "arm"),
32789 stable(feature = "neon_intrinsics", since = "1.59.0")
32790)]
32791#[cfg_attr(
32792 target_arch = "arm",
32793 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32794)]
32795pub fn vmovn_u16(a: uint16x8_t) -> uint8x8_t {
32796 unsafe { simd_cast(a) }
32797}
32798#[doc = "Vector narrow integer."]
32799#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_u32)"]
32800#[inline]
32801#[target_feature(enable = "neon")]
32802#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32803#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
32804#[cfg_attr(
32805 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32806 assert_instr(xtn)
32807)]
32808#[cfg_attr(
32809 not(target_arch = "arm"),
32810 stable(feature = "neon_intrinsics", since = "1.59.0")
32811)]
32812#[cfg_attr(
32813 target_arch = "arm",
32814 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32815)]
32816pub fn vmovn_u32(a: uint32x4_t) -> uint16x4_t {
32817 unsafe { simd_cast(a) }
32818}
32819#[doc = "Vector narrow integer."]
32820#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_u64)"]
32821#[inline]
32822#[target_feature(enable = "neon")]
32823#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32824#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
32825#[cfg_attr(
32826 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32827 assert_instr(xtn)
32828)]
32829#[cfg_attr(
32830 not(target_arch = "arm"),
32831 stable(feature = "neon_intrinsics", since = "1.59.0")
32832)]
32833#[cfg_attr(
32834 target_arch = "arm",
32835 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32836)]
32837pub fn vmovn_u64(a: uint64x2_t) -> uint32x2_t {
32838 unsafe { simd_cast(a) }
32839}
32840#[doc = "Multiply"]
32841#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_f16)"]
32842#[inline]
32843#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
32844#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.f16"))]
32845#[cfg_attr(
32846 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32847 assert_instr(fmul)
32848)]
32849#[target_feature(enable = "neon,fp16")]
32850#[cfg_attr(
32851 not(target_arch = "arm"),
32852 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
32853)]
32854#[cfg_attr(
32855 target_arch = "arm",
32856 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32857)]
32858#[cfg(not(target_arch = "arm64ec"))]
32859pub fn vmul_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
32860 unsafe { simd_mul(a, b) }
32861}
32862#[doc = "Multiply"]
32863#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_f16)"]
32864#[inline]
32865#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
32866#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.f16"))]
32867#[cfg_attr(
32868 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32869 assert_instr(fmul)
32870)]
32871#[target_feature(enable = "neon,fp16")]
32872#[cfg_attr(
32873 not(target_arch = "arm"),
32874 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
32875)]
32876#[cfg_attr(
32877 target_arch = "arm",
32878 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32879)]
32880#[cfg(not(target_arch = "arm64ec"))]
32881pub fn vmulq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
32882 unsafe { simd_mul(a, b) }
32883}
32884#[doc = "Multiply"]
32885#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_f32)"]
32886#[inline]
32887#[target_feature(enable = "neon")]
32888#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32889#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.f32"))]
32890#[cfg_attr(
32891 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32892 assert_instr(fmul)
32893)]
32894#[cfg_attr(
32895 not(target_arch = "arm"),
32896 stable(feature = "neon_intrinsics", since = "1.59.0")
32897)]
32898#[cfg_attr(
32899 target_arch = "arm",
32900 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32901)]
32902pub fn vmul_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
32903 unsafe { simd_mul(a, b) }
32904}
32905#[doc = "Multiply"]
32906#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_f32)"]
32907#[inline]
32908#[target_feature(enable = "neon")]
32909#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32910#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.f32"))]
32911#[cfg_attr(
32912 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32913 assert_instr(fmul)
32914)]
32915#[cfg_attr(
32916 not(target_arch = "arm"),
32917 stable(feature = "neon_intrinsics", since = "1.59.0")
32918)]
32919#[cfg_attr(
32920 target_arch = "arm",
32921 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32922)]
32923pub fn vmulq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
32924 unsafe { simd_mul(a, b) }
32925}
32926#[doc = "Multiply"]
32927#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_f16)"]
32928#[inline]
32929#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
32930#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
32931#[cfg_attr(
32932 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32933 assert_instr(fmul, LANE = 1)
32934)]
32935#[rustc_legacy_const_generics(2)]
32936#[target_feature(enable = "neon,fp16")]
32937#[cfg_attr(
32938 not(target_arch = "arm"),
32939 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
32940)]
32941#[cfg_attr(
32942 target_arch = "arm",
32943 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32944)]
32945#[cfg(not(target_arch = "arm64ec"))]
32946pub fn vmul_lane_f16<const LANE: i32>(a: float16x4_t, v: float16x4_t) -> float16x4_t {
32947 static_assert_uimm_bits!(LANE, 2);
32948 unsafe {
32949 simd_mul(
32950 a,
32951 simd_shuffle!(v, v, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
32952 )
32953 }
32954}
32955#[doc = "Multiply"]
32956#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_f16)"]
32957#[inline]
32958#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
32959#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
32960#[cfg_attr(
32961 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32962 assert_instr(fmul, LANE = 1)
32963)]
32964#[rustc_legacy_const_generics(2)]
32965#[target_feature(enable = "neon,fp16")]
32966#[cfg_attr(
32967 not(target_arch = "arm"),
32968 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
32969)]
32970#[cfg_attr(
32971 target_arch = "arm",
32972 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32973)]
32974#[cfg(not(target_arch = "arm64ec"))]
32975pub fn vmulq_lane_f16<const LANE: i32>(a: float16x8_t, v: float16x4_t) -> float16x8_t {
32976 static_assert_uimm_bits!(LANE, 2);
32977 unsafe {
32978 simd_mul(
32979 a,
32980 simd_shuffle!(
32981 v,
32982 v,
32983 [
32984 LANE as u32,
32985 LANE as u32,
32986 LANE as u32,
32987 LANE as u32,
32988 LANE as u32,
32989 LANE as u32,
32990 LANE as u32,
32991 LANE as u32
32992 ]
32993 ),
32994 )
32995 }
32996}
32997#[doc = "Floating-point multiply"]
32998#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_f32)"]
32999#[inline]
33000#[target_feature(enable = "neon")]
33001#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33002#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 0))]
33003#[cfg_attr(
33004 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33005 assert_instr(fmul, LANE = 0)
33006)]
33007#[rustc_legacy_const_generics(2)]
33008#[cfg_attr(
33009 not(target_arch = "arm"),
33010 stable(feature = "neon_intrinsics", since = "1.59.0")
33011)]
33012#[cfg_attr(
33013 target_arch = "arm",
33014 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33015)]
33016pub fn vmul_lane_f32<const LANE: i32>(a: float32x2_t, b: float32x2_t) -> float32x2_t {
33017 static_assert_uimm_bits!(LANE, 1);
33018 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
33019}
33020#[doc = "Floating-point multiply"]
33021#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_f32)"]
33022#[inline]
33023#[target_feature(enable = "neon")]
33024#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33025#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 0))]
33026#[cfg_attr(
33027 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33028 assert_instr(fmul, LANE = 0)
33029)]
33030#[rustc_legacy_const_generics(2)]
33031#[cfg_attr(
33032 not(target_arch = "arm"),
33033 stable(feature = "neon_intrinsics", since = "1.59.0")
33034)]
33035#[cfg_attr(
33036 target_arch = "arm",
33037 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33038)]
33039pub fn vmul_laneq_f32<const LANE: i32>(a: float32x2_t, b: float32x4_t) -> float32x2_t {
33040 static_assert_uimm_bits!(LANE, 2);
33041 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
33042}
33043#[doc = "Floating-point multiply"]
33044#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_f32)"]
33045#[inline]
33046#[target_feature(enable = "neon")]
33047#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33048#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 0))]
33049#[cfg_attr(
33050 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33051 assert_instr(fmul, LANE = 0)
33052)]
33053#[rustc_legacy_const_generics(2)]
33054#[cfg_attr(
33055 not(target_arch = "arm"),
33056 stable(feature = "neon_intrinsics", since = "1.59.0")
33057)]
33058#[cfg_attr(
33059 target_arch = "arm",
33060 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33061)]
33062pub fn vmulq_lane_f32<const LANE: i32>(a: float32x4_t, b: float32x2_t) -> float32x4_t {
33063 static_assert_uimm_bits!(LANE, 1);
33064 unsafe {
33065 simd_mul(
33066 a,
33067 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
33068 )
33069 }
33070}
33071#[doc = "Floating-point multiply"]
33072#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_f32)"]
33073#[inline]
33074#[target_feature(enable = "neon")]
33075#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33076#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 0))]
33077#[cfg_attr(
33078 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33079 assert_instr(fmul, LANE = 0)
33080)]
33081#[rustc_legacy_const_generics(2)]
33082#[cfg_attr(
33083 not(target_arch = "arm"),
33084 stable(feature = "neon_intrinsics", since = "1.59.0")
33085)]
33086#[cfg_attr(
33087 target_arch = "arm",
33088 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33089)]
33090pub fn vmulq_laneq_f32<const LANE: i32>(a: float32x4_t, b: float32x4_t) -> float32x4_t {
33091 static_assert_uimm_bits!(LANE, 2);
33092 unsafe {
33093 simd_mul(
33094 a,
33095 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
33096 )
33097 }
33098}
33099#[doc = "Multiply"]
33100#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_s16)"]
33101#[inline]
33102#[target_feature(enable = "neon")]
33103#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33104#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33105#[cfg_attr(
33106 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33107 assert_instr(mul, LANE = 1)
33108)]
33109#[rustc_legacy_const_generics(2)]
33110#[cfg_attr(
33111 not(target_arch = "arm"),
33112 stable(feature = "neon_intrinsics", since = "1.59.0")
33113)]
33114#[cfg_attr(
33115 target_arch = "arm",
33116 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33117)]
33118pub fn vmul_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
33119 static_assert_uimm_bits!(LANE, 2);
33120 unsafe {
33121 simd_mul(
33122 a,
33123 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
33124 )
33125 }
33126}
33127#[doc = "Multiply"]
33128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_s16)"]
33129#[inline]
33130#[target_feature(enable = "neon")]
33131#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33132#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33133#[cfg_attr(
33134 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33135 assert_instr(mul, LANE = 1)
33136)]
33137#[rustc_legacy_const_generics(2)]
33138#[cfg_attr(
33139 not(target_arch = "arm"),
33140 stable(feature = "neon_intrinsics", since = "1.59.0")
33141)]
33142#[cfg_attr(
33143 target_arch = "arm",
33144 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33145)]
33146pub fn vmulq_lane_s16<const LANE: i32>(a: int16x8_t, b: int16x4_t) -> int16x8_t {
33147 static_assert_uimm_bits!(LANE, 2);
33148 unsafe {
33149 simd_mul(
33150 a,
33151 simd_shuffle!(
33152 b,
33153 b,
33154 [
33155 LANE as u32,
33156 LANE as u32,
33157 LANE as u32,
33158 LANE as u32,
33159 LANE as u32,
33160 LANE as u32,
33161 LANE as u32,
33162 LANE as u32
33163 ]
33164 ),
33165 )
33166 }
33167}
33168#[doc = "Multiply"]
33169#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_s32)"]
33170#[inline]
33171#[target_feature(enable = "neon")]
33172#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33173#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33174#[cfg_attr(
33175 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33176 assert_instr(mul, LANE = 1)
33177)]
33178#[rustc_legacy_const_generics(2)]
33179#[cfg_attr(
33180 not(target_arch = "arm"),
33181 stable(feature = "neon_intrinsics", since = "1.59.0")
33182)]
33183#[cfg_attr(
33184 target_arch = "arm",
33185 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33186)]
33187pub fn vmul_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
33188 static_assert_uimm_bits!(LANE, 1);
33189 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
33190}
33191#[doc = "Multiply"]
33192#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_s32)"]
33193#[inline]
33194#[target_feature(enable = "neon")]
33195#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33196#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33197#[cfg_attr(
33198 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33199 assert_instr(mul, LANE = 1)
33200)]
33201#[rustc_legacy_const_generics(2)]
33202#[cfg_attr(
33203 not(target_arch = "arm"),
33204 stable(feature = "neon_intrinsics", since = "1.59.0")
33205)]
33206#[cfg_attr(
33207 target_arch = "arm",
33208 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33209)]
33210pub fn vmulq_lane_s32<const LANE: i32>(a: int32x4_t, b: int32x2_t) -> int32x4_t {
33211 static_assert_uimm_bits!(LANE, 1);
33212 unsafe {
33213 simd_mul(
33214 a,
33215 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
33216 )
33217 }
33218}
33219#[doc = "Multiply"]
33220#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_u16)"]
33221#[inline]
33222#[target_feature(enable = "neon")]
33223#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33224#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33225#[cfg_attr(
33226 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33227 assert_instr(mul, LANE = 1)
33228)]
33229#[rustc_legacy_const_generics(2)]
33230#[cfg_attr(
33231 not(target_arch = "arm"),
33232 stable(feature = "neon_intrinsics", since = "1.59.0")
33233)]
33234#[cfg_attr(
33235 target_arch = "arm",
33236 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33237)]
33238pub fn vmul_lane_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
33239 static_assert_uimm_bits!(LANE, 2);
33240 unsafe {
33241 simd_mul(
33242 a,
33243 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
33244 )
33245 }
33246}
33247#[doc = "Multiply"]
33248#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_u16)"]
33249#[inline]
33250#[target_feature(enable = "neon")]
33251#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33252#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33253#[cfg_attr(
33254 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33255 assert_instr(mul, LANE = 1)
33256)]
33257#[rustc_legacy_const_generics(2)]
33258#[cfg_attr(
33259 not(target_arch = "arm"),
33260 stable(feature = "neon_intrinsics", since = "1.59.0")
33261)]
33262#[cfg_attr(
33263 target_arch = "arm",
33264 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33265)]
33266pub fn vmulq_lane_u16<const LANE: i32>(a: uint16x8_t, b: uint16x4_t) -> uint16x8_t {
33267 static_assert_uimm_bits!(LANE, 2);
33268 unsafe {
33269 simd_mul(
33270 a,
33271 simd_shuffle!(
33272 b,
33273 b,
33274 [
33275 LANE as u32,
33276 LANE as u32,
33277 LANE as u32,
33278 LANE as u32,
33279 LANE as u32,
33280 LANE as u32,
33281 LANE as u32,
33282 LANE as u32
33283 ]
33284 ),
33285 )
33286 }
33287}
33288#[doc = "Multiply"]
33289#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_u32)"]
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, LANE = 1))]
33294#[cfg_attr(
33295 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33296 assert_instr(mul, LANE = 1)
33297)]
33298#[rustc_legacy_const_generics(2)]
33299#[cfg_attr(
33300 not(target_arch = "arm"),
33301 stable(feature = "neon_intrinsics", since = "1.59.0")
33302)]
33303#[cfg_attr(
33304 target_arch = "arm",
33305 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33306)]
33307pub fn vmul_lane_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
33308 static_assert_uimm_bits!(LANE, 1);
33309 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
33310}
33311#[doc = "Multiply"]
33312#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_u32)"]
33313#[inline]
33314#[target_feature(enable = "neon")]
33315#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33316#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33317#[cfg_attr(
33318 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33319 assert_instr(mul, LANE = 1)
33320)]
33321#[rustc_legacy_const_generics(2)]
33322#[cfg_attr(
33323 not(target_arch = "arm"),
33324 stable(feature = "neon_intrinsics", since = "1.59.0")
33325)]
33326#[cfg_attr(
33327 target_arch = "arm",
33328 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33329)]
33330pub fn vmulq_lane_u32<const LANE: i32>(a: uint32x4_t, b: uint32x2_t) -> uint32x4_t {
33331 static_assert_uimm_bits!(LANE, 1);
33332 unsafe {
33333 simd_mul(
33334 a,
33335 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
33336 )
33337 }
33338}
33339#[doc = "Multiply"]
33340#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_s16)"]
33341#[inline]
33342#[target_feature(enable = "neon")]
33343#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33344#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33345#[cfg_attr(
33346 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33347 assert_instr(mul, LANE = 1)
33348)]
33349#[rustc_legacy_const_generics(2)]
33350#[cfg_attr(
33351 not(target_arch = "arm"),
33352 stable(feature = "neon_intrinsics", since = "1.59.0")
33353)]
33354#[cfg_attr(
33355 target_arch = "arm",
33356 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33357)]
33358pub fn vmul_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x8_t) -> int16x4_t {
33359 static_assert_uimm_bits!(LANE, 3);
33360 unsafe {
33361 simd_mul(
33362 a,
33363 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
33364 )
33365 }
33366}
33367#[doc = "Multiply"]
33368#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_s16)"]
33369#[inline]
33370#[target_feature(enable = "neon")]
33371#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33372#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33373#[cfg_attr(
33374 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33375 assert_instr(mul, LANE = 1)
33376)]
33377#[rustc_legacy_const_generics(2)]
33378#[cfg_attr(
33379 not(target_arch = "arm"),
33380 stable(feature = "neon_intrinsics", since = "1.59.0")
33381)]
33382#[cfg_attr(
33383 target_arch = "arm",
33384 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33385)]
33386pub fn vmulq_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
33387 static_assert_uimm_bits!(LANE, 3);
33388 unsafe {
33389 simd_mul(
33390 a,
33391 simd_shuffle!(
33392 b,
33393 b,
33394 [
33395 LANE as u32,
33396 LANE as u32,
33397 LANE as u32,
33398 LANE as u32,
33399 LANE as u32,
33400 LANE as u32,
33401 LANE as u32,
33402 LANE as u32
33403 ]
33404 ),
33405 )
33406 }
33407}
33408#[doc = "Multiply"]
33409#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_s32)"]
33410#[inline]
33411#[target_feature(enable = "neon")]
33412#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33413#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33414#[cfg_attr(
33415 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33416 assert_instr(mul, LANE = 1)
33417)]
33418#[rustc_legacy_const_generics(2)]
33419#[cfg_attr(
33420 not(target_arch = "arm"),
33421 stable(feature = "neon_intrinsics", since = "1.59.0")
33422)]
33423#[cfg_attr(
33424 target_arch = "arm",
33425 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33426)]
33427pub fn vmul_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x4_t) -> int32x2_t {
33428 static_assert_uimm_bits!(LANE, 2);
33429 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
33430}
33431#[doc = "Multiply"]
33432#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_s32)"]
33433#[inline]
33434#[target_feature(enable = "neon")]
33435#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33436#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33437#[cfg_attr(
33438 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33439 assert_instr(mul, LANE = 1)
33440)]
33441#[rustc_legacy_const_generics(2)]
33442#[cfg_attr(
33443 not(target_arch = "arm"),
33444 stable(feature = "neon_intrinsics", since = "1.59.0")
33445)]
33446#[cfg_attr(
33447 target_arch = "arm",
33448 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33449)]
33450pub fn vmulq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
33451 static_assert_uimm_bits!(LANE, 2);
33452 unsafe {
33453 simd_mul(
33454 a,
33455 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
33456 )
33457 }
33458}
33459#[doc = "Multiply"]
33460#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_u16)"]
33461#[inline]
33462#[target_feature(enable = "neon")]
33463#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33464#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33465#[cfg_attr(
33466 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33467 assert_instr(mul, LANE = 1)
33468)]
33469#[rustc_legacy_const_generics(2)]
33470#[cfg_attr(
33471 not(target_arch = "arm"),
33472 stable(feature = "neon_intrinsics", since = "1.59.0")
33473)]
33474#[cfg_attr(
33475 target_arch = "arm",
33476 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33477)]
33478pub fn vmul_laneq_u16<const LANE: i32>(a: uint16x4_t, b: uint16x8_t) -> uint16x4_t {
33479 static_assert_uimm_bits!(LANE, 3);
33480 unsafe {
33481 simd_mul(
33482 a,
33483 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
33484 )
33485 }
33486}
33487#[doc = "Multiply"]
33488#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_u16)"]
33489#[inline]
33490#[target_feature(enable = "neon")]
33491#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33492#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33493#[cfg_attr(
33494 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33495 assert_instr(mul, LANE = 1)
33496)]
33497#[rustc_legacy_const_generics(2)]
33498#[cfg_attr(
33499 not(target_arch = "arm"),
33500 stable(feature = "neon_intrinsics", since = "1.59.0")
33501)]
33502#[cfg_attr(
33503 target_arch = "arm",
33504 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33505)]
33506pub fn vmulq_laneq_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
33507 static_assert_uimm_bits!(LANE, 3);
33508 unsafe {
33509 simd_mul(
33510 a,
33511 simd_shuffle!(
33512 b,
33513 b,
33514 [
33515 LANE as u32,
33516 LANE as u32,
33517 LANE as u32,
33518 LANE as u32,
33519 LANE as u32,
33520 LANE as u32,
33521 LANE as u32,
33522 LANE as u32
33523 ]
33524 ),
33525 )
33526 }
33527}
33528#[doc = "Multiply"]
33529#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_u32)"]
33530#[inline]
33531#[target_feature(enable = "neon")]
33532#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33533#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33534#[cfg_attr(
33535 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33536 assert_instr(mul, LANE = 1)
33537)]
33538#[rustc_legacy_const_generics(2)]
33539#[cfg_attr(
33540 not(target_arch = "arm"),
33541 stable(feature = "neon_intrinsics", since = "1.59.0")
33542)]
33543#[cfg_attr(
33544 target_arch = "arm",
33545 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33546)]
33547pub fn vmul_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint32x4_t) -> uint32x2_t {
33548 static_assert_uimm_bits!(LANE, 2);
33549 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
33550}
33551#[doc = "Multiply"]
33552#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_u32)"]
33553#[inline]
33554#[target_feature(enable = "neon")]
33555#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33556#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
33557#[cfg_attr(
33558 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33559 assert_instr(mul, LANE = 1)
33560)]
33561#[rustc_legacy_const_generics(2)]
33562#[cfg_attr(
33563 not(target_arch = "arm"),
33564 stable(feature = "neon_intrinsics", since = "1.59.0")
33565)]
33566#[cfg_attr(
33567 target_arch = "arm",
33568 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33569)]
33570pub fn vmulq_laneq_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
33571 static_assert_uimm_bits!(LANE, 2);
33572 unsafe {
33573 simd_mul(
33574 a,
33575 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
33576 )
33577 }
33578}
33579#[doc = "Vector multiply by scalar"]
33580#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_f16)"]
33581#[inline]
33582#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
33583#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33584#[cfg_attr(
33585 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33586 assert_instr(fmul)
33587)]
33588#[target_feature(enable = "neon,fp16")]
33589#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
33590#[cfg(not(target_arch = "arm64ec"))]
33591pub fn vmul_n_f16(a: float16x4_t, b: f16) -> float16x4_t {
33592 unsafe { simd_mul(a, vdup_n_f16(b)) }
33593}
33594#[doc = "Vector multiply by scalar"]
33595#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_f16)"]
33596#[inline]
33597#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
33598#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33599#[cfg_attr(
33600 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33601 assert_instr(fmul)
33602)]
33603#[target_feature(enable = "neon,fp16")]
33604#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
33605#[cfg(not(target_arch = "arm64ec"))]
33606pub fn vmulq_n_f16(a: float16x8_t, b: f16) -> float16x8_t {
33607 unsafe { simd_mul(a, vdupq_n_f16(b)) }
33608}
33609#[doc = "Vector multiply by scalar"]
33610#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_f32)"]
33611#[inline]
33612#[target_feature(enable = "neon")]
33613#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33614#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33615#[cfg_attr(
33616 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33617 assert_instr(fmul)
33618)]
33619#[cfg_attr(
33620 not(target_arch = "arm"),
33621 stable(feature = "neon_intrinsics", since = "1.59.0")
33622)]
33623#[cfg_attr(
33624 target_arch = "arm",
33625 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33626)]
33627pub fn vmul_n_f32(a: float32x2_t, b: f32) -> float32x2_t {
33628 unsafe { simd_mul(a, vdup_n_f32(b)) }
33629}
33630#[doc = "Vector multiply by scalar"]
33631#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_f32)"]
33632#[inline]
33633#[target_feature(enable = "neon")]
33634#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33635#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33636#[cfg_attr(
33637 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33638 assert_instr(fmul)
33639)]
33640#[cfg_attr(
33641 not(target_arch = "arm"),
33642 stable(feature = "neon_intrinsics", since = "1.59.0")
33643)]
33644#[cfg_attr(
33645 target_arch = "arm",
33646 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33647)]
33648pub fn vmulq_n_f32(a: float32x4_t, b: f32) -> float32x4_t {
33649 unsafe { simd_mul(a, vdupq_n_f32(b)) }
33650}
33651#[doc = "Vector multiply by scalar"]
33652#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_s16)"]
33653#[inline]
33654#[target_feature(enable = "neon")]
33655#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33656#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33657#[cfg_attr(
33658 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33659 assert_instr(mul)
33660)]
33661#[cfg_attr(
33662 not(target_arch = "arm"),
33663 stable(feature = "neon_intrinsics", since = "1.59.0")
33664)]
33665#[cfg_attr(
33666 target_arch = "arm",
33667 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33668)]
33669pub fn vmul_n_s16(a: int16x4_t, b: i16) -> int16x4_t {
33670 unsafe { simd_mul(a, vdup_n_s16(b)) }
33671}
33672#[doc = "Vector multiply by scalar"]
33673#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_s16)"]
33674#[inline]
33675#[target_feature(enable = "neon")]
33676#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33677#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33678#[cfg_attr(
33679 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33680 assert_instr(mul)
33681)]
33682#[cfg_attr(
33683 not(target_arch = "arm"),
33684 stable(feature = "neon_intrinsics", since = "1.59.0")
33685)]
33686#[cfg_attr(
33687 target_arch = "arm",
33688 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33689)]
33690pub fn vmulq_n_s16(a: int16x8_t, b: i16) -> int16x8_t {
33691 unsafe { simd_mul(a, vdupq_n_s16(b)) }
33692}
33693#[doc = "Vector multiply by scalar"]
33694#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_s32)"]
33695#[inline]
33696#[target_feature(enable = "neon")]
33697#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33698#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33699#[cfg_attr(
33700 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33701 assert_instr(mul)
33702)]
33703#[cfg_attr(
33704 not(target_arch = "arm"),
33705 stable(feature = "neon_intrinsics", since = "1.59.0")
33706)]
33707#[cfg_attr(
33708 target_arch = "arm",
33709 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33710)]
33711pub fn vmul_n_s32(a: int32x2_t, b: i32) -> int32x2_t {
33712 unsafe { simd_mul(a, vdup_n_s32(b)) }
33713}
33714#[doc = "Vector multiply by scalar"]
33715#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_s32)"]
33716#[inline]
33717#[target_feature(enable = "neon")]
33718#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33719#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33720#[cfg_attr(
33721 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33722 assert_instr(mul)
33723)]
33724#[cfg_attr(
33725 not(target_arch = "arm"),
33726 stable(feature = "neon_intrinsics", since = "1.59.0")
33727)]
33728#[cfg_attr(
33729 target_arch = "arm",
33730 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33731)]
33732pub fn vmulq_n_s32(a: int32x4_t, b: i32) -> int32x4_t {
33733 unsafe { simd_mul(a, vdupq_n_s32(b)) }
33734}
33735#[doc = "Vector multiply by scalar"]
33736#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_u16)"]
33737#[inline]
33738#[target_feature(enable = "neon")]
33739#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33740#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33741#[cfg_attr(
33742 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33743 assert_instr(mul)
33744)]
33745#[cfg_attr(
33746 not(target_arch = "arm"),
33747 stable(feature = "neon_intrinsics", since = "1.59.0")
33748)]
33749#[cfg_attr(
33750 target_arch = "arm",
33751 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33752)]
33753pub fn vmul_n_u16(a: uint16x4_t, b: u16) -> uint16x4_t {
33754 unsafe { simd_mul(a, vdup_n_u16(b)) }
33755}
33756#[doc = "Vector multiply by scalar"]
33757#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_u16)"]
33758#[inline]
33759#[target_feature(enable = "neon")]
33760#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33761#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33762#[cfg_attr(
33763 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33764 assert_instr(mul)
33765)]
33766#[cfg_attr(
33767 not(target_arch = "arm"),
33768 stable(feature = "neon_intrinsics", since = "1.59.0")
33769)]
33770#[cfg_attr(
33771 target_arch = "arm",
33772 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33773)]
33774pub fn vmulq_n_u16(a: uint16x8_t, b: u16) -> uint16x8_t {
33775 unsafe { simd_mul(a, vdupq_n_u16(b)) }
33776}
33777#[doc = "Vector multiply by scalar"]
33778#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_u32)"]
33779#[inline]
33780#[target_feature(enable = "neon")]
33781#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33782#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33783#[cfg_attr(
33784 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33785 assert_instr(mul)
33786)]
33787#[cfg_attr(
33788 not(target_arch = "arm"),
33789 stable(feature = "neon_intrinsics", since = "1.59.0")
33790)]
33791#[cfg_attr(
33792 target_arch = "arm",
33793 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33794)]
33795pub fn vmul_n_u32(a: uint32x2_t, b: u32) -> uint32x2_t {
33796 unsafe { simd_mul(a, vdup_n_u32(b)) }
33797}
33798#[doc = "Vector multiply by scalar"]
33799#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_u32)"]
33800#[inline]
33801#[target_feature(enable = "neon")]
33802#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33803#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33804#[cfg_attr(
33805 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33806 assert_instr(mul)
33807)]
33808#[cfg_attr(
33809 not(target_arch = "arm"),
33810 stable(feature = "neon_intrinsics", since = "1.59.0")
33811)]
33812#[cfg_attr(
33813 target_arch = "arm",
33814 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33815)]
33816pub fn vmulq_n_u32(a: uint32x4_t, b: u32) -> uint32x4_t {
33817 unsafe { simd_mul(a, vdupq_n_u32(b)) }
33818}
33819#[doc = "Polynomial multiply"]
33820#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_p8)"]
33821#[inline]
33822#[target_feature(enable = "neon")]
33823#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33824#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33825#[cfg_attr(
33826 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33827 assert_instr(pmul)
33828)]
33829#[cfg_attr(
33830 not(target_arch = "arm"),
33831 stable(feature = "neon_intrinsics", since = "1.59.0")
33832)]
33833#[cfg_attr(
33834 target_arch = "arm",
33835 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33836)]
33837pub fn vmul_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t {
33838 unsafe extern "unadjusted" {
33839 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmulp.v8i8")]
33840 #[cfg_attr(
33841 any(target_arch = "aarch64", target_arch = "arm64ec"),
33842 link_name = "llvm.aarch64.neon.pmul.v8i8"
33843 )]
33844 fn _vmul_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t;
33845 }
33846 unsafe { _vmul_p8(a, b) }
33847}
33848#[doc = "Polynomial multiply"]
33849#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_p8)"]
33850#[inline]
33851#[target_feature(enable = "neon")]
33852#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33853#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
33854#[cfg_attr(
33855 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33856 assert_instr(pmul)
33857)]
33858#[cfg_attr(
33859 not(target_arch = "arm"),
33860 stable(feature = "neon_intrinsics", since = "1.59.0")
33861)]
33862#[cfg_attr(
33863 target_arch = "arm",
33864 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33865)]
33866pub fn vmulq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t {
33867 unsafe extern "unadjusted" {
33868 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmulp.v16i8")]
33869 #[cfg_attr(
33870 any(target_arch = "aarch64", target_arch = "arm64ec"),
33871 link_name = "llvm.aarch64.neon.pmul.v16i8"
33872 )]
33873 fn _vmulq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t;
33874 }
33875 unsafe { _vmulq_p8(a, b) }
33876}
33877#[doc = "Multiply"]
33878#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_s16)"]
33879#[inline]
33880#[target_feature(enable = "neon")]
33881#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33882#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i16"))]
33883#[cfg_attr(
33884 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33885 assert_instr(mul)
33886)]
33887#[cfg_attr(
33888 not(target_arch = "arm"),
33889 stable(feature = "neon_intrinsics", since = "1.59.0")
33890)]
33891#[cfg_attr(
33892 target_arch = "arm",
33893 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33894)]
33895pub fn vmul_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
33896 unsafe { simd_mul(a, b) }
33897}
33898#[doc = "Multiply"]
33899#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_s16)"]
33900#[inline]
33901#[target_feature(enable = "neon")]
33902#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33903#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i16"))]
33904#[cfg_attr(
33905 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33906 assert_instr(mul)
33907)]
33908#[cfg_attr(
33909 not(target_arch = "arm"),
33910 stable(feature = "neon_intrinsics", since = "1.59.0")
33911)]
33912#[cfg_attr(
33913 target_arch = "arm",
33914 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33915)]
33916pub fn vmulq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
33917 unsafe { simd_mul(a, b) }
33918}
33919#[doc = "Multiply"]
33920#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_u16)"]
33921#[inline]
33922#[target_feature(enable = "neon")]
33923#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33924#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i16"))]
33925#[cfg_attr(
33926 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33927 assert_instr(mul)
33928)]
33929#[cfg_attr(
33930 not(target_arch = "arm"),
33931 stable(feature = "neon_intrinsics", since = "1.59.0")
33932)]
33933#[cfg_attr(
33934 target_arch = "arm",
33935 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33936)]
33937pub fn vmul_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
33938 unsafe { simd_mul(a, b) }
33939}
33940#[doc = "Multiply"]
33941#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_u16)"]
33942#[inline]
33943#[target_feature(enable = "neon")]
33944#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33945#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i16"))]
33946#[cfg_attr(
33947 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33948 assert_instr(mul)
33949)]
33950#[cfg_attr(
33951 not(target_arch = "arm"),
33952 stable(feature = "neon_intrinsics", since = "1.59.0")
33953)]
33954#[cfg_attr(
33955 target_arch = "arm",
33956 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33957)]
33958pub fn vmulq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
33959 unsafe { simd_mul(a, b) }
33960}
33961#[doc = "Multiply"]
33962#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_s32)"]
33963#[inline]
33964#[target_feature(enable = "neon")]
33965#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33966#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i32"))]
33967#[cfg_attr(
33968 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33969 assert_instr(mul)
33970)]
33971#[cfg_attr(
33972 not(target_arch = "arm"),
33973 stable(feature = "neon_intrinsics", since = "1.59.0")
33974)]
33975#[cfg_attr(
33976 target_arch = "arm",
33977 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33978)]
33979pub fn vmul_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
33980 unsafe { simd_mul(a, b) }
33981}
33982#[doc = "Multiply"]
33983#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_s32)"]
33984#[inline]
33985#[target_feature(enable = "neon")]
33986#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33987#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i32"))]
33988#[cfg_attr(
33989 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33990 assert_instr(mul)
33991)]
33992#[cfg_attr(
33993 not(target_arch = "arm"),
33994 stable(feature = "neon_intrinsics", since = "1.59.0")
33995)]
33996#[cfg_attr(
33997 target_arch = "arm",
33998 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33999)]
34000pub fn vmulq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
34001 unsafe { simd_mul(a, b) }
34002}
34003#[doc = "Multiply"]
34004#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_u32)"]
34005#[inline]
34006#[target_feature(enable = "neon")]
34007#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34008#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i32"))]
34009#[cfg_attr(
34010 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34011 assert_instr(mul)
34012)]
34013#[cfg_attr(
34014 not(target_arch = "arm"),
34015 stable(feature = "neon_intrinsics", since = "1.59.0")
34016)]
34017#[cfg_attr(
34018 target_arch = "arm",
34019 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34020)]
34021pub fn vmul_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
34022 unsafe { simd_mul(a, b) }
34023}
34024#[doc = "Multiply"]
34025#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_u32)"]
34026#[inline]
34027#[target_feature(enable = "neon")]
34028#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34029#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i32"))]
34030#[cfg_attr(
34031 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34032 assert_instr(mul)
34033)]
34034#[cfg_attr(
34035 not(target_arch = "arm"),
34036 stable(feature = "neon_intrinsics", since = "1.59.0")
34037)]
34038#[cfg_attr(
34039 target_arch = "arm",
34040 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34041)]
34042pub fn vmulq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
34043 unsafe { simd_mul(a, b) }
34044}
34045#[doc = "Multiply"]
34046#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_s8)"]
34047#[inline]
34048#[target_feature(enable = "neon")]
34049#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34050#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i8"))]
34051#[cfg_attr(
34052 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34053 assert_instr(mul)
34054)]
34055#[cfg_attr(
34056 not(target_arch = "arm"),
34057 stable(feature = "neon_intrinsics", since = "1.59.0")
34058)]
34059#[cfg_attr(
34060 target_arch = "arm",
34061 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34062)]
34063pub fn vmul_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
34064 unsafe { simd_mul(a, b) }
34065}
34066#[doc = "Multiply"]
34067#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_s8)"]
34068#[inline]
34069#[target_feature(enable = "neon")]
34070#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34071#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i8"))]
34072#[cfg_attr(
34073 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34074 assert_instr(mul)
34075)]
34076#[cfg_attr(
34077 not(target_arch = "arm"),
34078 stable(feature = "neon_intrinsics", since = "1.59.0")
34079)]
34080#[cfg_attr(
34081 target_arch = "arm",
34082 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34083)]
34084pub fn vmulq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
34085 unsafe { simd_mul(a, b) }
34086}
34087#[doc = "Multiply"]
34088#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_u8)"]
34089#[inline]
34090#[target_feature(enable = "neon")]
34091#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34092#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i8"))]
34093#[cfg_attr(
34094 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34095 assert_instr(mul)
34096)]
34097#[cfg_attr(
34098 not(target_arch = "arm"),
34099 stable(feature = "neon_intrinsics", since = "1.59.0")
34100)]
34101#[cfg_attr(
34102 target_arch = "arm",
34103 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34104)]
34105pub fn vmul_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
34106 unsafe { simd_mul(a, b) }
34107}
34108#[doc = "Multiply"]
34109#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_u8)"]
34110#[inline]
34111#[target_feature(enable = "neon")]
34112#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34113#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i8"))]
34114#[cfg_attr(
34115 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34116 assert_instr(mul)
34117)]
34118#[cfg_attr(
34119 not(target_arch = "arm"),
34120 stable(feature = "neon_intrinsics", since = "1.59.0")
34121)]
34122#[cfg_attr(
34123 target_arch = "arm",
34124 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34125)]
34126pub fn vmulq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
34127 unsafe { simd_mul(a, b) }
34128}
34129#[doc = "Vector long multiply by scalar"]
34130#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_lane_s16)"]
34131#[inline]
34132#[target_feature(enable = "neon")]
34133#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34134#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
34135#[cfg_attr(
34136 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34137 assert_instr(smull, LANE = 1)
34138)]
34139#[rustc_legacy_const_generics(2)]
34140#[cfg_attr(
34141 not(target_arch = "arm"),
34142 stable(feature = "neon_intrinsics", since = "1.59.0")
34143)]
34144#[cfg_attr(
34145 target_arch = "arm",
34146 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34147)]
34148pub fn vmull_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t) -> int32x4_t {
34149 static_assert_uimm_bits!(LANE, 2);
34150 unsafe {
34151 vmull_s16(
34152 a,
34153 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
34154 )
34155 }
34156}
34157#[doc = "Vector long multiply by scalar"]
34158#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_laneq_s16)"]
34159#[inline]
34160#[target_feature(enable = "neon")]
34161#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34162#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
34163#[cfg_attr(
34164 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34165 assert_instr(smull, LANE = 1)
34166)]
34167#[rustc_legacy_const_generics(2)]
34168#[cfg_attr(
34169 not(target_arch = "arm"),
34170 stable(feature = "neon_intrinsics", since = "1.59.0")
34171)]
34172#[cfg_attr(
34173 target_arch = "arm",
34174 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34175)]
34176pub fn vmull_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x8_t) -> int32x4_t {
34177 static_assert_uimm_bits!(LANE, 3);
34178 unsafe {
34179 vmull_s16(
34180 a,
34181 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
34182 )
34183 }
34184}
34185#[doc = "Vector long multiply by scalar"]
34186#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_lane_s32)"]
34187#[inline]
34188#[target_feature(enable = "neon")]
34189#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34190#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
34191#[cfg_attr(
34192 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34193 assert_instr(smull, LANE = 1)
34194)]
34195#[rustc_legacy_const_generics(2)]
34196#[cfg_attr(
34197 not(target_arch = "arm"),
34198 stable(feature = "neon_intrinsics", since = "1.59.0")
34199)]
34200#[cfg_attr(
34201 target_arch = "arm",
34202 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34203)]
34204pub fn vmull_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t) -> int64x2_t {
34205 static_assert_uimm_bits!(LANE, 1);
34206 unsafe { vmull_s32(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
34207}
34208#[doc = "Vector long multiply by scalar"]
34209#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_laneq_s32)"]
34210#[inline]
34211#[target_feature(enable = "neon")]
34212#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34213#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
34214#[cfg_attr(
34215 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34216 assert_instr(smull, LANE = 1)
34217)]
34218#[rustc_legacy_const_generics(2)]
34219#[cfg_attr(
34220 not(target_arch = "arm"),
34221 stable(feature = "neon_intrinsics", since = "1.59.0")
34222)]
34223#[cfg_attr(
34224 target_arch = "arm",
34225 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34226)]
34227pub fn vmull_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x4_t) -> int64x2_t {
34228 static_assert_uimm_bits!(LANE, 2);
34229 unsafe { vmull_s32(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
34230}
34231#[doc = "Vector long multiply by scalar"]
34232#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_lane_u16)"]
34233#[inline]
34234#[target_feature(enable = "neon")]
34235#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34236#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
34237#[cfg_attr(
34238 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34239 assert_instr(umull, LANE = 1)
34240)]
34241#[rustc_legacy_const_generics(2)]
34242#[cfg_attr(
34243 not(target_arch = "arm"),
34244 stable(feature = "neon_intrinsics", since = "1.59.0")
34245)]
34246#[cfg_attr(
34247 target_arch = "arm",
34248 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34249)]
34250pub fn vmull_lane_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t) -> uint32x4_t {
34251 static_assert_uimm_bits!(LANE, 2);
34252 unsafe {
34253 vmull_u16(
34254 a,
34255 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
34256 )
34257 }
34258}
34259#[doc = "Vector long multiply by scalar"]
34260#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_laneq_u16)"]
34261#[inline]
34262#[target_feature(enable = "neon")]
34263#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34264#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
34265#[cfg_attr(
34266 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34267 assert_instr(umull, LANE = 1)
34268)]
34269#[rustc_legacy_const_generics(2)]
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 vmull_laneq_u16<const LANE: i32>(a: uint16x4_t, b: uint16x8_t) -> uint32x4_t {
34279 static_assert_uimm_bits!(LANE, 3);
34280 unsafe {
34281 vmull_u16(
34282 a,
34283 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
34284 )
34285 }
34286}
34287#[doc = "Vector long multiply by scalar"]
34288#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_lane_u32)"]
34289#[inline]
34290#[target_feature(enable = "neon")]
34291#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34292#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
34293#[cfg_attr(
34294 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34295 assert_instr(umull, LANE = 1)
34296)]
34297#[rustc_legacy_const_generics(2)]
34298#[cfg_attr(
34299 not(target_arch = "arm"),
34300 stable(feature = "neon_intrinsics", since = "1.59.0")
34301)]
34302#[cfg_attr(
34303 target_arch = "arm",
34304 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34305)]
34306pub fn vmull_lane_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t) -> uint64x2_t {
34307 static_assert_uimm_bits!(LANE, 1);
34308 unsafe { vmull_u32(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
34309}
34310#[doc = "Vector long multiply by scalar"]
34311#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_laneq_u32)"]
34312#[inline]
34313#[target_feature(enable = "neon")]
34314#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34315#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
34316#[cfg_attr(
34317 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34318 assert_instr(umull, LANE = 1)
34319)]
34320#[rustc_legacy_const_generics(2)]
34321#[cfg_attr(
34322 not(target_arch = "arm"),
34323 stable(feature = "neon_intrinsics", since = "1.59.0")
34324)]
34325#[cfg_attr(
34326 target_arch = "arm",
34327 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34328)]
34329pub fn vmull_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint32x4_t) -> uint64x2_t {
34330 static_assert_uimm_bits!(LANE, 2);
34331 unsafe { vmull_u32(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
34332}
34333#[doc = "Vector long multiply with scalar"]
34334#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_n_s16)"]
34335#[inline]
34336#[target_feature(enable = "neon")]
34337#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34338#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull))]
34339#[cfg_attr(
34340 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34341 assert_instr(smull)
34342)]
34343#[cfg_attr(
34344 not(target_arch = "arm"),
34345 stable(feature = "neon_intrinsics", since = "1.59.0")
34346)]
34347#[cfg_attr(
34348 target_arch = "arm",
34349 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34350)]
34351pub fn vmull_n_s16(a: int16x4_t, b: i16) -> int32x4_t {
34352 vmull_s16(a, vdup_n_s16(b))
34353}
34354#[doc = "Vector long multiply with scalar"]
34355#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_n_s32)"]
34356#[inline]
34357#[target_feature(enable = "neon")]
34358#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34359#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull))]
34360#[cfg_attr(
34361 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34362 assert_instr(smull)
34363)]
34364#[cfg_attr(
34365 not(target_arch = "arm"),
34366 stable(feature = "neon_intrinsics", since = "1.59.0")
34367)]
34368#[cfg_attr(
34369 target_arch = "arm",
34370 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34371)]
34372pub fn vmull_n_s32(a: int32x2_t, b: i32) -> int64x2_t {
34373 vmull_s32(a, vdup_n_s32(b))
34374}
34375#[doc = "Vector long multiply with scalar"]
34376#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_n_u16)"]
34377#[inline]
34378#[target_feature(enable = "neon")]
34379#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34380#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull))]
34381#[cfg_attr(
34382 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34383 assert_instr(umull)
34384)]
34385#[cfg_attr(
34386 not(target_arch = "arm"),
34387 stable(feature = "neon_intrinsics", since = "1.59.0")
34388)]
34389#[cfg_attr(
34390 target_arch = "arm",
34391 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34392)]
34393pub fn vmull_n_u16(a: uint16x4_t, b: u16) -> uint32x4_t {
34394 vmull_u16(a, vdup_n_u16(b))
34395}
34396#[doc = "Vector long multiply with scalar"]
34397#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_n_u32)"]
34398#[inline]
34399#[target_feature(enable = "neon")]
34400#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34401#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull))]
34402#[cfg_attr(
34403 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34404 assert_instr(umull)
34405)]
34406#[cfg_attr(
34407 not(target_arch = "arm"),
34408 stable(feature = "neon_intrinsics", since = "1.59.0")
34409)]
34410#[cfg_attr(
34411 target_arch = "arm",
34412 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34413)]
34414pub fn vmull_n_u32(a: uint32x2_t, b: u32) -> uint64x2_t {
34415 vmull_u32(a, vdup_n_u32(b))
34416}
34417#[doc = "Polynomial multiply long"]
34418#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_p8)"]
34419#[inline]
34420#[target_feature(enable = "neon")]
34421#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34422#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.p8"))]
34423#[cfg_attr(
34424 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34425 assert_instr(pmull)
34426)]
34427#[cfg_attr(
34428 not(target_arch = "arm"),
34429 stable(feature = "neon_intrinsics", since = "1.59.0")
34430)]
34431#[cfg_attr(
34432 target_arch = "arm",
34433 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34434)]
34435pub fn vmull_p8(a: poly8x8_t, b: poly8x8_t) -> poly16x8_t {
34436 unsafe extern "unadjusted" {
34437 #[cfg_attr(
34438 any(target_arch = "aarch64", target_arch = "arm64ec"),
34439 link_name = "llvm.aarch64.neon.pmull.v8i16"
34440 )]
34441 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmullp.v8i16")]
34442 fn _vmull_p8(a: poly8x8_t, b: poly8x8_t) -> poly16x8_t;
34443 }
34444 unsafe { _vmull_p8(a, b) }
34445}
34446#[doc = "Signed multiply long"]
34447#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_s16)"]
34448#[inline]
34449#[target_feature(enable = "neon")]
34450#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34451#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.s16"))]
34452#[cfg_attr(
34453 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34454 assert_instr(smull)
34455)]
34456#[cfg_attr(
34457 not(target_arch = "arm"),
34458 stable(feature = "neon_intrinsics", since = "1.59.0")
34459)]
34460#[cfg_attr(
34461 target_arch = "arm",
34462 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34463)]
34464pub fn vmull_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t {
34465 unsafe extern "unadjusted" {
34466 #[cfg_attr(
34467 any(target_arch = "aarch64", target_arch = "arm64ec"),
34468 link_name = "llvm.aarch64.neon.smull.v4i32"
34469 )]
34470 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmulls.v4i32")]
34471 fn _vmull_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t;
34472 }
34473 unsafe { _vmull_s16(a, b) }
34474}
34475#[doc = "Signed multiply long"]
34476#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_s32)"]
34477#[inline]
34478#[target_feature(enable = "neon")]
34479#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34480#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.s32"))]
34481#[cfg_attr(
34482 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34483 assert_instr(smull)
34484)]
34485#[cfg_attr(
34486 not(target_arch = "arm"),
34487 stable(feature = "neon_intrinsics", since = "1.59.0")
34488)]
34489#[cfg_attr(
34490 target_arch = "arm",
34491 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34492)]
34493pub fn vmull_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t {
34494 unsafe extern "unadjusted" {
34495 #[cfg_attr(
34496 any(target_arch = "aarch64", target_arch = "arm64ec"),
34497 link_name = "llvm.aarch64.neon.smull.v2i64"
34498 )]
34499 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmulls.v2i64")]
34500 fn _vmull_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t;
34501 }
34502 unsafe { _vmull_s32(a, b) }
34503}
34504#[doc = "Signed multiply long"]
34505#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_s8)"]
34506#[inline]
34507#[target_feature(enable = "neon")]
34508#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34509#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.s8"))]
34510#[cfg_attr(
34511 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34512 assert_instr(smull)
34513)]
34514#[cfg_attr(
34515 not(target_arch = "arm"),
34516 stable(feature = "neon_intrinsics", since = "1.59.0")
34517)]
34518#[cfg_attr(
34519 target_arch = "arm",
34520 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34521)]
34522pub fn vmull_s8(a: int8x8_t, b: int8x8_t) -> int16x8_t {
34523 unsafe extern "unadjusted" {
34524 #[cfg_attr(
34525 any(target_arch = "aarch64", target_arch = "arm64ec"),
34526 link_name = "llvm.aarch64.neon.smull.v8i16"
34527 )]
34528 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmulls.v8i16")]
34529 fn _vmull_s8(a: int8x8_t, b: int8x8_t) -> int16x8_t;
34530 }
34531 unsafe { _vmull_s8(a, b) }
34532}
34533#[doc = "Unsigned multiply long"]
34534#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_u8)"]
34535#[inline]
34536#[target_feature(enable = "neon")]
34537#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34538#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.u8"))]
34539#[cfg_attr(
34540 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34541 assert_instr(umull)
34542)]
34543#[cfg_attr(
34544 not(target_arch = "arm"),
34545 stable(feature = "neon_intrinsics", since = "1.59.0")
34546)]
34547#[cfg_attr(
34548 target_arch = "arm",
34549 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34550)]
34551pub fn vmull_u8(a: uint8x8_t, b: uint8x8_t) -> uint16x8_t {
34552 unsafe extern "unadjusted" {
34553 #[cfg_attr(
34554 any(target_arch = "aarch64", target_arch = "arm64ec"),
34555 link_name = "llvm.aarch64.neon.umull.v8i16"
34556 )]
34557 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmullu.v8i16")]
34558 fn _vmull_u8(a: uint8x8_t, b: uint8x8_t) -> uint16x8_t;
34559 }
34560 unsafe { _vmull_u8(a, b) }
34561}
34562#[doc = "Unsigned multiply long"]
34563#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_u16)"]
34564#[inline]
34565#[target_feature(enable = "neon")]
34566#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34567#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.u16"))]
34568#[cfg_attr(
34569 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34570 assert_instr(umull)
34571)]
34572#[cfg_attr(
34573 not(target_arch = "arm"),
34574 stable(feature = "neon_intrinsics", since = "1.59.0")
34575)]
34576#[cfg_attr(
34577 target_arch = "arm",
34578 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34579)]
34580pub fn vmull_u16(a: uint16x4_t, b: uint16x4_t) -> uint32x4_t {
34581 unsafe extern "unadjusted" {
34582 #[cfg_attr(
34583 any(target_arch = "aarch64", target_arch = "arm64ec"),
34584 link_name = "llvm.aarch64.neon.umull.v4i32"
34585 )]
34586 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmullu.v4i32")]
34587 fn _vmull_u16(a: uint16x4_t, b: uint16x4_t) -> uint32x4_t;
34588 }
34589 unsafe { _vmull_u16(a, b) }
34590}
34591#[doc = "Unsigned multiply long"]
34592#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_u32)"]
34593#[inline]
34594#[target_feature(enable = "neon")]
34595#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34596#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.u32"))]
34597#[cfg_attr(
34598 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34599 assert_instr(umull)
34600)]
34601#[cfg_attr(
34602 not(target_arch = "arm"),
34603 stable(feature = "neon_intrinsics", since = "1.59.0")
34604)]
34605#[cfg_attr(
34606 target_arch = "arm",
34607 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34608)]
34609pub fn vmull_u32(a: uint32x2_t, b: uint32x2_t) -> uint64x2_t {
34610 unsafe extern "unadjusted" {
34611 #[cfg_attr(
34612 any(target_arch = "aarch64", target_arch = "arm64ec"),
34613 link_name = "llvm.aarch64.neon.umull.v2i64"
34614 )]
34615 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmullu.v2i64")]
34616 fn _vmull_u32(a: uint32x2_t, b: uint32x2_t) -> uint64x2_t;
34617 }
34618 unsafe { _vmull_u32(a, b) }
34619}
34620#[doc = "Vector bitwise not."]
34621#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_p8)"]
34622#[inline]
34623#[target_feature(enable = "neon")]
34624#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34625#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34626#[cfg_attr(
34627 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34628 assert_instr(mvn)
34629)]
34630#[cfg_attr(
34631 not(target_arch = "arm"),
34632 stable(feature = "neon_intrinsics", since = "1.59.0")
34633)]
34634#[cfg_attr(
34635 target_arch = "arm",
34636 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34637)]
34638pub fn vmvn_p8(a: poly8x8_t) -> poly8x8_t {
34639 let b = poly8x8_t::splat(255);
34640 unsafe { simd_xor(a, b) }
34641}
34642#[doc = "Vector bitwise not."]
34643#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_s16)"]
34644#[inline]
34645#[target_feature(enable = "neon")]
34646#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34647#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34648#[cfg_attr(
34649 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34650 assert_instr(mvn)
34651)]
34652#[cfg_attr(
34653 not(target_arch = "arm"),
34654 stable(feature = "neon_intrinsics", since = "1.59.0")
34655)]
34656#[cfg_attr(
34657 target_arch = "arm",
34658 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34659)]
34660pub fn vmvn_s16(a: int16x4_t) -> int16x4_t {
34661 let b = int16x4_t::splat(-1);
34662 unsafe { simd_xor(a, b) }
34663}
34664#[doc = "Vector bitwise not."]
34665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_s32)"]
34666#[inline]
34667#[target_feature(enable = "neon")]
34668#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34669#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34670#[cfg_attr(
34671 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34672 assert_instr(mvn)
34673)]
34674#[cfg_attr(
34675 not(target_arch = "arm"),
34676 stable(feature = "neon_intrinsics", since = "1.59.0")
34677)]
34678#[cfg_attr(
34679 target_arch = "arm",
34680 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34681)]
34682pub fn vmvn_s32(a: int32x2_t) -> int32x2_t {
34683 let b = int32x2_t::splat(-1);
34684 unsafe { simd_xor(a, b) }
34685}
34686#[doc = "Vector bitwise not."]
34687#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_s8)"]
34688#[inline]
34689#[target_feature(enable = "neon")]
34690#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34691#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34692#[cfg_attr(
34693 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34694 assert_instr(mvn)
34695)]
34696#[cfg_attr(
34697 not(target_arch = "arm"),
34698 stable(feature = "neon_intrinsics", since = "1.59.0")
34699)]
34700#[cfg_attr(
34701 target_arch = "arm",
34702 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34703)]
34704pub fn vmvn_s8(a: int8x8_t) -> int8x8_t {
34705 let b = int8x8_t::splat(-1);
34706 unsafe { simd_xor(a, b) }
34707}
34708#[doc = "Vector bitwise not."]
34709#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_u16)"]
34710#[inline]
34711#[target_feature(enable = "neon")]
34712#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34713#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34714#[cfg_attr(
34715 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34716 assert_instr(mvn)
34717)]
34718#[cfg_attr(
34719 not(target_arch = "arm"),
34720 stable(feature = "neon_intrinsics", since = "1.59.0")
34721)]
34722#[cfg_attr(
34723 target_arch = "arm",
34724 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34725)]
34726pub fn vmvn_u16(a: uint16x4_t) -> uint16x4_t {
34727 let b = uint16x4_t::splat(65_535);
34728 unsafe { simd_xor(a, b) }
34729}
34730#[doc = "Vector bitwise not."]
34731#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_u32)"]
34732#[inline]
34733#[target_feature(enable = "neon")]
34734#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34735#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34736#[cfg_attr(
34737 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34738 assert_instr(mvn)
34739)]
34740#[cfg_attr(
34741 not(target_arch = "arm"),
34742 stable(feature = "neon_intrinsics", since = "1.59.0")
34743)]
34744#[cfg_attr(
34745 target_arch = "arm",
34746 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34747)]
34748pub fn vmvn_u32(a: uint32x2_t) -> uint32x2_t {
34749 let b = uint32x2_t::splat(4_294_967_295);
34750 unsafe { simd_xor(a, b) }
34751}
34752#[doc = "Vector bitwise not."]
34753#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_u8)"]
34754#[inline]
34755#[target_feature(enable = "neon")]
34756#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34757#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34758#[cfg_attr(
34759 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34760 assert_instr(mvn)
34761)]
34762#[cfg_attr(
34763 not(target_arch = "arm"),
34764 stable(feature = "neon_intrinsics", since = "1.59.0")
34765)]
34766#[cfg_attr(
34767 target_arch = "arm",
34768 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34769)]
34770pub fn vmvn_u8(a: uint8x8_t) -> uint8x8_t {
34771 let b = uint8x8_t::splat(255);
34772 unsafe { simd_xor(a, b) }
34773}
34774#[doc = "Vector bitwise not."]
34775#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_p8)"]
34776#[inline]
34777#[target_feature(enable = "neon")]
34778#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34779#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34780#[cfg_attr(
34781 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34782 assert_instr(mvn)
34783)]
34784#[cfg_attr(
34785 not(target_arch = "arm"),
34786 stable(feature = "neon_intrinsics", since = "1.59.0")
34787)]
34788#[cfg_attr(
34789 target_arch = "arm",
34790 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34791)]
34792pub fn vmvnq_p8(a: poly8x16_t) -> poly8x16_t {
34793 let b = poly8x16_t::splat(255);
34794 unsafe { simd_xor(a, b) }
34795}
34796#[doc = "Vector bitwise not."]
34797#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_s16)"]
34798#[inline]
34799#[target_feature(enable = "neon")]
34800#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34801#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34802#[cfg_attr(
34803 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34804 assert_instr(mvn)
34805)]
34806#[cfg_attr(
34807 not(target_arch = "arm"),
34808 stable(feature = "neon_intrinsics", since = "1.59.0")
34809)]
34810#[cfg_attr(
34811 target_arch = "arm",
34812 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34813)]
34814pub fn vmvnq_s16(a: int16x8_t) -> int16x8_t {
34815 let b = int16x8_t::splat(-1);
34816 unsafe { simd_xor(a, b) }
34817}
34818#[doc = "Vector bitwise not."]
34819#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_s32)"]
34820#[inline]
34821#[target_feature(enable = "neon")]
34822#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34823#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34824#[cfg_attr(
34825 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34826 assert_instr(mvn)
34827)]
34828#[cfg_attr(
34829 not(target_arch = "arm"),
34830 stable(feature = "neon_intrinsics", since = "1.59.0")
34831)]
34832#[cfg_attr(
34833 target_arch = "arm",
34834 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34835)]
34836pub fn vmvnq_s32(a: int32x4_t) -> int32x4_t {
34837 let b = int32x4_t::splat(-1);
34838 unsafe { simd_xor(a, b) }
34839}
34840#[doc = "Vector bitwise not."]
34841#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_s8)"]
34842#[inline]
34843#[target_feature(enable = "neon")]
34844#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34845#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34846#[cfg_attr(
34847 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34848 assert_instr(mvn)
34849)]
34850#[cfg_attr(
34851 not(target_arch = "arm"),
34852 stable(feature = "neon_intrinsics", since = "1.59.0")
34853)]
34854#[cfg_attr(
34855 target_arch = "arm",
34856 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34857)]
34858pub fn vmvnq_s8(a: int8x16_t) -> int8x16_t {
34859 let b = int8x16_t::splat(-1);
34860 unsafe { simd_xor(a, b) }
34861}
34862#[doc = "Vector bitwise not."]
34863#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_u16)"]
34864#[inline]
34865#[target_feature(enable = "neon")]
34866#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34867#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34868#[cfg_attr(
34869 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34870 assert_instr(mvn)
34871)]
34872#[cfg_attr(
34873 not(target_arch = "arm"),
34874 stable(feature = "neon_intrinsics", since = "1.59.0")
34875)]
34876#[cfg_attr(
34877 target_arch = "arm",
34878 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34879)]
34880pub fn vmvnq_u16(a: uint16x8_t) -> uint16x8_t {
34881 let b = uint16x8_t::splat(65_535);
34882 unsafe { simd_xor(a, b) }
34883}
34884#[doc = "Vector bitwise not."]
34885#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_u32)"]
34886#[inline]
34887#[target_feature(enable = "neon")]
34888#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34889#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34890#[cfg_attr(
34891 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34892 assert_instr(mvn)
34893)]
34894#[cfg_attr(
34895 not(target_arch = "arm"),
34896 stable(feature = "neon_intrinsics", since = "1.59.0")
34897)]
34898#[cfg_attr(
34899 target_arch = "arm",
34900 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34901)]
34902pub fn vmvnq_u32(a: uint32x4_t) -> uint32x4_t {
34903 let b = uint32x4_t::splat(4_294_967_295);
34904 unsafe { simd_xor(a, b) }
34905}
34906#[doc = "Vector bitwise not."]
34907#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_u8)"]
34908#[inline]
34909#[target_feature(enable = "neon")]
34910#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34911#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
34912#[cfg_attr(
34913 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34914 assert_instr(mvn)
34915)]
34916#[cfg_attr(
34917 not(target_arch = "arm"),
34918 stable(feature = "neon_intrinsics", since = "1.59.0")
34919)]
34920#[cfg_attr(
34921 target_arch = "arm",
34922 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34923)]
34924pub fn vmvnq_u8(a: uint8x16_t) -> uint8x16_t {
34925 let b = uint8x16_t::splat(255);
34926 unsafe { simd_xor(a, b) }
34927}
34928#[doc = "Negate"]
34929#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_f16)"]
34930#[inline]
34931#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
34932#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.f16"))]
34933#[cfg_attr(
34934 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34935 assert_instr(fneg)
34936)]
34937#[target_feature(enable = "neon,fp16")]
34938#[cfg_attr(
34939 not(target_arch = "arm"),
34940 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
34941)]
34942#[cfg_attr(
34943 target_arch = "arm",
34944 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34945)]
34946#[cfg(not(target_arch = "arm64ec"))]
34947pub fn vneg_f16(a: float16x4_t) -> float16x4_t {
34948 unsafe { simd_neg(a) }
34949}
34950#[doc = "Negate"]
34951#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_f16)"]
34952#[inline]
34953#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
34954#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.f16"))]
34955#[cfg_attr(
34956 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34957 assert_instr(fneg)
34958)]
34959#[target_feature(enable = "neon,fp16")]
34960#[cfg_attr(
34961 not(target_arch = "arm"),
34962 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
34963)]
34964#[cfg_attr(
34965 target_arch = "arm",
34966 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34967)]
34968#[cfg(not(target_arch = "arm64ec"))]
34969pub fn vnegq_f16(a: float16x8_t) -> float16x8_t {
34970 unsafe { simd_neg(a) }
34971}
34972#[doc = "Negate"]
34973#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_f32)"]
34974#[inline]
34975#[target_feature(enable = "neon")]
34976#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34977#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.f32"))]
34978#[cfg_attr(
34979 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34980 assert_instr(fneg)
34981)]
34982#[cfg_attr(
34983 not(target_arch = "arm"),
34984 stable(feature = "neon_intrinsics", since = "1.59.0")
34985)]
34986#[cfg_attr(
34987 target_arch = "arm",
34988 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34989)]
34990pub fn vneg_f32(a: float32x2_t) -> float32x2_t {
34991 unsafe { simd_neg(a) }
34992}
34993#[doc = "Negate"]
34994#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_f32)"]
34995#[inline]
34996#[target_feature(enable = "neon")]
34997#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34998#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.f32"))]
34999#[cfg_attr(
35000 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35001 assert_instr(fneg)
35002)]
35003#[cfg_attr(
35004 not(target_arch = "arm"),
35005 stable(feature = "neon_intrinsics", since = "1.59.0")
35006)]
35007#[cfg_attr(
35008 target_arch = "arm",
35009 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35010)]
35011pub fn vnegq_f32(a: float32x4_t) -> float32x4_t {
35012 unsafe { simd_neg(a) }
35013}
35014#[doc = "Negate"]
35015#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_s8)"]
35016#[inline]
35017#[target_feature(enable = "neon")]
35018#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35019#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.s8"))]
35020#[cfg_attr(
35021 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35022 assert_instr(neg)
35023)]
35024#[cfg_attr(
35025 not(target_arch = "arm"),
35026 stable(feature = "neon_intrinsics", since = "1.59.0")
35027)]
35028#[cfg_attr(
35029 target_arch = "arm",
35030 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35031)]
35032pub fn vneg_s8(a: int8x8_t) -> int8x8_t {
35033 unsafe { simd_neg(a) }
35034}
35035#[doc = "Negate"]
35036#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_s8)"]
35037#[inline]
35038#[target_feature(enable = "neon")]
35039#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35040#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.s8"))]
35041#[cfg_attr(
35042 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35043 assert_instr(neg)
35044)]
35045#[cfg_attr(
35046 not(target_arch = "arm"),
35047 stable(feature = "neon_intrinsics", since = "1.59.0")
35048)]
35049#[cfg_attr(
35050 target_arch = "arm",
35051 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35052)]
35053pub fn vnegq_s8(a: int8x16_t) -> int8x16_t {
35054 unsafe { simd_neg(a) }
35055}
35056#[doc = "Negate"]
35057#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_s16)"]
35058#[inline]
35059#[target_feature(enable = "neon")]
35060#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35061#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.s16"))]
35062#[cfg_attr(
35063 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35064 assert_instr(neg)
35065)]
35066#[cfg_attr(
35067 not(target_arch = "arm"),
35068 stable(feature = "neon_intrinsics", since = "1.59.0")
35069)]
35070#[cfg_attr(
35071 target_arch = "arm",
35072 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35073)]
35074pub fn vneg_s16(a: int16x4_t) -> int16x4_t {
35075 unsafe { simd_neg(a) }
35076}
35077#[doc = "Negate"]
35078#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_s16)"]
35079#[inline]
35080#[target_feature(enable = "neon")]
35081#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35082#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.s16"))]
35083#[cfg_attr(
35084 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35085 assert_instr(neg)
35086)]
35087#[cfg_attr(
35088 not(target_arch = "arm"),
35089 stable(feature = "neon_intrinsics", since = "1.59.0")
35090)]
35091#[cfg_attr(
35092 target_arch = "arm",
35093 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35094)]
35095pub fn vnegq_s16(a: int16x8_t) -> int16x8_t {
35096 unsafe { simd_neg(a) }
35097}
35098#[doc = "Negate"]
35099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_s32)"]
35100#[inline]
35101#[target_feature(enable = "neon")]
35102#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35103#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.s32"))]
35104#[cfg_attr(
35105 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35106 assert_instr(neg)
35107)]
35108#[cfg_attr(
35109 not(target_arch = "arm"),
35110 stable(feature = "neon_intrinsics", since = "1.59.0")
35111)]
35112#[cfg_attr(
35113 target_arch = "arm",
35114 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35115)]
35116pub fn vneg_s32(a: int32x2_t) -> int32x2_t {
35117 unsafe { simd_neg(a) }
35118}
35119#[doc = "Negate"]
35120#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_s32)"]
35121#[inline]
35122#[target_feature(enable = "neon")]
35123#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35124#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.s32"))]
35125#[cfg_attr(
35126 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35127 assert_instr(neg)
35128)]
35129#[cfg_attr(
35130 not(target_arch = "arm"),
35131 stable(feature = "neon_intrinsics", since = "1.59.0")
35132)]
35133#[cfg_attr(
35134 target_arch = "arm",
35135 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35136)]
35137pub fn vnegq_s32(a: int32x4_t) -> int32x4_t {
35138 unsafe { simd_neg(a) }
35139}
35140#[doc = "Vector bitwise inclusive OR NOT"]
35141#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_s16)"]
35142#[inline]
35143#[target_feature(enable = "neon")]
35144#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35145#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
35146#[cfg_attr(
35147 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35148 assert_instr(orn)
35149)]
35150#[cfg_attr(
35151 not(target_arch = "arm"),
35152 stable(feature = "neon_intrinsics", since = "1.59.0")
35153)]
35154#[cfg_attr(
35155 target_arch = "arm",
35156 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35157)]
35158pub fn vorn_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
35159 let c = int16x4_t::splat(-1);
35160 unsafe { simd_or(simd_xor(b, c), a) }
35161}
35162#[doc = "Vector bitwise inclusive OR NOT"]
35163#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_s32)"]
35164#[inline]
35165#[target_feature(enable = "neon")]
35166#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35167#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
35168#[cfg_attr(
35169 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35170 assert_instr(orn)
35171)]
35172#[cfg_attr(
35173 not(target_arch = "arm"),
35174 stable(feature = "neon_intrinsics", since = "1.59.0")
35175)]
35176#[cfg_attr(
35177 target_arch = "arm",
35178 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35179)]
35180pub fn vorn_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
35181 let c = int32x2_t::splat(-1);
35182 unsafe { simd_or(simd_xor(b, c), a) }
35183}
35184#[doc = "Vector bitwise inclusive OR NOT"]
35185#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_s64)"]
35186#[inline]
35187#[target_feature(enable = "neon")]
35188#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35189#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
35190#[cfg_attr(
35191 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35192 assert_instr(orn)
35193)]
35194#[cfg_attr(
35195 not(target_arch = "arm"),
35196 stable(feature = "neon_intrinsics", since = "1.59.0")
35197)]
35198#[cfg_attr(
35199 target_arch = "arm",
35200 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35201)]
35202pub fn vorn_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
35203 let c = int64x1_t::splat(-1);
35204 unsafe { simd_or(simd_xor(b, c), a) }
35205}
35206#[doc = "Vector bitwise inclusive OR NOT"]
35207#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_s8)"]
35208#[inline]
35209#[target_feature(enable = "neon")]
35210#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35211#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
35212#[cfg_attr(
35213 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35214 assert_instr(orn)
35215)]
35216#[cfg_attr(
35217 not(target_arch = "arm"),
35218 stable(feature = "neon_intrinsics", since = "1.59.0")
35219)]
35220#[cfg_attr(
35221 target_arch = "arm",
35222 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35223)]
35224pub fn vorn_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
35225 let c = int8x8_t::splat(-1);
35226 unsafe { simd_or(simd_xor(b, c), a) }
35227}
35228#[doc = "Vector bitwise inclusive OR NOT"]
35229#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_s16)"]
35230#[inline]
35231#[target_feature(enable = "neon")]
35232#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35233#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
35234#[cfg_attr(
35235 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35236 assert_instr(orn)
35237)]
35238#[cfg_attr(
35239 not(target_arch = "arm"),
35240 stable(feature = "neon_intrinsics", since = "1.59.0")
35241)]
35242#[cfg_attr(
35243 target_arch = "arm",
35244 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35245)]
35246pub fn vornq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
35247 let c = int16x8_t::splat(-1);
35248 unsafe { simd_or(simd_xor(b, c), a) }
35249}
35250#[doc = "Vector bitwise inclusive OR NOT"]
35251#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_s32)"]
35252#[inline]
35253#[target_feature(enable = "neon")]
35254#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35255#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
35256#[cfg_attr(
35257 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35258 assert_instr(orn)
35259)]
35260#[cfg_attr(
35261 not(target_arch = "arm"),
35262 stable(feature = "neon_intrinsics", since = "1.59.0")
35263)]
35264#[cfg_attr(
35265 target_arch = "arm",
35266 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35267)]
35268pub fn vornq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
35269 let c = int32x4_t::splat(-1);
35270 unsafe { simd_or(simd_xor(b, c), a) }
35271}
35272#[doc = "Vector bitwise inclusive OR NOT"]
35273#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_s64)"]
35274#[inline]
35275#[target_feature(enable = "neon")]
35276#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35277#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
35278#[cfg_attr(
35279 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35280 assert_instr(orn)
35281)]
35282#[cfg_attr(
35283 not(target_arch = "arm"),
35284 stable(feature = "neon_intrinsics", since = "1.59.0")
35285)]
35286#[cfg_attr(
35287 target_arch = "arm",
35288 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35289)]
35290pub fn vornq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
35291 let c = int64x2_t::splat(-1);
35292 unsafe { simd_or(simd_xor(b, c), a) }
35293}
35294#[doc = "Vector bitwise inclusive OR NOT"]
35295#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_s8)"]
35296#[inline]
35297#[target_feature(enable = "neon")]
35298#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35299#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
35300#[cfg_attr(
35301 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35302 assert_instr(orn)
35303)]
35304#[cfg_attr(
35305 not(target_arch = "arm"),
35306 stable(feature = "neon_intrinsics", since = "1.59.0")
35307)]
35308#[cfg_attr(
35309 target_arch = "arm",
35310 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35311)]
35312pub fn vornq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
35313 let c = int8x16_t::splat(-1);
35314 unsafe { simd_or(simd_xor(b, c), a) }
35315}
35316#[doc = "Vector bitwise inclusive OR NOT"]
35317#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_u16)"]
35318#[inline]
35319#[target_feature(enable = "neon")]
35320#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35321#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
35322#[cfg_attr(
35323 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35324 assert_instr(orn)
35325)]
35326#[cfg_attr(
35327 not(target_arch = "arm"),
35328 stable(feature = "neon_intrinsics", since = "1.59.0")
35329)]
35330#[cfg_attr(
35331 target_arch = "arm",
35332 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35333)]
35334pub fn vorn_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
35335 let c = int16x4_t::splat(-1);
35336 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
35337}
35338#[doc = "Vector bitwise inclusive OR NOT"]
35339#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_u32)"]
35340#[inline]
35341#[target_feature(enable = "neon")]
35342#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35343#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
35344#[cfg_attr(
35345 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35346 assert_instr(orn)
35347)]
35348#[cfg_attr(
35349 not(target_arch = "arm"),
35350 stable(feature = "neon_intrinsics", since = "1.59.0")
35351)]
35352#[cfg_attr(
35353 target_arch = "arm",
35354 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35355)]
35356pub fn vorn_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
35357 let c = int32x2_t::splat(-1);
35358 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
35359}
35360#[doc = "Vector bitwise inclusive OR NOT"]
35361#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_u64)"]
35362#[inline]
35363#[target_feature(enable = "neon")]
35364#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35365#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
35366#[cfg_attr(
35367 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35368 assert_instr(orn)
35369)]
35370#[cfg_attr(
35371 not(target_arch = "arm"),
35372 stable(feature = "neon_intrinsics", since = "1.59.0")
35373)]
35374#[cfg_attr(
35375 target_arch = "arm",
35376 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35377)]
35378pub fn vorn_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
35379 let c = int64x1_t::splat(-1);
35380 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
35381}
35382#[doc = "Vector bitwise inclusive OR NOT"]
35383#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_u8)"]
35384#[inline]
35385#[target_feature(enable = "neon")]
35386#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35387#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
35388#[cfg_attr(
35389 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35390 assert_instr(orn)
35391)]
35392#[cfg_attr(
35393 not(target_arch = "arm"),
35394 stable(feature = "neon_intrinsics", since = "1.59.0")
35395)]
35396#[cfg_attr(
35397 target_arch = "arm",
35398 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35399)]
35400pub fn vorn_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
35401 let c = int8x8_t::splat(-1);
35402 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
35403}
35404#[doc = "Vector bitwise inclusive OR NOT"]
35405#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_u16)"]
35406#[inline]
35407#[target_feature(enable = "neon")]
35408#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35409#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
35410#[cfg_attr(
35411 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35412 assert_instr(orn)
35413)]
35414#[cfg_attr(
35415 not(target_arch = "arm"),
35416 stable(feature = "neon_intrinsics", since = "1.59.0")
35417)]
35418#[cfg_attr(
35419 target_arch = "arm",
35420 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35421)]
35422pub fn vornq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
35423 let c = int16x8_t::splat(-1);
35424 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
35425}
35426#[doc = "Vector bitwise inclusive OR NOT"]
35427#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_u32)"]
35428#[inline]
35429#[target_feature(enable = "neon")]
35430#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35431#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
35432#[cfg_attr(
35433 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35434 assert_instr(orn)
35435)]
35436#[cfg_attr(
35437 not(target_arch = "arm"),
35438 stable(feature = "neon_intrinsics", since = "1.59.0")
35439)]
35440#[cfg_attr(
35441 target_arch = "arm",
35442 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35443)]
35444pub fn vornq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
35445 let c = int32x4_t::splat(-1);
35446 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
35447}
35448#[doc = "Vector bitwise inclusive OR NOT"]
35449#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_u64)"]
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(vorn))]
35454#[cfg_attr(
35455 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35456 assert_instr(orn)
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 vornq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
35467 let c = int64x2_t::splat(-1);
35468 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
35469}
35470#[doc = "Vector bitwise inclusive OR NOT"]
35471#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_u8)"]
35472#[inline]
35473#[target_feature(enable = "neon")]
35474#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35475#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
35476#[cfg_attr(
35477 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35478 assert_instr(orn)
35479)]
35480#[cfg_attr(
35481 not(target_arch = "arm"),
35482 stable(feature = "neon_intrinsics", since = "1.59.0")
35483)]
35484#[cfg_attr(
35485 target_arch = "arm",
35486 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35487)]
35488pub fn vornq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
35489 let c = int8x16_t::splat(-1);
35490 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
35491}
35492#[doc = "Vector bitwise or (immediate, inclusive)"]
35493#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_s8)"]
35494#[inline]
35495#[target_feature(enable = "neon")]
35496#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35497#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35498#[cfg_attr(
35499 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35500 assert_instr(orr)
35501)]
35502#[cfg_attr(
35503 not(target_arch = "arm"),
35504 stable(feature = "neon_intrinsics", since = "1.59.0")
35505)]
35506#[cfg_attr(
35507 target_arch = "arm",
35508 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35509)]
35510pub fn vorr_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
35511 unsafe { simd_or(a, b) }
35512}
35513#[doc = "Vector bitwise or (immediate, inclusive)"]
35514#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_s8)"]
35515#[inline]
35516#[target_feature(enable = "neon")]
35517#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35518#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35519#[cfg_attr(
35520 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35521 assert_instr(orr)
35522)]
35523#[cfg_attr(
35524 not(target_arch = "arm"),
35525 stable(feature = "neon_intrinsics", since = "1.59.0")
35526)]
35527#[cfg_attr(
35528 target_arch = "arm",
35529 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35530)]
35531pub fn vorrq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
35532 unsafe { simd_or(a, b) }
35533}
35534#[doc = "Vector bitwise or (immediate, inclusive)"]
35535#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_s16)"]
35536#[inline]
35537#[target_feature(enable = "neon")]
35538#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35539#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35540#[cfg_attr(
35541 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35542 assert_instr(orr)
35543)]
35544#[cfg_attr(
35545 not(target_arch = "arm"),
35546 stable(feature = "neon_intrinsics", since = "1.59.0")
35547)]
35548#[cfg_attr(
35549 target_arch = "arm",
35550 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35551)]
35552pub fn vorr_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
35553 unsafe { simd_or(a, b) }
35554}
35555#[doc = "Vector bitwise or (immediate, inclusive)"]
35556#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_s16)"]
35557#[inline]
35558#[target_feature(enable = "neon")]
35559#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35560#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35561#[cfg_attr(
35562 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35563 assert_instr(orr)
35564)]
35565#[cfg_attr(
35566 not(target_arch = "arm"),
35567 stable(feature = "neon_intrinsics", since = "1.59.0")
35568)]
35569#[cfg_attr(
35570 target_arch = "arm",
35571 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35572)]
35573pub fn vorrq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
35574 unsafe { simd_or(a, b) }
35575}
35576#[doc = "Vector bitwise or (immediate, inclusive)"]
35577#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_s32)"]
35578#[inline]
35579#[target_feature(enable = "neon")]
35580#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35581#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35582#[cfg_attr(
35583 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35584 assert_instr(orr)
35585)]
35586#[cfg_attr(
35587 not(target_arch = "arm"),
35588 stable(feature = "neon_intrinsics", since = "1.59.0")
35589)]
35590#[cfg_attr(
35591 target_arch = "arm",
35592 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35593)]
35594pub fn vorr_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
35595 unsafe { simd_or(a, b) }
35596}
35597#[doc = "Vector bitwise or (immediate, inclusive)"]
35598#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_s32)"]
35599#[inline]
35600#[target_feature(enable = "neon")]
35601#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35602#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35603#[cfg_attr(
35604 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35605 assert_instr(orr)
35606)]
35607#[cfg_attr(
35608 not(target_arch = "arm"),
35609 stable(feature = "neon_intrinsics", since = "1.59.0")
35610)]
35611#[cfg_attr(
35612 target_arch = "arm",
35613 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35614)]
35615pub fn vorrq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
35616 unsafe { simd_or(a, b) }
35617}
35618#[doc = "Vector bitwise or (immediate, inclusive)"]
35619#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_s64)"]
35620#[inline]
35621#[target_feature(enable = "neon")]
35622#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35623#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35624#[cfg_attr(
35625 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35626 assert_instr(orr)
35627)]
35628#[cfg_attr(
35629 not(target_arch = "arm"),
35630 stable(feature = "neon_intrinsics", since = "1.59.0")
35631)]
35632#[cfg_attr(
35633 target_arch = "arm",
35634 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35635)]
35636pub fn vorr_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
35637 unsafe { simd_or(a, b) }
35638}
35639#[doc = "Vector bitwise or (immediate, inclusive)"]
35640#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_s64)"]
35641#[inline]
35642#[target_feature(enable = "neon")]
35643#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35644#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35645#[cfg_attr(
35646 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35647 assert_instr(orr)
35648)]
35649#[cfg_attr(
35650 not(target_arch = "arm"),
35651 stable(feature = "neon_intrinsics", since = "1.59.0")
35652)]
35653#[cfg_attr(
35654 target_arch = "arm",
35655 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35656)]
35657pub fn vorrq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
35658 unsafe { simd_or(a, b) }
35659}
35660#[doc = "Vector bitwise or (immediate, inclusive)"]
35661#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_u8)"]
35662#[inline]
35663#[target_feature(enable = "neon")]
35664#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35665#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35666#[cfg_attr(
35667 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35668 assert_instr(orr)
35669)]
35670#[cfg_attr(
35671 not(target_arch = "arm"),
35672 stable(feature = "neon_intrinsics", since = "1.59.0")
35673)]
35674#[cfg_attr(
35675 target_arch = "arm",
35676 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35677)]
35678pub fn vorr_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
35679 unsafe { simd_or(a, b) }
35680}
35681#[doc = "Vector bitwise or (immediate, inclusive)"]
35682#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_u8)"]
35683#[inline]
35684#[target_feature(enable = "neon")]
35685#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35686#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35687#[cfg_attr(
35688 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35689 assert_instr(orr)
35690)]
35691#[cfg_attr(
35692 not(target_arch = "arm"),
35693 stable(feature = "neon_intrinsics", since = "1.59.0")
35694)]
35695#[cfg_attr(
35696 target_arch = "arm",
35697 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35698)]
35699pub fn vorrq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
35700 unsafe { simd_or(a, b) }
35701}
35702#[doc = "Vector bitwise or (immediate, inclusive)"]
35703#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_u16)"]
35704#[inline]
35705#[target_feature(enable = "neon")]
35706#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35707#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35708#[cfg_attr(
35709 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35710 assert_instr(orr)
35711)]
35712#[cfg_attr(
35713 not(target_arch = "arm"),
35714 stable(feature = "neon_intrinsics", since = "1.59.0")
35715)]
35716#[cfg_attr(
35717 target_arch = "arm",
35718 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35719)]
35720pub fn vorr_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
35721 unsafe { simd_or(a, b) }
35722}
35723#[doc = "Vector bitwise or (immediate, inclusive)"]
35724#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_u16)"]
35725#[inline]
35726#[target_feature(enable = "neon")]
35727#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35728#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35729#[cfg_attr(
35730 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35731 assert_instr(orr)
35732)]
35733#[cfg_attr(
35734 not(target_arch = "arm"),
35735 stable(feature = "neon_intrinsics", since = "1.59.0")
35736)]
35737#[cfg_attr(
35738 target_arch = "arm",
35739 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35740)]
35741pub fn vorrq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
35742 unsafe { simd_or(a, b) }
35743}
35744#[doc = "Vector bitwise or (immediate, inclusive)"]
35745#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_u32)"]
35746#[inline]
35747#[target_feature(enable = "neon")]
35748#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35749#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35750#[cfg_attr(
35751 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35752 assert_instr(orr)
35753)]
35754#[cfg_attr(
35755 not(target_arch = "arm"),
35756 stable(feature = "neon_intrinsics", since = "1.59.0")
35757)]
35758#[cfg_attr(
35759 target_arch = "arm",
35760 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35761)]
35762pub fn vorr_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
35763 unsafe { simd_or(a, b) }
35764}
35765#[doc = "Vector bitwise or (immediate, inclusive)"]
35766#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_u32)"]
35767#[inline]
35768#[target_feature(enable = "neon")]
35769#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35770#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35771#[cfg_attr(
35772 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35773 assert_instr(orr)
35774)]
35775#[cfg_attr(
35776 not(target_arch = "arm"),
35777 stable(feature = "neon_intrinsics", since = "1.59.0")
35778)]
35779#[cfg_attr(
35780 target_arch = "arm",
35781 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35782)]
35783pub fn vorrq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
35784 unsafe { simd_or(a, b) }
35785}
35786#[doc = "Vector bitwise or (immediate, inclusive)"]
35787#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_u64)"]
35788#[inline]
35789#[target_feature(enable = "neon")]
35790#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35791#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35792#[cfg_attr(
35793 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35794 assert_instr(orr)
35795)]
35796#[cfg_attr(
35797 not(target_arch = "arm"),
35798 stable(feature = "neon_intrinsics", since = "1.59.0")
35799)]
35800#[cfg_attr(
35801 target_arch = "arm",
35802 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35803)]
35804pub fn vorr_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
35805 unsafe { simd_or(a, b) }
35806}
35807#[doc = "Vector bitwise or (immediate, inclusive)"]
35808#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_u64)"]
35809#[inline]
35810#[target_feature(enable = "neon")]
35811#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35812#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
35813#[cfg_attr(
35814 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35815 assert_instr(orr)
35816)]
35817#[cfg_attr(
35818 not(target_arch = "arm"),
35819 stable(feature = "neon_intrinsics", since = "1.59.0")
35820)]
35821#[cfg_attr(
35822 target_arch = "arm",
35823 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35824)]
35825pub fn vorrq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
35826 unsafe { simd_or(a, b) }
35827}
35828#[doc = "Signed Add and Accumulate Long Pairwise."]
35829#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_s8)"]
35830#[inline]
35831#[target_feature(enable = "neon")]
35832#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35833#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s8"))]
35834#[cfg_attr(
35835 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35836 assert_instr(sadalp)
35837)]
35838#[cfg_attr(
35839 not(target_arch = "arm"),
35840 stable(feature = "neon_intrinsics", since = "1.59.0")
35841)]
35842#[cfg_attr(
35843 target_arch = "arm",
35844 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35845)]
35846pub fn vpadal_s8(a: int16x4_t, b: int8x8_t) -> int16x4_t {
35847 let x: int16x4_t;
35848 #[cfg(target_arch = "arm")]
35849 {
35850 x = priv_vpadal_s8(a, b);
35851 }
35852 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
35853 unsafe {
35854 x = simd_add(vpaddl_s8(b), a);
35855 };
35856 x
35857}
35858#[doc = "Signed Add and Accumulate Long Pairwise."]
35859#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_s8)"]
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("vpadal.s8"))]
35864#[cfg_attr(
35865 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35866 assert_instr(sadalp)
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 vpadalq_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {
35877 let x: int16x8_t;
35878 #[cfg(target_arch = "arm")]
35879 {
35880 x = priv_vpadalq_s8(a, b);
35881 }
35882 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
35883 unsafe {
35884 x = simd_add(vpaddlq_s8(b), a);
35885 };
35886 x
35887}
35888#[doc = "Signed Add and Accumulate Long Pairwise."]
35889#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_s16)"]
35890#[inline]
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("vpadal.s16"))]
35894#[cfg_attr(
35895 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35896 assert_instr(sadalp)
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 vpadal_s16(a: int32x2_t, b: int16x4_t) -> int32x2_t {
35907 let x: int32x2_t;
35908 #[cfg(target_arch = "arm")]
35909 {
35910 x = priv_vpadal_s16(a, b);
35911 }
35912 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
35913 unsafe {
35914 x = simd_add(vpaddl_s16(b), a);
35915 };
35916 x
35917}
35918#[doc = "Signed Add and Accumulate Long Pairwise."]
35919#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_s16)"]
35920#[inline]
35921#[target_feature(enable = "neon")]
35922#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35923#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s16"))]
35924#[cfg_attr(
35925 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35926 assert_instr(sadalp)
35927)]
35928#[cfg_attr(
35929 not(target_arch = "arm"),
35930 stable(feature = "neon_intrinsics", since = "1.59.0")
35931)]
35932#[cfg_attr(
35933 target_arch = "arm",
35934 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35935)]
35936pub fn vpadalq_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {
35937 let x: int32x4_t;
35938 #[cfg(target_arch = "arm")]
35939 {
35940 x = priv_vpadalq_s16(a, b);
35941 }
35942 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
35943 unsafe {
35944 x = simd_add(vpaddlq_s16(b), a);
35945 };
35946 x
35947}
35948#[doc = "Signed Add and Accumulate Long Pairwise."]
35949#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_s32)"]
35950#[inline]
35951#[target_feature(enable = "neon")]
35952#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35953#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s32"))]
35954#[cfg_attr(
35955 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35956 assert_instr(sadalp)
35957)]
35958#[cfg_attr(
35959 not(target_arch = "arm"),
35960 stable(feature = "neon_intrinsics", since = "1.59.0")
35961)]
35962#[cfg_attr(
35963 target_arch = "arm",
35964 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35965)]
35966pub fn vpadal_s32(a: int64x1_t, b: int32x2_t) -> int64x1_t {
35967 let x: int64x1_t;
35968 #[cfg(target_arch = "arm")]
35969 {
35970 x = priv_vpadal_s32(a, b);
35971 }
35972 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
35973 unsafe {
35974 x = simd_add(vpaddl_s32(b), a);
35975 };
35976 x
35977}
35978#[doc = "Signed Add and Accumulate Long Pairwise."]
35979#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_s32)"]
35980#[inline]
35981#[target_feature(enable = "neon")]
35982#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35983#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s32"))]
35984#[cfg_attr(
35985 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35986 assert_instr(sadalp)
35987)]
35988#[cfg_attr(
35989 not(target_arch = "arm"),
35990 stable(feature = "neon_intrinsics", since = "1.59.0")
35991)]
35992#[cfg_attr(
35993 target_arch = "arm",
35994 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35995)]
35996pub fn vpadalq_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {
35997 let x: int64x2_t;
35998 #[cfg(target_arch = "arm")]
35999 {
36000 x = priv_vpadalq_s32(a, b);
36001 }
36002 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
36003 unsafe {
36004 x = simd_add(vpaddlq_s32(b), a);
36005 };
36006 x
36007}
36008#[doc = "Unsigned Add and Accumulate Long Pairwise."]
36009#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_u8)"]
36010#[inline]
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("vpadal.u8"))]
36014#[cfg_attr(
36015 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36016 assert_instr(uadalp)
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 vpadal_u8(a: uint16x4_t, b: uint8x8_t) -> uint16x4_t {
36027 let x: uint16x4_t;
36028 #[cfg(target_arch = "arm")]
36029 {
36030 x = priv_vpadal_u8(a, b);
36031 }
36032 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
36033 unsafe {
36034 x = simd_add(vpaddl_u8(b), a);
36035 };
36036 x
36037}
36038#[doc = "Unsigned Add and Accumulate Long Pairwise."]
36039#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_u8)"]
36040#[inline]
36041#[target_feature(enable = "neon")]
36042#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36043#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u8"))]
36044#[cfg_attr(
36045 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36046 assert_instr(uadalp)
36047)]
36048#[cfg_attr(
36049 not(target_arch = "arm"),
36050 stable(feature = "neon_intrinsics", since = "1.59.0")
36051)]
36052#[cfg_attr(
36053 target_arch = "arm",
36054 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36055)]
36056pub fn vpadalq_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {
36057 let x: uint16x8_t;
36058 #[cfg(target_arch = "arm")]
36059 {
36060 x = priv_vpadalq_u8(a, b);
36061 }
36062 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
36063 unsafe {
36064 x = simd_add(vpaddlq_u8(b), a);
36065 };
36066 x
36067}
36068#[doc = "Unsigned Add and Accumulate Long Pairwise."]
36069#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_u16)"]
36070#[inline]
36071#[target_feature(enable = "neon")]
36072#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36073#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u16"))]
36074#[cfg_attr(
36075 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36076 assert_instr(uadalp)
36077)]
36078#[cfg_attr(
36079 not(target_arch = "arm"),
36080 stable(feature = "neon_intrinsics", since = "1.59.0")
36081)]
36082#[cfg_attr(
36083 target_arch = "arm",
36084 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36085)]
36086pub fn vpadal_u16(a: uint32x2_t, b: uint16x4_t) -> uint32x2_t {
36087 let x: uint32x2_t;
36088 #[cfg(target_arch = "arm")]
36089 {
36090 x = priv_vpadal_u16(a, b);
36091 }
36092 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
36093 unsafe {
36094 x = simd_add(vpaddl_u16(b), a);
36095 };
36096 x
36097}
36098#[doc = "Unsigned Add and Accumulate Long Pairwise."]
36099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_u16)"]
36100#[inline]
36101#[target_feature(enable = "neon")]
36102#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36103#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u16"))]
36104#[cfg_attr(
36105 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36106 assert_instr(uadalp)
36107)]
36108#[cfg_attr(
36109 not(target_arch = "arm"),
36110 stable(feature = "neon_intrinsics", since = "1.59.0")
36111)]
36112#[cfg_attr(
36113 target_arch = "arm",
36114 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36115)]
36116pub fn vpadalq_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {
36117 let x: uint32x4_t;
36118 #[cfg(target_arch = "arm")]
36119 {
36120 x = priv_vpadalq_u16(a, b);
36121 }
36122 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
36123 unsafe {
36124 x = simd_add(vpaddlq_u16(b), a);
36125 };
36126 x
36127}
36128#[doc = "Unsigned Add and Accumulate Long Pairwise."]
36129#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_u32)"]
36130#[inline]
36131#[target_feature(enable = "neon")]
36132#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36133#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u32"))]
36134#[cfg_attr(
36135 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36136 assert_instr(uadalp)
36137)]
36138#[cfg_attr(
36139 not(target_arch = "arm"),
36140 stable(feature = "neon_intrinsics", since = "1.59.0")
36141)]
36142#[cfg_attr(
36143 target_arch = "arm",
36144 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36145)]
36146pub fn vpadal_u32(a: uint64x1_t, b: uint32x2_t) -> uint64x1_t {
36147 let x: uint64x1_t;
36148 #[cfg(target_arch = "arm")]
36149 {
36150 x = priv_vpadal_u32(a, b);
36151 }
36152 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
36153 unsafe {
36154 x = simd_add(vpaddl_u32(b), a);
36155 };
36156 x
36157}
36158#[doc = "Unsigned Add and Accumulate Long Pairwise."]
36159#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_u32)"]
36160#[inline]
36161#[target_feature(enable = "neon")]
36162#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36163#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u32"))]
36164#[cfg_attr(
36165 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36166 assert_instr(uadalp)
36167)]
36168#[cfg_attr(
36169 not(target_arch = "arm"),
36170 stable(feature = "neon_intrinsics", since = "1.59.0")
36171)]
36172#[cfg_attr(
36173 target_arch = "arm",
36174 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36175)]
36176pub fn vpadalq_u32(a: uint64x2_t, b: uint32x4_t) -> uint64x2_t {
36177 let x: uint64x2_t;
36178 #[cfg(target_arch = "arm")]
36179 {
36180 x = priv_vpadalq_u32(a, b);
36181 }
36182 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
36183 unsafe {
36184 x = simd_add(vpaddlq_u32(b), a);
36185 };
36186 x
36187}
36188#[doc = "Floating-point add pairwise"]
36189#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_f16)"]
36190#[inline]
36191#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
36192#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
36193#[cfg_attr(
36194 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36195 assert_instr(faddp)
36196)]
36197#[target_feature(enable = "neon,fp16")]
36198#[cfg_attr(
36199 not(target_arch = "arm"),
36200 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
36201)]
36202#[cfg_attr(
36203 target_arch = "arm",
36204 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36205)]
36206#[cfg(not(target_arch = "arm64ec"))]
36207pub fn vpadd_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
36208 unsafe extern "unadjusted" {
36209 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v4f16")]
36210 #[cfg_attr(
36211 any(target_arch = "aarch64", target_arch = "arm64ec"),
36212 link_name = "llvm.aarch64.neon.faddp.v4f16"
36213 )]
36214 fn _vpadd_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
36215 }
36216 unsafe { _vpadd_f16(a, b) }
36217}
36218#[doc = "Floating-point add pairwise"]
36219#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_f32)"]
36220#[inline]
36221#[target_feature(enable = "neon")]
36222#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36223#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
36224#[cfg_attr(
36225 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36226 assert_instr(faddp)
36227)]
36228#[cfg_attr(
36229 not(target_arch = "arm"),
36230 stable(feature = "neon_intrinsics", since = "1.59.0")
36231)]
36232#[cfg_attr(
36233 target_arch = "arm",
36234 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36235)]
36236pub fn vpadd_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
36237 unsafe extern "unadjusted" {
36238 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v2f32")]
36239 #[cfg_attr(
36240 any(target_arch = "aarch64", target_arch = "arm64ec"),
36241 link_name = "llvm.aarch64.neon.faddp.v2f32"
36242 )]
36243 fn _vpadd_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
36244 }
36245 unsafe { _vpadd_f32(a, b) }
36246}
36247#[doc = "Add pairwise."]
36248#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_s8)"]
36249#[inline]
36250#[target_feature(enable = "neon")]
36251#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36252#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
36253#[cfg_attr(
36254 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36255 assert_instr(addp)
36256)]
36257#[cfg_attr(
36258 not(target_arch = "arm"),
36259 stable(feature = "neon_intrinsics", since = "1.59.0")
36260)]
36261#[cfg_attr(
36262 target_arch = "arm",
36263 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36264)]
36265pub fn vpadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
36266 unsafe extern "unadjusted" {
36267 #[cfg_attr(
36268 any(target_arch = "aarch64", target_arch = "arm64ec"),
36269 link_name = "llvm.aarch64.neon.addp.v8i8"
36270 )]
36271 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v8i8")]
36272 fn _vpadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
36273 }
36274 unsafe { _vpadd_s8(a, b) }
36275}
36276#[doc = "Add pairwise."]
36277#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_s16)"]
36278#[inline]
36279#[target_feature(enable = "neon")]
36280#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36281#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
36282#[cfg_attr(
36283 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36284 assert_instr(addp)
36285)]
36286#[cfg_attr(
36287 not(target_arch = "arm"),
36288 stable(feature = "neon_intrinsics", since = "1.59.0")
36289)]
36290#[cfg_attr(
36291 target_arch = "arm",
36292 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36293)]
36294pub fn vpadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
36295 unsafe extern "unadjusted" {
36296 #[cfg_attr(
36297 any(target_arch = "aarch64", target_arch = "arm64ec"),
36298 link_name = "llvm.aarch64.neon.addp.v4i16"
36299 )]
36300 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v4i16")]
36301 fn _vpadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
36302 }
36303 unsafe { _vpadd_s16(a, b) }
36304}
36305#[doc = "Add pairwise."]
36306#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_s32)"]
36307#[inline]
36308#[target_feature(enable = "neon")]
36309#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36310#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
36311#[cfg_attr(
36312 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36313 assert_instr(addp)
36314)]
36315#[cfg_attr(
36316 not(target_arch = "arm"),
36317 stable(feature = "neon_intrinsics", since = "1.59.0")
36318)]
36319#[cfg_attr(
36320 target_arch = "arm",
36321 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36322)]
36323pub fn vpadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
36324 unsafe extern "unadjusted" {
36325 #[cfg_attr(
36326 any(target_arch = "aarch64", target_arch = "arm64ec"),
36327 link_name = "llvm.aarch64.neon.addp.v2i32"
36328 )]
36329 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v2i32")]
36330 fn _vpadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
36331 }
36332 unsafe { _vpadd_s32(a, b) }
36333}
36334#[doc = "Add pairwise."]
36335#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u8)"]
36336#[inline]
36337#[cfg(target_endian = "little")]
36338#[target_feature(enable = "neon")]
36339#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36340#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
36341#[cfg_attr(
36342 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36343 assert_instr(addp)
36344)]
36345#[cfg_attr(
36346 not(target_arch = "arm"),
36347 stable(feature = "neon_intrinsics", since = "1.59.0")
36348)]
36349#[cfg_attr(
36350 target_arch = "arm",
36351 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36352)]
36353pub fn vpadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
36354 unsafe { transmute(vpadd_s8(transmute(a), transmute(b))) }
36355}
36356#[doc = "Add pairwise."]
36357#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u8)"]
36358#[inline]
36359#[cfg(target_endian = "big")]
36360#[target_feature(enable = "neon")]
36361#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36362#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
36363#[cfg_attr(
36364 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36365 assert_instr(addp)
36366)]
36367#[cfg_attr(
36368 not(target_arch = "arm"),
36369 stable(feature = "neon_intrinsics", since = "1.59.0")
36370)]
36371#[cfg_attr(
36372 target_arch = "arm",
36373 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36374)]
36375pub fn vpadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
36376 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
36377 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
36378 unsafe {
36379 let ret_val: uint8x8_t = transmute(vpadd_s8(transmute(a), transmute(b)));
36380 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
36381 }
36382}
36383#[doc = "Add pairwise."]
36384#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u16)"]
36385#[inline]
36386#[cfg(target_endian = "little")]
36387#[target_feature(enable = "neon")]
36388#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36389#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
36390#[cfg_attr(
36391 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36392 assert_instr(addp)
36393)]
36394#[cfg_attr(
36395 not(target_arch = "arm"),
36396 stable(feature = "neon_intrinsics", since = "1.59.0")
36397)]
36398#[cfg_attr(
36399 target_arch = "arm",
36400 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36401)]
36402pub fn vpadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
36403 unsafe { transmute(vpadd_s16(transmute(a), transmute(b))) }
36404}
36405#[doc = "Add pairwise."]
36406#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u16)"]
36407#[inline]
36408#[cfg(target_endian = "big")]
36409#[target_feature(enable = "neon")]
36410#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36411#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
36412#[cfg_attr(
36413 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36414 assert_instr(addp)
36415)]
36416#[cfg_attr(
36417 not(target_arch = "arm"),
36418 stable(feature = "neon_intrinsics", since = "1.59.0")
36419)]
36420#[cfg_attr(
36421 target_arch = "arm",
36422 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36423)]
36424pub fn vpadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
36425 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
36426 let b: uint16x4_t = unsafe { simd_shuffle!(b, b, [3, 2, 1, 0]) };
36427 unsafe {
36428 let ret_val: uint16x4_t = transmute(vpadd_s16(transmute(a), transmute(b)));
36429 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
36430 }
36431}
36432#[doc = "Add pairwise."]
36433#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u32)"]
36434#[inline]
36435#[cfg(target_endian = "little")]
36436#[target_feature(enable = "neon")]
36437#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36438#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
36439#[cfg_attr(
36440 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36441 assert_instr(addp)
36442)]
36443#[cfg_attr(
36444 not(target_arch = "arm"),
36445 stable(feature = "neon_intrinsics", since = "1.59.0")
36446)]
36447#[cfg_attr(
36448 target_arch = "arm",
36449 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36450)]
36451pub fn vpadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
36452 unsafe { transmute(vpadd_s32(transmute(a), transmute(b))) }
36453}
36454#[doc = "Add pairwise."]
36455#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u32)"]
36456#[inline]
36457#[cfg(target_endian = "big")]
36458#[target_feature(enable = "neon")]
36459#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36460#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
36461#[cfg_attr(
36462 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36463 assert_instr(addp)
36464)]
36465#[cfg_attr(
36466 not(target_arch = "arm"),
36467 stable(feature = "neon_intrinsics", since = "1.59.0")
36468)]
36469#[cfg_attr(
36470 target_arch = "arm",
36471 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36472)]
36473pub fn vpadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
36474 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
36475 let b: uint32x2_t = unsafe { simd_shuffle!(b, b, [1, 0]) };
36476 unsafe {
36477 let ret_val: uint32x2_t = transmute(vpadd_s32(transmute(a), transmute(b)));
36478 simd_shuffle!(ret_val, ret_val, [1, 0])
36479 }
36480}
36481#[doc = "Signed Add and Accumulate Long Pairwise."]
36482#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_s8)"]
36483#[inline]
36484#[target_feature(enable = "neon")]
36485#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36486#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s8"))]
36487#[cfg_attr(
36488 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36489 assert_instr(saddlp)
36490)]
36491#[cfg_attr(
36492 not(target_arch = "arm"),
36493 stable(feature = "neon_intrinsics", since = "1.59.0")
36494)]
36495#[cfg_attr(
36496 target_arch = "arm",
36497 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36498)]
36499pub fn vpaddl_s8(a: int8x8_t) -> int16x4_t {
36500 unsafe extern "unadjusted" {
36501 #[cfg_attr(
36502 any(target_arch = "aarch64", target_arch = "arm64ec"),
36503 link_name = "llvm.aarch64.neon.saddlp.v4i16.v8i8"
36504 )]
36505 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v4i16.v8i8")]
36506 fn _vpaddl_s8(a: int8x8_t) -> int16x4_t;
36507 }
36508 unsafe { _vpaddl_s8(a) }
36509}
36510#[doc = "Signed Add and Accumulate Long Pairwise."]
36511#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_s8)"]
36512#[inline]
36513#[target_feature(enable = "neon")]
36514#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36515#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s8"))]
36516#[cfg_attr(
36517 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36518 assert_instr(saddlp)
36519)]
36520#[cfg_attr(
36521 not(target_arch = "arm"),
36522 stable(feature = "neon_intrinsics", since = "1.59.0")
36523)]
36524#[cfg_attr(
36525 target_arch = "arm",
36526 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36527)]
36528pub fn vpaddlq_s8(a: int8x16_t) -> int16x8_t {
36529 unsafe extern "unadjusted" {
36530 #[cfg_attr(
36531 any(target_arch = "aarch64", target_arch = "arm64ec"),
36532 link_name = "llvm.aarch64.neon.saddlp.v8i16.v16i8"
36533 )]
36534 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v8i16.v16i8")]
36535 fn _vpaddlq_s8(a: int8x16_t) -> int16x8_t;
36536 }
36537 unsafe { _vpaddlq_s8(a) }
36538}
36539#[doc = "Signed Add and Accumulate Long Pairwise."]
36540#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_s16)"]
36541#[inline]
36542#[target_feature(enable = "neon")]
36543#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36544#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s16"))]
36545#[cfg_attr(
36546 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36547 assert_instr(saddlp)
36548)]
36549#[cfg_attr(
36550 not(target_arch = "arm"),
36551 stable(feature = "neon_intrinsics", since = "1.59.0")
36552)]
36553#[cfg_attr(
36554 target_arch = "arm",
36555 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36556)]
36557pub fn vpaddl_s16(a: int16x4_t) -> int32x2_t {
36558 unsafe extern "unadjusted" {
36559 #[cfg_attr(
36560 any(target_arch = "aarch64", target_arch = "arm64ec"),
36561 link_name = "llvm.aarch64.neon.saddlp.v2i32.v4i16"
36562 )]
36563 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v2i32.v4i16")]
36564 fn _vpaddl_s16(a: int16x4_t) -> int32x2_t;
36565 }
36566 unsafe { _vpaddl_s16(a) }
36567}
36568#[doc = "Signed Add and Accumulate Long Pairwise."]
36569#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_s16)"]
36570#[inline]
36571#[target_feature(enable = "neon")]
36572#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36573#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s16"))]
36574#[cfg_attr(
36575 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36576 assert_instr(saddlp)
36577)]
36578#[cfg_attr(
36579 not(target_arch = "arm"),
36580 stable(feature = "neon_intrinsics", since = "1.59.0")
36581)]
36582#[cfg_attr(
36583 target_arch = "arm",
36584 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36585)]
36586pub fn vpaddlq_s16(a: int16x8_t) -> int32x4_t {
36587 unsafe extern "unadjusted" {
36588 #[cfg_attr(
36589 any(target_arch = "aarch64", target_arch = "arm64ec"),
36590 link_name = "llvm.aarch64.neon.saddlp.v4i32.v8i16"
36591 )]
36592 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v4i32.v8i16")]
36593 fn _vpaddlq_s16(a: int16x8_t) -> int32x4_t;
36594 }
36595 unsafe { _vpaddlq_s16(a) }
36596}
36597#[doc = "Signed Add and Accumulate Long Pairwise."]
36598#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_s32)"]
36599#[inline]
36600#[target_feature(enable = "neon")]
36601#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36602#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s32"))]
36603#[cfg_attr(
36604 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36605 assert_instr(saddlp)
36606)]
36607#[cfg_attr(
36608 not(target_arch = "arm"),
36609 stable(feature = "neon_intrinsics", since = "1.59.0")
36610)]
36611#[cfg_attr(
36612 target_arch = "arm",
36613 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36614)]
36615pub fn vpaddl_s32(a: int32x2_t) -> int64x1_t {
36616 unsafe extern "unadjusted" {
36617 #[cfg_attr(
36618 any(target_arch = "aarch64", target_arch = "arm64ec"),
36619 link_name = "llvm.aarch64.neon.saddlp.v1i64.v2i32"
36620 )]
36621 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v1i64.v2i32")]
36622 fn _vpaddl_s32(a: int32x2_t) -> int64x1_t;
36623 }
36624 unsafe { _vpaddl_s32(a) }
36625}
36626#[doc = "Signed Add and Accumulate Long Pairwise."]
36627#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_s32)"]
36628#[inline]
36629#[target_feature(enable = "neon")]
36630#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36631#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s32"))]
36632#[cfg_attr(
36633 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36634 assert_instr(saddlp)
36635)]
36636#[cfg_attr(
36637 not(target_arch = "arm"),
36638 stable(feature = "neon_intrinsics", since = "1.59.0")
36639)]
36640#[cfg_attr(
36641 target_arch = "arm",
36642 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36643)]
36644pub fn vpaddlq_s32(a: int32x4_t) -> int64x2_t {
36645 unsafe extern "unadjusted" {
36646 #[cfg_attr(
36647 any(target_arch = "aarch64", target_arch = "arm64ec"),
36648 link_name = "llvm.aarch64.neon.saddlp.v2i64.v4i32"
36649 )]
36650 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v2i64.v4i32")]
36651 fn _vpaddlq_s32(a: int32x4_t) -> int64x2_t;
36652 }
36653 unsafe { _vpaddlq_s32(a) }
36654}
36655#[doc = "Unsigned Add and Accumulate Long Pairwise."]
36656#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_u8)"]
36657#[inline]
36658#[target_feature(enable = "neon")]
36659#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36660#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u8"))]
36661#[cfg_attr(
36662 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36663 assert_instr(uaddlp)
36664)]
36665#[cfg_attr(
36666 not(target_arch = "arm"),
36667 stable(feature = "neon_intrinsics", since = "1.59.0")
36668)]
36669#[cfg_attr(
36670 target_arch = "arm",
36671 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36672)]
36673pub fn vpaddl_u8(a: uint8x8_t) -> uint16x4_t {
36674 unsafe extern "unadjusted" {
36675 #[cfg_attr(
36676 any(target_arch = "aarch64", target_arch = "arm64ec"),
36677 link_name = "llvm.aarch64.neon.uaddlp.v4i16.v8i8"
36678 )]
36679 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v4i16.v8i8")]
36680 fn _vpaddl_u8(a: uint8x8_t) -> uint16x4_t;
36681 }
36682 unsafe { _vpaddl_u8(a) }
36683}
36684#[doc = "Unsigned Add and Accumulate Long Pairwise."]
36685#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_u8)"]
36686#[inline]
36687#[target_feature(enable = "neon")]
36688#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36689#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u8"))]
36690#[cfg_attr(
36691 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36692 assert_instr(uaddlp)
36693)]
36694#[cfg_attr(
36695 not(target_arch = "arm"),
36696 stable(feature = "neon_intrinsics", since = "1.59.0")
36697)]
36698#[cfg_attr(
36699 target_arch = "arm",
36700 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36701)]
36702pub fn vpaddlq_u8(a: uint8x16_t) -> uint16x8_t {
36703 unsafe extern "unadjusted" {
36704 #[cfg_attr(
36705 any(target_arch = "aarch64", target_arch = "arm64ec"),
36706 link_name = "llvm.aarch64.neon.uaddlp.v8i16.v16i8"
36707 )]
36708 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v8i16.v16i8")]
36709 fn _vpaddlq_u8(a: uint8x16_t) -> uint16x8_t;
36710 }
36711 unsafe { _vpaddlq_u8(a) }
36712}
36713#[doc = "Unsigned Add and Accumulate Long Pairwise."]
36714#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_u16)"]
36715#[inline]
36716#[target_feature(enable = "neon")]
36717#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36718#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u16"))]
36719#[cfg_attr(
36720 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36721 assert_instr(uaddlp)
36722)]
36723#[cfg_attr(
36724 not(target_arch = "arm"),
36725 stable(feature = "neon_intrinsics", since = "1.59.0")
36726)]
36727#[cfg_attr(
36728 target_arch = "arm",
36729 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36730)]
36731pub fn vpaddl_u16(a: uint16x4_t) -> uint32x2_t {
36732 unsafe extern "unadjusted" {
36733 #[cfg_attr(
36734 any(target_arch = "aarch64", target_arch = "arm64ec"),
36735 link_name = "llvm.aarch64.neon.uaddlp.v2i32.v4i16"
36736 )]
36737 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v2i32.v4i16")]
36738 fn _vpaddl_u16(a: uint16x4_t) -> uint32x2_t;
36739 }
36740 unsafe { _vpaddl_u16(a) }
36741}
36742#[doc = "Unsigned Add and Accumulate Long Pairwise."]
36743#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_u16)"]
36744#[inline]
36745#[target_feature(enable = "neon")]
36746#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36747#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u16"))]
36748#[cfg_attr(
36749 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36750 assert_instr(uaddlp)
36751)]
36752#[cfg_attr(
36753 not(target_arch = "arm"),
36754 stable(feature = "neon_intrinsics", since = "1.59.0")
36755)]
36756#[cfg_attr(
36757 target_arch = "arm",
36758 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36759)]
36760pub fn vpaddlq_u16(a: uint16x8_t) -> uint32x4_t {
36761 unsafe extern "unadjusted" {
36762 #[cfg_attr(
36763 any(target_arch = "aarch64", target_arch = "arm64ec"),
36764 link_name = "llvm.aarch64.neon.uaddlp.v4i32.v8i16"
36765 )]
36766 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v4i32.v8i16")]
36767 fn _vpaddlq_u16(a: uint16x8_t) -> uint32x4_t;
36768 }
36769 unsafe { _vpaddlq_u16(a) }
36770}
36771#[doc = "Unsigned Add and Accumulate Long Pairwise."]
36772#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_u32)"]
36773#[inline]
36774#[target_feature(enable = "neon")]
36775#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36776#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u32"))]
36777#[cfg_attr(
36778 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36779 assert_instr(uaddlp)
36780)]
36781#[cfg_attr(
36782 not(target_arch = "arm"),
36783 stable(feature = "neon_intrinsics", since = "1.59.0")
36784)]
36785#[cfg_attr(
36786 target_arch = "arm",
36787 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36788)]
36789pub fn vpaddl_u32(a: uint32x2_t) -> uint64x1_t {
36790 unsafe extern "unadjusted" {
36791 #[cfg_attr(
36792 any(target_arch = "aarch64", target_arch = "arm64ec"),
36793 link_name = "llvm.aarch64.neon.uaddlp.v1i64.v2i32"
36794 )]
36795 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v1i64.v2i32")]
36796 fn _vpaddl_u32(a: uint32x2_t) -> uint64x1_t;
36797 }
36798 unsafe { _vpaddl_u32(a) }
36799}
36800#[doc = "Unsigned Add and Accumulate Long Pairwise."]
36801#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_u32)"]
36802#[inline]
36803#[target_feature(enable = "neon")]
36804#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36805#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u32"))]
36806#[cfg_attr(
36807 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36808 assert_instr(uaddlp)
36809)]
36810#[cfg_attr(
36811 not(target_arch = "arm"),
36812 stable(feature = "neon_intrinsics", since = "1.59.0")
36813)]
36814#[cfg_attr(
36815 target_arch = "arm",
36816 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36817)]
36818pub fn vpaddlq_u32(a: uint32x4_t) -> uint64x2_t {
36819 unsafe extern "unadjusted" {
36820 #[cfg_attr(
36821 any(target_arch = "aarch64", target_arch = "arm64ec"),
36822 link_name = "llvm.aarch64.neon.uaddlp.v2i64.v4i32"
36823 )]
36824 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v2i64.v4i32")]
36825 fn _vpaddlq_u32(a: uint32x4_t) -> uint64x2_t;
36826 }
36827 unsafe { _vpaddlq_u32(a) }
36828}
36829#[doc = "Folding maximum of adjacent pairs"]
36830#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_f32)"]
36831#[inline]
36832#[target_feature(enable = "neon")]
36833#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36834#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
36835#[cfg_attr(
36836 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36837 assert_instr(fmaxp)
36838)]
36839#[cfg_attr(
36840 not(target_arch = "arm"),
36841 stable(feature = "neon_intrinsics", since = "1.59.0")
36842)]
36843#[cfg_attr(
36844 target_arch = "arm",
36845 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36846)]
36847pub fn vpmax_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
36848 unsafe extern "unadjusted" {
36849 #[cfg_attr(
36850 any(target_arch = "aarch64", target_arch = "arm64ec"),
36851 link_name = "llvm.aarch64.neon.fmaxp.v2f32"
36852 )]
36853 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxs.v2f32")]
36854 fn _vpmax_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
36855 }
36856 unsafe { _vpmax_f32(a, b) }
36857}
36858#[doc = "Folding maximum of adjacent pairs"]
36859#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_s8)"]
36860#[inline]
36861#[target_feature(enable = "neon")]
36862#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36863#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
36864#[cfg_attr(
36865 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36866 assert_instr(smaxp)
36867)]
36868#[cfg_attr(
36869 not(target_arch = "arm"),
36870 stable(feature = "neon_intrinsics", since = "1.59.0")
36871)]
36872#[cfg_attr(
36873 target_arch = "arm",
36874 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36875)]
36876pub fn vpmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
36877 unsafe extern "unadjusted" {
36878 #[cfg_attr(
36879 any(target_arch = "aarch64", target_arch = "arm64ec"),
36880 link_name = "llvm.aarch64.neon.smaxp.v8i8"
36881 )]
36882 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxs.v8i8")]
36883 fn _vpmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
36884 }
36885 unsafe { _vpmax_s8(a, b) }
36886}
36887#[doc = "Folding maximum of adjacent pairs"]
36888#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_s16)"]
36889#[inline]
36890#[target_feature(enable = "neon")]
36891#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36892#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
36893#[cfg_attr(
36894 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36895 assert_instr(smaxp)
36896)]
36897#[cfg_attr(
36898 not(target_arch = "arm"),
36899 stable(feature = "neon_intrinsics", since = "1.59.0")
36900)]
36901#[cfg_attr(
36902 target_arch = "arm",
36903 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36904)]
36905pub fn vpmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
36906 unsafe extern "unadjusted" {
36907 #[cfg_attr(
36908 any(target_arch = "aarch64", target_arch = "arm64ec"),
36909 link_name = "llvm.aarch64.neon.smaxp.v4i16"
36910 )]
36911 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxs.v4i16")]
36912 fn _vpmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
36913 }
36914 unsafe { _vpmax_s16(a, b) }
36915}
36916#[doc = "Folding maximum of adjacent pairs"]
36917#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_s32)"]
36918#[inline]
36919#[target_feature(enable = "neon")]
36920#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36921#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
36922#[cfg_attr(
36923 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36924 assert_instr(smaxp)
36925)]
36926#[cfg_attr(
36927 not(target_arch = "arm"),
36928 stable(feature = "neon_intrinsics", since = "1.59.0")
36929)]
36930#[cfg_attr(
36931 target_arch = "arm",
36932 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36933)]
36934pub fn vpmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
36935 unsafe extern "unadjusted" {
36936 #[cfg_attr(
36937 any(target_arch = "aarch64", target_arch = "arm64ec"),
36938 link_name = "llvm.aarch64.neon.smaxp.v2i32"
36939 )]
36940 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxs.v2i32")]
36941 fn _vpmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
36942 }
36943 unsafe { _vpmax_s32(a, b) }
36944}
36945#[doc = "Folding maximum of adjacent pairs"]
36946#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_u8)"]
36947#[inline]
36948#[target_feature(enable = "neon")]
36949#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36950#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
36951#[cfg_attr(
36952 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36953 assert_instr(umaxp)
36954)]
36955#[cfg_attr(
36956 not(target_arch = "arm"),
36957 stable(feature = "neon_intrinsics", since = "1.59.0")
36958)]
36959#[cfg_attr(
36960 target_arch = "arm",
36961 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36962)]
36963pub fn vpmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
36964 unsafe extern "unadjusted" {
36965 #[cfg_attr(
36966 any(target_arch = "aarch64", target_arch = "arm64ec"),
36967 link_name = "llvm.aarch64.neon.umaxp.v8i8"
36968 )]
36969 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxu.v8i8")]
36970 fn _vpmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
36971 }
36972 unsafe { _vpmax_u8(a, b) }
36973}
36974#[doc = "Folding maximum of adjacent pairs"]
36975#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_u16)"]
36976#[inline]
36977#[target_feature(enable = "neon")]
36978#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36979#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
36980#[cfg_attr(
36981 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36982 assert_instr(umaxp)
36983)]
36984#[cfg_attr(
36985 not(target_arch = "arm"),
36986 stable(feature = "neon_intrinsics", since = "1.59.0")
36987)]
36988#[cfg_attr(
36989 target_arch = "arm",
36990 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36991)]
36992pub fn vpmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
36993 unsafe extern "unadjusted" {
36994 #[cfg_attr(
36995 any(target_arch = "aarch64", target_arch = "arm64ec"),
36996 link_name = "llvm.aarch64.neon.umaxp.v4i16"
36997 )]
36998 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxu.v4i16")]
36999 fn _vpmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
37000 }
37001 unsafe { _vpmax_u16(a, b) }
37002}
37003#[doc = "Folding maximum of adjacent pairs"]
37004#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_u32)"]
37005#[inline]
37006#[target_feature(enable = "neon")]
37007#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37008#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
37009#[cfg_attr(
37010 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37011 assert_instr(umaxp)
37012)]
37013#[cfg_attr(
37014 not(target_arch = "arm"),
37015 stable(feature = "neon_intrinsics", since = "1.59.0")
37016)]
37017#[cfg_attr(
37018 target_arch = "arm",
37019 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37020)]
37021pub fn vpmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
37022 unsafe extern "unadjusted" {
37023 #[cfg_attr(
37024 any(target_arch = "aarch64", target_arch = "arm64ec"),
37025 link_name = "llvm.aarch64.neon.umaxp.v2i32"
37026 )]
37027 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxu.v2i32")]
37028 fn _vpmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
37029 }
37030 unsafe { _vpmax_u32(a, b) }
37031}
37032#[doc = "Folding minimum of adjacent pairs"]
37033#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_f32)"]
37034#[inline]
37035#[target_feature(enable = "neon")]
37036#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37037#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
37038#[cfg_attr(
37039 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37040 assert_instr(fminp)
37041)]
37042#[cfg_attr(
37043 not(target_arch = "arm"),
37044 stable(feature = "neon_intrinsics", since = "1.59.0")
37045)]
37046#[cfg_attr(
37047 target_arch = "arm",
37048 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37049)]
37050pub fn vpmin_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
37051 unsafe extern "unadjusted" {
37052 #[cfg_attr(
37053 any(target_arch = "aarch64", target_arch = "arm64ec"),
37054 link_name = "llvm.aarch64.neon.fminp.v2f32"
37055 )]
37056 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmins.v2f32")]
37057 fn _vpmin_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
37058 }
37059 unsafe { _vpmin_f32(a, b) }
37060}
37061#[doc = "Folding minimum of adjacent pairs"]
37062#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_s8)"]
37063#[inline]
37064#[target_feature(enable = "neon")]
37065#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37066#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
37067#[cfg_attr(
37068 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37069 assert_instr(sminp)
37070)]
37071#[cfg_attr(
37072 not(target_arch = "arm"),
37073 stable(feature = "neon_intrinsics", since = "1.59.0")
37074)]
37075#[cfg_attr(
37076 target_arch = "arm",
37077 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37078)]
37079pub fn vpmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
37080 unsafe extern "unadjusted" {
37081 #[cfg_attr(
37082 any(target_arch = "aarch64", target_arch = "arm64ec"),
37083 link_name = "llvm.aarch64.neon.sminp.v8i8"
37084 )]
37085 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmins.v8i8")]
37086 fn _vpmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
37087 }
37088 unsafe { _vpmin_s8(a, b) }
37089}
37090#[doc = "Folding minimum of adjacent pairs"]
37091#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_s16)"]
37092#[inline]
37093#[target_feature(enable = "neon")]
37094#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37095#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
37096#[cfg_attr(
37097 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37098 assert_instr(sminp)
37099)]
37100#[cfg_attr(
37101 not(target_arch = "arm"),
37102 stable(feature = "neon_intrinsics", since = "1.59.0")
37103)]
37104#[cfg_attr(
37105 target_arch = "arm",
37106 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37107)]
37108pub fn vpmin_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
37109 unsafe extern "unadjusted" {
37110 #[cfg_attr(
37111 any(target_arch = "aarch64", target_arch = "arm64ec"),
37112 link_name = "llvm.aarch64.neon.sminp.v4i16"
37113 )]
37114 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmins.v4i16")]
37115 fn _vpmin_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
37116 }
37117 unsafe { _vpmin_s16(a, b) }
37118}
37119#[doc = "Folding minimum of adjacent pairs"]
37120#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_s32)"]
37121#[inline]
37122#[target_feature(enable = "neon")]
37123#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37124#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
37125#[cfg_attr(
37126 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37127 assert_instr(sminp)
37128)]
37129#[cfg_attr(
37130 not(target_arch = "arm"),
37131 stable(feature = "neon_intrinsics", since = "1.59.0")
37132)]
37133#[cfg_attr(
37134 target_arch = "arm",
37135 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37136)]
37137pub fn vpmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
37138 unsafe extern "unadjusted" {
37139 #[cfg_attr(
37140 any(target_arch = "aarch64", target_arch = "arm64ec"),
37141 link_name = "llvm.aarch64.neon.sminp.v2i32"
37142 )]
37143 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmins.v2i32")]
37144 fn _vpmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
37145 }
37146 unsafe { _vpmin_s32(a, b) }
37147}
37148#[doc = "Folding minimum of adjacent pairs"]
37149#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_u8)"]
37150#[inline]
37151#[target_feature(enable = "neon")]
37152#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37153#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
37154#[cfg_attr(
37155 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37156 assert_instr(uminp)
37157)]
37158#[cfg_attr(
37159 not(target_arch = "arm"),
37160 stable(feature = "neon_intrinsics", since = "1.59.0")
37161)]
37162#[cfg_attr(
37163 target_arch = "arm",
37164 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37165)]
37166pub fn vpmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
37167 unsafe extern "unadjusted" {
37168 #[cfg_attr(
37169 any(target_arch = "aarch64", target_arch = "arm64ec"),
37170 link_name = "llvm.aarch64.neon.uminp.v8i8"
37171 )]
37172 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpminu.v8i8")]
37173 fn _vpmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
37174 }
37175 unsafe { _vpmin_u8(a, b) }
37176}
37177#[doc = "Folding minimum of adjacent pairs"]
37178#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_u16)"]
37179#[inline]
37180#[target_feature(enable = "neon")]
37181#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37182#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
37183#[cfg_attr(
37184 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37185 assert_instr(uminp)
37186)]
37187#[cfg_attr(
37188 not(target_arch = "arm"),
37189 stable(feature = "neon_intrinsics", since = "1.59.0")
37190)]
37191#[cfg_attr(
37192 target_arch = "arm",
37193 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37194)]
37195pub fn vpmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
37196 unsafe extern "unadjusted" {
37197 #[cfg_attr(
37198 any(target_arch = "aarch64", target_arch = "arm64ec"),
37199 link_name = "llvm.aarch64.neon.uminp.v4i16"
37200 )]
37201 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpminu.v4i16")]
37202 fn _vpmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
37203 }
37204 unsafe { _vpmin_u16(a, b) }
37205}
37206#[doc = "Folding minimum of adjacent pairs"]
37207#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_u32)"]
37208#[inline]
37209#[target_feature(enable = "neon")]
37210#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37211#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
37212#[cfg_attr(
37213 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37214 assert_instr(uminp)
37215)]
37216#[cfg_attr(
37217 not(target_arch = "arm"),
37218 stable(feature = "neon_intrinsics", since = "1.59.0")
37219)]
37220#[cfg_attr(
37221 target_arch = "arm",
37222 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37223)]
37224pub fn vpmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
37225 unsafe extern "unadjusted" {
37226 #[cfg_attr(
37227 any(target_arch = "aarch64", target_arch = "arm64ec"),
37228 link_name = "llvm.aarch64.neon.uminp.v2i32"
37229 )]
37230 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpminu.v2i32")]
37231 fn _vpmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
37232 }
37233 unsafe { _vpmin_u32(a, b) }
37234}
37235#[doc = "Signed saturating Absolute value"]
37236#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabs_s8)"]
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("vqabs.s8"))]
37241#[cfg_attr(
37242 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37243 assert_instr(sqabs)
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 vqabs_s8(a: int8x8_t) -> int8x8_t {
37254 unsafe extern "unadjusted" {
37255 #[cfg_attr(
37256 any(target_arch = "aarch64", target_arch = "arm64ec"),
37257 link_name = "llvm.aarch64.neon.sqabs.v8i8"
37258 )]
37259 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v8i8")]
37260 fn _vqabs_s8(a: int8x8_t) -> int8x8_t;
37261 }
37262 unsafe { _vqabs_s8(a) }
37263}
37264#[doc = "Signed saturating Absolute value"]
37265#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabsq_s8)"]
37266#[inline]
37267#[target_feature(enable = "neon")]
37268#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37269#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s8"))]
37270#[cfg_attr(
37271 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37272 assert_instr(sqabs)
37273)]
37274#[cfg_attr(
37275 not(target_arch = "arm"),
37276 stable(feature = "neon_intrinsics", since = "1.59.0")
37277)]
37278#[cfg_attr(
37279 target_arch = "arm",
37280 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37281)]
37282pub fn vqabsq_s8(a: int8x16_t) -> int8x16_t {
37283 unsafe extern "unadjusted" {
37284 #[cfg_attr(
37285 any(target_arch = "aarch64", target_arch = "arm64ec"),
37286 link_name = "llvm.aarch64.neon.sqabs.v16i8"
37287 )]
37288 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v16i8")]
37289 fn _vqabsq_s8(a: int8x16_t) -> int8x16_t;
37290 }
37291 unsafe { _vqabsq_s8(a) }
37292}
37293#[doc = "Signed saturating Absolute value"]
37294#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabs_s16)"]
37295#[inline]
37296#[target_feature(enable = "neon")]
37297#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37298#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s16"))]
37299#[cfg_attr(
37300 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37301 assert_instr(sqabs)
37302)]
37303#[cfg_attr(
37304 not(target_arch = "arm"),
37305 stable(feature = "neon_intrinsics", since = "1.59.0")
37306)]
37307#[cfg_attr(
37308 target_arch = "arm",
37309 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37310)]
37311pub fn vqabs_s16(a: int16x4_t) -> int16x4_t {
37312 unsafe extern "unadjusted" {
37313 #[cfg_attr(
37314 any(target_arch = "aarch64", target_arch = "arm64ec"),
37315 link_name = "llvm.aarch64.neon.sqabs.v4i16"
37316 )]
37317 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v4i16")]
37318 fn _vqabs_s16(a: int16x4_t) -> int16x4_t;
37319 }
37320 unsafe { _vqabs_s16(a) }
37321}
37322#[doc = "Signed saturating Absolute value"]
37323#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabsq_s16)"]
37324#[inline]
37325#[target_feature(enable = "neon")]
37326#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37327#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s16"))]
37328#[cfg_attr(
37329 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37330 assert_instr(sqabs)
37331)]
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 vqabsq_s16(a: int16x8_t) -> int16x8_t {
37341 unsafe extern "unadjusted" {
37342 #[cfg_attr(
37343 any(target_arch = "aarch64", target_arch = "arm64ec"),
37344 link_name = "llvm.aarch64.neon.sqabs.v8i16"
37345 )]
37346 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v8i16")]
37347 fn _vqabsq_s16(a: int16x8_t) -> int16x8_t;
37348 }
37349 unsafe { _vqabsq_s16(a) }
37350}
37351#[doc = "Signed saturating Absolute value"]
37352#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabs_s32)"]
37353#[inline]
37354#[target_feature(enable = "neon")]
37355#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37356#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s32"))]
37357#[cfg_attr(
37358 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37359 assert_instr(sqabs)
37360)]
37361#[cfg_attr(
37362 not(target_arch = "arm"),
37363 stable(feature = "neon_intrinsics", since = "1.59.0")
37364)]
37365#[cfg_attr(
37366 target_arch = "arm",
37367 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37368)]
37369pub fn vqabs_s32(a: int32x2_t) -> int32x2_t {
37370 unsafe extern "unadjusted" {
37371 #[cfg_attr(
37372 any(target_arch = "aarch64", target_arch = "arm64ec"),
37373 link_name = "llvm.aarch64.neon.sqabs.v2i32"
37374 )]
37375 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v2i32")]
37376 fn _vqabs_s32(a: int32x2_t) -> int32x2_t;
37377 }
37378 unsafe { _vqabs_s32(a) }
37379}
37380#[doc = "Signed saturating Absolute value"]
37381#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabsq_s32)"]
37382#[inline]
37383#[target_feature(enable = "neon")]
37384#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37385#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s32"))]
37386#[cfg_attr(
37387 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37388 assert_instr(sqabs)
37389)]
37390#[cfg_attr(
37391 not(target_arch = "arm"),
37392 stable(feature = "neon_intrinsics", since = "1.59.0")
37393)]
37394#[cfg_attr(
37395 target_arch = "arm",
37396 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37397)]
37398pub fn vqabsq_s32(a: int32x4_t) -> int32x4_t {
37399 unsafe extern "unadjusted" {
37400 #[cfg_attr(
37401 any(target_arch = "aarch64", target_arch = "arm64ec"),
37402 link_name = "llvm.aarch64.neon.sqabs.v4i32"
37403 )]
37404 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v4i32")]
37405 fn _vqabsq_s32(a: int32x4_t) -> int32x4_t;
37406 }
37407 unsafe { _vqabsq_s32(a) }
37408}
37409#[doc = "Saturating add"]
37410#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_s8)"]
37411#[inline]
37412#[target_feature(enable = "neon")]
37413#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37414#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s8"))]
37415#[cfg_attr(
37416 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37417 assert_instr(sqadd)
37418)]
37419#[cfg_attr(
37420 not(target_arch = "arm"),
37421 stable(feature = "neon_intrinsics", since = "1.59.0")
37422)]
37423#[cfg_attr(
37424 target_arch = "arm",
37425 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37426)]
37427pub fn vqadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
37428 unsafe { simd_saturating_add(a, b) }
37429}
37430#[doc = "Saturating add"]
37431#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s8)"]
37432#[inline]
37433#[target_feature(enable = "neon")]
37434#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37435#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s8"))]
37436#[cfg_attr(
37437 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37438 assert_instr(sqadd)
37439)]
37440#[cfg_attr(
37441 not(target_arch = "arm"),
37442 stable(feature = "neon_intrinsics", since = "1.59.0")
37443)]
37444#[cfg_attr(
37445 target_arch = "arm",
37446 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37447)]
37448pub fn vqaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
37449 unsafe { simd_saturating_add(a, b) }
37450}
37451#[doc = "Saturating add"]
37452#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_s16)"]
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("vqadd.s16"))]
37457#[cfg_attr(
37458 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37459 assert_instr(sqadd)
37460)]
37461#[cfg_attr(
37462 not(target_arch = "arm"),
37463 stable(feature = "neon_intrinsics", since = "1.59.0")
37464)]
37465#[cfg_attr(
37466 target_arch = "arm",
37467 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37468)]
37469pub fn vqadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
37470 unsafe { simd_saturating_add(a, b) }
37471}
37472#[doc = "Saturating add"]
37473#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s16)"]
37474#[inline]
37475#[target_feature(enable = "neon")]
37476#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37477#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s16"))]
37478#[cfg_attr(
37479 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37480 assert_instr(sqadd)
37481)]
37482#[cfg_attr(
37483 not(target_arch = "arm"),
37484 stable(feature = "neon_intrinsics", since = "1.59.0")
37485)]
37486#[cfg_attr(
37487 target_arch = "arm",
37488 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37489)]
37490pub fn vqaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
37491 unsafe { simd_saturating_add(a, b) }
37492}
37493#[doc = "Saturating add"]
37494#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_s32)"]
37495#[inline]
37496#[target_feature(enable = "neon")]
37497#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37498#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s32"))]
37499#[cfg_attr(
37500 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37501 assert_instr(sqadd)
37502)]
37503#[cfg_attr(
37504 not(target_arch = "arm"),
37505 stable(feature = "neon_intrinsics", since = "1.59.0")
37506)]
37507#[cfg_attr(
37508 target_arch = "arm",
37509 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37510)]
37511pub fn vqadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
37512 unsafe { simd_saturating_add(a, b) }
37513}
37514#[doc = "Saturating add"]
37515#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s32)"]
37516#[inline]
37517#[target_feature(enable = "neon")]
37518#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37519#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s32"))]
37520#[cfg_attr(
37521 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37522 assert_instr(sqadd)
37523)]
37524#[cfg_attr(
37525 not(target_arch = "arm"),
37526 stable(feature = "neon_intrinsics", since = "1.59.0")
37527)]
37528#[cfg_attr(
37529 target_arch = "arm",
37530 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37531)]
37532pub fn vqaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
37533 unsafe { simd_saturating_add(a, b) }
37534}
37535#[doc = "Saturating add"]
37536#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_s64)"]
37537#[inline]
37538#[target_feature(enable = "neon")]
37539#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37540#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s64"))]
37541#[cfg_attr(
37542 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37543 assert_instr(sqadd)
37544)]
37545#[cfg_attr(
37546 not(target_arch = "arm"),
37547 stable(feature = "neon_intrinsics", since = "1.59.0")
37548)]
37549#[cfg_attr(
37550 target_arch = "arm",
37551 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37552)]
37553pub fn vqadd_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
37554 unsafe { simd_saturating_add(a, b) }
37555}
37556#[doc = "Saturating add"]
37557#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s64)"]
37558#[inline]
37559#[target_feature(enable = "neon")]
37560#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37561#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s64"))]
37562#[cfg_attr(
37563 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37564 assert_instr(sqadd)
37565)]
37566#[cfg_attr(
37567 not(target_arch = "arm"),
37568 stable(feature = "neon_intrinsics", since = "1.59.0")
37569)]
37570#[cfg_attr(
37571 target_arch = "arm",
37572 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37573)]
37574pub fn vqaddq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
37575 unsafe { simd_saturating_add(a, b) }
37576}
37577#[doc = "Saturating add"]
37578#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u8)"]
37579#[inline]
37580#[target_feature(enable = "neon")]
37581#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37582#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u8"))]
37583#[cfg_attr(
37584 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37585 assert_instr(uqadd)
37586)]
37587#[cfg_attr(
37588 not(target_arch = "arm"),
37589 stable(feature = "neon_intrinsics", since = "1.59.0")
37590)]
37591#[cfg_attr(
37592 target_arch = "arm",
37593 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37594)]
37595pub fn vqadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
37596 unsafe { simd_saturating_add(a, b) }
37597}
37598#[doc = "Saturating add"]
37599#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u8)"]
37600#[inline]
37601#[target_feature(enable = "neon")]
37602#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37603#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u8"))]
37604#[cfg_attr(
37605 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37606 assert_instr(uqadd)
37607)]
37608#[cfg_attr(
37609 not(target_arch = "arm"),
37610 stable(feature = "neon_intrinsics", since = "1.59.0")
37611)]
37612#[cfg_attr(
37613 target_arch = "arm",
37614 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37615)]
37616pub fn vqaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
37617 unsafe { simd_saturating_add(a, b) }
37618}
37619#[doc = "Saturating add"]
37620#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u16)"]
37621#[inline]
37622#[target_feature(enable = "neon")]
37623#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37624#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u16"))]
37625#[cfg_attr(
37626 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37627 assert_instr(uqadd)
37628)]
37629#[cfg_attr(
37630 not(target_arch = "arm"),
37631 stable(feature = "neon_intrinsics", since = "1.59.0")
37632)]
37633#[cfg_attr(
37634 target_arch = "arm",
37635 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37636)]
37637pub fn vqadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
37638 unsafe { simd_saturating_add(a, b) }
37639}
37640#[doc = "Saturating add"]
37641#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u16)"]
37642#[inline]
37643#[target_feature(enable = "neon")]
37644#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37645#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u16"))]
37646#[cfg_attr(
37647 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37648 assert_instr(uqadd)
37649)]
37650#[cfg_attr(
37651 not(target_arch = "arm"),
37652 stable(feature = "neon_intrinsics", since = "1.59.0")
37653)]
37654#[cfg_attr(
37655 target_arch = "arm",
37656 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37657)]
37658pub fn vqaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
37659 unsafe { simd_saturating_add(a, b) }
37660}
37661#[doc = "Saturating add"]
37662#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u32)"]
37663#[inline]
37664#[target_feature(enable = "neon")]
37665#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37666#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u32"))]
37667#[cfg_attr(
37668 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37669 assert_instr(uqadd)
37670)]
37671#[cfg_attr(
37672 not(target_arch = "arm"),
37673 stable(feature = "neon_intrinsics", since = "1.59.0")
37674)]
37675#[cfg_attr(
37676 target_arch = "arm",
37677 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37678)]
37679pub fn vqadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
37680 unsafe { simd_saturating_add(a, b) }
37681}
37682#[doc = "Saturating add"]
37683#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u32)"]
37684#[inline]
37685#[target_feature(enable = "neon")]
37686#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37687#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u32"))]
37688#[cfg_attr(
37689 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37690 assert_instr(uqadd)
37691)]
37692#[cfg_attr(
37693 not(target_arch = "arm"),
37694 stable(feature = "neon_intrinsics", since = "1.59.0")
37695)]
37696#[cfg_attr(
37697 target_arch = "arm",
37698 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37699)]
37700pub fn vqaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
37701 unsafe { simd_saturating_add(a, b) }
37702}
37703#[doc = "Saturating add"]
37704#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u64)"]
37705#[inline]
37706#[target_feature(enable = "neon")]
37707#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37708#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u64"))]
37709#[cfg_attr(
37710 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37711 assert_instr(uqadd)
37712)]
37713#[cfg_attr(
37714 not(target_arch = "arm"),
37715 stable(feature = "neon_intrinsics", since = "1.59.0")
37716)]
37717#[cfg_attr(
37718 target_arch = "arm",
37719 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37720)]
37721pub fn vqadd_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
37722 unsafe { simd_saturating_add(a, b) }
37723}
37724#[doc = "Saturating add"]
37725#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u64)"]
37726#[inline]
37727#[target_feature(enable = "neon")]
37728#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37729#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u64"))]
37730#[cfg_attr(
37731 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37732 assert_instr(uqadd)
37733)]
37734#[cfg_attr(
37735 not(target_arch = "arm"),
37736 stable(feature = "neon_intrinsics", since = "1.59.0")
37737)]
37738#[cfg_attr(
37739 target_arch = "arm",
37740 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37741)]
37742pub fn vqaddq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
37743 unsafe { simd_saturating_add(a, b) }
37744}
37745#[doc = "Vector widening saturating doubling multiply accumulate with scalar"]
37746#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_lane_s16)"]
37747#[inline]
37748#[target_feature(enable = "neon")]
37749#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37750#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal, N = 2))]
37751#[cfg_attr(
37752 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37753 assert_instr(sqdmlal, N = 2)
37754)]
37755#[rustc_legacy_const_generics(3)]
37756#[cfg_attr(
37757 not(target_arch = "arm"),
37758 stable(feature = "neon_intrinsics", since = "1.59.0")
37759)]
37760#[cfg_attr(
37761 target_arch = "arm",
37762 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37763)]
37764pub fn vqdmlal_lane_s16<const N: i32>(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
37765 static_assert_uimm_bits!(N, 2);
37766 vqaddq_s32(a, vqdmull_lane_s16::<N>(b, c))
37767}
37768#[doc = "Vector widening saturating doubling multiply accumulate with scalar"]
37769#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_lane_s32)"]
37770#[inline]
37771#[target_feature(enable = "neon")]
37772#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37773#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal, N = 1))]
37774#[cfg_attr(
37775 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37776 assert_instr(sqdmlal, N = 1)
37777)]
37778#[rustc_legacy_const_generics(3)]
37779#[cfg_attr(
37780 not(target_arch = "arm"),
37781 stable(feature = "neon_intrinsics", since = "1.59.0")
37782)]
37783#[cfg_attr(
37784 target_arch = "arm",
37785 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37786)]
37787pub fn vqdmlal_lane_s32<const N: i32>(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
37788 static_assert_uimm_bits!(N, 1);
37789 vqaddq_s64(a, vqdmull_lane_s32::<N>(b, c))
37790}
37791#[doc = "Vector widening saturating doubling multiply accumulate with scalar"]
37792#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_n_s16)"]
37793#[inline]
37794#[target_feature(enable = "neon")]
37795#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37796#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal))]
37797#[cfg_attr(
37798 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37799 assert_instr(sqdmlal)
37800)]
37801#[cfg_attr(
37802 not(target_arch = "arm"),
37803 stable(feature = "neon_intrinsics", since = "1.59.0")
37804)]
37805#[cfg_attr(
37806 target_arch = "arm",
37807 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37808)]
37809pub fn vqdmlal_n_s16(a: int32x4_t, b: int16x4_t, c: i16) -> int32x4_t {
37810 vqaddq_s32(a, vqdmull_n_s16(b, c))
37811}
37812#[doc = "Vector widening saturating doubling multiply accumulate with scalar"]
37813#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_n_s32)"]
37814#[inline]
37815#[target_feature(enable = "neon")]
37816#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37817#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal))]
37818#[cfg_attr(
37819 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37820 assert_instr(sqdmlal)
37821)]
37822#[cfg_attr(
37823 not(target_arch = "arm"),
37824 stable(feature = "neon_intrinsics", since = "1.59.0")
37825)]
37826#[cfg_attr(
37827 target_arch = "arm",
37828 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37829)]
37830pub fn vqdmlal_n_s32(a: int64x2_t, b: int32x2_t, c: i32) -> int64x2_t {
37831 vqaddq_s64(a, vqdmull_n_s32(b, c))
37832}
37833#[doc = "Signed saturating doubling multiply-add long"]
37834#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_s16)"]
37835#[inline]
37836#[target_feature(enable = "neon")]
37837#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37838#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal))]
37839#[cfg_attr(
37840 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37841 assert_instr(sqdmlal)
37842)]
37843#[cfg_attr(
37844 not(target_arch = "arm"),
37845 stable(feature = "neon_intrinsics", since = "1.59.0")
37846)]
37847#[cfg_attr(
37848 target_arch = "arm",
37849 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37850)]
37851pub fn vqdmlal_s16(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
37852 vqaddq_s32(a, vqdmull_s16(b, c))
37853}
37854#[doc = "Signed saturating doubling multiply-add long"]
37855#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_s32)"]
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(vqdmlal))]
37860#[cfg_attr(
37861 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37862 assert_instr(sqdmlal)
37863)]
37864#[cfg_attr(
37865 not(target_arch = "arm"),
37866 stable(feature = "neon_intrinsics", since = "1.59.0")
37867)]
37868#[cfg_attr(
37869 target_arch = "arm",
37870 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37871)]
37872pub fn vqdmlal_s32(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
37873 vqaddq_s64(a, vqdmull_s32(b, c))
37874}
37875#[doc = "Vector widening saturating doubling multiply subtract with scalar"]
37876#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_lane_s16)"]
37877#[inline]
37878#[target_feature(enable = "neon")]
37879#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37880#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl, N = 2))]
37881#[cfg_attr(
37882 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37883 assert_instr(sqdmlsl, N = 2)
37884)]
37885#[rustc_legacy_const_generics(3)]
37886#[cfg_attr(
37887 not(target_arch = "arm"),
37888 stable(feature = "neon_intrinsics", since = "1.59.0")
37889)]
37890#[cfg_attr(
37891 target_arch = "arm",
37892 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37893)]
37894pub fn vqdmlsl_lane_s16<const N: i32>(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
37895 static_assert_uimm_bits!(N, 2);
37896 vqsubq_s32(a, vqdmull_lane_s16::<N>(b, c))
37897}
37898#[doc = "Vector widening saturating doubling multiply subtract with scalar"]
37899#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_lane_s32)"]
37900#[inline]
37901#[target_feature(enable = "neon")]
37902#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37903#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl, N = 1))]
37904#[cfg_attr(
37905 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37906 assert_instr(sqdmlsl, N = 1)
37907)]
37908#[rustc_legacy_const_generics(3)]
37909#[cfg_attr(
37910 not(target_arch = "arm"),
37911 stable(feature = "neon_intrinsics", since = "1.59.0")
37912)]
37913#[cfg_attr(
37914 target_arch = "arm",
37915 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37916)]
37917pub fn vqdmlsl_lane_s32<const N: i32>(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
37918 static_assert_uimm_bits!(N, 1);
37919 vqsubq_s64(a, vqdmull_lane_s32::<N>(b, c))
37920}
37921#[doc = "Vector widening saturating doubling multiply subtract with scalar"]
37922#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_n_s16)"]
37923#[inline]
37924#[target_feature(enable = "neon")]
37925#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37926#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl))]
37927#[cfg_attr(
37928 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37929 assert_instr(sqdmlsl)
37930)]
37931#[cfg_attr(
37932 not(target_arch = "arm"),
37933 stable(feature = "neon_intrinsics", since = "1.59.0")
37934)]
37935#[cfg_attr(
37936 target_arch = "arm",
37937 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37938)]
37939pub fn vqdmlsl_n_s16(a: int32x4_t, b: int16x4_t, c: i16) -> int32x4_t {
37940 vqsubq_s32(a, vqdmull_n_s16(b, c))
37941}
37942#[doc = "Vector widening saturating doubling multiply subtract with scalar"]
37943#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_n_s32)"]
37944#[inline]
37945#[target_feature(enable = "neon")]
37946#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37947#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl))]
37948#[cfg_attr(
37949 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37950 assert_instr(sqdmlsl)
37951)]
37952#[cfg_attr(
37953 not(target_arch = "arm"),
37954 stable(feature = "neon_intrinsics", since = "1.59.0")
37955)]
37956#[cfg_attr(
37957 target_arch = "arm",
37958 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37959)]
37960pub fn vqdmlsl_n_s32(a: int64x2_t, b: int32x2_t, c: i32) -> int64x2_t {
37961 vqsubq_s64(a, vqdmull_n_s32(b, c))
37962}
37963#[doc = "Signed saturating doubling multiply-subtract long"]
37964#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_s16)"]
37965#[inline]
37966#[target_feature(enable = "neon")]
37967#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37968#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl))]
37969#[cfg_attr(
37970 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37971 assert_instr(sqdmlsl)
37972)]
37973#[cfg_attr(
37974 not(target_arch = "arm"),
37975 stable(feature = "neon_intrinsics", since = "1.59.0")
37976)]
37977#[cfg_attr(
37978 target_arch = "arm",
37979 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37980)]
37981pub fn vqdmlsl_s16(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
37982 vqsubq_s32(a, vqdmull_s16(b, c))
37983}
37984#[doc = "Signed saturating doubling multiply-subtract long"]
37985#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_s32)"]
37986#[inline]
37987#[target_feature(enable = "neon")]
37988#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37989#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl))]
37990#[cfg_attr(
37991 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37992 assert_instr(sqdmlsl)
37993)]
37994#[cfg_attr(
37995 not(target_arch = "arm"),
37996 stable(feature = "neon_intrinsics", since = "1.59.0")
37997)]
37998#[cfg_attr(
37999 target_arch = "arm",
38000 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38001)]
38002pub fn vqdmlsl_s32(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
38003 vqsubq_s64(a, vqdmull_s32(b, c))
38004}
38005#[doc = "Vector saturating doubling multiply high by scalar"]
38006#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_laneq_s16)"]
38007#[inline]
38008#[target_feature(enable = "neon")]
38009#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38010#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh, LANE = 0))]
38011#[cfg_attr(
38012 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38013 assert_instr(sqdmulh, LANE = 0)
38014)]
38015#[rustc_legacy_const_generics(2)]
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 vqdmulh_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x8_t) -> int16x4_t {
38025 static_assert_uimm_bits!(LANE, 3);
38026 unsafe { vqdmulh_s16(a, vdup_n_s16(simd_extract!(b, LANE as u32))) }
38027}
38028#[doc = "Vector saturating doubling multiply high by scalar"]
38029#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_laneq_s16)"]
38030#[inline]
38031#[target_feature(enable = "neon")]
38032#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38033#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh, LANE = 0))]
38034#[cfg_attr(
38035 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38036 assert_instr(sqdmulh, LANE = 0)
38037)]
38038#[rustc_legacy_const_generics(2)]
38039#[cfg_attr(
38040 not(target_arch = "arm"),
38041 stable(feature = "neon_intrinsics", since = "1.59.0")
38042)]
38043#[cfg_attr(
38044 target_arch = "arm",
38045 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38046)]
38047pub fn vqdmulhq_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
38048 static_assert_uimm_bits!(LANE, 3);
38049 unsafe { vqdmulhq_s16(a, vdupq_n_s16(simd_extract!(b, LANE as u32))) }
38050}
38051#[doc = "Vector saturating doubling multiply high by scalar"]
38052#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_laneq_s32)"]
38053#[inline]
38054#[target_feature(enable = "neon")]
38055#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38056#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh, LANE = 0))]
38057#[cfg_attr(
38058 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38059 assert_instr(sqdmulh, LANE = 0)
38060)]
38061#[rustc_legacy_const_generics(2)]
38062#[cfg_attr(
38063 not(target_arch = "arm"),
38064 stable(feature = "neon_intrinsics", since = "1.59.0")
38065)]
38066#[cfg_attr(
38067 target_arch = "arm",
38068 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38069)]
38070pub fn vqdmulh_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x4_t) -> int32x2_t {
38071 static_assert_uimm_bits!(LANE, 2);
38072 unsafe { vqdmulh_s32(a, vdup_n_s32(simd_extract!(b, LANE as u32))) }
38073}
38074#[doc = "Vector saturating doubling multiply high by scalar"]
38075#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_laneq_s32)"]
38076#[inline]
38077#[target_feature(enable = "neon")]
38078#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38079#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh, LANE = 0))]
38080#[cfg_attr(
38081 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38082 assert_instr(sqdmulh, LANE = 0)
38083)]
38084#[rustc_legacy_const_generics(2)]
38085#[cfg_attr(
38086 not(target_arch = "arm"),
38087 stable(feature = "neon_intrinsics", since = "1.59.0")
38088)]
38089#[cfg_attr(
38090 target_arch = "arm",
38091 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38092)]
38093pub fn vqdmulhq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
38094 static_assert_uimm_bits!(LANE, 2);
38095 unsafe { vqdmulhq_s32(a, vdupq_n_s32(simd_extract!(b, LANE as u32))) }
38096}
38097#[doc = "Vector saturating doubling multiply high with scalar"]
38098#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_n_s16)"]
38099#[inline]
38100#[target_feature(enable = "neon")]
38101#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38102#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
38103#[cfg_attr(
38104 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38105 assert_instr(sqdmulh)
38106)]
38107#[cfg_attr(
38108 not(target_arch = "arm"),
38109 stable(feature = "neon_intrinsics", since = "1.59.0")
38110)]
38111#[cfg_attr(
38112 target_arch = "arm",
38113 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38114)]
38115pub fn vqdmulh_n_s16(a: int16x4_t, b: i16) -> int16x4_t {
38116 let b: int16x4_t = vdup_n_s16(b);
38117 vqdmulh_s16(a, b)
38118}
38119#[doc = "Vector saturating doubling multiply high with scalar"]
38120#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_n_s16)"]
38121#[inline]
38122#[target_feature(enable = "neon")]
38123#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38124#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
38125#[cfg_attr(
38126 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38127 assert_instr(sqdmulh)
38128)]
38129#[cfg_attr(
38130 not(target_arch = "arm"),
38131 stable(feature = "neon_intrinsics", since = "1.59.0")
38132)]
38133#[cfg_attr(
38134 target_arch = "arm",
38135 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38136)]
38137pub fn vqdmulhq_n_s16(a: int16x8_t, b: i16) -> int16x8_t {
38138 let b: int16x8_t = vdupq_n_s16(b);
38139 vqdmulhq_s16(a, b)
38140}
38141#[doc = "Vector saturating doubling multiply high with scalar"]
38142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_n_s32)"]
38143#[inline]
38144#[target_feature(enable = "neon")]
38145#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38146#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
38147#[cfg_attr(
38148 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38149 assert_instr(sqdmulh)
38150)]
38151#[cfg_attr(
38152 not(target_arch = "arm"),
38153 stable(feature = "neon_intrinsics", since = "1.59.0")
38154)]
38155#[cfg_attr(
38156 target_arch = "arm",
38157 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38158)]
38159pub fn vqdmulh_n_s32(a: int32x2_t, b: i32) -> int32x2_t {
38160 let b: int32x2_t = vdup_n_s32(b);
38161 vqdmulh_s32(a, b)
38162}
38163#[doc = "Vector saturating doubling multiply high with scalar"]
38164#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_n_s32)"]
38165#[inline]
38166#[target_feature(enable = "neon")]
38167#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38168#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
38169#[cfg_attr(
38170 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38171 assert_instr(sqdmulh)
38172)]
38173#[cfg_attr(
38174 not(target_arch = "arm"),
38175 stable(feature = "neon_intrinsics", since = "1.59.0")
38176)]
38177#[cfg_attr(
38178 target_arch = "arm",
38179 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38180)]
38181pub fn vqdmulhq_n_s32(a: int32x4_t, b: i32) -> int32x4_t {
38182 let b: int32x4_t = vdupq_n_s32(b);
38183 vqdmulhq_s32(a, b)
38184}
38185#[doc = "Signed saturating doubling multiply returning high half"]
38186#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_s16)"]
38187#[inline]
38188#[target_feature(enable = "neon")]
38189#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38190#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
38191#[cfg_attr(
38192 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38193 assert_instr(sqdmulh)
38194)]
38195#[cfg_attr(
38196 not(target_arch = "arm"),
38197 stable(feature = "neon_intrinsics", since = "1.59.0")
38198)]
38199#[cfg_attr(
38200 target_arch = "arm",
38201 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38202)]
38203pub fn vqdmulh_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
38204 unsafe extern "unadjusted" {
38205 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmulh.v4i16")]
38206 #[cfg_attr(
38207 any(target_arch = "aarch64", target_arch = "arm64ec"),
38208 link_name = "llvm.aarch64.neon.sqdmulh.v4i16"
38209 )]
38210 fn _vqdmulh_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
38211 }
38212 unsafe { _vqdmulh_s16(a, b) }
38213}
38214#[doc = "Signed saturating doubling multiply returning high half"]
38215#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_s16)"]
38216#[inline]
38217#[target_feature(enable = "neon")]
38218#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38219#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
38220#[cfg_attr(
38221 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38222 assert_instr(sqdmulh)
38223)]
38224#[cfg_attr(
38225 not(target_arch = "arm"),
38226 stable(feature = "neon_intrinsics", since = "1.59.0")
38227)]
38228#[cfg_attr(
38229 target_arch = "arm",
38230 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38231)]
38232pub fn vqdmulhq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
38233 unsafe extern "unadjusted" {
38234 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmulh.v8i16")]
38235 #[cfg_attr(
38236 any(target_arch = "aarch64", target_arch = "arm64ec"),
38237 link_name = "llvm.aarch64.neon.sqdmulh.v8i16"
38238 )]
38239 fn _vqdmulhq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
38240 }
38241 unsafe { _vqdmulhq_s16(a, b) }
38242}
38243#[doc = "Signed saturating doubling multiply returning high half"]
38244#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_s32)"]
38245#[inline]
38246#[target_feature(enable = "neon")]
38247#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38248#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
38249#[cfg_attr(
38250 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38251 assert_instr(sqdmulh)
38252)]
38253#[cfg_attr(
38254 not(target_arch = "arm"),
38255 stable(feature = "neon_intrinsics", since = "1.59.0")
38256)]
38257#[cfg_attr(
38258 target_arch = "arm",
38259 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38260)]
38261pub fn vqdmulh_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
38262 unsafe extern "unadjusted" {
38263 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmulh.v2i32")]
38264 #[cfg_attr(
38265 any(target_arch = "aarch64", target_arch = "arm64ec"),
38266 link_name = "llvm.aarch64.neon.sqdmulh.v2i32"
38267 )]
38268 fn _vqdmulh_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
38269 }
38270 unsafe { _vqdmulh_s32(a, b) }
38271}
38272#[doc = "Signed saturating doubling multiply returning high half"]
38273#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_s32)"]
38274#[inline]
38275#[target_feature(enable = "neon")]
38276#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38277#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
38278#[cfg_attr(
38279 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38280 assert_instr(sqdmulh)
38281)]
38282#[cfg_attr(
38283 not(target_arch = "arm"),
38284 stable(feature = "neon_intrinsics", since = "1.59.0")
38285)]
38286#[cfg_attr(
38287 target_arch = "arm",
38288 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38289)]
38290pub fn vqdmulhq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
38291 unsafe extern "unadjusted" {
38292 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmulh.v4i32")]
38293 #[cfg_attr(
38294 any(target_arch = "aarch64", target_arch = "arm64ec"),
38295 link_name = "llvm.aarch64.neon.sqdmulh.v4i32"
38296 )]
38297 fn _vqdmulhq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
38298 }
38299 unsafe { _vqdmulhq_s32(a, b) }
38300}
38301#[doc = "Vector saturating doubling long multiply by scalar"]
38302#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_lane_s16)"]
38303#[inline]
38304#[target_feature(enable = "neon")]
38305#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38306#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull, N = 2))]
38307#[cfg_attr(
38308 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38309 assert_instr(sqdmull, N = 2)
38310)]
38311#[rustc_legacy_const_generics(2)]
38312#[cfg_attr(
38313 not(target_arch = "arm"),
38314 stable(feature = "neon_intrinsics", since = "1.59.0")
38315)]
38316#[cfg_attr(
38317 target_arch = "arm",
38318 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38319)]
38320pub fn vqdmull_lane_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int32x4_t {
38321 static_assert_uimm_bits!(N, 2);
38322 unsafe {
38323 let b: int16x4_t = simd_shuffle!(b, b, [N as u32, N as u32, N as u32, N as u32]);
38324 vqdmull_s16(a, b)
38325 }
38326}
38327#[doc = "Vector saturating doubling long multiply by scalar"]
38328#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_lane_s32)"]
38329#[inline]
38330#[target_feature(enable = "neon")]
38331#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38332#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull, N = 1))]
38333#[cfg_attr(
38334 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38335 assert_instr(sqdmull, N = 1)
38336)]
38337#[rustc_legacy_const_generics(2)]
38338#[cfg_attr(
38339 not(target_arch = "arm"),
38340 stable(feature = "neon_intrinsics", since = "1.59.0")
38341)]
38342#[cfg_attr(
38343 target_arch = "arm",
38344 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38345)]
38346pub fn vqdmull_lane_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int64x2_t {
38347 static_assert_uimm_bits!(N, 1);
38348 unsafe {
38349 let b: int32x2_t = simd_shuffle!(b, b, [N as u32, N as u32]);
38350 vqdmull_s32(a, b)
38351 }
38352}
38353#[doc = "Vector saturating doubling long multiply with scalar"]
38354#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_n_s16)"]
38355#[inline]
38356#[target_feature(enable = "neon")]
38357#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38358#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull))]
38359#[cfg_attr(
38360 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38361 assert_instr(sqdmull)
38362)]
38363#[cfg_attr(
38364 not(target_arch = "arm"),
38365 stable(feature = "neon_intrinsics", since = "1.59.0")
38366)]
38367#[cfg_attr(
38368 target_arch = "arm",
38369 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38370)]
38371pub fn vqdmull_n_s16(a: int16x4_t, b: i16) -> int32x4_t {
38372 vqdmull_s16(a, vdup_n_s16(b))
38373}
38374#[doc = "Vector saturating doubling long multiply with scalar"]
38375#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_n_s32)"]
38376#[inline]
38377#[target_feature(enable = "neon")]
38378#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38379#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull))]
38380#[cfg_attr(
38381 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38382 assert_instr(sqdmull)
38383)]
38384#[cfg_attr(
38385 not(target_arch = "arm"),
38386 stable(feature = "neon_intrinsics", since = "1.59.0")
38387)]
38388#[cfg_attr(
38389 target_arch = "arm",
38390 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38391)]
38392pub fn vqdmull_n_s32(a: int32x2_t, b: i32) -> int64x2_t {
38393 vqdmull_s32(a, vdup_n_s32(b))
38394}
38395#[doc = "Signed saturating doubling multiply long"]
38396#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_s16)"]
38397#[inline]
38398#[target_feature(enable = "neon")]
38399#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38400#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull))]
38401#[cfg_attr(
38402 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38403 assert_instr(sqdmull)
38404)]
38405#[cfg_attr(
38406 not(target_arch = "arm"),
38407 stable(feature = "neon_intrinsics", since = "1.59.0")
38408)]
38409#[cfg_attr(
38410 target_arch = "arm",
38411 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38412)]
38413pub fn vqdmull_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t {
38414 unsafe extern "unadjusted" {
38415 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmull.v4i32")]
38416 #[cfg_attr(
38417 any(target_arch = "aarch64", target_arch = "arm64ec"),
38418 link_name = "llvm.aarch64.neon.sqdmull.v4i32"
38419 )]
38420 fn _vqdmull_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t;
38421 }
38422 unsafe { _vqdmull_s16(a, b) }
38423}
38424#[doc = "Signed saturating doubling multiply long"]
38425#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_s32)"]
38426#[inline]
38427#[target_feature(enable = "neon")]
38428#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38429#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull))]
38430#[cfg_attr(
38431 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38432 assert_instr(sqdmull)
38433)]
38434#[cfg_attr(
38435 not(target_arch = "arm"),
38436 stable(feature = "neon_intrinsics", since = "1.59.0")
38437)]
38438#[cfg_attr(
38439 target_arch = "arm",
38440 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38441)]
38442pub fn vqdmull_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t {
38443 unsafe extern "unadjusted" {
38444 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmull.v2i64")]
38445 #[cfg_attr(
38446 any(target_arch = "aarch64", target_arch = "arm64ec"),
38447 link_name = "llvm.aarch64.neon.sqdmull.v2i64"
38448 )]
38449 fn _vqdmull_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t;
38450 }
38451 unsafe { _vqdmull_s32(a, b) }
38452}
38453#[doc = "Signed saturating extract narrow"]
38454#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_s16)"]
38455#[inline]
38456#[target_feature(enable = "neon")]
38457#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38458#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
38459#[cfg_attr(
38460 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38461 assert_instr(sqxtn)
38462)]
38463#[cfg_attr(
38464 not(target_arch = "arm"),
38465 stable(feature = "neon_intrinsics", since = "1.59.0")
38466)]
38467#[cfg_attr(
38468 target_arch = "arm",
38469 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38470)]
38471pub fn vqmovn_s16(a: int16x8_t) -> int8x8_t {
38472 unsafe extern "unadjusted" {
38473 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovns.v8i8")]
38474 #[cfg_attr(
38475 any(target_arch = "aarch64", target_arch = "arm64ec"),
38476 link_name = "llvm.aarch64.neon.sqxtn.v8i8"
38477 )]
38478 fn _vqmovn_s16(a: int16x8_t) -> int8x8_t;
38479 }
38480 unsafe { _vqmovn_s16(a) }
38481}
38482#[doc = "Signed saturating extract narrow"]
38483#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_s32)"]
38484#[inline]
38485#[target_feature(enable = "neon")]
38486#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38487#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
38488#[cfg_attr(
38489 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38490 assert_instr(sqxtn)
38491)]
38492#[cfg_attr(
38493 not(target_arch = "arm"),
38494 stable(feature = "neon_intrinsics", since = "1.59.0")
38495)]
38496#[cfg_attr(
38497 target_arch = "arm",
38498 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38499)]
38500pub fn vqmovn_s32(a: int32x4_t) -> int16x4_t {
38501 unsafe extern "unadjusted" {
38502 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovns.v4i16")]
38503 #[cfg_attr(
38504 any(target_arch = "aarch64", target_arch = "arm64ec"),
38505 link_name = "llvm.aarch64.neon.sqxtn.v4i16"
38506 )]
38507 fn _vqmovn_s32(a: int32x4_t) -> int16x4_t;
38508 }
38509 unsafe { _vqmovn_s32(a) }
38510}
38511#[doc = "Signed saturating extract narrow"]
38512#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_s64)"]
38513#[inline]
38514#[target_feature(enable = "neon")]
38515#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38516#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
38517#[cfg_attr(
38518 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38519 assert_instr(sqxtn)
38520)]
38521#[cfg_attr(
38522 not(target_arch = "arm"),
38523 stable(feature = "neon_intrinsics", since = "1.59.0")
38524)]
38525#[cfg_attr(
38526 target_arch = "arm",
38527 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38528)]
38529pub fn vqmovn_s64(a: int64x2_t) -> int32x2_t {
38530 unsafe extern "unadjusted" {
38531 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovns.v2i32")]
38532 #[cfg_attr(
38533 any(target_arch = "aarch64", target_arch = "arm64ec"),
38534 link_name = "llvm.aarch64.neon.sqxtn.v2i32"
38535 )]
38536 fn _vqmovn_s64(a: int64x2_t) -> int32x2_t;
38537 }
38538 unsafe { _vqmovn_s64(a) }
38539}
38540#[doc = "Unsigned saturating extract narrow"]
38541#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_u16)"]
38542#[inline]
38543#[target_feature(enable = "neon")]
38544#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38545#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
38546#[cfg_attr(
38547 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38548 assert_instr(uqxtn)
38549)]
38550#[cfg_attr(
38551 not(target_arch = "arm"),
38552 stable(feature = "neon_intrinsics", since = "1.59.0")
38553)]
38554#[cfg_attr(
38555 target_arch = "arm",
38556 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38557)]
38558pub fn vqmovn_u16(a: uint16x8_t) -> uint8x8_t {
38559 unsafe extern "unadjusted" {
38560 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnu.v8i8")]
38561 #[cfg_attr(
38562 any(target_arch = "aarch64", target_arch = "arm64ec"),
38563 link_name = "llvm.aarch64.neon.uqxtn.v8i8"
38564 )]
38565 fn _vqmovn_u16(a: uint16x8_t) -> uint8x8_t;
38566 }
38567 unsafe { _vqmovn_u16(a) }
38568}
38569#[doc = "Unsigned saturating extract narrow"]
38570#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_u32)"]
38571#[inline]
38572#[target_feature(enable = "neon")]
38573#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38574#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
38575#[cfg_attr(
38576 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38577 assert_instr(uqxtn)
38578)]
38579#[cfg_attr(
38580 not(target_arch = "arm"),
38581 stable(feature = "neon_intrinsics", since = "1.59.0")
38582)]
38583#[cfg_attr(
38584 target_arch = "arm",
38585 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38586)]
38587pub fn vqmovn_u32(a: uint32x4_t) -> uint16x4_t {
38588 unsafe extern "unadjusted" {
38589 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnu.v4i16")]
38590 #[cfg_attr(
38591 any(target_arch = "aarch64", target_arch = "arm64ec"),
38592 link_name = "llvm.aarch64.neon.uqxtn.v4i16"
38593 )]
38594 fn _vqmovn_u32(a: uint32x4_t) -> uint16x4_t;
38595 }
38596 unsafe { _vqmovn_u32(a) }
38597}
38598#[doc = "Unsigned saturating extract narrow"]
38599#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_u64)"]
38600#[inline]
38601#[target_feature(enable = "neon")]
38602#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38603#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
38604#[cfg_attr(
38605 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38606 assert_instr(uqxtn)
38607)]
38608#[cfg_attr(
38609 not(target_arch = "arm"),
38610 stable(feature = "neon_intrinsics", since = "1.59.0")
38611)]
38612#[cfg_attr(
38613 target_arch = "arm",
38614 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38615)]
38616pub fn vqmovn_u64(a: uint64x2_t) -> uint32x2_t {
38617 unsafe extern "unadjusted" {
38618 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnu.v2i32")]
38619 #[cfg_attr(
38620 any(target_arch = "aarch64", target_arch = "arm64ec"),
38621 link_name = "llvm.aarch64.neon.uqxtn.v2i32"
38622 )]
38623 fn _vqmovn_u64(a: uint64x2_t) -> uint32x2_t;
38624 }
38625 unsafe { _vqmovn_u64(a) }
38626}
38627#[doc = "Signed saturating extract unsigned narrow"]
38628#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovun_s16)"]
38629#[inline]
38630#[target_feature(enable = "neon")]
38631#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38632#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovun))]
38633#[cfg_attr(
38634 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38635 assert_instr(sqxtun)
38636)]
38637#[cfg_attr(
38638 not(target_arch = "arm"),
38639 stable(feature = "neon_intrinsics", since = "1.59.0")
38640)]
38641#[cfg_attr(
38642 target_arch = "arm",
38643 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38644)]
38645pub fn vqmovun_s16(a: int16x8_t) -> uint8x8_t {
38646 unsafe extern "unadjusted" {
38647 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnsu.v8i8")]
38648 #[cfg_attr(
38649 any(target_arch = "aarch64", target_arch = "arm64ec"),
38650 link_name = "llvm.aarch64.neon.sqxtun.v8i8"
38651 )]
38652 fn _vqmovun_s16(a: int16x8_t) -> uint8x8_t;
38653 }
38654 unsafe { _vqmovun_s16(a) }
38655}
38656#[doc = "Signed saturating extract unsigned narrow"]
38657#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovun_s32)"]
38658#[inline]
38659#[target_feature(enable = "neon")]
38660#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38661#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovun))]
38662#[cfg_attr(
38663 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38664 assert_instr(sqxtun)
38665)]
38666#[cfg_attr(
38667 not(target_arch = "arm"),
38668 stable(feature = "neon_intrinsics", since = "1.59.0")
38669)]
38670#[cfg_attr(
38671 target_arch = "arm",
38672 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38673)]
38674pub fn vqmovun_s32(a: int32x4_t) -> uint16x4_t {
38675 unsafe extern "unadjusted" {
38676 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnsu.v4i16")]
38677 #[cfg_attr(
38678 any(target_arch = "aarch64", target_arch = "arm64ec"),
38679 link_name = "llvm.aarch64.neon.sqxtun.v4i16"
38680 )]
38681 fn _vqmovun_s32(a: int32x4_t) -> uint16x4_t;
38682 }
38683 unsafe { _vqmovun_s32(a) }
38684}
38685#[doc = "Signed saturating extract unsigned narrow"]
38686#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovun_s64)"]
38687#[inline]
38688#[target_feature(enable = "neon")]
38689#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38690#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovun))]
38691#[cfg_attr(
38692 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38693 assert_instr(sqxtun)
38694)]
38695#[cfg_attr(
38696 not(target_arch = "arm"),
38697 stable(feature = "neon_intrinsics", since = "1.59.0")
38698)]
38699#[cfg_attr(
38700 target_arch = "arm",
38701 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38702)]
38703pub fn vqmovun_s64(a: int64x2_t) -> uint32x2_t {
38704 unsafe extern "unadjusted" {
38705 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnsu.v2i32")]
38706 #[cfg_attr(
38707 any(target_arch = "aarch64", target_arch = "arm64ec"),
38708 link_name = "llvm.aarch64.neon.sqxtun.v2i32"
38709 )]
38710 fn _vqmovun_s64(a: int64x2_t) -> uint32x2_t;
38711 }
38712 unsafe { _vqmovun_s64(a) }
38713}
38714#[doc = "Signed saturating negate"]
38715#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqneg_s8)"]
38716#[inline]
38717#[target_feature(enable = "neon")]
38718#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38719#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s8"))]
38720#[cfg_attr(
38721 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38722 assert_instr(sqneg)
38723)]
38724#[cfg_attr(
38725 not(target_arch = "arm"),
38726 stable(feature = "neon_intrinsics", since = "1.59.0")
38727)]
38728#[cfg_attr(
38729 target_arch = "arm",
38730 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38731)]
38732pub fn vqneg_s8(a: int8x8_t) -> int8x8_t {
38733 unsafe extern "unadjusted" {
38734 #[cfg_attr(
38735 any(target_arch = "aarch64", target_arch = "arm64ec"),
38736 link_name = "llvm.aarch64.neon.sqneg.v8i8"
38737 )]
38738 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v8i8")]
38739 fn _vqneg_s8(a: int8x8_t) -> int8x8_t;
38740 }
38741 unsafe { _vqneg_s8(a) }
38742}
38743#[doc = "Signed saturating negate"]
38744#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqnegq_s8)"]
38745#[inline]
38746#[target_feature(enable = "neon")]
38747#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38748#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s8"))]
38749#[cfg_attr(
38750 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38751 assert_instr(sqneg)
38752)]
38753#[cfg_attr(
38754 not(target_arch = "arm"),
38755 stable(feature = "neon_intrinsics", since = "1.59.0")
38756)]
38757#[cfg_attr(
38758 target_arch = "arm",
38759 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38760)]
38761pub fn vqnegq_s8(a: int8x16_t) -> int8x16_t {
38762 unsafe extern "unadjusted" {
38763 #[cfg_attr(
38764 any(target_arch = "aarch64", target_arch = "arm64ec"),
38765 link_name = "llvm.aarch64.neon.sqneg.v16i8"
38766 )]
38767 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v16i8")]
38768 fn _vqnegq_s8(a: int8x16_t) -> int8x16_t;
38769 }
38770 unsafe { _vqnegq_s8(a) }
38771}
38772#[doc = "Signed saturating negate"]
38773#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqneg_s16)"]
38774#[inline]
38775#[target_feature(enable = "neon")]
38776#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38777#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s16"))]
38778#[cfg_attr(
38779 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38780 assert_instr(sqneg)
38781)]
38782#[cfg_attr(
38783 not(target_arch = "arm"),
38784 stable(feature = "neon_intrinsics", since = "1.59.0")
38785)]
38786#[cfg_attr(
38787 target_arch = "arm",
38788 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38789)]
38790pub fn vqneg_s16(a: int16x4_t) -> int16x4_t {
38791 unsafe extern "unadjusted" {
38792 #[cfg_attr(
38793 any(target_arch = "aarch64", target_arch = "arm64ec"),
38794 link_name = "llvm.aarch64.neon.sqneg.v4i16"
38795 )]
38796 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v4i16")]
38797 fn _vqneg_s16(a: int16x4_t) -> int16x4_t;
38798 }
38799 unsafe { _vqneg_s16(a) }
38800}
38801#[doc = "Signed saturating negate"]
38802#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqnegq_s16)"]
38803#[inline]
38804#[target_feature(enable = "neon")]
38805#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38806#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s16"))]
38807#[cfg_attr(
38808 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38809 assert_instr(sqneg)
38810)]
38811#[cfg_attr(
38812 not(target_arch = "arm"),
38813 stable(feature = "neon_intrinsics", since = "1.59.0")
38814)]
38815#[cfg_attr(
38816 target_arch = "arm",
38817 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38818)]
38819pub fn vqnegq_s16(a: int16x8_t) -> int16x8_t {
38820 unsafe extern "unadjusted" {
38821 #[cfg_attr(
38822 any(target_arch = "aarch64", target_arch = "arm64ec"),
38823 link_name = "llvm.aarch64.neon.sqneg.v8i16"
38824 )]
38825 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v8i16")]
38826 fn _vqnegq_s16(a: int16x8_t) -> int16x8_t;
38827 }
38828 unsafe { _vqnegq_s16(a) }
38829}
38830#[doc = "Signed saturating negate"]
38831#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqneg_s32)"]
38832#[inline]
38833#[target_feature(enable = "neon")]
38834#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38835#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s32"))]
38836#[cfg_attr(
38837 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38838 assert_instr(sqneg)
38839)]
38840#[cfg_attr(
38841 not(target_arch = "arm"),
38842 stable(feature = "neon_intrinsics", since = "1.59.0")
38843)]
38844#[cfg_attr(
38845 target_arch = "arm",
38846 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38847)]
38848pub fn vqneg_s32(a: int32x2_t) -> int32x2_t {
38849 unsafe extern "unadjusted" {
38850 #[cfg_attr(
38851 any(target_arch = "aarch64", target_arch = "arm64ec"),
38852 link_name = "llvm.aarch64.neon.sqneg.v2i32"
38853 )]
38854 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v2i32")]
38855 fn _vqneg_s32(a: int32x2_t) -> int32x2_t;
38856 }
38857 unsafe { _vqneg_s32(a) }
38858}
38859#[doc = "Signed saturating negate"]
38860#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqnegq_s32)"]
38861#[inline]
38862#[target_feature(enable = "neon")]
38863#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38864#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s32"))]
38865#[cfg_attr(
38866 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38867 assert_instr(sqneg)
38868)]
38869#[cfg_attr(
38870 not(target_arch = "arm"),
38871 stable(feature = "neon_intrinsics", since = "1.59.0")
38872)]
38873#[cfg_attr(
38874 target_arch = "arm",
38875 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38876)]
38877pub fn vqnegq_s32(a: int32x4_t) -> int32x4_t {
38878 unsafe extern "unadjusted" {
38879 #[cfg_attr(
38880 any(target_arch = "aarch64", target_arch = "arm64ec"),
38881 link_name = "llvm.aarch64.neon.sqneg.v4i32"
38882 )]
38883 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v4i32")]
38884 fn _vqnegq_s32(a: int32x4_t) -> int32x4_t;
38885 }
38886 unsafe { _vqnegq_s32(a) }
38887}
38888#[doc = "Vector rounding saturating doubling multiply high by scalar"]
38889#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_lane_s16)"]
38890#[inline]
38891#[target_feature(enable = "neon")]
38892#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38893#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
38894#[cfg_attr(
38895 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38896 assert_instr(sqrdmulh, LANE = 1)
38897)]
38898#[rustc_legacy_const_generics(2)]
38899#[cfg_attr(
38900 not(target_arch = "arm"),
38901 stable(feature = "neon_intrinsics", since = "1.59.0")
38902)]
38903#[cfg_attr(
38904 target_arch = "arm",
38905 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38906)]
38907pub fn vqrdmulh_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
38908 static_assert_uimm_bits!(LANE, 2);
38909 unsafe {
38910 let b: int16x4_t =
38911 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
38912 vqrdmulh_s16(a, b)
38913 }
38914}
38915#[doc = "Vector rounding saturating doubling multiply high by scalar"]
38916#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_lane_s32)"]
38917#[inline]
38918#[target_feature(enable = "neon")]
38919#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38920#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
38921#[cfg_attr(
38922 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38923 assert_instr(sqrdmulh, LANE = 1)
38924)]
38925#[rustc_legacy_const_generics(2)]
38926#[cfg_attr(
38927 not(target_arch = "arm"),
38928 stable(feature = "neon_intrinsics", since = "1.59.0")
38929)]
38930#[cfg_attr(
38931 target_arch = "arm",
38932 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38933)]
38934pub fn vqrdmulh_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
38935 static_assert_uimm_bits!(LANE, 1);
38936 unsafe {
38937 let b: int32x2_t = simd_shuffle!(b, b, [LANE as u32, LANE as u32]);
38938 vqrdmulh_s32(a, b)
38939 }
38940}
38941#[doc = "Vector rounding saturating doubling multiply high by scalar"]
38942#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_laneq_s16)"]
38943#[inline]
38944#[target_feature(enable = "neon")]
38945#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38946#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
38947#[cfg_attr(
38948 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38949 assert_instr(sqrdmulh, LANE = 1)
38950)]
38951#[rustc_legacy_const_generics(2)]
38952#[cfg_attr(
38953 not(target_arch = "arm"),
38954 stable(feature = "neon_intrinsics", since = "1.59.0")
38955)]
38956#[cfg_attr(
38957 target_arch = "arm",
38958 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38959)]
38960pub fn vqrdmulh_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x8_t) -> int16x4_t {
38961 static_assert_uimm_bits!(LANE, 3);
38962 unsafe {
38963 let b: int16x4_t =
38964 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
38965 vqrdmulh_s16(a, b)
38966 }
38967}
38968#[doc = "Vector rounding saturating doubling multiply high by scalar"]
38969#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_laneq_s32)"]
38970#[inline]
38971#[target_feature(enable = "neon")]
38972#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38973#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
38974#[cfg_attr(
38975 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38976 assert_instr(sqrdmulh, LANE = 1)
38977)]
38978#[rustc_legacy_const_generics(2)]
38979#[cfg_attr(
38980 not(target_arch = "arm"),
38981 stable(feature = "neon_intrinsics", since = "1.59.0")
38982)]
38983#[cfg_attr(
38984 target_arch = "arm",
38985 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38986)]
38987pub fn vqrdmulh_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x4_t) -> int32x2_t {
38988 static_assert_uimm_bits!(LANE, 2);
38989 unsafe {
38990 let b: int32x2_t = simd_shuffle!(b, b, [LANE as u32, LANE as u32]);
38991 vqrdmulh_s32(a, b)
38992 }
38993}
38994#[doc = "Vector rounding saturating doubling multiply high by scalar"]
38995#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_lane_s16)"]
38996#[inline]
38997#[target_feature(enable = "neon")]
38998#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38999#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
39000#[cfg_attr(
39001 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39002 assert_instr(sqrdmulh, LANE = 1)
39003)]
39004#[rustc_legacy_const_generics(2)]
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 vqrdmulhq_lane_s16<const LANE: i32>(a: int16x8_t, b: int16x4_t) -> int16x8_t {
39014 static_assert_uimm_bits!(LANE, 2);
39015 unsafe {
39016 let b: int16x8_t = simd_shuffle!(
39017 b,
39018 b,
39019 [
39020 LANE as u32,
39021 LANE as u32,
39022 LANE as u32,
39023 LANE as u32,
39024 LANE as u32,
39025 LANE as u32,
39026 LANE as u32,
39027 LANE as u32
39028 ]
39029 );
39030 vqrdmulhq_s16(a, b)
39031 }
39032}
39033#[doc = "Vector rounding saturating doubling multiply high by scalar"]
39034#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_lane_s32)"]
39035#[inline]
39036#[target_feature(enable = "neon")]
39037#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39038#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
39039#[cfg_attr(
39040 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39041 assert_instr(sqrdmulh, LANE = 1)
39042)]
39043#[rustc_legacy_const_generics(2)]
39044#[cfg_attr(
39045 not(target_arch = "arm"),
39046 stable(feature = "neon_intrinsics", since = "1.59.0")
39047)]
39048#[cfg_attr(
39049 target_arch = "arm",
39050 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39051)]
39052pub fn vqrdmulhq_lane_s32<const LANE: i32>(a: int32x4_t, b: int32x2_t) -> int32x4_t {
39053 static_assert_uimm_bits!(LANE, 1);
39054 unsafe {
39055 let b: int32x4_t =
39056 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
39057 vqrdmulhq_s32(a, b)
39058 }
39059}
39060#[doc = "Vector rounding saturating doubling multiply high by scalar"]
39061#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_laneq_s16)"]
39062#[inline]
39063#[target_feature(enable = "neon")]
39064#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39065#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
39066#[cfg_attr(
39067 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39068 assert_instr(sqrdmulh, LANE = 1)
39069)]
39070#[rustc_legacy_const_generics(2)]
39071#[cfg_attr(
39072 not(target_arch = "arm"),
39073 stable(feature = "neon_intrinsics", since = "1.59.0")
39074)]
39075#[cfg_attr(
39076 target_arch = "arm",
39077 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39078)]
39079pub fn vqrdmulhq_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
39080 static_assert_uimm_bits!(LANE, 3);
39081 unsafe {
39082 let b: int16x8_t = simd_shuffle!(
39083 b,
39084 b,
39085 [
39086 LANE as u32,
39087 LANE as u32,
39088 LANE as u32,
39089 LANE as u32,
39090 LANE as u32,
39091 LANE as u32,
39092 LANE as u32,
39093 LANE as u32
39094 ]
39095 );
39096 vqrdmulhq_s16(a, b)
39097 }
39098}
39099#[doc = "Vector rounding saturating doubling multiply high by scalar"]
39100#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_laneq_s32)"]
39101#[inline]
39102#[target_feature(enable = "neon")]
39103#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39104#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
39105#[cfg_attr(
39106 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39107 assert_instr(sqrdmulh, LANE = 1)
39108)]
39109#[rustc_legacy_const_generics(2)]
39110#[cfg_attr(
39111 not(target_arch = "arm"),
39112 stable(feature = "neon_intrinsics", since = "1.59.0")
39113)]
39114#[cfg_attr(
39115 target_arch = "arm",
39116 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39117)]
39118pub fn vqrdmulhq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
39119 static_assert_uimm_bits!(LANE, 2);
39120 unsafe {
39121 let b: int32x4_t =
39122 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
39123 vqrdmulhq_s32(a, b)
39124 }
39125}
39126#[doc = "Vector saturating rounding doubling multiply high with scalar"]
39127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_n_s16)"]
39128#[inline]
39129#[target_feature(enable = "neon")]
39130#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39131#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
39132#[cfg_attr(
39133 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39134 assert_instr(sqrdmulh)
39135)]
39136#[cfg_attr(
39137 not(target_arch = "arm"),
39138 stable(feature = "neon_intrinsics", since = "1.59.0")
39139)]
39140#[cfg_attr(
39141 target_arch = "arm",
39142 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39143)]
39144pub fn vqrdmulh_n_s16(a: int16x4_t, b: i16) -> int16x4_t {
39145 vqrdmulh_s16(a, vdup_n_s16(b))
39146}
39147#[doc = "Vector saturating rounding doubling multiply high with scalar"]
39148#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_n_s16)"]
39149#[inline]
39150#[target_feature(enable = "neon")]
39151#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39152#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
39153#[cfg_attr(
39154 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39155 assert_instr(sqrdmulh)
39156)]
39157#[cfg_attr(
39158 not(target_arch = "arm"),
39159 stable(feature = "neon_intrinsics", since = "1.59.0")
39160)]
39161#[cfg_attr(
39162 target_arch = "arm",
39163 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39164)]
39165pub fn vqrdmulhq_n_s16(a: int16x8_t, b: i16) -> int16x8_t {
39166 vqrdmulhq_s16(a, vdupq_n_s16(b))
39167}
39168#[doc = "Vector saturating rounding doubling multiply high with scalar"]
39169#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_n_s32)"]
39170#[inline]
39171#[target_feature(enable = "neon")]
39172#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39173#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
39174#[cfg_attr(
39175 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39176 assert_instr(sqrdmulh)
39177)]
39178#[cfg_attr(
39179 not(target_arch = "arm"),
39180 stable(feature = "neon_intrinsics", since = "1.59.0")
39181)]
39182#[cfg_attr(
39183 target_arch = "arm",
39184 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39185)]
39186pub fn vqrdmulh_n_s32(a: int32x2_t, b: i32) -> int32x2_t {
39187 vqrdmulh_s32(a, vdup_n_s32(b))
39188}
39189#[doc = "Vector saturating rounding doubling multiply high with scalar"]
39190#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_n_s32)"]
39191#[inline]
39192#[target_feature(enable = "neon")]
39193#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39194#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
39195#[cfg_attr(
39196 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39197 assert_instr(sqrdmulh)
39198)]
39199#[cfg_attr(
39200 not(target_arch = "arm"),
39201 stable(feature = "neon_intrinsics", since = "1.59.0")
39202)]
39203#[cfg_attr(
39204 target_arch = "arm",
39205 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39206)]
39207pub fn vqrdmulhq_n_s32(a: int32x4_t, b: i32) -> int32x4_t {
39208 vqrdmulhq_s32(a, vdupq_n_s32(b))
39209}
39210#[doc = "Signed saturating rounding doubling multiply returning high half"]
39211#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_s16)"]
39212#[inline]
39213#[target_feature(enable = "neon")]
39214#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39215#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
39216#[cfg_attr(
39217 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39218 assert_instr(sqrdmulh)
39219)]
39220#[cfg_attr(
39221 not(target_arch = "arm"),
39222 stable(feature = "neon_intrinsics", since = "1.59.0")
39223)]
39224#[cfg_attr(
39225 target_arch = "arm",
39226 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39227)]
39228pub fn vqrdmulh_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
39229 unsafe extern "unadjusted" {
39230 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrdmulh.v4i16")]
39231 #[cfg_attr(
39232 any(target_arch = "aarch64", target_arch = "arm64ec"),
39233 link_name = "llvm.aarch64.neon.sqrdmulh.v4i16"
39234 )]
39235 fn _vqrdmulh_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
39236 }
39237 unsafe { _vqrdmulh_s16(a, b) }
39238}
39239#[doc = "Signed saturating rounding doubling multiply returning high half"]
39240#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_s16)"]
39241#[inline]
39242#[target_feature(enable = "neon")]
39243#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39244#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
39245#[cfg_attr(
39246 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39247 assert_instr(sqrdmulh)
39248)]
39249#[cfg_attr(
39250 not(target_arch = "arm"),
39251 stable(feature = "neon_intrinsics", since = "1.59.0")
39252)]
39253#[cfg_attr(
39254 target_arch = "arm",
39255 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39256)]
39257pub fn vqrdmulhq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
39258 unsafe extern "unadjusted" {
39259 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrdmulh.v8i16")]
39260 #[cfg_attr(
39261 any(target_arch = "aarch64", target_arch = "arm64ec"),
39262 link_name = "llvm.aarch64.neon.sqrdmulh.v8i16"
39263 )]
39264 fn _vqrdmulhq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
39265 }
39266 unsafe { _vqrdmulhq_s16(a, b) }
39267}
39268#[doc = "Signed saturating rounding doubling multiply returning high half"]
39269#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_s32)"]
39270#[inline]
39271#[target_feature(enable = "neon")]
39272#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39273#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
39274#[cfg_attr(
39275 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39276 assert_instr(sqrdmulh)
39277)]
39278#[cfg_attr(
39279 not(target_arch = "arm"),
39280 stable(feature = "neon_intrinsics", since = "1.59.0")
39281)]
39282#[cfg_attr(
39283 target_arch = "arm",
39284 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39285)]
39286pub fn vqrdmulh_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
39287 unsafe extern "unadjusted" {
39288 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrdmulh.v2i32")]
39289 #[cfg_attr(
39290 any(target_arch = "aarch64", target_arch = "arm64ec"),
39291 link_name = "llvm.aarch64.neon.sqrdmulh.v2i32"
39292 )]
39293 fn _vqrdmulh_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
39294 }
39295 unsafe { _vqrdmulh_s32(a, b) }
39296}
39297#[doc = "Signed saturating rounding doubling multiply returning high half"]
39298#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_s32)"]
39299#[inline]
39300#[target_feature(enable = "neon")]
39301#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39302#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
39303#[cfg_attr(
39304 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39305 assert_instr(sqrdmulh)
39306)]
39307#[cfg_attr(
39308 not(target_arch = "arm"),
39309 stable(feature = "neon_intrinsics", since = "1.59.0")
39310)]
39311#[cfg_attr(
39312 target_arch = "arm",
39313 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39314)]
39315pub fn vqrdmulhq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
39316 unsafe extern "unadjusted" {
39317 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrdmulh.v4i32")]
39318 #[cfg_attr(
39319 any(target_arch = "aarch64", target_arch = "arm64ec"),
39320 link_name = "llvm.aarch64.neon.sqrdmulh.v4i32"
39321 )]
39322 fn _vqrdmulhq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
39323 }
39324 unsafe { _vqrdmulhq_s32(a, b) }
39325}
39326#[doc = "Signed saturating rounding shift left"]
39327#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_s8)"]
39328#[inline]
39329#[target_feature(enable = "neon")]
39330#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39331#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39332#[cfg_attr(
39333 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39334 assert_instr(sqrshl)
39335)]
39336#[cfg_attr(
39337 not(target_arch = "arm"),
39338 stable(feature = "neon_intrinsics", since = "1.59.0")
39339)]
39340#[cfg_attr(
39341 target_arch = "arm",
39342 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39343)]
39344pub fn vqrshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
39345 unsafe extern "unadjusted" {
39346 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v8i8")]
39347 #[cfg_attr(
39348 any(target_arch = "aarch64", target_arch = "arm64ec"),
39349 link_name = "llvm.aarch64.neon.sqrshl.v8i8"
39350 )]
39351 fn _vqrshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
39352 }
39353 unsafe { _vqrshl_s8(a, b) }
39354}
39355#[doc = "Signed saturating rounding shift left"]
39356#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_s8)"]
39357#[inline]
39358#[target_feature(enable = "neon")]
39359#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39360#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39361#[cfg_attr(
39362 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39363 assert_instr(sqrshl)
39364)]
39365#[cfg_attr(
39366 not(target_arch = "arm"),
39367 stable(feature = "neon_intrinsics", since = "1.59.0")
39368)]
39369#[cfg_attr(
39370 target_arch = "arm",
39371 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39372)]
39373pub fn vqrshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
39374 unsafe extern "unadjusted" {
39375 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v16i8")]
39376 #[cfg_attr(
39377 any(target_arch = "aarch64", target_arch = "arm64ec"),
39378 link_name = "llvm.aarch64.neon.sqrshl.v16i8"
39379 )]
39380 fn _vqrshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
39381 }
39382 unsafe { _vqrshlq_s8(a, b) }
39383}
39384#[doc = "Signed saturating rounding shift left"]
39385#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_s16)"]
39386#[inline]
39387#[target_feature(enable = "neon")]
39388#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39389#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39390#[cfg_attr(
39391 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39392 assert_instr(sqrshl)
39393)]
39394#[cfg_attr(
39395 not(target_arch = "arm"),
39396 stable(feature = "neon_intrinsics", since = "1.59.0")
39397)]
39398#[cfg_attr(
39399 target_arch = "arm",
39400 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39401)]
39402pub fn vqrshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
39403 unsafe extern "unadjusted" {
39404 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v4i16")]
39405 #[cfg_attr(
39406 any(target_arch = "aarch64", target_arch = "arm64ec"),
39407 link_name = "llvm.aarch64.neon.sqrshl.v4i16"
39408 )]
39409 fn _vqrshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
39410 }
39411 unsafe { _vqrshl_s16(a, b) }
39412}
39413#[doc = "Signed saturating rounding shift left"]
39414#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_s16)"]
39415#[inline]
39416#[target_feature(enable = "neon")]
39417#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39418#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39419#[cfg_attr(
39420 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39421 assert_instr(sqrshl)
39422)]
39423#[cfg_attr(
39424 not(target_arch = "arm"),
39425 stable(feature = "neon_intrinsics", since = "1.59.0")
39426)]
39427#[cfg_attr(
39428 target_arch = "arm",
39429 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39430)]
39431pub fn vqrshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
39432 unsafe extern "unadjusted" {
39433 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v8i16")]
39434 #[cfg_attr(
39435 any(target_arch = "aarch64", target_arch = "arm64ec"),
39436 link_name = "llvm.aarch64.neon.sqrshl.v8i16"
39437 )]
39438 fn _vqrshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
39439 }
39440 unsafe { _vqrshlq_s16(a, b) }
39441}
39442#[doc = "Signed saturating rounding shift left"]
39443#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_s32)"]
39444#[inline]
39445#[target_feature(enable = "neon")]
39446#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39447#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39448#[cfg_attr(
39449 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39450 assert_instr(sqrshl)
39451)]
39452#[cfg_attr(
39453 not(target_arch = "arm"),
39454 stable(feature = "neon_intrinsics", since = "1.59.0")
39455)]
39456#[cfg_attr(
39457 target_arch = "arm",
39458 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39459)]
39460pub fn vqrshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
39461 unsafe extern "unadjusted" {
39462 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v2i32")]
39463 #[cfg_attr(
39464 any(target_arch = "aarch64", target_arch = "arm64ec"),
39465 link_name = "llvm.aarch64.neon.sqrshl.v2i32"
39466 )]
39467 fn _vqrshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
39468 }
39469 unsafe { _vqrshl_s32(a, b) }
39470}
39471#[doc = "Signed saturating rounding shift left"]
39472#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_s32)"]
39473#[inline]
39474#[target_feature(enable = "neon")]
39475#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39476#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39477#[cfg_attr(
39478 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39479 assert_instr(sqrshl)
39480)]
39481#[cfg_attr(
39482 not(target_arch = "arm"),
39483 stable(feature = "neon_intrinsics", since = "1.59.0")
39484)]
39485#[cfg_attr(
39486 target_arch = "arm",
39487 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39488)]
39489pub fn vqrshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
39490 unsafe extern "unadjusted" {
39491 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v4i32")]
39492 #[cfg_attr(
39493 any(target_arch = "aarch64", target_arch = "arm64ec"),
39494 link_name = "llvm.aarch64.neon.sqrshl.v4i32"
39495 )]
39496 fn _vqrshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
39497 }
39498 unsafe { _vqrshlq_s32(a, b) }
39499}
39500#[doc = "Signed saturating rounding shift left"]
39501#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_s64)"]
39502#[inline]
39503#[target_feature(enable = "neon")]
39504#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39505#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39506#[cfg_attr(
39507 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39508 assert_instr(sqrshl)
39509)]
39510#[cfg_attr(
39511 not(target_arch = "arm"),
39512 stable(feature = "neon_intrinsics", since = "1.59.0")
39513)]
39514#[cfg_attr(
39515 target_arch = "arm",
39516 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39517)]
39518pub fn vqrshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
39519 unsafe extern "unadjusted" {
39520 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v1i64")]
39521 #[cfg_attr(
39522 any(target_arch = "aarch64", target_arch = "arm64ec"),
39523 link_name = "llvm.aarch64.neon.sqrshl.v1i64"
39524 )]
39525 fn _vqrshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t;
39526 }
39527 unsafe { _vqrshl_s64(a, b) }
39528}
39529#[doc = "Signed saturating rounding shift left"]
39530#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_s64)"]
39531#[inline]
39532#[target_feature(enable = "neon")]
39533#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39534#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39535#[cfg_attr(
39536 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39537 assert_instr(sqrshl)
39538)]
39539#[cfg_attr(
39540 not(target_arch = "arm"),
39541 stable(feature = "neon_intrinsics", since = "1.59.0")
39542)]
39543#[cfg_attr(
39544 target_arch = "arm",
39545 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39546)]
39547pub fn vqrshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
39548 unsafe extern "unadjusted" {
39549 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v2i64")]
39550 #[cfg_attr(
39551 any(target_arch = "aarch64", target_arch = "arm64ec"),
39552 link_name = "llvm.aarch64.neon.sqrshl.v2i64"
39553 )]
39554 fn _vqrshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t;
39555 }
39556 unsafe { _vqrshlq_s64(a, b) }
39557}
39558#[doc = "Unsigned signed saturating rounding shift left"]
39559#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_u8)"]
39560#[inline]
39561#[target_feature(enable = "neon")]
39562#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39563#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39564#[cfg_attr(
39565 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39566 assert_instr(uqrshl)
39567)]
39568#[cfg_attr(
39569 not(target_arch = "arm"),
39570 stable(feature = "neon_intrinsics", since = "1.59.0")
39571)]
39572#[cfg_attr(
39573 target_arch = "arm",
39574 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39575)]
39576pub fn vqrshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t {
39577 unsafe extern "unadjusted" {
39578 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v8i8")]
39579 #[cfg_attr(
39580 any(target_arch = "aarch64", target_arch = "arm64ec"),
39581 link_name = "llvm.aarch64.neon.uqrshl.v8i8"
39582 )]
39583 fn _vqrshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t;
39584 }
39585 unsafe { _vqrshl_u8(a, b) }
39586}
39587#[doc = "Unsigned signed saturating rounding shift left"]
39588#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_u8)"]
39589#[inline]
39590#[target_feature(enable = "neon")]
39591#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39592#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39593#[cfg_attr(
39594 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39595 assert_instr(uqrshl)
39596)]
39597#[cfg_attr(
39598 not(target_arch = "arm"),
39599 stable(feature = "neon_intrinsics", since = "1.59.0")
39600)]
39601#[cfg_attr(
39602 target_arch = "arm",
39603 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39604)]
39605pub fn vqrshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t {
39606 unsafe extern "unadjusted" {
39607 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v16i8")]
39608 #[cfg_attr(
39609 any(target_arch = "aarch64", target_arch = "arm64ec"),
39610 link_name = "llvm.aarch64.neon.uqrshl.v16i8"
39611 )]
39612 fn _vqrshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t;
39613 }
39614 unsafe { _vqrshlq_u8(a, b) }
39615}
39616#[doc = "Unsigned signed saturating rounding shift left"]
39617#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_u16)"]
39618#[inline]
39619#[target_feature(enable = "neon")]
39620#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39621#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39622#[cfg_attr(
39623 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39624 assert_instr(uqrshl)
39625)]
39626#[cfg_attr(
39627 not(target_arch = "arm"),
39628 stable(feature = "neon_intrinsics", since = "1.59.0")
39629)]
39630#[cfg_attr(
39631 target_arch = "arm",
39632 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39633)]
39634pub fn vqrshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t {
39635 unsafe extern "unadjusted" {
39636 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v4i16")]
39637 #[cfg_attr(
39638 any(target_arch = "aarch64", target_arch = "arm64ec"),
39639 link_name = "llvm.aarch64.neon.uqrshl.v4i16"
39640 )]
39641 fn _vqrshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t;
39642 }
39643 unsafe { _vqrshl_u16(a, b) }
39644}
39645#[doc = "Unsigned signed saturating rounding shift left"]
39646#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_u16)"]
39647#[inline]
39648#[target_feature(enable = "neon")]
39649#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39650#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39651#[cfg_attr(
39652 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39653 assert_instr(uqrshl)
39654)]
39655#[cfg_attr(
39656 not(target_arch = "arm"),
39657 stable(feature = "neon_intrinsics", since = "1.59.0")
39658)]
39659#[cfg_attr(
39660 target_arch = "arm",
39661 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39662)]
39663pub fn vqrshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t {
39664 unsafe extern "unadjusted" {
39665 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v8i16")]
39666 #[cfg_attr(
39667 any(target_arch = "aarch64", target_arch = "arm64ec"),
39668 link_name = "llvm.aarch64.neon.uqrshl.v8i16"
39669 )]
39670 fn _vqrshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t;
39671 }
39672 unsafe { _vqrshlq_u16(a, b) }
39673}
39674#[doc = "Unsigned signed saturating rounding shift left"]
39675#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_u32)"]
39676#[inline]
39677#[target_feature(enable = "neon")]
39678#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39679#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39680#[cfg_attr(
39681 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39682 assert_instr(uqrshl)
39683)]
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 vqrshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t {
39693 unsafe extern "unadjusted" {
39694 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v2i32")]
39695 #[cfg_attr(
39696 any(target_arch = "aarch64", target_arch = "arm64ec"),
39697 link_name = "llvm.aarch64.neon.uqrshl.v2i32"
39698 )]
39699 fn _vqrshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t;
39700 }
39701 unsafe { _vqrshl_u32(a, b) }
39702}
39703#[doc = "Unsigned signed saturating rounding shift left"]
39704#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_u32)"]
39705#[inline]
39706#[target_feature(enable = "neon")]
39707#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39708#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39709#[cfg_attr(
39710 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39711 assert_instr(uqrshl)
39712)]
39713#[cfg_attr(
39714 not(target_arch = "arm"),
39715 stable(feature = "neon_intrinsics", since = "1.59.0")
39716)]
39717#[cfg_attr(
39718 target_arch = "arm",
39719 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39720)]
39721pub fn vqrshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t {
39722 unsafe extern "unadjusted" {
39723 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v4i32")]
39724 #[cfg_attr(
39725 any(target_arch = "aarch64", target_arch = "arm64ec"),
39726 link_name = "llvm.aarch64.neon.uqrshl.v4i32"
39727 )]
39728 fn _vqrshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t;
39729 }
39730 unsafe { _vqrshlq_u32(a, b) }
39731}
39732#[doc = "Unsigned signed saturating rounding shift left"]
39733#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_u64)"]
39734#[inline]
39735#[target_feature(enable = "neon")]
39736#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39737#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39738#[cfg_attr(
39739 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39740 assert_instr(uqrshl)
39741)]
39742#[cfg_attr(
39743 not(target_arch = "arm"),
39744 stable(feature = "neon_intrinsics", since = "1.59.0")
39745)]
39746#[cfg_attr(
39747 target_arch = "arm",
39748 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39749)]
39750pub fn vqrshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t {
39751 unsafe extern "unadjusted" {
39752 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v1i64")]
39753 #[cfg_attr(
39754 any(target_arch = "aarch64", target_arch = "arm64ec"),
39755 link_name = "llvm.aarch64.neon.uqrshl.v1i64"
39756 )]
39757 fn _vqrshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t;
39758 }
39759 unsafe { _vqrshl_u64(a, b) }
39760}
39761#[doc = "Unsigned signed saturating rounding shift left"]
39762#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_u64)"]
39763#[inline]
39764#[target_feature(enable = "neon")]
39765#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39766#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
39767#[cfg_attr(
39768 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39769 assert_instr(uqrshl)
39770)]
39771#[cfg_attr(
39772 not(target_arch = "arm"),
39773 stable(feature = "neon_intrinsics", since = "1.59.0")
39774)]
39775#[cfg_attr(
39776 target_arch = "arm",
39777 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39778)]
39779pub fn vqrshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t {
39780 unsafe extern "unadjusted" {
39781 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v2i64")]
39782 #[cfg_attr(
39783 any(target_arch = "aarch64", target_arch = "arm64ec"),
39784 link_name = "llvm.aarch64.neon.uqrshl.v2i64"
39785 )]
39786 fn _vqrshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t;
39787 }
39788 unsafe { _vqrshlq_u64(a, b) }
39789}
39790#[doc = "Signed saturating rounded shift right narrow"]
39791#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s16)"]
39792#[inline]
39793#[cfg(target_arch = "arm")]
39794#[target_feature(enable = "neon,v7")]
39795#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
39796#[rustc_legacy_const_generics(1)]
39797#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
39798pub fn vqrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
39799 static_assert!(N >= 1 && N <= 8);
39800 unsafe extern "unadjusted" {
39801 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v8i8")]
39802 fn _vqrshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;
39803 }
39804 unsafe { _vqrshrn_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
39805}
39806#[doc = "Signed saturating rounded shift right narrow"]
39807#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s32)"]
39808#[inline]
39809#[cfg(target_arch = "arm")]
39810#[target_feature(enable = "neon,v7")]
39811#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
39812#[rustc_legacy_const_generics(1)]
39813#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
39814pub fn vqrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
39815 static_assert!(N >= 1 && N <= 16);
39816 unsafe extern "unadjusted" {
39817 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v4i16")]
39818 fn _vqrshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;
39819 }
39820 unsafe { _vqrshrn_n_s32(a, const { int32x4_t([-N; 4]) }) }
39821}
39822#[doc = "Signed saturating rounded shift right narrow"]
39823#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s64)"]
39824#[inline]
39825#[cfg(target_arch = "arm")]
39826#[target_feature(enable = "neon,v7")]
39827#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
39828#[rustc_legacy_const_generics(1)]
39829#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
39830pub fn vqrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
39831 static_assert!(N >= 1 && N <= 32);
39832 unsafe extern "unadjusted" {
39833 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v2i32")]
39834 fn _vqrshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;
39835 }
39836 unsafe { _vqrshrn_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
39837}
39838#[doc = "Signed saturating rounded shift right narrow"]
39839#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s16)"]
39840#[inline]
39841#[target_feature(enable = "neon")]
39842#[cfg(not(target_arch = "arm"))]
39843#[cfg_attr(test, assert_instr(sqrshrn, N = 2))]
39844#[rustc_legacy_const_generics(1)]
39845#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39846pub fn vqrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
39847 static_assert!(N >= 1 && N <= 8);
39848 unsafe extern "unadjusted" {
39849 #[cfg_attr(
39850 any(target_arch = "aarch64", target_arch = "arm64ec"),
39851 link_name = "llvm.aarch64.neon.sqrshrn.v8i8"
39852 )]
39853 fn _vqrshrn_n_s16(a: int16x8_t, n: i32) -> int8x8_t;
39854 }
39855 unsafe { _vqrshrn_n_s16(a, N) }
39856}
39857#[doc = "Signed saturating rounded shift right narrow"]
39858#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s32)"]
39859#[inline]
39860#[target_feature(enable = "neon")]
39861#[cfg(not(target_arch = "arm"))]
39862#[cfg_attr(test, assert_instr(sqrshrn, N = 2))]
39863#[rustc_legacy_const_generics(1)]
39864#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39865pub fn vqrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
39866 static_assert!(N >= 1 && N <= 16);
39867 unsafe extern "unadjusted" {
39868 #[cfg_attr(
39869 any(target_arch = "aarch64", target_arch = "arm64ec"),
39870 link_name = "llvm.aarch64.neon.sqrshrn.v4i16"
39871 )]
39872 fn _vqrshrn_n_s32(a: int32x4_t, n: i32) -> int16x4_t;
39873 }
39874 unsafe { _vqrshrn_n_s32(a, N) }
39875}
39876#[doc = "Signed saturating rounded shift right narrow"]
39877#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s64)"]
39878#[inline]
39879#[target_feature(enable = "neon")]
39880#[cfg(not(target_arch = "arm"))]
39881#[cfg_attr(test, assert_instr(sqrshrn, N = 2))]
39882#[rustc_legacy_const_generics(1)]
39883#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39884pub fn vqrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
39885 static_assert!(N >= 1 && N <= 32);
39886 unsafe extern "unadjusted" {
39887 #[cfg_attr(
39888 any(target_arch = "aarch64", target_arch = "arm64ec"),
39889 link_name = "llvm.aarch64.neon.sqrshrn.v2i32"
39890 )]
39891 fn _vqrshrn_n_s64(a: int64x2_t, n: i32) -> int32x2_t;
39892 }
39893 unsafe { _vqrshrn_n_s64(a, N) }
39894}
39895#[doc = "Unsigned signed saturating rounded shift right narrow"]
39896#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u16)"]
39897#[inline]
39898#[cfg(target_arch = "arm")]
39899#[target_feature(enable = "neon,v7")]
39900#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
39901#[rustc_legacy_const_generics(1)]
39902#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
39903pub fn vqrshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
39904 static_assert!(N >= 1 && N <= 8);
39905 unsafe extern "unadjusted" {
39906 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnu.v8i8")]
39907 fn _vqrshrn_n_u16(a: uint16x8_t, n: uint16x8_t) -> uint8x8_t;
39908 }
39909 unsafe {
39910 _vqrshrn_n_u16(
39911 a,
39912 const {
39913 uint16x8_t([
39914 -N as u16, -N as u16, -N as u16, -N as u16, -N as u16, -N as u16, -N as u16,
39915 -N as u16,
39916 ])
39917 },
39918 )
39919 }
39920}
39921#[doc = "Unsigned signed saturating rounded shift right narrow"]
39922#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u32)"]
39923#[inline]
39924#[cfg(target_arch = "arm")]
39925#[target_feature(enable = "neon,v7")]
39926#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
39927#[rustc_legacy_const_generics(1)]
39928#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
39929pub fn vqrshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
39930 static_assert!(N >= 1 && N <= 16);
39931 unsafe extern "unadjusted" {
39932 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnu.v4i16")]
39933 fn _vqrshrn_n_u32(a: uint32x4_t, n: uint32x4_t) -> uint16x4_t;
39934 }
39935 unsafe {
39936 _vqrshrn_n_u32(
39937 a,
39938 const { uint32x4_t([-N as u32, -N as u32, -N as u32, -N as u32]) },
39939 )
39940 }
39941}
39942#[doc = "Unsigned signed saturating rounded shift right narrow"]
39943#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u64)"]
39944#[inline]
39945#[cfg(target_arch = "arm")]
39946#[target_feature(enable = "neon,v7")]
39947#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
39948#[rustc_legacy_const_generics(1)]
39949#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
39950pub fn vqrshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
39951 static_assert!(N >= 1 && N <= 32);
39952 unsafe extern "unadjusted" {
39953 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnu.v2i32")]
39954 fn _vqrshrn_n_u64(a: uint64x2_t, n: uint64x2_t) -> uint32x2_t;
39955 }
39956 unsafe { _vqrshrn_n_u64(a, const { uint64x2_t([-N as u64, -N as u64]) }) }
39957}
39958#[doc = "Unsigned signed saturating rounded shift right narrow"]
39959#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u16)"]
39960#[inline]
39961#[target_feature(enable = "neon")]
39962#[cfg(not(target_arch = "arm"))]
39963#[cfg_attr(test, assert_instr(uqrshrn, N = 2))]
39964#[rustc_legacy_const_generics(1)]
39965#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39966pub fn vqrshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
39967 static_assert!(N >= 1 && N <= 8);
39968 unsafe extern "unadjusted" {
39969 #[cfg_attr(
39970 any(target_arch = "aarch64", target_arch = "arm64ec"),
39971 link_name = "llvm.aarch64.neon.uqrshrn.v8i8"
39972 )]
39973 fn _vqrshrn_n_u16(a: uint16x8_t, n: i32) -> uint8x8_t;
39974 }
39975 unsafe { _vqrshrn_n_u16(a, N) }
39976}
39977#[doc = "Unsigned signed saturating rounded shift right narrow"]
39978#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u32)"]
39979#[inline]
39980#[target_feature(enable = "neon")]
39981#[cfg(not(target_arch = "arm"))]
39982#[cfg_attr(test, assert_instr(uqrshrn, N = 2))]
39983#[rustc_legacy_const_generics(1)]
39984#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39985pub fn vqrshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
39986 static_assert!(N >= 1 && N <= 16);
39987 unsafe extern "unadjusted" {
39988 #[cfg_attr(
39989 any(target_arch = "aarch64", target_arch = "arm64ec"),
39990 link_name = "llvm.aarch64.neon.uqrshrn.v4i16"
39991 )]
39992 fn _vqrshrn_n_u32(a: uint32x4_t, n: i32) -> uint16x4_t;
39993 }
39994 unsafe { _vqrshrn_n_u32(a, N) }
39995}
39996#[doc = "Unsigned signed saturating rounded shift right narrow"]
39997#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u64)"]
39998#[inline]
39999#[target_feature(enable = "neon")]
40000#[cfg(not(target_arch = "arm"))]
40001#[cfg_attr(test, assert_instr(uqrshrn, N = 2))]
40002#[rustc_legacy_const_generics(1)]
40003#[stable(feature = "neon_intrinsics", since = "1.59.0")]
40004pub fn vqrshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
40005 static_assert!(N >= 1 && N <= 32);
40006 unsafe extern "unadjusted" {
40007 #[cfg_attr(
40008 any(target_arch = "aarch64", target_arch = "arm64ec"),
40009 link_name = "llvm.aarch64.neon.uqrshrn.v2i32"
40010 )]
40011 fn _vqrshrn_n_u64(a: uint64x2_t, n: i32) -> uint32x2_t;
40012 }
40013 unsafe { _vqrshrn_n_u64(a, N) }
40014}
40015#[doc = "Signed saturating rounded shift right unsigned narrow"]
40016#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s16)"]
40017#[inline]
40018#[cfg(target_arch = "arm")]
40019#[target_feature(enable = "neon,v7")]
40020#[cfg_attr(test, assert_instr(vqrshrun, N = 2))]
40021#[rustc_legacy_const_generics(1)]
40022#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40023pub fn vqrshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
40024 static_assert!(N >= 1 && N <= 8);
40025 unsafe extern "unadjusted" {
40026 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v8i8")]
40027 fn _vqrshrun_n_s16(a: int16x8_t, n: int16x8_t) -> uint8x8_t;
40028 }
40029 unsafe { _vqrshrun_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
40030}
40031#[doc = "Signed saturating rounded shift right unsigned narrow"]
40032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s32)"]
40033#[inline]
40034#[cfg(target_arch = "arm")]
40035#[target_feature(enable = "neon,v7")]
40036#[cfg_attr(test, assert_instr(vqrshrun, N = 2))]
40037#[rustc_legacy_const_generics(1)]
40038#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40039pub fn vqrshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
40040 static_assert!(N >= 1 && N <= 16);
40041 unsafe extern "unadjusted" {
40042 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v4i16")]
40043 fn _vqrshrun_n_s32(a: int32x4_t, n: int32x4_t) -> uint16x4_t;
40044 }
40045 unsafe { _vqrshrun_n_s32(a, const { int32x4_t([-N; 4]) }) }
40046}
40047#[doc = "Signed saturating rounded shift right unsigned narrow"]
40048#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s64)"]
40049#[inline]
40050#[cfg(target_arch = "arm")]
40051#[target_feature(enable = "neon,v7")]
40052#[cfg_attr(test, assert_instr(vqrshrun, N = 2))]
40053#[rustc_legacy_const_generics(1)]
40054#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40055pub fn vqrshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
40056 static_assert!(N >= 1 && N <= 32);
40057 unsafe extern "unadjusted" {
40058 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v2i32")]
40059 fn _vqrshrun_n_s64(a: int64x2_t, n: int64x2_t) -> uint32x2_t;
40060 }
40061 unsafe { _vqrshrun_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
40062}
40063#[doc = "Signed saturating rounded shift right unsigned narrow"]
40064#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s16)"]
40065#[inline]
40066#[target_feature(enable = "neon")]
40067#[cfg(not(target_arch = "arm"))]
40068#[cfg_attr(test, assert_instr(sqrshrun, N = 2))]
40069#[rustc_legacy_const_generics(1)]
40070#[stable(feature = "neon_intrinsics", since = "1.59.0")]
40071pub fn vqrshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
40072 static_assert!(N >= 1 && N <= 8);
40073 unsafe extern "unadjusted" {
40074 #[cfg_attr(
40075 any(target_arch = "aarch64", target_arch = "arm64ec"),
40076 link_name = "llvm.aarch64.neon.sqrshrun.v8i8"
40077 )]
40078 fn _vqrshrun_n_s16(a: int16x8_t, n: i32) -> uint8x8_t;
40079 }
40080 unsafe { _vqrshrun_n_s16(a, N) }
40081}
40082#[doc = "Signed saturating rounded shift right unsigned narrow"]
40083#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s32)"]
40084#[inline]
40085#[target_feature(enable = "neon")]
40086#[cfg(not(target_arch = "arm"))]
40087#[cfg_attr(test, assert_instr(sqrshrun, N = 2))]
40088#[rustc_legacy_const_generics(1)]
40089#[stable(feature = "neon_intrinsics", since = "1.59.0")]
40090pub fn vqrshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
40091 static_assert!(N >= 1 && N <= 16);
40092 unsafe extern "unadjusted" {
40093 #[cfg_attr(
40094 any(target_arch = "aarch64", target_arch = "arm64ec"),
40095 link_name = "llvm.aarch64.neon.sqrshrun.v4i16"
40096 )]
40097 fn _vqrshrun_n_s32(a: int32x4_t, n: i32) -> uint16x4_t;
40098 }
40099 unsafe { _vqrshrun_n_s32(a, N) }
40100}
40101#[doc = "Signed saturating rounded shift right unsigned narrow"]
40102#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s64)"]
40103#[inline]
40104#[target_feature(enable = "neon")]
40105#[cfg(not(target_arch = "arm"))]
40106#[cfg_attr(test, assert_instr(sqrshrun, N = 2))]
40107#[rustc_legacy_const_generics(1)]
40108#[stable(feature = "neon_intrinsics", since = "1.59.0")]
40109pub fn vqrshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
40110 static_assert!(N >= 1 && N <= 32);
40111 unsafe extern "unadjusted" {
40112 #[cfg_attr(
40113 any(target_arch = "aarch64", target_arch = "arm64ec"),
40114 link_name = "llvm.aarch64.neon.sqrshrun.v2i32"
40115 )]
40116 fn _vqrshrun_n_s64(a: int64x2_t, n: i32) -> uint32x2_t;
40117 }
40118 unsafe { _vqrshrun_n_s64(a, N) }
40119}
40120#[doc = "Signed saturating shift left"]
40121#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_s8)"]
40122#[inline]
40123#[target_feature(enable = "neon")]
40124#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40125#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
40126#[cfg_attr(
40127 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40128 assert_instr(sqshl, N = 2)
40129)]
40130#[rustc_legacy_const_generics(1)]
40131#[cfg_attr(
40132 not(target_arch = "arm"),
40133 stable(feature = "neon_intrinsics", since = "1.59.0")
40134)]
40135#[cfg_attr(
40136 target_arch = "arm",
40137 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40138)]
40139pub fn vqshl_n_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
40140 static_assert_uimm_bits!(N, 3);
40141 vqshl_s8(a, vdup_n_s8(N as _))
40142}
40143#[doc = "Signed saturating shift left"]
40144#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_s8)"]
40145#[inline]
40146#[target_feature(enable = "neon")]
40147#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40148#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
40149#[cfg_attr(
40150 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40151 assert_instr(sqshl, N = 2)
40152)]
40153#[rustc_legacy_const_generics(1)]
40154#[cfg_attr(
40155 not(target_arch = "arm"),
40156 stable(feature = "neon_intrinsics", since = "1.59.0")
40157)]
40158#[cfg_attr(
40159 target_arch = "arm",
40160 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40161)]
40162pub fn vqshlq_n_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
40163 static_assert_uimm_bits!(N, 3);
40164 vqshlq_s8(a, vdupq_n_s8(N as _))
40165}
40166#[doc = "Signed saturating shift left"]
40167#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_s16)"]
40168#[inline]
40169#[target_feature(enable = "neon")]
40170#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40171#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
40172#[cfg_attr(
40173 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40174 assert_instr(sqshl, N = 2)
40175)]
40176#[rustc_legacy_const_generics(1)]
40177#[cfg_attr(
40178 not(target_arch = "arm"),
40179 stable(feature = "neon_intrinsics", since = "1.59.0")
40180)]
40181#[cfg_attr(
40182 target_arch = "arm",
40183 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40184)]
40185pub fn vqshl_n_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
40186 static_assert_uimm_bits!(N, 4);
40187 vqshl_s16(a, vdup_n_s16(N as _))
40188}
40189#[doc = "Signed saturating shift left"]
40190#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_s16)"]
40191#[inline]
40192#[target_feature(enable = "neon")]
40193#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40194#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
40195#[cfg_attr(
40196 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40197 assert_instr(sqshl, N = 2)
40198)]
40199#[rustc_legacy_const_generics(1)]
40200#[cfg_attr(
40201 not(target_arch = "arm"),
40202 stable(feature = "neon_intrinsics", since = "1.59.0")
40203)]
40204#[cfg_attr(
40205 target_arch = "arm",
40206 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40207)]
40208pub fn vqshlq_n_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
40209 static_assert_uimm_bits!(N, 4);
40210 vqshlq_s16(a, vdupq_n_s16(N as _))
40211}
40212#[doc = "Signed saturating shift left"]
40213#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_s32)"]
40214#[inline]
40215#[target_feature(enable = "neon")]
40216#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40217#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
40218#[cfg_attr(
40219 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40220 assert_instr(sqshl, N = 2)
40221)]
40222#[rustc_legacy_const_generics(1)]
40223#[cfg_attr(
40224 not(target_arch = "arm"),
40225 stable(feature = "neon_intrinsics", since = "1.59.0")
40226)]
40227#[cfg_attr(
40228 target_arch = "arm",
40229 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40230)]
40231pub fn vqshl_n_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
40232 static_assert_uimm_bits!(N, 5);
40233 vqshl_s32(a, vdup_n_s32(N as _))
40234}
40235#[doc = "Signed saturating shift left"]
40236#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_s32)"]
40237#[inline]
40238#[target_feature(enable = "neon")]
40239#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40240#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
40241#[cfg_attr(
40242 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40243 assert_instr(sqshl, N = 2)
40244)]
40245#[rustc_legacy_const_generics(1)]
40246#[cfg_attr(
40247 not(target_arch = "arm"),
40248 stable(feature = "neon_intrinsics", since = "1.59.0")
40249)]
40250#[cfg_attr(
40251 target_arch = "arm",
40252 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40253)]
40254pub fn vqshlq_n_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
40255 static_assert_uimm_bits!(N, 5);
40256 vqshlq_s32(a, vdupq_n_s32(N as _))
40257}
40258#[doc = "Signed saturating shift left"]
40259#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_s64)"]
40260#[inline]
40261#[target_feature(enable = "neon")]
40262#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40263#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
40264#[cfg_attr(
40265 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40266 assert_instr(sqshl, N = 2)
40267)]
40268#[rustc_legacy_const_generics(1)]
40269#[cfg_attr(
40270 not(target_arch = "arm"),
40271 stable(feature = "neon_intrinsics", since = "1.59.0")
40272)]
40273#[cfg_attr(
40274 target_arch = "arm",
40275 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40276)]
40277pub fn vqshl_n_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
40278 static_assert_uimm_bits!(N, 6);
40279 vqshl_s64(a, vdup_n_s64(N as _))
40280}
40281#[doc = "Signed saturating shift left"]
40282#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_s64)"]
40283#[inline]
40284#[target_feature(enable = "neon")]
40285#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40286#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
40287#[cfg_attr(
40288 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40289 assert_instr(sqshl, N = 2)
40290)]
40291#[rustc_legacy_const_generics(1)]
40292#[cfg_attr(
40293 not(target_arch = "arm"),
40294 stable(feature = "neon_intrinsics", since = "1.59.0")
40295)]
40296#[cfg_attr(
40297 target_arch = "arm",
40298 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40299)]
40300pub fn vqshlq_n_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
40301 static_assert_uimm_bits!(N, 6);
40302 vqshlq_s64(a, vdupq_n_s64(N as _))
40303}
40304#[doc = "Unsigned saturating shift left"]
40305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_u8)"]
40306#[inline]
40307#[target_feature(enable = "neon")]
40308#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40309#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
40310#[cfg_attr(
40311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40312 assert_instr(uqshl, N = 2)
40313)]
40314#[rustc_legacy_const_generics(1)]
40315#[cfg_attr(
40316 not(target_arch = "arm"),
40317 stable(feature = "neon_intrinsics", since = "1.59.0")
40318)]
40319#[cfg_attr(
40320 target_arch = "arm",
40321 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40322)]
40323pub fn vqshl_n_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
40324 static_assert_uimm_bits!(N, 3);
40325 vqshl_u8(a, vdup_n_s8(N as _))
40326}
40327#[doc = "Unsigned saturating shift left"]
40328#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_u8)"]
40329#[inline]
40330#[target_feature(enable = "neon")]
40331#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40332#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
40333#[cfg_attr(
40334 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40335 assert_instr(uqshl, N = 2)
40336)]
40337#[rustc_legacy_const_generics(1)]
40338#[cfg_attr(
40339 not(target_arch = "arm"),
40340 stable(feature = "neon_intrinsics", since = "1.59.0")
40341)]
40342#[cfg_attr(
40343 target_arch = "arm",
40344 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40345)]
40346pub fn vqshlq_n_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
40347 static_assert_uimm_bits!(N, 3);
40348 vqshlq_u8(a, vdupq_n_s8(N as _))
40349}
40350#[doc = "Unsigned saturating shift left"]
40351#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_u16)"]
40352#[inline]
40353#[target_feature(enable = "neon")]
40354#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40355#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
40356#[cfg_attr(
40357 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40358 assert_instr(uqshl, N = 2)
40359)]
40360#[rustc_legacy_const_generics(1)]
40361#[cfg_attr(
40362 not(target_arch = "arm"),
40363 stable(feature = "neon_intrinsics", since = "1.59.0")
40364)]
40365#[cfg_attr(
40366 target_arch = "arm",
40367 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40368)]
40369pub fn vqshl_n_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
40370 static_assert_uimm_bits!(N, 4);
40371 vqshl_u16(a, vdup_n_s16(N as _))
40372}
40373#[doc = "Unsigned saturating shift left"]
40374#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_u16)"]
40375#[inline]
40376#[target_feature(enable = "neon")]
40377#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40378#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
40379#[cfg_attr(
40380 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40381 assert_instr(uqshl, N = 2)
40382)]
40383#[rustc_legacy_const_generics(1)]
40384#[cfg_attr(
40385 not(target_arch = "arm"),
40386 stable(feature = "neon_intrinsics", since = "1.59.0")
40387)]
40388#[cfg_attr(
40389 target_arch = "arm",
40390 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40391)]
40392pub fn vqshlq_n_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
40393 static_assert_uimm_bits!(N, 4);
40394 vqshlq_u16(a, vdupq_n_s16(N as _))
40395}
40396#[doc = "Unsigned saturating shift left"]
40397#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_u32)"]
40398#[inline]
40399#[target_feature(enable = "neon")]
40400#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40401#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
40402#[cfg_attr(
40403 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40404 assert_instr(uqshl, N = 2)
40405)]
40406#[rustc_legacy_const_generics(1)]
40407#[cfg_attr(
40408 not(target_arch = "arm"),
40409 stable(feature = "neon_intrinsics", since = "1.59.0")
40410)]
40411#[cfg_attr(
40412 target_arch = "arm",
40413 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40414)]
40415pub fn vqshl_n_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
40416 static_assert_uimm_bits!(N, 5);
40417 vqshl_u32(a, vdup_n_s32(N as _))
40418}
40419#[doc = "Unsigned saturating shift left"]
40420#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_u32)"]
40421#[inline]
40422#[target_feature(enable = "neon")]
40423#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40424#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
40425#[cfg_attr(
40426 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40427 assert_instr(uqshl, N = 2)
40428)]
40429#[rustc_legacy_const_generics(1)]
40430#[cfg_attr(
40431 not(target_arch = "arm"),
40432 stable(feature = "neon_intrinsics", since = "1.59.0")
40433)]
40434#[cfg_attr(
40435 target_arch = "arm",
40436 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40437)]
40438pub fn vqshlq_n_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
40439 static_assert_uimm_bits!(N, 5);
40440 vqshlq_u32(a, vdupq_n_s32(N as _))
40441}
40442#[doc = "Unsigned saturating shift left"]
40443#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_u64)"]
40444#[inline]
40445#[target_feature(enable = "neon")]
40446#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40447#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
40448#[cfg_attr(
40449 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40450 assert_instr(uqshl, N = 2)
40451)]
40452#[rustc_legacy_const_generics(1)]
40453#[cfg_attr(
40454 not(target_arch = "arm"),
40455 stable(feature = "neon_intrinsics", since = "1.59.0")
40456)]
40457#[cfg_attr(
40458 target_arch = "arm",
40459 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40460)]
40461pub fn vqshl_n_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
40462 static_assert_uimm_bits!(N, 6);
40463 vqshl_u64(a, vdup_n_s64(N as _))
40464}
40465#[doc = "Unsigned saturating shift left"]
40466#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_u64)"]
40467#[inline]
40468#[target_feature(enable = "neon")]
40469#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40470#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
40471#[cfg_attr(
40472 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40473 assert_instr(uqshl, N = 2)
40474)]
40475#[rustc_legacy_const_generics(1)]
40476#[cfg_attr(
40477 not(target_arch = "arm"),
40478 stable(feature = "neon_intrinsics", since = "1.59.0")
40479)]
40480#[cfg_attr(
40481 target_arch = "arm",
40482 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40483)]
40484pub fn vqshlq_n_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
40485 static_assert_uimm_bits!(N, 6);
40486 vqshlq_u64(a, vdupq_n_s64(N as _))
40487}
40488#[doc = "Signed saturating shift left"]
40489#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_s8)"]
40490#[inline]
40491#[target_feature(enable = "neon")]
40492#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40493#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40494#[cfg_attr(
40495 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40496 assert_instr(sqshl)
40497)]
40498#[cfg_attr(
40499 not(target_arch = "arm"),
40500 stable(feature = "neon_intrinsics", since = "1.59.0")
40501)]
40502#[cfg_attr(
40503 target_arch = "arm",
40504 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40505)]
40506pub fn vqshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
40507 unsafe extern "unadjusted" {
40508 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v8i8")]
40509 #[cfg_attr(
40510 any(target_arch = "aarch64", target_arch = "arm64ec"),
40511 link_name = "llvm.aarch64.neon.sqshl.v8i8"
40512 )]
40513 fn _vqshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
40514 }
40515 unsafe { _vqshl_s8(a, b) }
40516}
40517#[doc = "Signed saturating shift left"]
40518#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_s8)"]
40519#[inline]
40520#[target_feature(enable = "neon")]
40521#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40522#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40523#[cfg_attr(
40524 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40525 assert_instr(sqshl)
40526)]
40527#[cfg_attr(
40528 not(target_arch = "arm"),
40529 stable(feature = "neon_intrinsics", since = "1.59.0")
40530)]
40531#[cfg_attr(
40532 target_arch = "arm",
40533 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40534)]
40535pub fn vqshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
40536 unsafe extern "unadjusted" {
40537 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v16i8")]
40538 #[cfg_attr(
40539 any(target_arch = "aarch64", target_arch = "arm64ec"),
40540 link_name = "llvm.aarch64.neon.sqshl.v16i8"
40541 )]
40542 fn _vqshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
40543 }
40544 unsafe { _vqshlq_s8(a, b) }
40545}
40546#[doc = "Signed saturating shift left"]
40547#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_s16)"]
40548#[inline]
40549#[target_feature(enable = "neon")]
40550#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40551#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40552#[cfg_attr(
40553 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40554 assert_instr(sqshl)
40555)]
40556#[cfg_attr(
40557 not(target_arch = "arm"),
40558 stable(feature = "neon_intrinsics", since = "1.59.0")
40559)]
40560#[cfg_attr(
40561 target_arch = "arm",
40562 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40563)]
40564pub fn vqshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
40565 unsafe extern "unadjusted" {
40566 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v4i16")]
40567 #[cfg_attr(
40568 any(target_arch = "aarch64", target_arch = "arm64ec"),
40569 link_name = "llvm.aarch64.neon.sqshl.v4i16"
40570 )]
40571 fn _vqshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
40572 }
40573 unsafe { _vqshl_s16(a, b) }
40574}
40575#[doc = "Signed saturating shift left"]
40576#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_s16)"]
40577#[inline]
40578#[target_feature(enable = "neon")]
40579#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40580#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40581#[cfg_attr(
40582 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40583 assert_instr(sqshl)
40584)]
40585#[cfg_attr(
40586 not(target_arch = "arm"),
40587 stable(feature = "neon_intrinsics", since = "1.59.0")
40588)]
40589#[cfg_attr(
40590 target_arch = "arm",
40591 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40592)]
40593pub fn vqshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
40594 unsafe extern "unadjusted" {
40595 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v8i16")]
40596 #[cfg_attr(
40597 any(target_arch = "aarch64", target_arch = "arm64ec"),
40598 link_name = "llvm.aarch64.neon.sqshl.v8i16"
40599 )]
40600 fn _vqshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
40601 }
40602 unsafe { _vqshlq_s16(a, b) }
40603}
40604#[doc = "Signed saturating shift left"]
40605#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_s32)"]
40606#[inline]
40607#[target_feature(enable = "neon")]
40608#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40609#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40610#[cfg_attr(
40611 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40612 assert_instr(sqshl)
40613)]
40614#[cfg_attr(
40615 not(target_arch = "arm"),
40616 stable(feature = "neon_intrinsics", since = "1.59.0")
40617)]
40618#[cfg_attr(
40619 target_arch = "arm",
40620 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40621)]
40622pub fn vqshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
40623 unsafe extern "unadjusted" {
40624 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v2i32")]
40625 #[cfg_attr(
40626 any(target_arch = "aarch64", target_arch = "arm64ec"),
40627 link_name = "llvm.aarch64.neon.sqshl.v2i32"
40628 )]
40629 fn _vqshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
40630 }
40631 unsafe { _vqshl_s32(a, b) }
40632}
40633#[doc = "Signed saturating shift left"]
40634#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_s32)"]
40635#[inline]
40636#[target_feature(enable = "neon")]
40637#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40638#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40639#[cfg_attr(
40640 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40641 assert_instr(sqshl)
40642)]
40643#[cfg_attr(
40644 not(target_arch = "arm"),
40645 stable(feature = "neon_intrinsics", since = "1.59.0")
40646)]
40647#[cfg_attr(
40648 target_arch = "arm",
40649 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40650)]
40651pub fn vqshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
40652 unsafe extern "unadjusted" {
40653 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v4i32")]
40654 #[cfg_attr(
40655 any(target_arch = "aarch64", target_arch = "arm64ec"),
40656 link_name = "llvm.aarch64.neon.sqshl.v4i32"
40657 )]
40658 fn _vqshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
40659 }
40660 unsafe { _vqshlq_s32(a, b) }
40661}
40662#[doc = "Signed saturating shift left"]
40663#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_s64)"]
40664#[inline]
40665#[target_feature(enable = "neon")]
40666#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40667#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40668#[cfg_attr(
40669 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40670 assert_instr(sqshl)
40671)]
40672#[cfg_attr(
40673 not(target_arch = "arm"),
40674 stable(feature = "neon_intrinsics", since = "1.59.0")
40675)]
40676#[cfg_attr(
40677 target_arch = "arm",
40678 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40679)]
40680pub fn vqshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
40681 unsafe extern "unadjusted" {
40682 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v1i64")]
40683 #[cfg_attr(
40684 any(target_arch = "aarch64", target_arch = "arm64ec"),
40685 link_name = "llvm.aarch64.neon.sqshl.v1i64"
40686 )]
40687 fn _vqshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t;
40688 }
40689 unsafe { _vqshl_s64(a, b) }
40690}
40691#[doc = "Signed saturating shift left"]
40692#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_s64)"]
40693#[inline]
40694#[target_feature(enable = "neon")]
40695#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40696#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40697#[cfg_attr(
40698 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40699 assert_instr(sqshl)
40700)]
40701#[cfg_attr(
40702 not(target_arch = "arm"),
40703 stable(feature = "neon_intrinsics", since = "1.59.0")
40704)]
40705#[cfg_attr(
40706 target_arch = "arm",
40707 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40708)]
40709pub fn vqshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
40710 unsafe extern "unadjusted" {
40711 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v2i64")]
40712 #[cfg_attr(
40713 any(target_arch = "aarch64", target_arch = "arm64ec"),
40714 link_name = "llvm.aarch64.neon.sqshl.v2i64"
40715 )]
40716 fn _vqshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t;
40717 }
40718 unsafe { _vqshlq_s64(a, b) }
40719}
40720#[doc = "Unsigned saturating shift left"]
40721#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_u8)"]
40722#[inline]
40723#[target_feature(enable = "neon")]
40724#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40725#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40726#[cfg_attr(
40727 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40728 assert_instr(uqshl)
40729)]
40730#[cfg_attr(
40731 not(target_arch = "arm"),
40732 stable(feature = "neon_intrinsics", since = "1.59.0")
40733)]
40734#[cfg_attr(
40735 target_arch = "arm",
40736 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40737)]
40738pub fn vqshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t {
40739 unsafe extern "unadjusted" {
40740 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v8i8")]
40741 #[cfg_attr(
40742 any(target_arch = "aarch64", target_arch = "arm64ec"),
40743 link_name = "llvm.aarch64.neon.uqshl.v8i8"
40744 )]
40745 fn _vqshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t;
40746 }
40747 unsafe { _vqshl_u8(a, b) }
40748}
40749#[doc = "Unsigned saturating shift left"]
40750#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_u8)"]
40751#[inline]
40752#[target_feature(enable = "neon")]
40753#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40754#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40755#[cfg_attr(
40756 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40757 assert_instr(uqshl)
40758)]
40759#[cfg_attr(
40760 not(target_arch = "arm"),
40761 stable(feature = "neon_intrinsics", since = "1.59.0")
40762)]
40763#[cfg_attr(
40764 target_arch = "arm",
40765 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40766)]
40767pub fn vqshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t {
40768 unsafe extern "unadjusted" {
40769 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v16i8")]
40770 #[cfg_attr(
40771 any(target_arch = "aarch64", target_arch = "arm64ec"),
40772 link_name = "llvm.aarch64.neon.uqshl.v16i8"
40773 )]
40774 fn _vqshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t;
40775 }
40776 unsafe { _vqshlq_u8(a, b) }
40777}
40778#[doc = "Unsigned saturating shift left"]
40779#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_u16)"]
40780#[inline]
40781#[target_feature(enable = "neon")]
40782#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40783#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40784#[cfg_attr(
40785 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40786 assert_instr(uqshl)
40787)]
40788#[cfg_attr(
40789 not(target_arch = "arm"),
40790 stable(feature = "neon_intrinsics", since = "1.59.0")
40791)]
40792#[cfg_attr(
40793 target_arch = "arm",
40794 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40795)]
40796pub fn vqshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t {
40797 unsafe extern "unadjusted" {
40798 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v4i16")]
40799 #[cfg_attr(
40800 any(target_arch = "aarch64", target_arch = "arm64ec"),
40801 link_name = "llvm.aarch64.neon.uqshl.v4i16"
40802 )]
40803 fn _vqshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t;
40804 }
40805 unsafe { _vqshl_u16(a, b) }
40806}
40807#[doc = "Unsigned saturating shift left"]
40808#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_u16)"]
40809#[inline]
40810#[target_feature(enable = "neon")]
40811#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40812#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40813#[cfg_attr(
40814 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40815 assert_instr(uqshl)
40816)]
40817#[cfg_attr(
40818 not(target_arch = "arm"),
40819 stable(feature = "neon_intrinsics", since = "1.59.0")
40820)]
40821#[cfg_attr(
40822 target_arch = "arm",
40823 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40824)]
40825pub fn vqshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t {
40826 unsafe extern "unadjusted" {
40827 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v8i16")]
40828 #[cfg_attr(
40829 any(target_arch = "aarch64", target_arch = "arm64ec"),
40830 link_name = "llvm.aarch64.neon.uqshl.v8i16"
40831 )]
40832 fn _vqshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t;
40833 }
40834 unsafe { _vqshlq_u16(a, b) }
40835}
40836#[doc = "Unsigned saturating shift left"]
40837#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_u32)"]
40838#[inline]
40839#[target_feature(enable = "neon")]
40840#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40841#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40842#[cfg_attr(
40843 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40844 assert_instr(uqshl)
40845)]
40846#[cfg_attr(
40847 not(target_arch = "arm"),
40848 stable(feature = "neon_intrinsics", since = "1.59.0")
40849)]
40850#[cfg_attr(
40851 target_arch = "arm",
40852 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40853)]
40854pub fn vqshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t {
40855 unsafe extern "unadjusted" {
40856 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v2i32")]
40857 #[cfg_attr(
40858 any(target_arch = "aarch64", target_arch = "arm64ec"),
40859 link_name = "llvm.aarch64.neon.uqshl.v2i32"
40860 )]
40861 fn _vqshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t;
40862 }
40863 unsafe { _vqshl_u32(a, b) }
40864}
40865#[doc = "Unsigned saturating shift left"]
40866#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_u32)"]
40867#[inline]
40868#[target_feature(enable = "neon")]
40869#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40870#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40871#[cfg_attr(
40872 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40873 assert_instr(uqshl)
40874)]
40875#[cfg_attr(
40876 not(target_arch = "arm"),
40877 stable(feature = "neon_intrinsics", since = "1.59.0")
40878)]
40879#[cfg_attr(
40880 target_arch = "arm",
40881 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40882)]
40883pub fn vqshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t {
40884 unsafe extern "unadjusted" {
40885 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v4i32")]
40886 #[cfg_attr(
40887 any(target_arch = "aarch64", target_arch = "arm64ec"),
40888 link_name = "llvm.aarch64.neon.uqshl.v4i32"
40889 )]
40890 fn _vqshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t;
40891 }
40892 unsafe { _vqshlq_u32(a, b) }
40893}
40894#[doc = "Unsigned saturating shift left"]
40895#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_u64)"]
40896#[inline]
40897#[target_feature(enable = "neon")]
40898#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40899#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40900#[cfg_attr(
40901 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40902 assert_instr(uqshl)
40903)]
40904#[cfg_attr(
40905 not(target_arch = "arm"),
40906 stable(feature = "neon_intrinsics", since = "1.59.0")
40907)]
40908#[cfg_attr(
40909 target_arch = "arm",
40910 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40911)]
40912pub fn vqshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t {
40913 unsafe extern "unadjusted" {
40914 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v1i64")]
40915 #[cfg_attr(
40916 any(target_arch = "aarch64", target_arch = "arm64ec"),
40917 link_name = "llvm.aarch64.neon.uqshl.v1i64"
40918 )]
40919 fn _vqshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t;
40920 }
40921 unsafe { _vqshl_u64(a, b) }
40922}
40923#[doc = "Unsigned saturating shift left"]
40924#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_u64)"]
40925#[inline]
40926#[target_feature(enable = "neon")]
40927#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40928#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
40929#[cfg_attr(
40930 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40931 assert_instr(uqshl)
40932)]
40933#[cfg_attr(
40934 not(target_arch = "arm"),
40935 stable(feature = "neon_intrinsics", since = "1.59.0")
40936)]
40937#[cfg_attr(
40938 target_arch = "arm",
40939 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40940)]
40941pub fn vqshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t {
40942 unsafe extern "unadjusted" {
40943 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v2i64")]
40944 #[cfg_attr(
40945 any(target_arch = "aarch64", target_arch = "arm64ec"),
40946 link_name = "llvm.aarch64.neon.uqshl.v2i64"
40947 )]
40948 fn _vqshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t;
40949 }
40950 unsafe { _vqshlq_u64(a, b) }
40951}
40952#[doc = "Signed saturating shift left unsigned"]
40953#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s8)"]
40954#[inline]
40955#[cfg(target_arch = "arm")]
40956#[target_feature(enable = "neon,v7")]
40957#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
40958#[rustc_legacy_const_generics(1)]
40959#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40960pub fn vqshlu_n_s8<const N: i32>(a: int8x8_t) -> uint8x8_t {
40961 static_assert_uimm_bits!(N, 3);
40962 unsafe extern "unadjusted" {
40963 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v8i8")]
40964 fn _vqshlu_n_s8(a: int8x8_t, n: int8x8_t) -> uint8x8_t;
40965 }
40966 unsafe { _vqshlu_n_s8(a, const { int8x8_t([N as i8; 8]) }) }
40967}
40968#[doc = "Signed saturating shift left unsigned"]
40969#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s8)"]
40970#[inline]
40971#[cfg(target_arch = "arm")]
40972#[target_feature(enable = "neon,v7")]
40973#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
40974#[rustc_legacy_const_generics(1)]
40975#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40976pub fn vqshluq_n_s8<const N: i32>(a: int8x16_t) -> uint8x16_t {
40977 static_assert_uimm_bits!(N, 3);
40978 unsafe extern "unadjusted" {
40979 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v16i8")]
40980 fn _vqshluq_n_s8(a: int8x16_t, n: int8x16_t) -> uint8x16_t;
40981 }
40982 unsafe { _vqshluq_n_s8(a, const { int8x16_t([N as i8; 16]) }) }
40983}
40984#[doc = "Signed saturating shift left unsigned"]
40985#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s16)"]
40986#[inline]
40987#[cfg(target_arch = "arm")]
40988#[target_feature(enable = "neon,v7")]
40989#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
40990#[rustc_legacy_const_generics(1)]
40991#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
40992pub fn vqshlu_n_s16<const N: i32>(a: int16x4_t) -> uint16x4_t {
40993 static_assert_uimm_bits!(N, 4);
40994 unsafe extern "unadjusted" {
40995 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v4i16")]
40996 fn _vqshlu_n_s16(a: int16x4_t, n: int16x4_t) -> uint16x4_t;
40997 }
40998 unsafe { _vqshlu_n_s16(a, const { int16x4_t([N as i16; 4]) }) }
40999}
41000#[doc = "Signed saturating shift left unsigned"]
41001#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s16)"]
41002#[inline]
41003#[cfg(target_arch = "arm")]
41004#[target_feature(enable = "neon,v7")]
41005#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
41006#[rustc_legacy_const_generics(1)]
41007#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
41008pub fn vqshluq_n_s16<const N: i32>(a: int16x8_t) -> uint16x8_t {
41009 static_assert_uimm_bits!(N, 4);
41010 unsafe extern "unadjusted" {
41011 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v8i16")]
41012 fn _vqshluq_n_s16(a: int16x8_t, n: int16x8_t) -> uint16x8_t;
41013 }
41014 unsafe { _vqshluq_n_s16(a, const { int16x8_t([N as i16; 8]) }) }
41015}
41016#[doc = "Signed saturating shift left unsigned"]
41017#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s32)"]
41018#[inline]
41019#[cfg(target_arch = "arm")]
41020#[target_feature(enable = "neon,v7")]
41021#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
41022#[rustc_legacy_const_generics(1)]
41023#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
41024pub fn vqshlu_n_s32<const N: i32>(a: int32x2_t) -> uint32x2_t {
41025 static_assert_uimm_bits!(N, 5);
41026 unsafe extern "unadjusted" {
41027 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v2i32")]
41028 fn _vqshlu_n_s32(a: int32x2_t, n: int32x2_t) -> uint32x2_t;
41029 }
41030 unsafe { _vqshlu_n_s32(a, const { int32x2_t([N; 2]) }) }
41031}
41032#[doc = "Signed saturating shift left unsigned"]
41033#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s32)"]
41034#[inline]
41035#[cfg(target_arch = "arm")]
41036#[target_feature(enable = "neon,v7")]
41037#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
41038#[rustc_legacy_const_generics(1)]
41039#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
41040pub fn vqshluq_n_s32<const N: i32>(a: int32x4_t) -> uint32x4_t {
41041 static_assert_uimm_bits!(N, 5);
41042 unsafe extern "unadjusted" {
41043 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v4i32")]
41044 fn _vqshluq_n_s32(a: int32x4_t, n: int32x4_t) -> uint32x4_t;
41045 }
41046 unsafe { _vqshluq_n_s32(a, const { int32x4_t([N; 4]) }) }
41047}
41048#[doc = "Signed saturating shift left unsigned"]
41049#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s64)"]
41050#[inline]
41051#[cfg(target_arch = "arm")]
41052#[target_feature(enable = "neon,v7")]
41053#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
41054#[rustc_legacy_const_generics(1)]
41055#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
41056pub fn vqshlu_n_s64<const N: i32>(a: int64x1_t) -> uint64x1_t {
41057 static_assert_uimm_bits!(N, 6);
41058 unsafe extern "unadjusted" {
41059 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v1i64")]
41060 fn _vqshlu_n_s64(a: int64x1_t, n: int64x1_t) -> uint64x1_t;
41061 }
41062 unsafe { _vqshlu_n_s64(a, const { int64x1_t([N as i64]) }) }
41063}
41064#[doc = "Signed saturating shift left unsigned"]
41065#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s64)"]
41066#[inline]
41067#[cfg(target_arch = "arm")]
41068#[target_feature(enable = "neon,v7")]
41069#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
41070#[rustc_legacy_const_generics(1)]
41071#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
41072pub fn vqshluq_n_s64<const N: i32>(a: int64x2_t) -> uint64x2_t {
41073 static_assert_uimm_bits!(N, 6);
41074 unsafe extern "unadjusted" {
41075 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v2i64")]
41076 fn _vqshluq_n_s64(a: int64x2_t, n: int64x2_t) -> uint64x2_t;
41077 }
41078 unsafe { _vqshluq_n_s64(a, const { int64x2_t([N as i64; 2]) }) }
41079}
41080#[doc = "Signed saturating shift left unsigned"]
41081#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s8)"]
41082#[inline]
41083#[target_feature(enable = "neon")]
41084#[cfg(not(target_arch = "arm"))]
41085#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
41086#[rustc_legacy_const_generics(1)]
41087#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41088pub fn vqshlu_n_s8<const N: i32>(a: int8x8_t) -> uint8x8_t {
41089 static_assert_uimm_bits!(N, 3);
41090 unsafe extern "unadjusted" {
41091 #[cfg_attr(
41092 any(target_arch = "aarch64", target_arch = "arm64ec"),
41093 link_name = "llvm.aarch64.neon.sqshlu.v8i8"
41094 )]
41095 fn _vqshlu_n_s8(a: int8x8_t, n: int8x8_t) -> uint8x8_t;
41096 }
41097 unsafe { _vqshlu_n_s8(a, const { int8x8_t([N as i8; 8]) }) }
41098}
41099#[doc = "Signed saturating shift left unsigned"]
41100#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s8)"]
41101#[inline]
41102#[target_feature(enable = "neon")]
41103#[cfg(not(target_arch = "arm"))]
41104#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
41105#[rustc_legacy_const_generics(1)]
41106#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41107pub fn vqshluq_n_s8<const N: i32>(a: int8x16_t) -> uint8x16_t {
41108 static_assert_uimm_bits!(N, 3);
41109 unsafe extern "unadjusted" {
41110 #[cfg_attr(
41111 any(target_arch = "aarch64", target_arch = "arm64ec"),
41112 link_name = "llvm.aarch64.neon.sqshlu.v16i8"
41113 )]
41114 fn _vqshluq_n_s8(a: int8x16_t, n: int8x16_t) -> uint8x16_t;
41115 }
41116 unsafe { _vqshluq_n_s8(a, const { int8x16_t([N as i8; 16]) }) }
41117}
41118#[doc = "Signed saturating shift left unsigned"]
41119#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s16)"]
41120#[inline]
41121#[target_feature(enable = "neon")]
41122#[cfg(not(target_arch = "arm"))]
41123#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
41124#[rustc_legacy_const_generics(1)]
41125#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41126pub fn vqshlu_n_s16<const N: i32>(a: int16x4_t) -> uint16x4_t {
41127 static_assert_uimm_bits!(N, 4);
41128 unsafe extern "unadjusted" {
41129 #[cfg_attr(
41130 any(target_arch = "aarch64", target_arch = "arm64ec"),
41131 link_name = "llvm.aarch64.neon.sqshlu.v4i16"
41132 )]
41133 fn _vqshlu_n_s16(a: int16x4_t, n: int16x4_t) -> uint16x4_t;
41134 }
41135 unsafe { _vqshlu_n_s16(a, const { int16x4_t([N as i16; 4]) }) }
41136}
41137#[doc = "Signed saturating shift left unsigned"]
41138#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s16)"]
41139#[inline]
41140#[target_feature(enable = "neon")]
41141#[cfg(not(target_arch = "arm"))]
41142#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
41143#[rustc_legacy_const_generics(1)]
41144#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41145pub fn vqshluq_n_s16<const N: i32>(a: int16x8_t) -> uint16x8_t {
41146 static_assert_uimm_bits!(N, 4);
41147 unsafe extern "unadjusted" {
41148 #[cfg_attr(
41149 any(target_arch = "aarch64", target_arch = "arm64ec"),
41150 link_name = "llvm.aarch64.neon.sqshlu.v8i16"
41151 )]
41152 fn _vqshluq_n_s16(a: int16x8_t, n: int16x8_t) -> uint16x8_t;
41153 }
41154 unsafe { _vqshluq_n_s16(a, const { int16x8_t([N as i16; 8]) }) }
41155}
41156#[doc = "Signed saturating shift left unsigned"]
41157#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s32)"]
41158#[inline]
41159#[target_feature(enable = "neon")]
41160#[cfg(not(target_arch = "arm"))]
41161#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
41162#[rustc_legacy_const_generics(1)]
41163#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41164pub fn vqshlu_n_s32<const N: i32>(a: int32x2_t) -> uint32x2_t {
41165 static_assert_uimm_bits!(N, 5);
41166 unsafe extern "unadjusted" {
41167 #[cfg_attr(
41168 any(target_arch = "aarch64", target_arch = "arm64ec"),
41169 link_name = "llvm.aarch64.neon.sqshlu.v2i32"
41170 )]
41171 fn _vqshlu_n_s32(a: int32x2_t, n: int32x2_t) -> uint32x2_t;
41172 }
41173 unsafe { _vqshlu_n_s32(a, const { int32x2_t([N; 2]) }) }
41174}
41175#[doc = "Signed saturating shift left unsigned"]
41176#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s32)"]
41177#[inline]
41178#[target_feature(enable = "neon")]
41179#[cfg(not(target_arch = "arm"))]
41180#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
41181#[rustc_legacy_const_generics(1)]
41182#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41183pub fn vqshluq_n_s32<const N: i32>(a: int32x4_t) -> uint32x4_t {
41184 static_assert_uimm_bits!(N, 5);
41185 unsafe extern "unadjusted" {
41186 #[cfg_attr(
41187 any(target_arch = "aarch64", target_arch = "arm64ec"),
41188 link_name = "llvm.aarch64.neon.sqshlu.v4i32"
41189 )]
41190 fn _vqshluq_n_s32(a: int32x4_t, n: int32x4_t) -> uint32x4_t;
41191 }
41192 unsafe { _vqshluq_n_s32(a, const { int32x4_t([N; 4]) }) }
41193}
41194#[doc = "Signed saturating shift left unsigned"]
41195#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s64)"]
41196#[inline]
41197#[target_feature(enable = "neon")]
41198#[cfg(not(target_arch = "arm"))]
41199#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
41200#[rustc_legacy_const_generics(1)]
41201#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41202pub fn vqshlu_n_s64<const N: i32>(a: int64x1_t) -> uint64x1_t {
41203 static_assert_uimm_bits!(N, 6);
41204 unsafe extern "unadjusted" {
41205 #[cfg_attr(
41206 any(target_arch = "aarch64", target_arch = "arm64ec"),
41207 link_name = "llvm.aarch64.neon.sqshlu.v1i64"
41208 )]
41209 fn _vqshlu_n_s64(a: int64x1_t, n: int64x1_t) -> uint64x1_t;
41210 }
41211 unsafe { _vqshlu_n_s64(a, const { int64x1_t([N as i64]) }) }
41212}
41213#[doc = "Signed saturating shift left unsigned"]
41214#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s64)"]
41215#[inline]
41216#[target_feature(enable = "neon")]
41217#[cfg(not(target_arch = "arm"))]
41218#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
41219#[rustc_legacy_const_generics(1)]
41220#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41221pub fn vqshluq_n_s64<const N: i32>(a: int64x2_t) -> uint64x2_t {
41222 static_assert_uimm_bits!(N, 6);
41223 unsafe extern "unadjusted" {
41224 #[cfg_attr(
41225 any(target_arch = "aarch64", target_arch = "arm64ec"),
41226 link_name = "llvm.aarch64.neon.sqshlu.v2i64"
41227 )]
41228 fn _vqshluq_n_s64(a: int64x2_t, n: int64x2_t) -> uint64x2_t;
41229 }
41230 unsafe { _vqshluq_n_s64(a, const { int64x2_t([N as i64; 2]) }) }
41231}
41232#[doc = "Signed saturating shift right narrow"]
41233#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s16)"]
41234#[inline]
41235#[cfg(target_arch = "arm")]
41236#[target_feature(enable = "neon,v7")]
41237#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
41238#[rustc_legacy_const_generics(1)]
41239#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
41240pub fn vqshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
41241 static_assert!(N >= 1 && N <= 8);
41242 unsafe extern "unadjusted" {
41243 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v8i8")]
41244 fn _vqshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;
41245 }
41246 unsafe { _vqshrn_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
41247}
41248#[doc = "Signed saturating shift right narrow"]
41249#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s32)"]
41250#[inline]
41251#[cfg(target_arch = "arm")]
41252#[target_feature(enable = "neon,v7")]
41253#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
41254#[rustc_legacy_const_generics(1)]
41255#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
41256pub fn vqshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
41257 static_assert!(N >= 1 && N <= 16);
41258 unsafe extern "unadjusted" {
41259 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v4i16")]
41260 fn _vqshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;
41261 }
41262 unsafe { _vqshrn_n_s32(a, const { int32x4_t([-N; 4]) }) }
41263}
41264#[doc = "Signed saturating shift right narrow"]
41265#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s64)"]
41266#[inline]
41267#[cfg(target_arch = "arm")]
41268#[target_feature(enable = "neon,v7")]
41269#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
41270#[rustc_legacy_const_generics(1)]
41271#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
41272pub fn vqshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
41273 static_assert!(N >= 1 && N <= 32);
41274 unsafe extern "unadjusted" {
41275 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v2i32")]
41276 fn _vqshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;
41277 }
41278 unsafe { _vqshrn_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
41279}
41280#[doc = "Signed saturating shift right narrow"]
41281#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s16)"]
41282#[inline]
41283#[target_feature(enable = "neon")]
41284#[cfg(not(target_arch = "arm"))]
41285#[cfg_attr(test, assert_instr(sqshrn, N = 2))]
41286#[rustc_legacy_const_generics(1)]
41287#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41288pub fn vqshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
41289 static_assert!(N >= 1 && N <= 8);
41290 unsafe extern "unadjusted" {
41291 #[cfg_attr(
41292 any(target_arch = "aarch64", target_arch = "arm64ec"),
41293 link_name = "llvm.aarch64.neon.sqshrn.v8i8"
41294 )]
41295 fn _vqshrn_n_s16(a: int16x8_t, n: i32) -> int8x8_t;
41296 }
41297 unsafe { _vqshrn_n_s16(a, N) }
41298}
41299#[doc = "Signed saturating shift right narrow"]
41300#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s32)"]
41301#[inline]
41302#[target_feature(enable = "neon")]
41303#[cfg(not(target_arch = "arm"))]
41304#[cfg_attr(test, assert_instr(sqshrn, N = 2))]
41305#[rustc_legacy_const_generics(1)]
41306#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41307pub fn vqshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
41308 static_assert!(N >= 1 && N <= 16);
41309 unsafe extern "unadjusted" {
41310 #[cfg_attr(
41311 any(target_arch = "aarch64", target_arch = "arm64ec"),
41312 link_name = "llvm.aarch64.neon.sqshrn.v4i16"
41313 )]
41314 fn _vqshrn_n_s32(a: int32x4_t, n: i32) -> int16x4_t;
41315 }
41316 unsafe { _vqshrn_n_s32(a, N) }
41317}
41318#[doc = "Signed saturating shift right narrow"]
41319#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s64)"]
41320#[inline]
41321#[target_feature(enable = "neon")]
41322#[cfg(not(target_arch = "arm"))]
41323#[cfg_attr(test, assert_instr(sqshrn, N = 2))]
41324#[rustc_legacy_const_generics(1)]
41325#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41326pub fn vqshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
41327 static_assert!(N >= 1 && N <= 32);
41328 unsafe extern "unadjusted" {
41329 #[cfg_attr(
41330 any(target_arch = "aarch64", target_arch = "arm64ec"),
41331 link_name = "llvm.aarch64.neon.sqshrn.v2i32"
41332 )]
41333 fn _vqshrn_n_s64(a: int64x2_t, n: i32) -> int32x2_t;
41334 }
41335 unsafe { _vqshrn_n_s64(a, N) }
41336}
41337#[doc = "Unsigned saturating shift right narrow"]
41338#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u16)"]
41339#[inline]
41340#[cfg(target_arch = "arm")]
41341#[target_feature(enable = "neon,v7")]
41342#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
41343#[rustc_legacy_const_generics(1)]
41344#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
41345pub fn vqshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
41346 static_assert!(N >= 1 && N <= 8);
41347 unsafe extern "unadjusted" {
41348 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnu.v8i8")]
41349 fn _vqshrn_n_u16(a: uint16x8_t, n: uint16x8_t) -> uint8x8_t;
41350 }
41351 unsafe {
41352 _vqshrn_n_u16(
41353 a,
41354 const {
41355 uint16x8_t([
41356 -N as u16, -N as u16, -N as u16, -N as u16, -N as u16, -N as u16, -N as u16,
41357 -N as u16,
41358 ])
41359 },
41360 )
41361 }
41362}
41363#[doc = "Unsigned saturating shift right narrow"]
41364#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u32)"]
41365#[inline]
41366#[cfg(target_arch = "arm")]
41367#[target_feature(enable = "neon,v7")]
41368#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
41369#[rustc_legacy_const_generics(1)]
41370#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
41371pub fn vqshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
41372 static_assert!(N >= 1 && N <= 16);
41373 unsafe extern "unadjusted" {
41374 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnu.v4i16")]
41375 fn _vqshrn_n_u32(a: uint32x4_t, n: uint32x4_t) -> uint16x4_t;
41376 }
41377 unsafe {
41378 _vqshrn_n_u32(
41379 a,
41380 const { uint32x4_t([-N as u32, -N as u32, -N as u32, -N as u32]) },
41381 )
41382 }
41383}
41384#[doc = "Unsigned saturating shift right narrow"]
41385#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u64)"]
41386#[inline]
41387#[cfg(target_arch = "arm")]
41388#[target_feature(enable = "neon,v7")]
41389#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
41390#[rustc_legacy_const_generics(1)]
41391#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
41392pub fn vqshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
41393 static_assert!(N >= 1 && N <= 32);
41394 unsafe extern "unadjusted" {
41395 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnu.v2i32")]
41396 fn _vqshrn_n_u64(a: uint64x2_t, n: uint64x2_t) -> uint32x2_t;
41397 }
41398 unsafe { _vqshrn_n_u64(a, const { uint64x2_t([-N as u64, -N as u64]) }) }
41399}
41400#[doc = "Unsigned saturating shift right narrow"]
41401#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u16)"]
41402#[inline]
41403#[target_feature(enable = "neon")]
41404#[cfg(not(target_arch = "arm"))]
41405#[cfg_attr(test, assert_instr(uqshrn, N = 2))]
41406#[rustc_legacy_const_generics(1)]
41407#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41408pub fn vqshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
41409 static_assert!(N >= 1 && N <= 8);
41410 unsafe extern "unadjusted" {
41411 #[cfg_attr(
41412 any(target_arch = "aarch64", target_arch = "arm64ec"),
41413 link_name = "llvm.aarch64.neon.uqshrn.v8i8"
41414 )]
41415 fn _vqshrn_n_u16(a: uint16x8_t, n: i32) -> uint8x8_t;
41416 }
41417 unsafe { _vqshrn_n_u16(a, N) }
41418}
41419#[doc = "Unsigned saturating shift right narrow"]
41420#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u32)"]
41421#[inline]
41422#[target_feature(enable = "neon")]
41423#[cfg(not(target_arch = "arm"))]
41424#[cfg_attr(test, assert_instr(uqshrn, N = 2))]
41425#[rustc_legacy_const_generics(1)]
41426#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41427pub fn vqshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
41428 static_assert!(N >= 1 && N <= 16);
41429 unsafe extern "unadjusted" {
41430 #[cfg_attr(
41431 any(target_arch = "aarch64", target_arch = "arm64ec"),
41432 link_name = "llvm.aarch64.neon.uqshrn.v4i16"
41433 )]
41434 fn _vqshrn_n_u32(a: uint32x4_t, n: i32) -> uint16x4_t;
41435 }
41436 unsafe { _vqshrn_n_u32(a, N) }
41437}
41438#[doc = "Unsigned saturating shift right narrow"]
41439#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u64)"]
41440#[inline]
41441#[target_feature(enable = "neon")]
41442#[cfg(not(target_arch = "arm"))]
41443#[cfg_attr(test, assert_instr(uqshrn, N = 2))]
41444#[rustc_legacy_const_generics(1)]
41445#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41446pub fn vqshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
41447 static_assert!(N >= 1 && N <= 32);
41448 unsafe extern "unadjusted" {
41449 #[cfg_attr(
41450 any(target_arch = "aarch64", target_arch = "arm64ec"),
41451 link_name = "llvm.aarch64.neon.uqshrn.v2i32"
41452 )]
41453 fn _vqshrn_n_u64(a: uint64x2_t, n: i32) -> uint32x2_t;
41454 }
41455 unsafe { _vqshrn_n_u64(a, N) }
41456}
41457#[doc = "Signed saturating shift right unsigned narrow"]
41458#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s16)"]
41459#[inline]
41460#[cfg(target_arch = "arm")]
41461#[target_feature(enable = "neon,v7")]
41462#[cfg_attr(test, assert_instr(vqshrun, N = 2))]
41463#[rustc_legacy_const_generics(1)]
41464#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
41465pub fn vqshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
41466 static_assert!(N >= 1 && N <= 8);
41467 unsafe extern "unadjusted" {
41468 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v8i8")]
41469 fn _vqshrun_n_s16(a: int16x8_t, n: int16x8_t) -> uint8x8_t;
41470 }
41471 unsafe { _vqshrun_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
41472}
41473#[doc = "Signed saturating shift right unsigned narrow"]
41474#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s32)"]
41475#[inline]
41476#[cfg(target_arch = "arm")]
41477#[target_feature(enable = "neon,v7")]
41478#[cfg_attr(test, assert_instr(vqshrun, N = 2))]
41479#[rustc_legacy_const_generics(1)]
41480#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
41481pub fn vqshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
41482 static_assert!(N >= 1 && N <= 16);
41483 unsafe extern "unadjusted" {
41484 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v4i16")]
41485 fn _vqshrun_n_s32(a: int32x4_t, n: int32x4_t) -> uint16x4_t;
41486 }
41487 unsafe { _vqshrun_n_s32(a, const { int32x4_t([-N; 4]) }) }
41488}
41489#[doc = "Signed saturating shift right unsigned narrow"]
41490#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s64)"]
41491#[inline]
41492#[cfg(target_arch = "arm")]
41493#[target_feature(enable = "neon,v7")]
41494#[cfg_attr(test, assert_instr(vqshrun, N = 2))]
41495#[rustc_legacy_const_generics(1)]
41496#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
41497pub fn vqshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
41498 static_assert!(N >= 1 && N <= 32);
41499 unsafe extern "unadjusted" {
41500 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v2i32")]
41501 fn _vqshrun_n_s64(a: int64x2_t, n: int64x2_t) -> uint32x2_t;
41502 }
41503 unsafe { _vqshrun_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
41504}
41505#[doc = "Signed saturating shift right unsigned narrow"]
41506#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s16)"]
41507#[inline]
41508#[target_feature(enable = "neon")]
41509#[cfg(not(target_arch = "arm"))]
41510#[cfg_attr(test, assert_instr(sqshrun, N = 2))]
41511#[rustc_legacy_const_generics(1)]
41512#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41513pub fn vqshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
41514 static_assert!(N >= 1 && N <= 8);
41515 unsafe extern "unadjusted" {
41516 #[cfg_attr(
41517 any(target_arch = "aarch64", target_arch = "arm64ec"),
41518 link_name = "llvm.aarch64.neon.sqshrun.v8i8"
41519 )]
41520 fn _vqshrun_n_s16(a: int16x8_t, n: i32) -> uint8x8_t;
41521 }
41522 unsafe { _vqshrun_n_s16(a, N) }
41523}
41524#[doc = "Signed saturating shift right unsigned narrow"]
41525#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s32)"]
41526#[inline]
41527#[target_feature(enable = "neon")]
41528#[cfg(not(target_arch = "arm"))]
41529#[cfg_attr(test, assert_instr(sqshrun, N = 2))]
41530#[rustc_legacy_const_generics(1)]
41531#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41532pub fn vqshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
41533 static_assert!(N >= 1 && N <= 16);
41534 unsafe extern "unadjusted" {
41535 #[cfg_attr(
41536 any(target_arch = "aarch64", target_arch = "arm64ec"),
41537 link_name = "llvm.aarch64.neon.sqshrun.v4i16"
41538 )]
41539 fn _vqshrun_n_s32(a: int32x4_t, n: i32) -> uint16x4_t;
41540 }
41541 unsafe { _vqshrun_n_s32(a, N) }
41542}
41543#[doc = "Signed saturating shift right unsigned narrow"]
41544#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s64)"]
41545#[inline]
41546#[target_feature(enable = "neon")]
41547#[cfg(not(target_arch = "arm"))]
41548#[cfg_attr(test, assert_instr(sqshrun, N = 2))]
41549#[rustc_legacy_const_generics(1)]
41550#[stable(feature = "neon_intrinsics", since = "1.59.0")]
41551pub fn vqshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
41552 static_assert!(N >= 1 && N <= 32);
41553 unsafe extern "unadjusted" {
41554 #[cfg_attr(
41555 any(target_arch = "aarch64", target_arch = "arm64ec"),
41556 link_name = "llvm.aarch64.neon.sqshrun.v2i32"
41557 )]
41558 fn _vqshrun_n_s64(a: int64x2_t, n: i32) -> uint32x2_t;
41559 }
41560 unsafe { _vqshrun_n_s64(a, N) }
41561}
41562#[doc = "Saturating subtract"]
41563#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_s8)"]
41564#[inline]
41565#[target_feature(enable = "neon")]
41566#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41567#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s8"))]
41568#[cfg_attr(
41569 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41570 assert_instr(sqsub)
41571)]
41572#[cfg_attr(
41573 not(target_arch = "arm"),
41574 stable(feature = "neon_intrinsics", since = "1.59.0")
41575)]
41576#[cfg_attr(
41577 target_arch = "arm",
41578 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41579)]
41580pub fn vqsub_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
41581 unsafe { simd_saturating_sub(a, b) }
41582}
41583#[doc = "Saturating subtract"]
41584#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s8)"]
41585#[inline]
41586#[target_feature(enable = "neon")]
41587#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41588#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s8"))]
41589#[cfg_attr(
41590 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41591 assert_instr(sqsub)
41592)]
41593#[cfg_attr(
41594 not(target_arch = "arm"),
41595 stable(feature = "neon_intrinsics", since = "1.59.0")
41596)]
41597#[cfg_attr(
41598 target_arch = "arm",
41599 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41600)]
41601pub fn vqsubq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
41602 unsafe { simd_saturating_sub(a, b) }
41603}
41604#[doc = "Saturating subtract"]
41605#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_s16)"]
41606#[inline]
41607#[target_feature(enable = "neon")]
41608#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41609#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s16"))]
41610#[cfg_attr(
41611 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41612 assert_instr(sqsub)
41613)]
41614#[cfg_attr(
41615 not(target_arch = "arm"),
41616 stable(feature = "neon_intrinsics", since = "1.59.0")
41617)]
41618#[cfg_attr(
41619 target_arch = "arm",
41620 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41621)]
41622pub fn vqsub_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
41623 unsafe { simd_saturating_sub(a, b) }
41624}
41625#[doc = "Saturating subtract"]
41626#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s16)"]
41627#[inline]
41628#[target_feature(enable = "neon")]
41629#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41630#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s16"))]
41631#[cfg_attr(
41632 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41633 assert_instr(sqsub)
41634)]
41635#[cfg_attr(
41636 not(target_arch = "arm"),
41637 stable(feature = "neon_intrinsics", since = "1.59.0")
41638)]
41639#[cfg_attr(
41640 target_arch = "arm",
41641 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41642)]
41643pub fn vqsubq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
41644 unsafe { simd_saturating_sub(a, b) }
41645}
41646#[doc = "Saturating subtract"]
41647#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_s32)"]
41648#[inline]
41649#[target_feature(enable = "neon")]
41650#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41651#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s32"))]
41652#[cfg_attr(
41653 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41654 assert_instr(sqsub)
41655)]
41656#[cfg_attr(
41657 not(target_arch = "arm"),
41658 stable(feature = "neon_intrinsics", since = "1.59.0")
41659)]
41660#[cfg_attr(
41661 target_arch = "arm",
41662 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41663)]
41664pub fn vqsub_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
41665 unsafe { simd_saturating_sub(a, b) }
41666}
41667#[doc = "Saturating subtract"]
41668#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s32)"]
41669#[inline]
41670#[target_feature(enable = "neon")]
41671#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41672#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s32"))]
41673#[cfg_attr(
41674 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41675 assert_instr(sqsub)
41676)]
41677#[cfg_attr(
41678 not(target_arch = "arm"),
41679 stable(feature = "neon_intrinsics", since = "1.59.0")
41680)]
41681#[cfg_attr(
41682 target_arch = "arm",
41683 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41684)]
41685pub fn vqsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
41686 unsafe { simd_saturating_sub(a, b) }
41687}
41688#[doc = "Saturating subtract"]
41689#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_s64)"]
41690#[inline]
41691#[target_feature(enable = "neon")]
41692#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41693#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s64"))]
41694#[cfg_attr(
41695 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41696 assert_instr(sqsub)
41697)]
41698#[cfg_attr(
41699 not(target_arch = "arm"),
41700 stable(feature = "neon_intrinsics", since = "1.59.0")
41701)]
41702#[cfg_attr(
41703 target_arch = "arm",
41704 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41705)]
41706pub fn vqsub_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
41707 unsafe { simd_saturating_sub(a, b) }
41708}
41709#[doc = "Saturating subtract"]
41710#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s64)"]
41711#[inline]
41712#[target_feature(enable = "neon")]
41713#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41714#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s64"))]
41715#[cfg_attr(
41716 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41717 assert_instr(sqsub)
41718)]
41719#[cfg_attr(
41720 not(target_arch = "arm"),
41721 stable(feature = "neon_intrinsics", since = "1.59.0")
41722)]
41723#[cfg_attr(
41724 target_arch = "arm",
41725 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41726)]
41727pub fn vqsubq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
41728 unsafe { simd_saturating_sub(a, b) }
41729}
41730#[doc = "Saturating subtract"]
41731#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u8)"]
41732#[inline]
41733#[target_feature(enable = "neon")]
41734#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41735#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u8"))]
41736#[cfg_attr(
41737 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41738 assert_instr(uqsub)
41739)]
41740#[cfg_attr(
41741 not(target_arch = "arm"),
41742 stable(feature = "neon_intrinsics", since = "1.59.0")
41743)]
41744#[cfg_attr(
41745 target_arch = "arm",
41746 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41747)]
41748pub fn vqsub_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
41749 unsafe { simd_saturating_sub(a, b) }
41750}
41751#[doc = "Saturating subtract"]
41752#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u8)"]
41753#[inline]
41754#[target_feature(enable = "neon")]
41755#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41756#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u8"))]
41757#[cfg_attr(
41758 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41759 assert_instr(uqsub)
41760)]
41761#[cfg_attr(
41762 not(target_arch = "arm"),
41763 stable(feature = "neon_intrinsics", since = "1.59.0")
41764)]
41765#[cfg_attr(
41766 target_arch = "arm",
41767 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41768)]
41769pub fn vqsubq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
41770 unsafe { simd_saturating_sub(a, b) }
41771}
41772#[doc = "Saturating subtract"]
41773#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u16)"]
41774#[inline]
41775#[target_feature(enable = "neon")]
41776#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41777#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u16"))]
41778#[cfg_attr(
41779 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41780 assert_instr(uqsub)
41781)]
41782#[cfg_attr(
41783 not(target_arch = "arm"),
41784 stable(feature = "neon_intrinsics", since = "1.59.0")
41785)]
41786#[cfg_attr(
41787 target_arch = "arm",
41788 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41789)]
41790pub fn vqsub_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
41791 unsafe { simd_saturating_sub(a, b) }
41792}
41793#[doc = "Saturating subtract"]
41794#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u16)"]
41795#[inline]
41796#[target_feature(enable = "neon")]
41797#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41798#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u16"))]
41799#[cfg_attr(
41800 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41801 assert_instr(uqsub)
41802)]
41803#[cfg_attr(
41804 not(target_arch = "arm"),
41805 stable(feature = "neon_intrinsics", since = "1.59.0")
41806)]
41807#[cfg_attr(
41808 target_arch = "arm",
41809 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41810)]
41811pub fn vqsubq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
41812 unsafe { simd_saturating_sub(a, b) }
41813}
41814#[doc = "Saturating subtract"]
41815#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u32)"]
41816#[inline]
41817#[target_feature(enable = "neon")]
41818#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41819#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u32"))]
41820#[cfg_attr(
41821 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41822 assert_instr(uqsub)
41823)]
41824#[cfg_attr(
41825 not(target_arch = "arm"),
41826 stable(feature = "neon_intrinsics", since = "1.59.0")
41827)]
41828#[cfg_attr(
41829 target_arch = "arm",
41830 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41831)]
41832pub fn vqsub_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
41833 unsafe { simd_saturating_sub(a, b) }
41834}
41835#[doc = "Saturating subtract"]
41836#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u32)"]
41837#[inline]
41838#[target_feature(enable = "neon")]
41839#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41840#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u32"))]
41841#[cfg_attr(
41842 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41843 assert_instr(uqsub)
41844)]
41845#[cfg_attr(
41846 not(target_arch = "arm"),
41847 stable(feature = "neon_intrinsics", since = "1.59.0")
41848)]
41849#[cfg_attr(
41850 target_arch = "arm",
41851 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41852)]
41853pub fn vqsubq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
41854 unsafe { simd_saturating_sub(a, b) }
41855}
41856#[doc = "Saturating subtract"]
41857#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u64)"]
41858#[inline]
41859#[target_feature(enable = "neon")]
41860#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41861#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u64"))]
41862#[cfg_attr(
41863 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41864 assert_instr(uqsub)
41865)]
41866#[cfg_attr(
41867 not(target_arch = "arm"),
41868 stable(feature = "neon_intrinsics", since = "1.59.0")
41869)]
41870#[cfg_attr(
41871 target_arch = "arm",
41872 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41873)]
41874pub fn vqsub_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
41875 unsafe { simd_saturating_sub(a, b) }
41876}
41877#[doc = "Saturating subtract"]
41878#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u64)"]
41879#[inline]
41880#[target_feature(enable = "neon")]
41881#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41882#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u64"))]
41883#[cfg_attr(
41884 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41885 assert_instr(uqsub)
41886)]
41887#[cfg_attr(
41888 not(target_arch = "arm"),
41889 stable(feature = "neon_intrinsics", since = "1.59.0")
41890)]
41891#[cfg_attr(
41892 target_arch = "arm",
41893 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41894)]
41895pub fn vqsubq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
41896 unsafe { simd_saturating_sub(a, b) }
41897}
41898#[doc = "Rounding Add returning High Narrow (high half)."]
41899#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_s16)"]
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("vraddhn.i16"))]
41904#[cfg_attr(
41905 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41906 assert_instr(raddhn2)
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 vraddhn_high_s16(a: int8x8_t, b: int16x8_t, c: int16x8_t) -> int8x16_t {
41917 let x = vraddhn_s16(b, c);
41918 unsafe { simd_shuffle!(a, x, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) }
41919}
41920#[doc = "Rounding Add returning High Narrow (high half)."]
41921#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_s32)"]
41922#[inline]
41923#[target_feature(enable = "neon")]
41924#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41925#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
41926#[cfg_attr(
41927 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41928 assert_instr(raddhn2)
41929)]
41930#[cfg_attr(
41931 not(target_arch = "arm"),
41932 stable(feature = "neon_intrinsics", since = "1.59.0")
41933)]
41934#[cfg_attr(
41935 target_arch = "arm",
41936 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41937)]
41938pub fn vraddhn_high_s32(a: int16x4_t, b: int32x4_t, c: int32x4_t) -> int16x8_t {
41939 let x = vraddhn_s32(b, c);
41940 unsafe { simd_shuffle!(a, x, [0, 1, 2, 3, 4, 5, 6, 7]) }
41941}
41942#[doc = "Rounding Add returning High Narrow (high half)."]
41943#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_s64)"]
41944#[inline]
41945#[target_feature(enable = "neon")]
41946#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41947#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
41948#[cfg_attr(
41949 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41950 assert_instr(raddhn2)
41951)]
41952#[cfg_attr(
41953 not(target_arch = "arm"),
41954 stable(feature = "neon_intrinsics", since = "1.59.0")
41955)]
41956#[cfg_attr(
41957 target_arch = "arm",
41958 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41959)]
41960pub fn vraddhn_high_s64(a: int32x2_t, b: int64x2_t, c: int64x2_t) -> int32x4_t {
41961 let x = vraddhn_s64(b, c);
41962 unsafe { simd_shuffle!(a, x, [0, 1, 2, 3]) }
41963}
41964#[doc = "Rounding Add returning High Narrow (high half)."]
41965#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_u16)"]
41966#[inline]
41967#[target_feature(enable = "neon")]
41968#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41969#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i16"))]
41970#[cfg_attr(
41971 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41972 assert_instr(raddhn2)
41973)]
41974#[cfg_attr(
41975 not(target_arch = "arm"),
41976 stable(feature = "neon_intrinsics", since = "1.59.0")
41977)]
41978#[cfg_attr(
41979 target_arch = "arm",
41980 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41981)]
41982pub fn vraddhn_high_u16(a: uint8x8_t, b: uint16x8_t, c: uint16x8_t) -> uint8x16_t {
41983 unsafe {
41984 let x: uint8x8_t = transmute(vraddhn_s16(transmute(b), transmute(c)));
41985 simd_shuffle!(a, x, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
41986 }
41987}
41988#[doc = "Rounding Add returning High Narrow (high half)."]
41989#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_u32)"]
41990#[inline]
41991#[target_feature(enable = "neon")]
41992#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41993#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
41994#[cfg_attr(
41995 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41996 assert_instr(raddhn2)
41997)]
41998#[cfg_attr(
41999 not(target_arch = "arm"),
42000 stable(feature = "neon_intrinsics", since = "1.59.0")
42001)]
42002#[cfg_attr(
42003 target_arch = "arm",
42004 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42005)]
42006pub fn vraddhn_high_u32(a: uint16x4_t, b: uint32x4_t, c: uint32x4_t) -> uint16x8_t {
42007 unsafe {
42008 let x: uint16x4_t = transmute(vraddhn_s32(transmute(b), transmute(c)));
42009 simd_shuffle!(a, x, [0, 1, 2, 3, 4, 5, 6, 7])
42010 }
42011}
42012#[doc = "Rounding Add returning High Narrow (high half)."]
42013#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_u64)"]
42014#[inline]
42015#[target_feature(enable = "neon")]
42016#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42017#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
42018#[cfg_attr(
42019 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42020 assert_instr(raddhn2)
42021)]
42022#[cfg_attr(
42023 not(target_arch = "arm"),
42024 stable(feature = "neon_intrinsics", since = "1.59.0")
42025)]
42026#[cfg_attr(
42027 target_arch = "arm",
42028 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42029)]
42030pub fn vraddhn_high_u64(a: uint32x2_t, b: uint64x2_t, c: uint64x2_t) -> uint32x4_t {
42031 unsafe {
42032 let x: uint32x2_t = transmute(vraddhn_s64(transmute(b), transmute(c)));
42033 simd_shuffle!(a, x, [0, 1, 2, 3])
42034 }
42035}
42036#[doc = "Rounding Add returning High Narrow."]
42037#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_s16)"]
42038#[inline]
42039#[target_feature(enable = "neon")]
42040#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42041#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i16"))]
42042#[cfg_attr(
42043 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42044 assert_instr(raddhn)
42045)]
42046#[cfg_attr(
42047 not(target_arch = "arm"),
42048 stable(feature = "neon_intrinsics", since = "1.59.0")
42049)]
42050#[cfg_attr(
42051 target_arch = "arm",
42052 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42053)]
42054pub fn vraddhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t {
42055 unsafe extern "unadjusted" {
42056 #[cfg_attr(
42057 any(target_arch = "aarch64", target_arch = "arm64ec"),
42058 link_name = "llvm.aarch64.neon.raddhn.v8i8"
42059 )]
42060 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vraddhn.v8i8")]
42061 fn _vraddhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t;
42062 }
42063 unsafe { _vraddhn_s16(a, b) }
42064}
42065#[doc = "Rounding Add returning High Narrow."]
42066#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_s32)"]
42067#[inline]
42068#[target_feature(enable = "neon")]
42069#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42070#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
42071#[cfg_attr(
42072 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42073 assert_instr(raddhn)
42074)]
42075#[cfg_attr(
42076 not(target_arch = "arm"),
42077 stable(feature = "neon_intrinsics", since = "1.59.0")
42078)]
42079#[cfg_attr(
42080 target_arch = "arm",
42081 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42082)]
42083pub fn vraddhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t {
42084 unsafe extern "unadjusted" {
42085 #[cfg_attr(
42086 any(target_arch = "aarch64", target_arch = "arm64ec"),
42087 link_name = "llvm.aarch64.neon.raddhn.v4i16"
42088 )]
42089 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vraddhn.v4i16")]
42090 fn _vraddhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t;
42091 }
42092 unsafe { _vraddhn_s32(a, b) }
42093}
42094#[doc = "Rounding Add returning High Narrow."]
42095#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_s64)"]
42096#[inline]
42097#[target_feature(enable = "neon")]
42098#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42099#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
42100#[cfg_attr(
42101 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42102 assert_instr(raddhn)
42103)]
42104#[cfg_attr(
42105 not(target_arch = "arm"),
42106 stable(feature = "neon_intrinsics", since = "1.59.0")
42107)]
42108#[cfg_attr(
42109 target_arch = "arm",
42110 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42111)]
42112pub fn vraddhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t {
42113 unsafe extern "unadjusted" {
42114 #[cfg_attr(
42115 any(target_arch = "aarch64", target_arch = "arm64ec"),
42116 link_name = "llvm.aarch64.neon.raddhn.v2i32"
42117 )]
42118 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vraddhn.v2i32")]
42119 fn _vraddhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t;
42120 }
42121 unsafe { _vraddhn_s64(a, b) }
42122}
42123#[doc = "Rounding Add returning High Narrow."]
42124#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u16)"]
42125#[inline]
42126#[cfg(target_endian = "little")]
42127#[target_feature(enable = "neon")]
42128#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42129#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i16"))]
42130#[cfg_attr(
42131 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42132 assert_instr(raddhn)
42133)]
42134#[cfg_attr(
42135 not(target_arch = "arm"),
42136 stable(feature = "neon_intrinsics", since = "1.59.0")
42137)]
42138#[cfg_attr(
42139 target_arch = "arm",
42140 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42141)]
42142pub fn vraddhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
42143 unsafe { transmute(vraddhn_s16(transmute(a), transmute(b))) }
42144}
42145#[doc = "Rounding Add returning High Narrow."]
42146#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u16)"]
42147#[inline]
42148#[cfg(target_endian = "big")]
42149#[target_feature(enable = "neon")]
42150#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42151#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i16"))]
42152#[cfg_attr(
42153 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42154 assert_instr(raddhn)
42155)]
42156#[cfg_attr(
42157 not(target_arch = "arm"),
42158 stable(feature = "neon_intrinsics", since = "1.59.0")
42159)]
42160#[cfg_attr(
42161 target_arch = "arm",
42162 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42163)]
42164pub fn vraddhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
42165 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
42166 let b: uint16x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
42167 unsafe {
42168 let ret_val: uint8x8_t = transmute(vraddhn_s16(transmute(a), transmute(b)));
42169 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
42170 }
42171}
42172#[doc = "Rounding Add returning High Narrow."]
42173#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u32)"]
42174#[inline]
42175#[cfg(target_endian = "little")]
42176#[target_feature(enable = "neon")]
42177#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42178#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
42179#[cfg_attr(
42180 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42181 assert_instr(raddhn)
42182)]
42183#[cfg_attr(
42184 not(target_arch = "arm"),
42185 stable(feature = "neon_intrinsics", since = "1.59.0")
42186)]
42187#[cfg_attr(
42188 target_arch = "arm",
42189 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42190)]
42191pub fn vraddhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
42192 unsafe { transmute(vraddhn_s32(transmute(a), transmute(b))) }
42193}
42194#[doc = "Rounding Add returning High Narrow."]
42195#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u32)"]
42196#[inline]
42197#[cfg(target_endian = "big")]
42198#[target_feature(enable = "neon")]
42199#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42200#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
42201#[cfg_attr(
42202 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42203 assert_instr(raddhn)
42204)]
42205#[cfg_attr(
42206 not(target_arch = "arm"),
42207 stable(feature = "neon_intrinsics", since = "1.59.0")
42208)]
42209#[cfg_attr(
42210 target_arch = "arm",
42211 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42212)]
42213pub fn vraddhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
42214 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
42215 let b: uint32x4_t = unsafe { simd_shuffle!(b, b, [3, 2, 1, 0]) };
42216 unsafe {
42217 let ret_val: uint16x4_t = transmute(vraddhn_s32(transmute(a), transmute(b)));
42218 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
42219 }
42220}
42221#[doc = "Rounding Add returning High Narrow."]
42222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u64)"]
42223#[inline]
42224#[cfg(target_endian = "little")]
42225#[target_feature(enable = "neon")]
42226#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42227#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
42228#[cfg_attr(
42229 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42230 assert_instr(raddhn)
42231)]
42232#[cfg_attr(
42233 not(target_arch = "arm"),
42234 stable(feature = "neon_intrinsics", since = "1.59.0")
42235)]
42236#[cfg_attr(
42237 target_arch = "arm",
42238 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42239)]
42240pub fn vraddhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
42241 unsafe { transmute(vraddhn_s64(transmute(a), transmute(b))) }
42242}
42243#[doc = "Rounding Add returning High Narrow."]
42244#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u64)"]
42245#[inline]
42246#[cfg(target_endian = "big")]
42247#[target_feature(enable = "neon")]
42248#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42249#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
42250#[cfg_attr(
42251 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42252 assert_instr(raddhn)
42253)]
42254#[cfg_attr(
42255 not(target_arch = "arm"),
42256 stable(feature = "neon_intrinsics", since = "1.59.0")
42257)]
42258#[cfg_attr(
42259 target_arch = "arm",
42260 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42261)]
42262pub fn vraddhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
42263 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
42264 let b: uint64x2_t = unsafe { simd_shuffle!(b, b, [1, 0]) };
42265 unsafe {
42266 let ret_val: uint32x2_t = transmute(vraddhn_s64(transmute(a), transmute(b)));
42267 simd_shuffle!(ret_val, ret_val, [1, 0])
42268 }
42269}
42270#[doc = "Reciprocal estimate."]
42271#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpe_f16)"]
42272#[inline]
42273#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42274#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
42275#[cfg_attr(
42276 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42277 assert_instr(frecpe)
42278)]
42279#[target_feature(enable = "neon,fp16")]
42280#[cfg_attr(
42281 not(target_arch = "arm"),
42282 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42283)]
42284#[cfg_attr(
42285 target_arch = "arm",
42286 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42287)]
42288#[cfg(not(target_arch = "arm64ec"))]
42289pub fn vrecpe_f16(a: float16x4_t) -> float16x4_t {
42290 unsafe extern "unadjusted" {
42291 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v4f16")]
42292 #[cfg_attr(
42293 any(target_arch = "aarch64", target_arch = "arm64ec"),
42294 link_name = "llvm.aarch64.neon.frecpe.v4f16"
42295 )]
42296 fn _vrecpe_f16(a: float16x4_t) -> float16x4_t;
42297 }
42298 unsafe { _vrecpe_f16(a) }
42299}
42300#[doc = "Reciprocal estimate."]
42301#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpeq_f16)"]
42302#[inline]
42303#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42304#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
42305#[cfg_attr(
42306 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42307 assert_instr(frecpe)
42308)]
42309#[target_feature(enable = "neon,fp16")]
42310#[cfg_attr(
42311 not(target_arch = "arm"),
42312 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42313)]
42314#[cfg_attr(
42315 target_arch = "arm",
42316 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42317)]
42318#[cfg(not(target_arch = "arm64ec"))]
42319pub fn vrecpeq_f16(a: float16x8_t) -> float16x8_t {
42320 unsafe extern "unadjusted" {
42321 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v8f16")]
42322 #[cfg_attr(
42323 any(target_arch = "aarch64", target_arch = "arm64ec"),
42324 link_name = "llvm.aarch64.neon.frecpe.v8f16"
42325 )]
42326 fn _vrecpeq_f16(a: float16x8_t) -> float16x8_t;
42327 }
42328 unsafe { _vrecpeq_f16(a) }
42329}
42330#[doc = "Reciprocal estimate."]
42331#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpe_f32)"]
42332#[inline]
42333#[target_feature(enable = "neon")]
42334#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42335#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
42336#[cfg_attr(
42337 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42338 assert_instr(frecpe)
42339)]
42340#[cfg_attr(
42341 not(target_arch = "arm"),
42342 stable(feature = "neon_intrinsics", since = "1.59.0")
42343)]
42344#[cfg_attr(
42345 target_arch = "arm",
42346 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42347)]
42348pub fn vrecpe_f32(a: float32x2_t) -> float32x2_t {
42349 unsafe extern "unadjusted" {
42350 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v2f32")]
42351 #[cfg_attr(
42352 any(target_arch = "aarch64", target_arch = "arm64ec"),
42353 link_name = "llvm.aarch64.neon.frecpe.v2f32"
42354 )]
42355 fn _vrecpe_f32(a: float32x2_t) -> float32x2_t;
42356 }
42357 unsafe { _vrecpe_f32(a) }
42358}
42359#[doc = "Reciprocal estimate."]
42360#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpeq_f32)"]
42361#[inline]
42362#[target_feature(enable = "neon")]
42363#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42364#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
42365#[cfg_attr(
42366 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42367 assert_instr(frecpe)
42368)]
42369#[cfg_attr(
42370 not(target_arch = "arm"),
42371 stable(feature = "neon_intrinsics", since = "1.59.0")
42372)]
42373#[cfg_attr(
42374 target_arch = "arm",
42375 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42376)]
42377pub fn vrecpeq_f32(a: float32x4_t) -> float32x4_t {
42378 unsafe extern "unadjusted" {
42379 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v4f32")]
42380 #[cfg_attr(
42381 any(target_arch = "aarch64", target_arch = "arm64ec"),
42382 link_name = "llvm.aarch64.neon.frecpe.v4f32"
42383 )]
42384 fn _vrecpeq_f32(a: float32x4_t) -> float32x4_t;
42385 }
42386 unsafe { _vrecpeq_f32(a) }
42387}
42388#[doc = "Unsigned reciprocal estimate"]
42389#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpe_u32)"]
42390#[inline]
42391#[target_feature(enable = "neon")]
42392#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42393#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
42394#[cfg_attr(
42395 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42396 assert_instr(urecpe)
42397)]
42398#[cfg_attr(
42399 not(target_arch = "arm"),
42400 stable(feature = "neon_intrinsics", since = "1.59.0")
42401)]
42402#[cfg_attr(
42403 target_arch = "arm",
42404 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42405)]
42406pub fn vrecpe_u32(a: uint32x2_t) -> uint32x2_t {
42407 unsafe extern "unadjusted" {
42408 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v2i32")]
42409 #[cfg_attr(
42410 any(target_arch = "aarch64", target_arch = "arm64ec"),
42411 link_name = "llvm.aarch64.neon.urecpe.v2i32"
42412 )]
42413 fn _vrecpe_u32(a: uint32x2_t) -> uint32x2_t;
42414 }
42415 unsafe { _vrecpe_u32(a) }
42416}
42417#[doc = "Unsigned reciprocal estimate"]
42418#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpeq_u32)"]
42419#[inline]
42420#[target_feature(enable = "neon")]
42421#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42422#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
42423#[cfg_attr(
42424 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42425 assert_instr(urecpe)
42426)]
42427#[cfg_attr(
42428 not(target_arch = "arm"),
42429 stable(feature = "neon_intrinsics", since = "1.59.0")
42430)]
42431#[cfg_attr(
42432 target_arch = "arm",
42433 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42434)]
42435pub fn vrecpeq_u32(a: uint32x4_t) -> uint32x4_t {
42436 unsafe extern "unadjusted" {
42437 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v4i32")]
42438 #[cfg_attr(
42439 any(target_arch = "aarch64", target_arch = "arm64ec"),
42440 link_name = "llvm.aarch64.neon.urecpe.v4i32"
42441 )]
42442 fn _vrecpeq_u32(a: uint32x4_t) -> uint32x4_t;
42443 }
42444 unsafe { _vrecpeq_u32(a) }
42445}
42446#[doc = "Floating-point reciprocal step"]
42447#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecps_f16)"]
42448#[inline]
42449#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42450#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecps))]
42451#[cfg_attr(
42452 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42453 assert_instr(frecps)
42454)]
42455#[target_feature(enable = "neon,fp16")]
42456#[cfg_attr(
42457 not(target_arch = "arm"),
42458 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42459)]
42460#[cfg_attr(
42461 target_arch = "arm",
42462 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42463)]
42464#[cfg(not(target_arch = "arm64ec"))]
42465pub fn vrecps_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
42466 unsafe extern "unadjusted" {
42467 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecps.v4f16")]
42468 #[cfg_attr(
42469 any(target_arch = "aarch64", target_arch = "arm64ec"),
42470 link_name = "llvm.aarch64.neon.frecps.v4f16"
42471 )]
42472 fn _vrecps_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
42473 }
42474 unsafe { _vrecps_f16(a, b) }
42475}
42476#[doc = "Floating-point reciprocal step"]
42477#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpsq_f16)"]
42478#[inline]
42479#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42480#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecps))]
42481#[cfg_attr(
42482 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42483 assert_instr(frecps)
42484)]
42485#[target_feature(enable = "neon,fp16")]
42486#[cfg_attr(
42487 not(target_arch = "arm"),
42488 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42489)]
42490#[cfg_attr(
42491 target_arch = "arm",
42492 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42493)]
42494#[cfg(not(target_arch = "arm64ec"))]
42495pub fn vrecpsq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
42496 unsafe extern "unadjusted" {
42497 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecps.v8f16")]
42498 #[cfg_attr(
42499 any(target_arch = "aarch64", target_arch = "arm64ec"),
42500 link_name = "llvm.aarch64.neon.frecps.v8f16"
42501 )]
42502 fn _vrecpsq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
42503 }
42504 unsafe { _vrecpsq_f16(a, b) }
42505}
42506#[doc = "Floating-point reciprocal step"]
42507#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecps_f32)"]
42508#[inline]
42509#[target_feature(enable = "neon")]
42510#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42511#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecps))]
42512#[cfg_attr(
42513 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42514 assert_instr(frecps)
42515)]
42516#[cfg_attr(
42517 not(target_arch = "arm"),
42518 stable(feature = "neon_intrinsics", since = "1.59.0")
42519)]
42520#[cfg_attr(
42521 target_arch = "arm",
42522 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42523)]
42524pub fn vrecps_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
42525 unsafe extern "unadjusted" {
42526 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecps.v2f32")]
42527 #[cfg_attr(
42528 any(target_arch = "aarch64", target_arch = "arm64ec"),
42529 link_name = "llvm.aarch64.neon.frecps.v2f32"
42530 )]
42531 fn _vrecps_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
42532 }
42533 unsafe { _vrecps_f32(a, b) }
42534}
42535#[doc = "Floating-point reciprocal step"]
42536#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpsq_f32)"]
42537#[inline]
42538#[target_feature(enable = "neon")]
42539#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42540#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecps))]
42541#[cfg_attr(
42542 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42543 assert_instr(frecps)
42544)]
42545#[cfg_attr(
42546 not(target_arch = "arm"),
42547 stable(feature = "neon_intrinsics", since = "1.59.0")
42548)]
42549#[cfg_attr(
42550 target_arch = "arm",
42551 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42552)]
42553pub fn vrecpsq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
42554 unsafe extern "unadjusted" {
42555 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecps.v4f32")]
42556 #[cfg_attr(
42557 any(target_arch = "aarch64", target_arch = "arm64ec"),
42558 link_name = "llvm.aarch64.neon.frecps.v4f32"
42559 )]
42560 fn _vrecpsq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
42561 }
42562 unsafe { _vrecpsq_f32(a, b) }
42563}
42564#[doc = "Vector reinterpret cast operation"]
42565#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_f16)"]
42566#[inline]
42567#[cfg(target_endian = "little")]
42568#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42569#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42570#[cfg_attr(
42571 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42572 assert_instr(nop)
42573)]
42574#[target_feature(enable = "neon,fp16")]
42575#[cfg_attr(
42576 not(target_arch = "arm"),
42577 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42578)]
42579#[cfg_attr(
42580 target_arch = "arm",
42581 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42582)]
42583#[cfg(not(target_arch = "arm64ec"))]
42584pub fn vreinterpret_f32_f16(a: float16x4_t) -> float32x2_t {
42585 unsafe { transmute(a) }
42586}
42587#[doc = "Vector reinterpret cast operation"]
42588#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_f16)"]
42589#[inline]
42590#[cfg(target_endian = "big")]
42591#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42592#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42593#[cfg_attr(
42594 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42595 assert_instr(nop)
42596)]
42597#[target_feature(enable = "neon,fp16")]
42598#[cfg_attr(
42599 not(target_arch = "arm"),
42600 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42601)]
42602#[cfg_attr(
42603 target_arch = "arm",
42604 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42605)]
42606#[cfg(not(target_arch = "arm64ec"))]
42607pub fn vreinterpret_f32_f16(a: float16x4_t) -> float32x2_t {
42608 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
42609 unsafe {
42610 let ret_val: float32x2_t = transmute(a);
42611 simd_shuffle!(ret_val, ret_val, [1, 0])
42612 }
42613}
42614#[doc = "Vector reinterpret cast operation"]
42615#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_f16)"]
42616#[inline]
42617#[cfg(target_endian = "little")]
42618#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42619#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42620#[cfg_attr(
42621 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42622 assert_instr(nop)
42623)]
42624#[target_feature(enable = "neon,fp16")]
42625#[cfg_attr(
42626 not(target_arch = "arm"),
42627 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42628)]
42629#[cfg_attr(
42630 target_arch = "arm",
42631 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42632)]
42633#[cfg(not(target_arch = "arm64ec"))]
42634pub fn vreinterpret_s8_f16(a: float16x4_t) -> int8x8_t {
42635 unsafe { transmute(a) }
42636}
42637#[doc = "Vector reinterpret cast operation"]
42638#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_f16)"]
42639#[inline]
42640#[cfg(target_endian = "big")]
42641#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42642#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42643#[cfg_attr(
42644 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42645 assert_instr(nop)
42646)]
42647#[target_feature(enable = "neon,fp16")]
42648#[cfg_attr(
42649 not(target_arch = "arm"),
42650 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42651)]
42652#[cfg_attr(
42653 target_arch = "arm",
42654 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42655)]
42656#[cfg(not(target_arch = "arm64ec"))]
42657pub fn vreinterpret_s8_f16(a: float16x4_t) -> int8x8_t {
42658 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
42659 unsafe {
42660 let ret_val: int8x8_t = transmute(a);
42661 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
42662 }
42663}
42664#[doc = "Vector reinterpret cast operation"]
42665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_f16)"]
42666#[inline]
42667#[cfg(target_endian = "little")]
42668#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42669#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42670#[cfg_attr(
42671 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42672 assert_instr(nop)
42673)]
42674#[target_feature(enable = "neon,fp16")]
42675#[cfg_attr(
42676 not(target_arch = "arm"),
42677 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42678)]
42679#[cfg_attr(
42680 target_arch = "arm",
42681 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42682)]
42683#[cfg(not(target_arch = "arm64ec"))]
42684pub fn vreinterpret_s16_f16(a: float16x4_t) -> int16x4_t {
42685 unsafe { transmute(a) }
42686}
42687#[doc = "Vector reinterpret cast operation"]
42688#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_f16)"]
42689#[inline]
42690#[cfg(target_endian = "big")]
42691#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42692#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42693#[cfg_attr(
42694 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42695 assert_instr(nop)
42696)]
42697#[target_feature(enable = "neon,fp16")]
42698#[cfg_attr(
42699 not(target_arch = "arm"),
42700 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42701)]
42702#[cfg_attr(
42703 target_arch = "arm",
42704 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42705)]
42706#[cfg(not(target_arch = "arm64ec"))]
42707pub fn vreinterpret_s16_f16(a: float16x4_t) -> int16x4_t {
42708 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
42709 unsafe {
42710 let ret_val: int16x4_t = transmute(a);
42711 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
42712 }
42713}
42714#[doc = "Vector reinterpret cast operation"]
42715#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_f16)"]
42716#[inline]
42717#[cfg(target_endian = "little")]
42718#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42719#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42720#[cfg_attr(
42721 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42722 assert_instr(nop)
42723)]
42724#[target_feature(enable = "neon,fp16")]
42725#[cfg_attr(
42726 not(target_arch = "arm"),
42727 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42728)]
42729#[cfg_attr(
42730 target_arch = "arm",
42731 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42732)]
42733#[cfg(not(target_arch = "arm64ec"))]
42734pub fn vreinterpret_s32_f16(a: float16x4_t) -> int32x2_t {
42735 unsafe { transmute(a) }
42736}
42737#[doc = "Vector reinterpret cast operation"]
42738#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_f16)"]
42739#[inline]
42740#[cfg(target_endian = "big")]
42741#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42742#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42743#[cfg_attr(
42744 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42745 assert_instr(nop)
42746)]
42747#[target_feature(enable = "neon,fp16")]
42748#[cfg_attr(
42749 not(target_arch = "arm"),
42750 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42751)]
42752#[cfg_attr(
42753 target_arch = "arm",
42754 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42755)]
42756#[cfg(not(target_arch = "arm64ec"))]
42757pub fn vreinterpret_s32_f16(a: float16x4_t) -> int32x2_t {
42758 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
42759 unsafe {
42760 let ret_val: int32x2_t = transmute(a);
42761 simd_shuffle!(ret_val, ret_val, [1, 0])
42762 }
42763}
42764#[doc = "Vector reinterpret cast operation"]
42765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_f16)"]
42766#[inline]
42767#[cfg(target_endian = "little")]
42768#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42769#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42770#[cfg_attr(
42771 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42772 assert_instr(nop)
42773)]
42774#[target_feature(enable = "neon,fp16")]
42775#[cfg_attr(
42776 not(target_arch = "arm"),
42777 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42778)]
42779#[cfg_attr(
42780 target_arch = "arm",
42781 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42782)]
42783#[cfg(not(target_arch = "arm64ec"))]
42784pub fn vreinterpret_s64_f16(a: float16x4_t) -> int64x1_t {
42785 unsafe { transmute(a) }
42786}
42787#[doc = "Vector reinterpret cast operation"]
42788#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_f16)"]
42789#[inline]
42790#[cfg(target_endian = "big")]
42791#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42792#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42793#[cfg_attr(
42794 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42795 assert_instr(nop)
42796)]
42797#[target_feature(enable = "neon,fp16")]
42798#[cfg_attr(
42799 not(target_arch = "arm"),
42800 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42801)]
42802#[cfg_attr(
42803 target_arch = "arm",
42804 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42805)]
42806#[cfg(not(target_arch = "arm64ec"))]
42807pub fn vreinterpret_s64_f16(a: float16x4_t) -> int64x1_t {
42808 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
42809 unsafe { transmute(a) }
42810}
42811#[doc = "Vector reinterpret cast operation"]
42812#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_f16)"]
42813#[inline]
42814#[cfg(target_endian = "little")]
42815#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42816#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42817#[cfg_attr(
42818 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42819 assert_instr(nop)
42820)]
42821#[target_feature(enable = "neon,fp16")]
42822#[cfg_attr(
42823 not(target_arch = "arm"),
42824 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42825)]
42826#[cfg_attr(
42827 target_arch = "arm",
42828 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42829)]
42830#[cfg(not(target_arch = "arm64ec"))]
42831pub fn vreinterpret_u8_f16(a: float16x4_t) -> uint8x8_t {
42832 unsafe { transmute(a) }
42833}
42834#[doc = "Vector reinterpret cast operation"]
42835#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_f16)"]
42836#[inline]
42837#[cfg(target_endian = "big")]
42838#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42839#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42840#[cfg_attr(
42841 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42842 assert_instr(nop)
42843)]
42844#[target_feature(enable = "neon,fp16")]
42845#[cfg_attr(
42846 not(target_arch = "arm"),
42847 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42848)]
42849#[cfg_attr(
42850 target_arch = "arm",
42851 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42852)]
42853#[cfg(not(target_arch = "arm64ec"))]
42854pub fn vreinterpret_u8_f16(a: float16x4_t) -> uint8x8_t {
42855 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
42856 unsafe {
42857 let ret_val: uint8x8_t = transmute(a);
42858 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
42859 }
42860}
42861#[doc = "Vector reinterpret cast operation"]
42862#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_f16)"]
42863#[inline]
42864#[cfg(target_endian = "little")]
42865#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42866#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42867#[cfg_attr(
42868 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42869 assert_instr(nop)
42870)]
42871#[target_feature(enable = "neon,fp16")]
42872#[cfg_attr(
42873 not(target_arch = "arm"),
42874 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42875)]
42876#[cfg_attr(
42877 target_arch = "arm",
42878 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42879)]
42880#[cfg(not(target_arch = "arm64ec"))]
42881pub fn vreinterpret_u16_f16(a: float16x4_t) -> uint16x4_t {
42882 unsafe { transmute(a) }
42883}
42884#[doc = "Vector reinterpret cast operation"]
42885#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_f16)"]
42886#[inline]
42887#[cfg(target_endian = "big")]
42888#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42889#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42890#[cfg_attr(
42891 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42892 assert_instr(nop)
42893)]
42894#[target_feature(enable = "neon,fp16")]
42895#[cfg_attr(
42896 not(target_arch = "arm"),
42897 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42898)]
42899#[cfg_attr(
42900 target_arch = "arm",
42901 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42902)]
42903#[cfg(not(target_arch = "arm64ec"))]
42904pub fn vreinterpret_u16_f16(a: float16x4_t) -> uint16x4_t {
42905 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
42906 unsafe {
42907 let ret_val: uint16x4_t = transmute(a);
42908 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
42909 }
42910}
42911#[doc = "Vector reinterpret cast operation"]
42912#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_f16)"]
42913#[inline]
42914#[cfg(target_endian = "little")]
42915#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42916#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42917#[cfg_attr(
42918 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42919 assert_instr(nop)
42920)]
42921#[target_feature(enable = "neon,fp16")]
42922#[cfg_attr(
42923 not(target_arch = "arm"),
42924 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42925)]
42926#[cfg_attr(
42927 target_arch = "arm",
42928 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42929)]
42930#[cfg(not(target_arch = "arm64ec"))]
42931pub fn vreinterpret_u32_f16(a: float16x4_t) -> uint32x2_t {
42932 unsafe { transmute(a) }
42933}
42934#[doc = "Vector reinterpret cast operation"]
42935#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_f16)"]
42936#[inline]
42937#[cfg(target_endian = "big")]
42938#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42939#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42940#[cfg_attr(
42941 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42942 assert_instr(nop)
42943)]
42944#[target_feature(enable = "neon,fp16")]
42945#[cfg_attr(
42946 not(target_arch = "arm"),
42947 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42948)]
42949#[cfg_attr(
42950 target_arch = "arm",
42951 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42952)]
42953#[cfg(not(target_arch = "arm64ec"))]
42954pub fn vreinterpret_u32_f16(a: float16x4_t) -> uint32x2_t {
42955 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
42956 unsafe {
42957 let ret_val: uint32x2_t = transmute(a);
42958 simd_shuffle!(ret_val, ret_val, [1, 0])
42959 }
42960}
42961#[doc = "Vector reinterpret cast operation"]
42962#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_f16)"]
42963#[inline]
42964#[cfg(target_endian = "little")]
42965#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42966#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42967#[cfg_attr(
42968 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42969 assert_instr(nop)
42970)]
42971#[target_feature(enable = "neon,fp16")]
42972#[cfg_attr(
42973 not(target_arch = "arm"),
42974 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42975)]
42976#[cfg_attr(
42977 target_arch = "arm",
42978 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42979)]
42980#[cfg(not(target_arch = "arm64ec"))]
42981pub fn vreinterpret_u64_f16(a: float16x4_t) -> uint64x1_t {
42982 unsafe { transmute(a) }
42983}
42984#[doc = "Vector reinterpret cast operation"]
42985#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_f16)"]
42986#[inline]
42987#[cfg(target_endian = "big")]
42988#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42989#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42990#[cfg_attr(
42991 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42992 assert_instr(nop)
42993)]
42994#[target_feature(enable = "neon,fp16")]
42995#[cfg_attr(
42996 not(target_arch = "arm"),
42997 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42998)]
42999#[cfg_attr(
43000 target_arch = "arm",
43001 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43002)]
43003#[cfg(not(target_arch = "arm64ec"))]
43004pub fn vreinterpret_u64_f16(a: float16x4_t) -> uint64x1_t {
43005 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43006 unsafe { transmute(a) }
43007}
43008#[doc = "Vector reinterpret cast operation"]
43009#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_f16)"]
43010#[inline]
43011#[cfg(target_endian = "little")]
43012#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43013#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43014#[cfg_attr(
43015 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43016 assert_instr(nop)
43017)]
43018#[target_feature(enable = "neon,fp16")]
43019#[cfg_attr(
43020 not(target_arch = "arm"),
43021 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43022)]
43023#[cfg_attr(
43024 target_arch = "arm",
43025 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43026)]
43027#[cfg(not(target_arch = "arm64ec"))]
43028pub fn vreinterpret_p8_f16(a: float16x4_t) -> poly8x8_t {
43029 unsafe { transmute(a) }
43030}
43031#[doc = "Vector reinterpret cast operation"]
43032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_f16)"]
43033#[inline]
43034#[cfg(target_endian = "big")]
43035#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43036#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43037#[cfg_attr(
43038 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43039 assert_instr(nop)
43040)]
43041#[target_feature(enable = "neon,fp16")]
43042#[cfg_attr(
43043 not(target_arch = "arm"),
43044 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43045)]
43046#[cfg_attr(
43047 target_arch = "arm",
43048 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43049)]
43050#[cfg(not(target_arch = "arm64ec"))]
43051pub fn vreinterpret_p8_f16(a: float16x4_t) -> poly8x8_t {
43052 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43053 unsafe {
43054 let ret_val: poly8x8_t = transmute(a);
43055 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
43056 }
43057}
43058#[doc = "Vector reinterpret cast operation"]
43059#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_f16)"]
43060#[inline]
43061#[cfg(target_endian = "little")]
43062#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43063#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43064#[cfg_attr(
43065 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43066 assert_instr(nop)
43067)]
43068#[target_feature(enable = "neon,fp16")]
43069#[cfg_attr(
43070 not(target_arch = "arm"),
43071 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43072)]
43073#[cfg_attr(
43074 target_arch = "arm",
43075 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43076)]
43077#[cfg(not(target_arch = "arm64ec"))]
43078pub fn vreinterpret_p16_f16(a: float16x4_t) -> poly16x4_t {
43079 unsafe { transmute(a) }
43080}
43081#[doc = "Vector reinterpret cast operation"]
43082#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_f16)"]
43083#[inline]
43084#[cfg(target_endian = "big")]
43085#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43086#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43087#[cfg_attr(
43088 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43089 assert_instr(nop)
43090)]
43091#[target_feature(enable = "neon,fp16")]
43092#[cfg_attr(
43093 not(target_arch = "arm"),
43094 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43095)]
43096#[cfg_attr(
43097 target_arch = "arm",
43098 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43099)]
43100#[cfg(not(target_arch = "arm64ec"))]
43101pub fn vreinterpret_p16_f16(a: float16x4_t) -> poly16x4_t {
43102 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43103 unsafe {
43104 let ret_val: poly16x4_t = transmute(a);
43105 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
43106 }
43107}
43108#[doc = "Vector reinterpret cast operation"]
43109#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_f16)"]
43110#[inline]
43111#[cfg(target_endian = "little")]
43112#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43113#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43114#[cfg_attr(
43115 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43116 assert_instr(nop)
43117)]
43118#[target_feature(enable = "neon,fp16")]
43119#[cfg_attr(
43120 not(target_arch = "arm"),
43121 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43122)]
43123#[cfg_attr(
43124 target_arch = "arm",
43125 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43126)]
43127#[cfg(not(target_arch = "arm64ec"))]
43128pub fn vreinterpretq_f32_f16(a: float16x8_t) -> float32x4_t {
43129 unsafe { transmute(a) }
43130}
43131#[doc = "Vector reinterpret cast operation"]
43132#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_f16)"]
43133#[inline]
43134#[cfg(target_endian = "big")]
43135#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43136#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43137#[cfg_attr(
43138 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43139 assert_instr(nop)
43140)]
43141#[target_feature(enable = "neon,fp16")]
43142#[cfg_attr(
43143 not(target_arch = "arm"),
43144 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43145)]
43146#[cfg_attr(
43147 target_arch = "arm",
43148 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43149)]
43150#[cfg(not(target_arch = "arm64ec"))]
43151pub fn vreinterpretq_f32_f16(a: float16x8_t) -> float32x4_t {
43152 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43153 unsafe {
43154 let ret_val: float32x4_t = transmute(a);
43155 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
43156 }
43157}
43158#[doc = "Vector reinterpret cast operation"]
43159#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_f16)"]
43160#[inline]
43161#[cfg(target_endian = "little")]
43162#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43163#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43164#[cfg_attr(
43165 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43166 assert_instr(nop)
43167)]
43168#[target_feature(enable = "neon,fp16")]
43169#[cfg_attr(
43170 not(target_arch = "arm"),
43171 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43172)]
43173#[cfg_attr(
43174 target_arch = "arm",
43175 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43176)]
43177#[cfg(not(target_arch = "arm64ec"))]
43178pub fn vreinterpretq_s8_f16(a: float16x8_t) -> int8x16_t {
43179 unsafe { transmute(a) }
43180}
43181#[doc = "Vector reinterpret cast operation"]
43182#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_f16)"]
43183#[inline]
43184#[cfg(target_endian = "big")]
43185#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43186#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43187#[cfg_attr(
43188 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43189 assert_instr(nop)
43190)]
43191#[target_feature(enable = "neon,fp16")]
43192#[cfg_attr(
43193 not(target_arch = "arm"),
43194 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43195)]
43196#[cfg_attr(
43197 target_arch = "arm",
43198 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43199)]
43200#[cfg(not(target_arch = "arm64ec"))]
43201pub fn vreinterpretq_s8_f16(a: float16x8_t) -> int8x16_t {
43202 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43203 unsafe {
43204 let ret_val: int8x16_t = transmute(a);
43205 simd_shuffle!(
43206 ret_val,
43207 ret_val,
43208 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
43209 )
43210 }
43211}
43212#[doc = "Vector reinterpret cast operation"]
43213#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_f16)"]
43214#[inline]
43215#[cfg(target_endian = "little")]
43216#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43217#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43218#[cfg_attr(
43219 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43220 assert_instr(nop)
43221)]
43222#[target_feature(enable = "neon,fp16")]
43223#[cfg_attr(
43224 not(target_arch = "arm"),
43225 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43226)]
43227#[cfg_attr(
43228 target_arch = "arm",
43229 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43230)]
43231#[cfg(not(target_arch = "arm64ec"))]
43232pub fn vreinterpretq_s16_f16(a: float16x8_t) -> int16x8_t {
43233 unsafe { transmute(a) }
43234}
43235#[doc = "Vector reinterpret cast operation"]
43236#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_f16)"]
43237#[inline]
43238#[cfg(target_endian = "big")]
43239#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43240#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43241#[cfg_attr(
43242 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43243 assert_instr(nop)
43244)]
43245#[target_feature(enable = "neon,fp16")]
43246#[cfg_attr(
43247 not(target_arch = "arm"),
43248 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43249)]
43250#[cfg_attr(
43251 target_arch = "arm",
43252 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43253)]
43254#[cfg(not(target_arch = "arm64ec"))]
43255pub fn vreinterpretq_s16_f16(a: float16x8_t) -> int16x8_t {
43256 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43257 unsafe {
43258 let ret_val: int16x8_t = transmute(a);
43259 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
43260 }
43261}
43262#[doc = "Vector reinterpret cast operation"]
43263#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_f16)"]
43264#[inline]
43265#[cfg(target_endian = "little")]
43266#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43267#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43268#[cfg_attr(
43269 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43270 assert_instr(nop)
43271)]
43272#[target_feature(enable = "neon,fp16")]
43273#[cfg_attr(
43274 not(target_arch = "arm"),
43275 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43276)]
43277#[cfg_attr(
43278 target_arch = "arm",
43279 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43280)]
43281#[cfg(not(target_arch = "arm64ec"))]
43282pub fn vreinterpretq_s32_f16(a: float16x8_t) -> int32x4_t {
43283 unsafe { transmute(a) }
43284}
43285#[doc = "Vector reinterpret cast operation"]
43286#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_f16)"]
43287#[inline]
43288#[cfg(target_endian = "big")]
43289#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43290#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43291#[cfg_attr(
43292 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43293 assert_instr(nop)
43294)]
43295#[target_feature(enable = "neon,fp16")]
43296#[cfg_attr(
43297 not(target_arch = "arm"),
43298 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43299)]
43300#[cfg_attr(
43301 target_arch = "arm",
43302 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43303)]
43304#[cfg(not(target_arch = "arm64ec"))]
43305pub fn vreinterpretq_s32_f16(a: float16x8_t) -> int32x4_t {
43306 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43307 unsafe {
43308 let ret_val: int32x4_t = transmute(a);
43309 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
43310 }
43311}
43312#[doc = "Vector reinterpret cast operation"]
43313#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_f16)"]
43314#[inline]
43315#[cfg(target_endian = "little")]
43316#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43317#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43318#[cfg_attr(
43319 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43320 assert_instr(nop)
43321)]
43322#[target_feature(enable = "neon,fp16")]
43323#[cfg_attr(
43324 not(target_arch = "arm"),
43325 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43326)]
43327#[cfg_attr(
43328 target_arch = "arm",
43329 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43330)]
43331#[cfg(not(target_arch = "arm64ec"))]
43332pub fn vreinterpretq_s64_f16(a: float16x8_t) -> int64x2_t {
43333 unsafe { transmute(a) }
43334}
43335#[doc = "Vector reinterpret cast operation"]
43336#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_f16)"]
43337#[inline]
43338#[cfg(target_endian = "big")]
43339#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43340#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43341#[cfg_attr(
43342 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43343 assert_instr(nop)
43344)]
43345#[target_feature(enable = "neon,fp16")]
43346#[cfg_attr(
43347 not(target_arch = "arm"),
43348 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43349)]
43350#[cfg_attr(
43351 target_arch = "arm",
43352 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43353)]
43354#[cfg(not(target_arch = "arm64ec"))]
43355pub fn vreinterpretq_s64_f16(a: float16x8_t) -> int64x2_t {
43356 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43357 unsafe {
43358 let ret_val: int64x2_t = transmute(a);
43359 simd_shuffle!(ret_val, ret_val, [1, 0])
43360 }
43361}
43362#[doc = "Vector reinterpret cast operation"]
43363#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_f16)"]
43364#[inline]
43365#[cfg(target_endian = "little")]
43366#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43367#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43368#[cfg_attr(
43369 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43370 assert_instr(nop)
43371)]
43372#[target_feature(enable = "neon,fp16")]
43373#[cfg_attr(
43374 not(target_arch = "arm"),
43375 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43376)]
43377#[cfg_attr(
43378 target_arch = "arm",
43379 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43380)]
43381#[cfg(not(target_arch = "arm64ec"))]
43382pub fn vreinterpretq_u8_f16(a: float16x8_t) -> uint8x16_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/vreinterpretq_u8_f16)"]
43387#[inline]
43388#[cfg(target_endian = "big")]
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#[target_feature(enable = "neon,fp16")]
43396#[cfg_attr(
43397 not(target_arch = "arm"),
43398 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43399)]
43400#[cfg_attr(
43401 target_arch = "arm",
43402 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43403)]
43404#[cfg(not(target_arch = "arm64ec"))]
43405pub fn vreinterpretq_u8_f16(a: float16x8_t) -> uint8x16_t {
43406 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43407 unsafe {
43408 let ret_val: uint8x16_t = transmute(a);
43409 simd_shuffle!(
43410 ret_val,
43411 ret_val,
43412 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
43413 )
43414 }
43415}
43416#[doc = "Vector reinterpret cast operation"]
43417#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_f16)"]
43418#[inline]
43419#[cfg(target_endian = "little")]
43420#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43421#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43422#[cfg_attr(
43423 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43424 assert_instr(nop)
43425)]
43426#[target_feature(enable = "neon,fp16")]
43427#[cfg_attr(
43428 not(target_arch = "arm"),
43429 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43430)]
43431#[cfg_attr(
43432 target_arch = "arm",
43433 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43434)]
43435#[cfg(not(target_arch = "arm64ec"))]
43436pub fn vreinterpretq_u16_f16(a: float16x8_t) -> uint16x8_t {
43437 unsafe { transmute(a) }
43438}
43439#[doc = "Vector reinterpret cast operation"]
43440#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_f16)"]
43441#[inline]
43442#[cfg(target_endian = "big")]
43443#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43444#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43445#[cfg_attr(
43446 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43447 assert_instr(nop)
43448)]
43449#[target_feature(enable = "neon,fp16")]
43450#[cfg_attr(
43451 not(target_arch = "arm"),
43452 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43453)]
43454#[cfg_attr(
43455 target_arch = "arm",
43456 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43457)]
43458#[cfg(not(target_arch = "arm64ec"))]
43459pub fn vreinterpretq_u16_f16(a: float16x8_t) -> uint16x8_t {
43460 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43461 unsafe {
43462 let ret_val: uint16x8_t = transmute(a);
43463 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
43464 }
43465}
43466#[doc = "Vector reinterpret cast operation"]
43467#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_f16)"]
43468#[inline]
43469#[cfg(target_endian = "little")]
43470#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43471#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43472#[cfg_attr(
43473 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43474 assert_instr(nop)
43475)]
43476#[target_feature(enable = "neon,fp16")]
43477#[cfg_attr(
43478 not(target_arch = "arm"),
43479 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43480)]
43481#[cfg_attr(
43482 target_arch = "arm",
43483 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43484)]
43485#[cfg(not(target_arch = "arm64ec"))]
43486pub fn vreinterpretq_u32_f16(a: float16x8_t) -> uint32x4_t {
43487 unsafe { transmute(a) }
43488}
43489#[doc = "Vector reinterpret cast operation"]
43490#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_f16)"]
43491#[inline]
43492#[cfg(target_endian = "big")]
43493#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43494#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43495#[cfg_attr(
43496 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43497 assert_instr(nop)
43498)]
43499#[target_feature(enable = "neon,fp16")]
43500#[cfg_attr(
43501 not(target_arch = "arm"),
43502 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43503)]
43504#[cfg_attr(
43505 target_arch = "arm",
43506 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43507)]
43508#[cfg(not(target_arch = "arm64ec"))]
43509pub fn vreinterpretq_u32_f16(a: float16x8_t) -> uint32x4_t {
43510 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43511 unsafe {
43512 let ret_val: uint32x4_t = transmute(a);
43513 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
43514 }
43515}
43516#[doc = "Vector reinterpret cast operation"]
43517#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_f16)"]
43518#[inline]
43519#[cfg(target_endian = "little")]
43520#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43521#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43522#[cfg_attr(
43523 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43524 assert_instr(nop)
43525)]
43526#[target_feature(enable = "neon,fp16")]
43527#[cfg_attr(
43528 not(target_arch = "arm"),
43529 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43530)]
43531#[cfg_attr(
43532 target_arch = "arm",
43533 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43534)]
43535#[cfg(not(target_arch = "arm64ec"))]
43536pub fn vreinterpretq_u64_f16(a: float16x8_t) -> uint64x2_t {
43537 unsafe { transmute(a) }
43538}
43539#[doc = "Vector reinterpret cast operation"]
43540#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_f16)"]
43541#[inline]
43542#[cfg(target_endian = "big")]
43543#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43544#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43545#[cfg_attr(
43546 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43547 assert_instr(nop)
43548)]
43549#[target_feature(enable = "neon,fp16")]
43550#[cfg_attr(
43551 not(target_arch = "arm"),
43552 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43553)]
43554#[cfg_attr(
43555 target_arch = "arm",
43556 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43557)]
43558#[cfg(not(target_arch = "arm64ec"))]
43559pub fn vreinterpretq_u64_f16(a: float16x8_t) -> uint64x2_t {
43560 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43561 unsafe {
43562 let ret_val: uint64x2_t = transmute(a);
43563 simd_shuffle!(ret_val, ret_val, [1, 0])
43564 }
43565}
43566#[doc = "Vector reinterpret cast operation"]
43567#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_f16)"]
43568#[inline]
43569#[cfg(target_endian = "little")]
43570#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43571#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43572#[cfg_attr(
43573 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43574 assert_instr(nop)
43575)]
43576#[target_feature(enable = "neon,fp16")]
43577#[cfg_attr(
43578 not(target_arch = "arm"),
43579 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43580)]
43581#[cfg_attr(
43582 target_arch = "arm",
43583 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43584)]
43585#[cfg(not(target_arch = "arm64ec"))]
43586pub fn vreinterpretq_p8_f16(a: float16x8_t) -> poly8x16_t {
43587 unsafe { transmute(a) }
43588}
43589#[doc = "Vector reinterpret cast operation"]
43590#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_f16)"]
43591#[inline]
43592#[cfg(target_endian = "big")]
43593#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43594#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43595#[cfg_attr(
43596 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43597 assert_instr(nop)
43598)]
43599#[target_feature(enable = "neon,fp16")]
43600#[cfg_attr(
43601 not(target_arch = "arm"),
43602 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43603)]
43604#[cfg_attr(
43605 target_arch = "arm",
43606 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43607)]
43608#[cfg(not(target_arch = "arm64ec"))]
43609pub fn vreinterpretq_p8_f16(a: float16x8_t) -> poly8x16_t {
43610 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43611 unsafe {
43612 let ret_val: poly8x16_t = transmute(a);
43613 simd_shuffle!(
43614 ret_val,
43615 ret_val,
43616 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
43617 )
43618 }
43619}
43620#[doc = "Vector reinterpret cast operation"]
43621#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_f16)"]
43622#[inline]
43623#[cfg(target_endian = "little")]
43624#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43625#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43626#[cfg_attr(
43627 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43628 assert_instr(nop)
43629)]
43630#[target_feature(enable = "neon,fp16")]
43631#[cfg_attr(
43632 not(target_arch = "arm"),
43633 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43634)]
43635#[cfg_attr(
43636 target_arch = "arm",
43637 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43638)]
43639#[cfg(not(target_arch = "arm64ec"))]
43640pub fn vreinterpretq_p16_f16(a: float16x8_t) -> poly16x8_t {
43641 unsafe { transmute(a) }
43642}
43643#[doc = "Vector reinterpret cast operation"]
43644#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_f16)"]
43645#[inline]
43646#[cfg(target_endian = "big")]
43647#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43648#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43649#[cfg_attr(
43650 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43651 assert_instr(nop)
43652)]
43653#[target_feature(enable = "neon,fp16")]
43654#[cfg_attr(
43655 not(target_arch = "arm"),
43656 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43657)]
43658#[cfg_attr(
43659 target_arch = "arm",
43660 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43661)]
43662#[cfg(not(target_arch = "arm64ec"))]
43663pub fn vreinterpretq_p16_f16(a: float16x8_t) -> poly16x8_t {
43664 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43665 unsafe {
43666 let ret_val: poly16x8_t = transmute(a);
43667 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
43668 }
43669}
43670#[doc = "Vector reinterpret cast operation"]
43671#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_f32)"]
43672#[inline]
43673#[cfg(target_endian = "little")]
43674#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43675#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43676#[cfg_attr(
43677 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43678 assert_instr(nop)
43679)]
43680#[target_feature(enable = "neon,fp16")]
43681#[cfg_attr(
43682 not(target_arch = "arm"),
43683 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43684)]
43685#[cfg_attr(
43686 target_arch = "arm",
43687 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43688)]
43689#[cfg(not(target_arch = "arm64ec"))]
43690pub fn vreinterpret_f16_f32(a: float32x2_t) -> float16x4_t {
43691 unsafe { transmute(a) }
43692}
43693#[doc = "Vector reinterpret cast operation"]
43694#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_f32)"]
43695#[inline]
43696#[cfg(target_endian = "big")]
43697#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43698#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43699#[cfg_attr(
43700 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43701 assert_instr(nop)
43702)]
43703#[target_feature(enable = "neon,fp16")]
43704#[cfg_attr(
43705 not(target_arch = "arm"),
43706 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43707)]
43708#[cfg_attr(
43709 target_arch = "arm",
43710 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43711)]
43712#[cfg(not(target_arch = "arm64ec"))]
43713pub fn vreinterpret_f16_f32(a: float32x2_t) -> float16x4_t {
43714 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
43715 unsafe {
43716 let ret_val: float16x4_t = transmute(a);
43717 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
43718 }
43719}
43720#[doc = "Vector reinterpret cast operation"]
43721#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_f32)"]
43722#[inline]
43723#[cfg(target_endian = "little")]
43724#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43725#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43726#[cfg_attr(
43727 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43728 assert_instr(nop)
43729)]
43730#[target_feature(enable = "neon,fp16")]
43731#[cfg_attr(
43732 not(target_arch = "arm"),
43733 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43734)]
43735#[cfg_attr(
43736 target_arch = "arm",
43737 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43738)]
43739#[cfg(not(target_arch = "arm64ec"))]
43740pub fn vreinterpretq_f16_f32(a: float32x4_t) -> float16x8_t {
43741 unsafe { transmute(a) }
43742}
43743#[doc = "Vector reinterpret cast operation"]
43744#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_f32)"]
43745#[inline]
43746#[cfg(target_endian = "big")]
43747#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43748#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43749#[cfg_attr(
43750 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43751 assert_instr(nop)
43752)]
43753#[target_feature(enable = "neon,fp16")]
43754#[cfg_attr(
43755 not(target_arch = "arm"),
43756 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43757)]
43758#[cfg_attr(
43759 target_arch = "arm",
43760 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43761)]
43762#[cfg(not(target_arch = "arm64ec"))]
43763pub fn vreinterpretq_f16_f32(a: float32x4_t) -> float16x8_t {
43764 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43765 unsafe {
43766 let ret_val: float16x8_t = transmute(a);
43767 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
43768 }
43769}
43770#[doc = "Vector reinterpret cast operation"]
43771#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s8)"]
43772#[inline]
43773#[cfg(target_endian = "little")]
43774#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43775#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43776#[cfg_attr(
43777 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43778 assert_instr(nop)
43779)]
43780#[target_feature(enable = "neon,fp16")]
43781#[cfg_attr(
43782 not(target_arch = "arm"),
43783 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43784)]
43785#[cfg_attr(
43786 target_arch = "arm",
43787 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43788)]
43789#[cfg(not(target_arch = "arm64ec"))]
43790pub fn vreinterpret_f16_s8(a: int8x8_t) -> float16x4_t {
43791 unsafe { transmute(a) }
43792}
43793#[doc = "Vector reinterpret cast operation"]
43794#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s8)"]
43795#[inline]
43796#[cfg(target_endian = "big")]
43797#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43798#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43799#[cfg_attr(
43800 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43801 assert_instr(nop)
43802)]
43803#[target_feature(enable = "neon,fp16")]
43804#[cfg_attr(
43805 not(target_arch = "arm"),
43806 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43807)]
43808#[cfg_attr(
43809 target_arch = "arm",
43810 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43811)]
43812#[cfg(not(target_arch = "arm64ec"))]
43813pub fn vreinterpret_f16_s8(a: int8x8_t) -> float16x4_t {
43814 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43815 unsafe {
43816 let ret_val: float16x4_t = transmute(a);
43817 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
43818 }
43819}
43820#[doc = "Vector reinterpret cast operation"]
43821#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s8)"]
43822#[inline]
43823#[cfg(target_endian = "little")]
43824#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43825#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43826#[cfg_attr(
43827 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43828 assert_instr(nop)
43829)]
43830#[target_feature(enable = "neon,fp16")]
43831#[cfg_attr(
43832 not(target_arch = "arm"),
43833 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43834)]
43835#[cfg_attr(
43836 target_arch = "arm",
43837 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43838)]
43839#[cfg(not(target_arch = "arm64ec"))]
43840pub fn vreinterpretq_f16_s8(a: int8x16_t) -> float16x8_t {
43841 unsafe { transmute(a) }
43842}
43843#[doc = "Vector reinterpret cast operation"]
43844#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s8)"]
43845#[inline]
43846#[cfg(target_endian = "big")]
43847#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43848#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43849#[cfg_attr(
43850 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43851 assert_instr(nop)
43852)]
43853#[target_feature(enable = "neon,fp16")]
43854#[cfg_attr(
43855 not(target_arch = "arm"),
43856 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43857)]
43858#[cfg_attr(
43859 target_arch = "arm",
43860 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43861)]
43862#[cfg(not(target_arch = "arm64ec"))]
43863pub fn vreinterpretq_f16_s8(a: int8x16_t) -> float16x8_t {
43864 let a: int8x16_t =
43865 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
43866 unsafe {
43867 let ret_val: float16x8_t = transmute(a);
43868 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
43869 }
43870}
43871#[doc = "Vector reinterpret cast operation"]
43872#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s16)"]
43873#[inline]
43874#[cfg(target_endian = "little")]
43875#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43876#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43877#[cfg_attr(
43878 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43879 assert_instr(nop)
43880)]
43881#[target_feature(enable = "neon,fp16")]
43882#[cfg_attr(
43883 not(target_arch = "arm"),
43884 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43885)]
43886#[cfg_attr(
43887 target_arch = "arm",
43888 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43889)]
43890#[cfg(not(target_arch = "arm64ec"))]
43891pub fn vreinterpret_f16_s16(a: int16x4_t) -> float16x4_t {
43892 unsafe { transmute(a) }
43893}
43894#[doc = "Vector reinterpret cast operation"]
43895#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s16)"]
43896#[inline]
43897#[cfg(target_endian = "big")]
43898#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43899#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43900#[cfg_attr(
43901 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43902 assert_instr(nop)
43903)]
43904#[target_feature(enable = "neon,fp16")]
43905#[cfg_attr(
43906 not(target_arch = "arm"),
43907 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43908)]
43909#[cfg_attr(
43910 target_arch = "arm",
43911 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43912)]
43913#[cfg(not(target_arch = "arm64ec"))]
43914pub fn vreinterpret_f16_s16(a: int16x4_t) -> float16x4_t {
43915 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43916 unsafe {
43917 let ret_val: float16x4_t = transmute(a);
43918 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
43919 }
43920}
43921#[doc = "Vector reinterpret cast operation"]
43922#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s16)"]
43923#[inline]
43924#[cfg(target_endian = "little")]
43925#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43926#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43927#[cfg_attr(
43928 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43929 assert_instr(nop)
43930)]
43931#[target_feature(enable = "neon,fp16")]
43932#[cfg_attr(
43933 not(target_arch = "arm"),
43934 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43935)]
43936#[cfg_attr(
43937 target_arch = "arm",
43938 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43939)]
43940#[cfg(not(target_arch = "arm64ec"))]
43941pub fn vreinterpretq_f16_s16(a: int16x8_t) -> float16x8_t {
43942 unsafe { transmute(a) }
43943}
43944#[doc = "Vector reinterpret cast operation"]
43945#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s16)"]
43946#[inline]
43947#[cfg(target_endian = "big")]
43948#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43949#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43950#[cfg_attr(
43951 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43952 assert_instr(nop)
43953)]
43954#[target_feature(enable = "neon,fp16")]
43955#[cfg_attr(
43956 not(target_arch = "arm"),
43957 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43958)]
43959#[cfg_attr(
43960 target_arch = "arm",
43961 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43962)]
43963#[cfg(not(target_arch = "arm64ec"))]
43964pub fn vreinterpretq_f16_s16(a: int16x8_t) -> float16x8_t {
43965 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43966 unsafe {
43967 let ret_val: float16x8_t = transmute(a);
43968 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
43969 }
43970}
43971#[doc = "Vector reinterpret cast operation"]
43972#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s32)"]
43973#[inline]
43974#[cfg(target_endian = "little")]
43975#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43976#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43977#[cfg_attr(
43978 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43979 assert_instr(nop)
43980)]
43981#[target_feature(enable = "neon,fp16")]
43982#[cfg_attr(
43983 not(target_arch = "arm"),
43984 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
43985)]
43986#[cfg_attr(
43987 target_arch = "arm",
43988 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43989)]
43990#[cfg(not(target_arch = "arm64ec"))]
43991pub fn vreinterpret_f16_s32(a: int32x2_t) -> float16x4_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/vreinterpret_f16_s32)"]
43996#[inline]
43997#[cfg(target_endian = "big")]
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#[target_feature(enable = "neon,fp16")]
44005#[cfg_attr(
44006 not(target_arch = "arm"),
44007 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44008)]
44009#[cfg_attr(
44010 target_arch = "arm",
44011 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44012)]
44013#[cfg(not(target_arch = "arm64ec"))]
44014pub fn vreinterpret_f16_s32(a: int32x2_t) -> float16x4_t {
44015 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
44016 unsafe {
44017 let ret_val: float16x4_t = transmute(a);
44018 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
44019 }
44020}
44021#[doc = "Vector reinterpret cast operation"]
44022#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s32)"]
44023#[inline]
44024#[cfg(target_endian = "little")]
44025#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44026#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44027#[cfg_attr(
44028 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44029 assert_instr(nop)
44030)]
44031#[target_feature(enable = "neon,fp16")]
44032#[cfg_attr(
44033 not(target_arch = "arm"),
44034 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44035)]
44036#[cfg_attr(
44037 target_arch = "arm",
44038 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44039)]
44040#[cfg(not(target_arch = "arm64ec"))]
44041pub fn vreinterpretq_f16_s32(a: int32x4_t) -> float16x8_t {
44042 unsafe { transmute(a) }
44043}
44044#[doc = "Vector reinterpret cast operation"]
44045#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s32)"]
44046#[inline]
44047#[cfg(target_endian = "big")]
44048#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44049#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44050#[cfg_attr(
44051 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44052 assert_instr(nop)
44053)]
44054#[target_feature(enable = "neon,fp16")]
44055#[cfg_attr(
44056 not(target_arch = "arm"),
44057 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44058)]
44059#[cfg_attr(
44060 target_arch = "arm",
44061 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44062)]
44063#[cfg(not(target_arch = "arm64ec"))]
44064pub fn vreinterpretq_f16_s32(a: int32x4_t) -> float16x8_t {
44065 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44066 unsafe {
44067 let ret_val: float16x8_t = transmute(a);
44068 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44069 }
44070}
44071#[doc = "Vector reinterpret cast operation"]
44072#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s64)"]
44073#[inline]
44074#[cfg(target_endian = "little")]
44075#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44076#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44077#[cfg_attr(
44078 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44079 assert_instr(nop)
44080)]
44081#[target_feature(enable = "neon,fp16")]
44082#[cfg_attr(
44083 not(target_arch = "arm"),
44084 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44085)]
44086#[cfg_attr(
44087 target_arch = "arm",
44088 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44089)]
44090#[cfg(not(target_arch = "arm64ec"))]
44091pub fn vreinterpret_f16_s64(a: int64x1_t) -> float16x4_t {
44092 unsafe { transmute(a) }
44093}
44094#[doc = "Vector reinterpret cast operation"]
44095#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s64)"]
44096#[inline]
44097#[cfg(target_endian = "big")]
44098#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44099#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44100#[cfg_attr(
44101 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44102 assert_instr(nop)
44103)]
44104#[target_feature(enable = "neon,fp16")]
44105#[cfg_attr(
44106 not(target_arch = "arm"),
44107 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44108)]
44109#[cfg_attr(
44110 target_arch = "arm",
44111 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44112)]
44113#[cfg(not(target_arch = "arm64ec"))]
44114pub fn vreinterpret_f16_s64(a: int64x1_t) -> float16x4_t {
44115 unsafe {
44116 let ret_val: float16x4_t = transmute(a);
44117 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
44118 }
44119}
44120#[doc = "Vector reinterpret cast operation"]
44121#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s64)"]
44122#[inline]
44123#[cfg(target_endian = "little")]
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#[target_feature(enable = "neon,fp16")]
44131#[cfg_attr(
44132 not(target_arch = "arm"),
44133 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44134)]
44135#[cfg_attr(
44136 target_arch = "arm",
44137 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44138)]
44139#[cfg(not(target_arch = "arm64ec"))]
44140pub fn vreinterpretq_f16_s64(a: int64x2_t) -> float16x8_t {
44141 unsafe { transmute(a) }
44142}
44143#[doc = "Vector reinterpret cast operation"]
44144#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s64)"]
44145#[inline]
44146#[cfg(target_endian = "big")]
44147#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44148#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44149#[cfg_attr(
44150 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44151 assert_instr(nop)
44152)]
44153#[target_feature(enable = "neon,fp16")]
44154#[cfg_attr(
44155 not(target_arch = "arm"),
44156 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44157)]
44158#[cfg_attr(
44159 target_arch = "arm",
44160 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44161)]
44162#[cfg(not(target_arch = "arm64ec"))]
44163pub fn vreinterpretq_f16_s64(a: int64x2_t) -> float16x8_t {
44164 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
44165 unsafe {
44166 let ret_val: float16x8_t = transmute(a);
44167 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44168 }
44169}
44170#[doc = "Vector reinterpret cast operation"]
44171#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u8)"]
44172#[inline]
44173#[cfg(target_endian = "little")]
44174#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44175#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44176#[cfg_attr(
44177 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44178 assert_instr(nop)
44179)]
44180#[target_feature(enable = "neon,fp16")]
44181#[cfg_attr(
44182 not(target_arch = "arm"),
44183 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44184)]
44185#[cfg_attr(
44186 target_arch = "arm",
44187 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44188)]
44189#[cfg(not(target_arch = "arm64ec"))]
44190pub fn vreinterpret_f16_u8(a: uint8x8_t) -> float16x4_t {
44191 unsafe { transmute(a) }
44192}
44193#[doc = "Vector reinterpret cast operation"]
44194#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u8)"]
44195#[inline]
44196#[cfg(target_endian = "big")]
44197#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44198#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44199#[cfg_attr(
44200 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44201 assert_instr(nop)
44202)]
44203#[target_feature(enable = "neon,fp16")]
44204#[cfg_attr(
44205 not(target_arch = "arm"),
44206 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44207)]
44208#[cfg_attr(
44209 target_arch = "arm",
44210 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44211)]
44212#[cfg(not(target_arch = "arm64ec"))]
44213pub fn vreinterpret_f16_u8(a: uint8x8_t) -> float16x4_t {
44214 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
44215 unsafe {
44216 let ret_val: float16x4_t = transmute(a);
44217 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
44218 }
44219}
44220#[doc = "Vector reinterpret cast operation"]
44221#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u8)"]
44222#[inline]
44223#[cfg(target_endian = "little")]
44224#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44225#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44226#[cfg_attr(
44227 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44228 assert_instr(nop)
44229)]
44230#[target_feature(enable = "neon,fp16")]
44231#[cfg_attr(
44232 not(target_arch = "arm"),
44233 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44234)]
44235#[cfg_attr(
44236 target_arch = "arm",
44237 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44238)]
44239#[cfg(not(target_arch = "arm64ec"))]
44240pub fn vreinterpretq_f16_u8(a: uint8x16_t) -> float16x8_t {
44241 unsafe { transmute(a) }
44242}
44243#[doc = "Vector reinterpret cast operation"]
44244#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u8)"]
44245#[inline]
44246#[cfg(target_endian = "big")]
44247#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44248#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44249#[cfg_attr(
44250 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44251 assert_instr(nop)
44252)]
44253#[target_feature(enable = "neon,fp16")]
44254#[cfg_attr(
44255 not(target_arch = "arm"),
44256 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44257)]
44258#[cfg_attr(
44259 target_arch = "arm",
44260 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44261)]
44262#[cfg(not(target_arch = "arm64ec"))]
44263pub fn vreinterpretq_f16_u8(a: uint8x16_t) -> float16x8_t {
44264 let a: uint8x16_t =
44265 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44266 unsafe {
44267 let ret_val: float16x8_t = transmute(a);
44268 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44269 }
44270}
44271#[doc = "Vector reinterpret cast operation"]
44272#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u16)"]
44273#[inline]
44274#[cfg(target_endian = "little")]
44275#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44276#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44277#[cfg_attr(
44278 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44279 assert_instr(nop)
44280)]
44281#[target_feature(enable = "neon,fp16")]
44282#[cfg_attr(
44283 not(target_arch = "arm"),
44284 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44285)]
44286#[cfg_attr(
44287 target_arch = "arm",
44288 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44289)]
44290#[cfg(not(target_arch = "arm64ec"))]
44291pub fn vreinterpret_f16_u16(a: uint16x4_t) -> float16x4_t {
44292 unsafe { transmute(a) }
44293}
44294#[doc = "Vector reinterpret cast operation"]
44295#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u16)"]
44296#[inline]
44297#[cfg(target_endian = "big")]
44298#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44299#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44300#[cfg_attr(
44301 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44302 assert_instr(nop)
44303)]
44304#[target_feature(enable = "neon,fp16")]
44305#[cfg_attr(
44306 not(target_arch = "arm"),
44307 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44308)]
44309#[cfg_attr(
44310 target_arch = "arm",
44311 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44312)]
44313#[cfg(not(target_arch = "arm64ec"))]
44314pub fn vreinterpret_f16_u16(a: uint16x4_t) -> float16x4_t {
44315 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44316 unsafe {
44317 let ret_val: float16x4_t = transmute(a);
44318 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
44319 }
44320}
44321#[doc = "Vector reinterpret cast operation"]
44322#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u16)"]
44323#[inline]
44324#[cfg(target_endian = "little")]
44325#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44326#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44327#[cfg_attr(
44328 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44329 assert_instr(nop)
44330)]
44331#[target_feature(enable = "neon,fp16")]
44332#[cfg_attr(
44333 not(target_arch = "arm"),
44334 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44335)]
44336#[cfg_attr(
44337 target_arch = "arm",
44338 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44339)]
44340#[cfg(not(target_arch = "arm64ec"))]
44341pub fn vreinterpretq_f16_u16(a: uint16x8_t) -> float16x8_t {
44342 unsafe { transmute(a) }
44343}
44344#[doc = "Vector reinterpret cast operation"]
44345#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u16)"]
44346#[inline]
44347#[cfg(target_endian = "big")]
44348#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44349#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44350#[cfg_attr(
44351 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44352 assert_instr(nop)
44353)]
44354#[target_feature(enable = "neon,fp16")]
44355#[cfg_attr(
44356 not(target_arch = "arm"),
44357 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44358)]
44359#[cfg_attr(
44360 target_arch = "arm",
44361 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44362)]
44363#[cfg(not(target_arch = "arm64ec"))]
44364pub fn vreinterpretq_f16_u16(a: uint16x8_t) -> float16x8_t {
44365 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
44366 unsafe {
44367 let ret_val: float16x8_t = transmute(a);
44368 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44369 }
44370}
44371#[doc = "Vector reinterpret cast operation"]
44372#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u32)"]
44373#[inline]
44374#[cfg(target_endian = "little")]
44375#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44376#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44377#[cfg_attr(
44378 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44379 assert_instr(nop)
44380)]
44381#[target_feature(enable = "neon,fp16")]
44382#[cfg_attr(
44383 not(target_arch = "arm"),
44384 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44385)]
44386#[cfg_attr(
44387 target_arch = "arm",
44388 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44389)]
44390#[cfg(not(target_arch = "arm64ec"))]
44391pub fn vreinterpret_f16_u32(a: uint32x2_t) -> float16x4_t {
44392 unsafe { transmute(a) }
44393}
44394#[doc = "Vector reinterpret cast operation"]
44395#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u32)"]
44396#[inline]
44397#[cfg(target_endian = "big")]
44398#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44399#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44400#[cfg_attr(
44401 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44402 assert_instr(nop)
44403)]
44404#[target_feature(enable = "neon,fp16")]
44405#[cfg_attr(
44406 not(target_arch = "arm"),
44407 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44408)]
44409#[cfg_attr(
44410 target_arch = "arm",
44411 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44412)]
44413#[cfg(not(target_arch = "arm64ec"))]
44414pub fn vreinterpret_f16_u32(a: uint32x2_t) -> float16x4_t {
44415 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
44416 unsafe {
44417 let ret_val: float16x4_t = transmute(a);
44418 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
44419 }
44420}
44421#[doc = "Vector reinterpret cast operation"]
44422#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u32)"]
44423#[inline]
44424#[cfg(target_endian = "little")]
44425#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44426#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44427#[cfg_attr(
44428 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44429 assert_instr(nop)
44430)]
44431#[target_feature(enable = "neon,fp16")]
44432#[cfg_attr(
44433 not(target_arch = "arm"),
44434 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44435)]
44436#[cfg_attr(
44437 target_arch = "arm",
44438 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44439)]
44440#[cfg(not(target_arch = "arm64ec"))]
44441pub fn vreinterpretq_f16_u32(a: uint32x4_t) -> float16x8_t {
44442 unsafe { transmute(a) }
44443}
44444#[doc = "Vector reinterpret cast operation"]
44445#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u32)"]
44446#[inline]
44447#[cfg(target_endian = "big")]
44448#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44449#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44450#[cfg_attr(
44451 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44452 assert_instr(nop)
44453)]
44454#[target_feature(enable = "neon,fp16")]
44455#[cfg_attr(
44456 not(target_arch = "arm"),
44457 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44458)]
44459#[cfg_attr(
44460 target_arch = "arm",
44461 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44462)]
44463#[cfg(not(target_arch = "arm64ec"))]
44464pub fn vreinterpretq_f16_u32(a: uint32x4_t) -> float16x8_t {
44465 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44466 unsafe {
44467 let ret_val: float16x8_t = transmute(a);
44468 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44469 }
44470}
44471#[doc = "Vector reinterpret cast operation"]
44472#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u64)"]
44473#[inline]
44474#[cfg(target_endian = "little")]
44475#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44476#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44477#[cfg_attr(
44478 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44479 assert_instr(nop)
44480)]
44481#[target_feature(enable = "neon,fp16")]
44482#[cfg_attr(
44483 not(target_arch = "arm"),
44484 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44485)]
44486#[cfg_attr(
44487 target_arch = "arm",
44488 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44489)]
44490#[cfg(not(target_arch = "arm64ec"))]
44491pub fn vreinterpret_f16_u64(a: uint64x1_t) -> float16x4_t {
44492 unsafe { transmute(a) }
44493}
44494#[doc = "Vector reinterpret cast operation"]
44495#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u64)"]
44496#[inline]
44497#[cfg(target_endian = "big")]
44498#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44499#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44500#[cfg_attr(
44501 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44502 assert_instr(nop)
44503)]
44504#[target_feature(enable = "neon,fp16")]
44505#[cfg_attr(
44506 not(target_arch = "arm"),
44507 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44508)]
44509#[cfg_attr(
44510 target_arch = "arm",
44511 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44512)]
44513#[cfg(not(target_arch = "arm64ec"))]
44514pub fn vreinterpret_f16_u64(a: uint64x1_t) -> float16x4_t {
44515 unsafe {
44516 let ret_val: float16x4_t = transmute(a);
44517 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
44518 }
44519}
44520#[doc = "Vector reinterpret cast operation"]
44521#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u64)"]
44522#[inline]
44523#[cfg(target_endian = "little")]
44524#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44525#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44526#[cfg_attr(
44527 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44528 assert_instr(nop)
44529)]
44530#[target_feature(enable = "neon,fp16")]
44531#[cfg_attr(
44532 not(target_arch = "arm"),
44533 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44534)]
44535#[cfg_attr(
44536 target_arch = "arm",
44537 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44538)]
44539#[cfg(not(target_arch = "arm64ec"))]
44540pub fn vreinterpretq_f16_u64(a: uint64x2_t) -> float16x8_t {
44541 unsafe { transmute(a) }
44542}
44543#[doc = "Vector reinterpret cast operation"]
44544#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u64)"]
44545#[inline]
44546#[cfg(target_endian = "big")]
44547#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44548#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44549#[cfg_attr(
44550 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44551 assert_instr(nop)
44552)]
44553#[target_feature(enable = "neon,fp16")]
44554#[cfg_attr(
44555 not(target_arch = "arm"),
44556 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44557)]
44558#[cfg_attr(
44559 target_arch = "arm",
44560 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44561)]
44562#[cfg(not(target_arch = "arm64ec"))]
44563pub fn vreinterpretq_f16_u64(a: uint64x2_t) -> float16x8_t {
44564 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
44565 unsafe {
44566 let ret_val: float16x8_t = transmute(a);
44567 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44568 }
44569}
44570#[doc = "Vector reinterpret cast operation"]
44571#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p8)"]
44572#[inline]
44573#[cfg(target_endian = "little")]
44574#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44575#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44576#[cfg_attr(
44577 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44578 assert_instr(nop)
44579)]
44580#[target_feature(enable = "neon,fp16")]
44581#[cfg_attr(
44582 not(target_arch = "arm"),
44583 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44584)]
44585#[cfg_attr(
44586 target_arch = "arm",
44587 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44588)]
44589#[cfg(not(target_arch = "arm64ec"))]
44590pub fn vreinterpret_f16_p8(a: poly8x8_t) -> float16x4_t {
44591 unsafe { transmute(a) }
44592}
44593#[doc = "Vector reinterpret cast operation"]
44594#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p8)"]
44595#[inline]
44596#[cfg(target_endian = "big")]
44597#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44598#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44599#[cfg_attr(
44600 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44601 assert_instr(nop)
44602)]
44603#[target_feature(enable = "neon,fp16")]
44604#[cfg_attr(
44605 not(target_arch = "arm"),
44606 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44607)]
44608#[cfg_attr(
44609 target_arch = "arm",
44610 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44611)]
44612#[cfg(not(target_arch = "arm64ec"))]
44613pub fn vreinterpret_f16_p8(a: poly8x8_t) -> float16x4_t {
44614 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
44615 unsafe {
44616 let ret_val: float16x4_t = transmute(a);
44617 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
44618 }
44619}
44620#[doc = "Vector reinterpret cast operation"]
44621#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p8)"]
44622#[inline]
44623#[cfg(target_endian = "little")]
44624#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44625#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44626#[cfg_attr(
44627 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44628 assert_instr(nop)
44629)]
44630#[target_feature(enable = "neon,fp16")]
44631#[cfg_attr(
44632 not(target_arch = "arm"),
44633 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44634)]
44635#[cfg_attr(
44636 target_arch = "arm",
44637 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44638)]
44639#[cfg(not(target_arch = "arm64ec"))]
44640pub fn vreinterpretq_f16_p8(a: poly8x16_t) -> float16x8_t {
44641 unsafe { transmute(a) }
44642}
44643#[doc = "Vector reinterpret cast operation"]
44644#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p8)"]
44645#[inline]
44646#[cfg(target_endian = "big")]
44647#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44648#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44649#[cfg_attr(
44650 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44651 assert_instr(nop)
44652)]
44653#[target_feature(enable = "neon,fp16")]
44654#[cfg_attr(
44655 not(target_arch = "arm"),
44656 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44657)]
44658#[cfg_attr(
44659 target_arch = "arm",
44660 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44661)]
44662#[cfg(not(target_arch = "arm64ec"))]
44663pub fn vreinterpretq_f16_p8(a: poly8x16_t) -> float16x8_t {
44664 let a: poly8x16_t =
44665 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44666 unsafe {
44667 let ret_val: float16x8_t = transmute(a);
44668 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44669 }
44670}
44671#[doc = "Vector reinterpret cast operation"]
44672#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p16)"]
44673#[inline]
44674#[cfg(target_endian = "little")]
44675#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44676#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44677#[cfg_attr(
44678 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44679 assert_instr(nop)
44680)]
44681#[target_feature(enable = "neon,fp16")]
44682#[cfg_attr(
44683 not(target_arch = "arm"),
44684 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44685)]
44686#[cfg_attr(
44687 target_arch = "arm",
44688 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44689)]
44690#[cfg(not(target_arch = "arm64ec"))]
44691pub fn vreinterpret_f16_p16(a: poly16x4_t) -> float16x4_t {
44692 unsafe { transmute(a) }
44693}
44694#[doc = "Vector reinterpret cast operation"]
44695#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p16)"]
44696#[inline]
44697#[cfg(target_endian = "big")]
44698#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44699#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44700#[cfg_attr(
44701 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44702 assert_instr(nop)
44703)]
44704#[target_feature(enable = "neon,fp16")]
44705#[cfg_attr(
44706 not(target_arch = "arm"),
44707 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44708)]
44709#[cfg_attr(
44710 target_arch = "arm",
44711 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44712)]
44713#[cfg(not(target_arch = "arm64ec"))]
44714pub fn vreinterpret_f16_p16(a: poly16x4_t) -> float16x4_t {
44715 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44716 unsafe {
44717 let ret_val: float16x4_t = transmute(a);
44718 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
44719 }
44720}
44721#[doc = "Vector reinterpret cast operation"]
44722#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p16)"]
44723#[inline]
44724#[cfg(target_endian = "little")]
44725#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44726#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44727#[cfg_attr(
44728 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44729 assert_instr(nop)
44730)]
44731#[target_feature(enable = "neon,fp16")]
44732#[cfg_attr(
44733 not(target_arch = "arm"),
44734 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44735)]
44736#[cfg_attr(
44737 target_arch = "arm",
44738 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44739)]
44740#[cfg(not(target_arch = "arm64ec"))]
44741pub fn vreinterpretq_f16_p16(a: poly16x8_t) -> float16x8_t {
44742 unsafe { transmute(a) }
44743}
44744#[doc = "Vector reinterpret cast operation"]
44745#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p16)"]
44746#[inline]
44747#[cfg(target_endian = "big")]
44748#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44749#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44750#[cfg_attr(
44751 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44752 assert_instr(nop)
44753)]
44754#[target_feature(enable = "neon,fp16")]
44755#[cfg_attr(
44756 not(target_arch = "arm"),
44757 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44758)]
44759#[cfg_attr(
44760 target_arch = "arm",
44761 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44762)]
44763#[cfg(not(target_arch = "arm64ec"))]
44764pub fn vreinterpretq_f16_p16(a: poly16x8_t) -> float16x8_t {
44765 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
44766 unsafe {
44767 let ret_val: float16x8_t = transmute(a);
44768 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44769 }
44770}
44771#[doc = "Vector reinterpret cast operation"]
44772#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p128)"]
44773#[inline]
44774#[cfg(target_endian = "little")]
44775#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
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#[target_feature(enable = "neon,fp16")]
44782#[cfg_attr(
44783 not(target_arch = "arm"),
44784 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44785)]
44786#[cfg_attr(
44787 target_arch = "arm",
44788 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44789)]
44790#[cfg(not(target_arch = "arm64ec"))]
44791pub fn vreinterpretq_f16_p128(a: p128) -> float16x8_t {
44792 unsafe { transmute(a) }
44793}
44794#[doc = "Vector reinterpret cast operation"]
44795#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p128)"]
44796#[inline]
44797#[cfg(target_endian = "big")]
44798#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
44799#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44800#[cfg_attr(
44801 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44802 assert_instr(nop)
44803)]
44804#[target_feature(enable = "neon,fp16")]
44805#[cfg_attr(
44806 not(target_arch = "arm"),
44807 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44808)]
44809#[cfg_attr(
44810 target_arch = "arm",
44811 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44812)]
44813#[cfg(not(target_arch = "arm64ec"))]
44814pub fn vreinterpretq_f16_p128(a: p128) -> float16x8_t {
44815 unsafe {
44816 let ret_val: float16x8_t = transmute(a);
44817 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44818 }
44819}
44820#[doc = "Vector reinterpret cast operation"]
44821#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_f16)"]
44822#[inline]
44823#[cfg(target_endian = "little")]
44824#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
44825#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44826#[cfg_attr(
44827 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44828 assert_instr(nop)
44829)]
44830#[target_feature(enable = "neon,fp16")]
44831#[cfg_attr(
44832 not(target_arch = "arm"),
44833 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44834)]
44835#[cfg_attr(
44836 target_arch = "arm",
44837 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44838)]
44839#[cfg(not(target_arch = "arm64ec"))]
44840pub fn vreinterpret_p64_f16(a: float16x4_t) -> poly64x1_t {
44841 unsafe { transmute(a) }
44842}
44843#[doc = "Vector reinterpret cast operation"]
44844#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_f16)"]
44845#[inline]
44846#[cfg(target_endian = "big")]
44847#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
44848#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44849#[cfg_attr(
44850 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44851 assert_instr(nop)
44852)]
44853#[target_feature(enable = "neon,fp16")]
44854#[cfg_attr(
44855 not(target_arch = "arm"),
44856 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44857)]
44858#[cfg_attr(
44859 target_arch = "arm",
44860 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44861)]
44862#[cfg(not(target_arch = "arm64ec"))]
44863pub fn vreinterpret_p64_f16(a: float16x4_t) -> poly64x1_t {
44864 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44865 unsafe { transmute(a) }
44866}
44867#[doc = "Vector reinterpret cast operation"]
44868#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_f16)"]
44869#[inline]
44870#[cfg(target_endian = "little")]
44871#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
44872#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44873#[cfg_attr(
44874 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44875 assert_instr(nop)
44876)]
44877#[target_feature(enable = "neon,fp16")]
44878#[cfg_attr(
44879 not(target_arch = "arm"),
44880 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44881)]
44882#[cfg_attr(
44883 target_arch = "arm",
44884 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44885)]
44886#[cfg(not(target_arch = "arm64ec"))]
44887pub fn vreinterpretq_p128_f16(a: float16x8_t) -> p128 {
44888 unsafe { transmute(a) }
44889}
44890#[doc = "Vector reinterpret cast operation"]
44891#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_f16)"]
44892#[inline]
44893#[cfg(target_endian = "big")]
44894#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
44895#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44896#[cfg_attr(
44897 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44898 assert_instr(nop)
44899)]
44900#[target_feature(enable = "neon,fp16")]
44901#[cfg_attr(
44902 not(target_arch = "arm"),
44903 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44904)]
44905#[cfg_attr(
44906 target_arch = "arm",
44907 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44908)]
44909#[cfg(not(target_arch = "arm64ec"))]
44910pub fn vreinterpretq_p128_f16(a: float16x8_t) -> p128 {
44911 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
44912 unsafe { transmute(a) }
44913}
44914#[doc = "Vector reinterpret cast operation"]
44915#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_f16)"]
44916#[inline]
44917#[cfg(target_endian = "little")]
44918#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
44919#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44920#[cfg_attr(
44921 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44922 assert_instr(nop)
44923)]
44924#[target_feature(enable = "neon,fp16")]
44925#[cfg_attr(
44926 not(target_arch = "arm"),
44927 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44928)]
44929#[cfg_attr(
44930 target_arch = "arm",
44931 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44932)]
44933#[cfg(not(target_arch = "arm64ec"))]
44934pub fn vreinterpretq_p64_f16(a: float16x8_t) -> poly64x2_t {
44935 unsafe { transmute(a) }
44936}
44937#[doc = "Vector reinterpret cast operation"]
44938#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_f16)"]
44939#[inline]
44940#[cfg(target_endian = "big")]
44941#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
44942#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44943#[cfg_attr(
44944 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44945 assert_instr(nop)
44946)]
44947#[target_feature(enable = "neon,fp16")]
44948#[cfg_attr(
44949 not(target_arch = "arm"),
44950 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44951)]
44952#[cfg_attr(
44953 target_arch = "arm",
44954 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44955)]
44956#[cfg(not(target_arch = "arm64ec"))]
44957pub fn vreinterpretq_p64_f16(a: float16x8_t) -> poly64x2_t {
44958 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
44959 unsafe {
44960 let ret_val: poly64x2_t = transmute(a);
44961 simd_shuffle!(ret_val, ret_val, [1, 0])
44962 }
44963}
44964#[doc = "Vector reinterpret cast operation"]
44965#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p64)"]
44966#[inline]
44967#[cfg(target_endian = "little")]
44968#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
44969#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44970#[cfg_attr(
44971 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44972 assert_instr(nop)
44973)]
44974#[target_feature(enable = "neon,fp16")]
44975#[cfg_attr(
44976 not(target_arch = "arm"),
44977 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
44978)]
44979#[cfg_attr(
44980 target_arch = "arm",
44981 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44982)]
44983#[cfg(not(target_arch = "arm64ec"))]
44984pub fn vreinterpret_f16_p64(a: poly64x1_t) -> float16x4_t {
44985 unsafe { transmute(a) }
44986}
44987#[doc = "Vector reinterpret cast operation"]
44988#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p64)"]
44989#[inline]
44990#[cfg(target_endian = "big")]
44991#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
44992#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44993#[cfg_attr(
44994 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44995 assert_instr(nop)
44996)]
44997#[target_feature(enable = "neon,fp16")]
44998#[cfg_attr(
44999 not(target_arch = "arm"),
45000 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
45001)]
45002#[cfg_attr(
45003 target_arch = "arm",
45004 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45005)]
45006#[cfg(not(target_arch = "arm64ec"))]
45007pub fn vreinterpret_f16_p64(a: poly64x1_t) -> float16x4_t {
45008 unsafe {
45009 let ret_val: float16x4_t = transmute(a);
45010 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
45011 }
45012}
45013#[doc = "Vector reinterpret cast operation"]
45014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p64)"]
45015#[inline]
45016#[cfg(target_endian = "little")]
45017#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
45018#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45019#[cfg_attr(
45020 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45021 assert_instr(nop)
45022)]
45023#[target_feature(enable = "neon,fp16")]
45024#[cfg_attr(
45025 not(target_arch = "arm"),
45026 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
45027)]
45028#[cfg_attr(
45029 target_arch = "arm",
45030 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45031)]
45032#[cfg(not(target_arch = "arm64ec"))]
45033pub fn vreinterpretq_f16_p64(a: poly64x2_t) -> float16x8_t {
45034 unsafe { transmute(a) }
45035}
45036#[doc = "Vector reinterpret cast operation"]
45037#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p64)"]
45038#[inline]
45039#[cfg(target_endian = "big")]
45040#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
45041#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45042#[cfg_attr(
45043 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45044 assert_instr(nop)
45045)]
45046#[target_feature(enable = "neon,fp16")]
45047#[cfg_attr(
45048 not(target_arch = "arm"),
45049 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
45050)]
45051#[cfg_attr(
45052 target_arch = "arm",
45053 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45054)]
45055#[cfg(not(target_arch = "arm64ec"))]
45056pub fn vreinterpretq_f16_p64(a: poly64x2_t) -> float16x8_t {
45057 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45058 unsafe {
45059 let ret_val: float16x8_t = transmute(a);
45060 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
45061 }
45062}
45063#[doc = "Vector reinterpret cast operation"]
45064#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p128)"]
45065#[inline]
45066#[cfg(target_endian = "little")]
45067#[target_feature(enable = "neon")]
45068#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45069#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45070#[cfg_attr(
45071 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45072 assert_instr(nop)
45073)]
45074#[cfg_attr(
45075 not(target_arch = "arm"),
45076 stable(feature = "neon_intrinsics", since = "1.59.0")
45077)]
45078#[cfg_attr(
45079 target_arch = "arm",
45080 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45081)]
45082pub fn vreinterpretq_f32_p128(a: p128) -> float32x4_t {
45083 unsafe { transmute(a) }
45084}
45085#[doc = "Vector reinterpret cast operation"]
45086#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p128)"]
45087#[inline]
45088#[cfg(target_endian = "big")]
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 vreinterpretq_f32_p128(a: p128) -> float32x4_t {
45105 unsafe {
45106 let ret_val: float32x4_t = transmute(a);
45107 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
45108 }
45109}
45110#[doc = "Vector reinterpret cast operation"]
45111#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_f32)"]
45112#[inline]
45113#[cfg(target_endian = "little")]
45114#[target_feature(enable = "neon")]
45115#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45116#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45117#[cfg_attr(
45118 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45119 assert_instr(nop)
45120)]
45121#[cfg_attr(
45122 not(target_arch = "arm"),
45123 stable(feature = "neon_intrinsics", since = "1.59.0")
45124)]
45125#[cfg_attr(
45126 target_arch = "arm",
45127 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45128)]
45129pub fn vreinterpret_s8_f32(a: float32x2_t) -> int8x8_t {
45130 unsafe { transmute(a) }
45131}
45132#[doc = "Vector reinterpret cast operation"]
45133#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_f32)"]
45134#[inline]
45135#[cfg(target_endian = "big")]
45136#[target_feature(enable = "neon")]
45137#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45138#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45139#[cfg_attr(
45140 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45141 assert_instr(nop)
45142)]
45143#[cfg_attr(
45144 not(target_arch = "arm"),
45145 stable(feature = "neon_intrinsics", since = "1.59.0")
45146)]
45147#[cfg_attr(
45148 target_arch = "arm",
45149 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45150)]
45151pub fn vreinterpret_s8_f32(a: float32x2_t) -> int8x8_t {
45152 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45153 unsafe {
45154 let ret_val: int8x8_t = transmute(a);
45155 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
45156 }
45157}
45158#[doc = "Vector reinterpret cast operation"]
45159#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_f32)"]
45160#[inline]
45161#[cfg(target_endian = "little")]
45162#[target_feature(enable = "neon")]
45163#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45164#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45165#[cfg_attr(
45166 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45167 assert_instr(nop)
45168)]
45169#[cfg_attr(
45170 not(target_arch = "arm"),
45171 stable(feature = "neon_intrinsics", since = "1.59.0")
45172)]
45173#[cfg_attr(
45174 target_arch = "arm",
45175 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45176)]
45177pub fn vreinterpret_s16_f32(a: float32x2_t) -> int16x4_t {
45178 unsafe { transmute(a) }
45179}
45180#[doc = "Vector reinterpret cast operation"]
45181#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_f32)"]
45182#[inline]
45183#[cfg(target_endian = "big")]
45184#[target_feature(enable = "neon")]
45185#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45186#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45187#[cfg_attr(
45188 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45189 assert_instr(nop)
45190)]
45191#[cfg_attr(
45192 not(target_arch = "arm"),
45193 stable(feature = "neon_intrinsics", since = "1.59.0")
45194)]
45195#[cfg_attr(
45196 target_arch = "arm",
45197 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45198)]
45199pub fn vreinterpret_s16_f32(a: float32x2_t) -> int16x4_t {
45200 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45201 unsafe {
45202 let ret_val: int16x4_t = transmute(a);
45203 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
45204 }
45205}
45206#[doc = "Vector reinterpret cast operation"]
45207#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_f32)"]
45208#[inline]
45209#[cfg(target_endian = "little")]
45210#[target_feature(enable = "neon")]
45211#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45212#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45213#[cfg_attr(
45214 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45215 assert_instr(nop)
45216)]
45217#[cfg_attr(
45218 not(target_arch = "arm"),
45219 stable(feature = "neon_intrinsics", since = "1.59.0")
45220)]
45221#[cfg_attr(
45222 target_arch = "arm",
45223 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45224)]
45225pub fn vreinterpret_s32_f32(a: float32x2_t) -> int32x2_t {
45226 unsafe { transmute(a) }
45227}
45228#[doc = "Vector reinterpret cast operation"]
45229#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_f32)"]
45230#[inline]
45231#[cfg(target_endian = "big")]
45232#[target_feature(enable = "neon")]
45233#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45234#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45235#[cfg_attr(
45236 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45237 assert_instr(nop)
45238)]
45239#[cfg_attr(
45240 not(target_arch = "arm"),
45241 stable(feature = "neon_intrinsics", since = "1.59.0")
45242)]
45243#[cfg_attr(
45244 target_arch = "arm",
45245 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45246)]
45247pub fn vreinterpret_s32_f32(a: float32x2_t) -> int32x2_t {
45248 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45249 unsafe {
45250 let ret_val: int32x2_t = transmute(a);
45251 simd_shuffle!(ret_val, ret_val, [1, 0])
45252 }
45253}
45254#[doc = "Vector reinterpret cast operation"]
45255#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_f32)"]
45256#[inline]
45257#[cfg(target_endian = "little")]
45258#[target_feature(enable = "neon")]
45259#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45260#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45261#[cfg_attr(
45262 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45263 assert_instr(nop)
45264)]
45265#[cfg_attr(
45266 not(target_arch = "arm"),
45267 stable(feature = "neon_intrinsics", since = "1.59.0")
45268)]
45269#[cfg_attr(
45270 target_arch = "arm",
45271 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45272)]
45273pub fn vreinterpret_s64_f32(a: float32x2_t) -> int64x1_t {
45274 unsafe { transmute(a) }
45275}
45276#[doc = "Vector reinterpret cast operation"]
45277#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_f32)"]
45278#[inline]
45279#[cfg(target_endian = "big")]
45280#[target_feature(enable = "neon")]
45281#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45282#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45283#[cfg_attr(
45284 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45285 assert_instr(nop)
45286)]
45287#[cfg_attr(
45288 not(target_arch = "arm"),
45289 stable(feature = "neon_intrinsics", since = "1.59.0")
45290)]
45291#[cfg_attr(
45292 target_arch = "arm",
45293 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45294)]
45295pub fn vreinterpret_s64_f32(a: float32x2_t) -> int64x1_t {
45296 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45297 unsafe { transmute(a) }
45298}
45299#[doc = "Vector reinterpret cast operation"]
45300#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_f32)"]
45301#[inline]
45302#[cfg(target_endian = "little")]
45303#[target_feature(enable = "neon")]
45304#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45305#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45306#[cfg_attr(
45307 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45308 assert_instr(nop)
45309)]
45310#[cfg_attr(
45311 not(target_arch = "arm"),
45312 stable(feature = "neon_intrinsics", since = "1.59.0")
45313)]
45314#[cfg_attr(
45315 target_arch = "arm",
45316 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45317)]
45318pub fn vreinterpret_u8_f32(a: float32x2_t) -> uint8x8_t {
45319 unsafe { transmute(a) }
45320}
45321#[doc = "Vector reinterpret cast operation"]
45322#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_f32)"]
45323#[inline]
45324#[cfg(target_endian = "big")]
45325#[target_feature(enable = "neon")]
45326#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45327#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45328#[cfg_attr(
45329 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45330 assert_instr(nop)
45331)]
45332#[cfg_attr(
45333 not(target_arch = "arm"),
45334 stable(feature = "neon_intrinsics", since = "1.59.0")
45335)]
45336#[cfg_attr(
45337 target_arch = "arm",
45338 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45339)]
45340pub fn vreinterpret_u8_f32(a: float32x2_t) -> uint8x8_t {
45341 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45342 unsafe {
45343 let ret_val: uint8x8_t = transmute(a);
45344 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
45345 }
45346}
45347#[doc = "Vector reinterpret cast operation"]
45348#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_f32)"]
45349#[inline]
45350#[cfg(target_endian = "little")]
45351#[target_feature(enable = "neon")]
45352#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45353#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45354#[cfg_attr(
45355 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45356 assert_instr(nop)
45357)]
45358#[cfg_attr(
45359 not(target_arch = "arm"),
45360 stable(feature = "neon_intrinsics", since = "1.59.0")
45361)]
45362#[cfg_attr(
45363 target_arch = "arm",
45364 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45365)]
45366pub fn vreinterpret_u16_f32(a: float32x2_t) -> uint16x4_t {
45367 unsafe { transmute(a) }
45368}
45369#[doc = "Vector reinterpret cast operation"]
45370#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_f32)"]
45371#[inline]
45372#[cfg(target_endian = "big")]
45373#[target_feature(enable = "neon")]
45374#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45375#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45376#[cfg_attr(
45377 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45378 assert_instr(nop)
45379)]
45380#[cfg_attr(
45381 not(target_arch = "arm"),
45382 stable(feature = "neon_intrinsics", since = "1.59.0")
45383)]
45384#[cfg_attr(
45385 target_arch = "arm",
45386 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45387)]
45388pub fn vreinterpret_u16_f32(a: float32x2_t) -> uint16x4_t {
45389 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45390 unsafe {
45391 let ret_val: uint16x4_t = transmute(a);
45392 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
45393 }
45394}
45395#[doc = "Vector reinterpret cast operation"]
45396#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_f32)"]
45397#[inline]
45398#[cfg(target_endian = "little")]
45399#[target_feature(enable = "neon")]
45400#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45401#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45402#[cfg_attr(
45403 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45404 assert_instr(nop)
45405)]
45406#[cfg_attr(
45407 not(target_arch = "arm"),
45408 stable(feature = "neon_intrinsics", since = "1.59.0")
45409)]
45410#[cfg_attr(
45411 target_arch = "arm",
45412 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45413)]
45414pub fn vreinterpret_u32_f32(a: float32x2_t) -> uint32x2_t {
45415 unsafe { transmute(a) }
45416}
45417#[doc = "Vector reinterpret cast operation"]
45418#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_f32)"]
45419#[inline]
45420#[cfg(target_endian = "big")]
45421#[target_feature(enable = "neon")]
45422#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45423#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45424#[cfg_attr(
45425 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45426 assert_instr(nop)
45427)]
45428#[cfg_attr(
45429 not(target_arch = "arm"),
45430 stable(feature = "neon_intrinsics", since = "1.59.0")
45431)]
45432#[cfg_attr(
45433 target_arch = "arm",
45434 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45435)]
45436pub fn vreinterpret_u32_f32(a: float32x2_t) -> uint32x2_t {
45437 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45438 unsafe {
45439 let ret_val: uint32x2_t = transmute(a);
45440 simd_shuffle!(ret_val, ret_val, [1, 0])
45441 }
45442}
45443#[doc = "Vector reinterpret cast operation"]
45444#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_f32)"]
45445#[inline]
45446#[cfg(target_endian = "little")]
45447#[target_feature(enable = "neon")]
45448#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45449#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45450#[cfg_attr(
45451 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45452 assert_instr(nop)
45453)]
45454#[cfg_attr(
45455 not(target_arch = "arm"),
45456 stable(feature = "neon_intrinsics", since = "1.59.0")
45457)]
45458#[cfg_attr(
45459 target_arch = "arm",
45460 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45461)]
45462pub fn vreinterpret_u64_f32(a: float32x2_t) -> uint64x1_t {
45463 unsafe { transmute(a) }
45464}
45465#[doc = "Vector reinterpret cast operation"]
45466#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_f32)"]
45467#[inline]
45468#[cfg(target_endian = "big")]
45469#[target_feature(enable = "neon")]
45470#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45471#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45472#[cfg_attr(
45473 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45474 assert_instr(nop)
45475)]
45476#[cfg_attr(
45477 not(target_arch = "arm"),
45478 stable(feature = "neon_intrinsics", since = "1.59.0")
45479)]
45480#[cfg_attr(
45481 target_arch = "arm",
45482 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45483)]
45484pub fn vreinterpret_u64_f32(a: float32x2_t) -> uint64x1_t {
45485 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45486 unsafe { transmute(a) }
45487}
45488#[doc = "Vector reinterpret cast operation"]
45489#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_f32)"]
45490#[inline]
45491#[cfg(target_endian = "little")]
45492#[target_feature(enable = "neon")]
45493#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45494#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45495#[cfg_attr(
45496 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45497 assert_instr(nop)
45498)]
45499#[cfg_attr(
45500 not(target_arch = "arm"),
45501 stable(feature = "neon_intrinsics", since = "1.59.0")
45502)]
45503#[cfg_attr(
45504 target_arch = "arm",
45505 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45506)]
45507pub fn vreinterpret_p8_f32(a: float32x2_t) -> poly8x8_t {
45508 unsafe { transmute(a) }
45509}
45510#[doc = "Vector reinterpret cast operation"]
45511#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_f32)"]
45512#[inline]
45513#[cfg(target_endian = "big")]
45514#[target_feature(enable = "neon")]
45515#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45516#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45517#[cfg_attr(
45518 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45519 assert_instr(nop)
45520)]
45521#[cfg_attr(
45522 not(target_arch = "arm"),
45523 stable(feature = "neon_intrinsics", since = "1.59.0")
45524)]
45525#[cfg_attr(
45526 target_arch = "arm",
45527 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45528)]
45529pub fn vreinterpret_p8_f32(a: float32x2_t) -> poly8x8_t {
45530 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45531 unsafe {
45532 let ret_val: poly8x8_t = transmute(a);
45533 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
45534 }
45535}
45536#[doc = "Vector reinterpret cast operation"]
45537#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_f32)"]
45538#[inline]
45539#[cfg(target_endian = "little")]
45540#[target_feature(enable = "neon")]
45541#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45542#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45543#[cfg_attr(
45544 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45545 assert_instr(nop)
45546)]
45547#[cfg_attr(
45548 not(target_arch = "arm"),
45549 stable(feature = "neon_intrinsics", since = "1.59.0")
45550)]
45551#[cfg_attr(
45552 target_arch = "arm",
45553 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45554)]
45555pub fn vreinterpret_p16_f32(a: float32x2_t) -> poly16x4_t {
45556 unsafe { transmute(a) }
45557}
45558#[doc = "Vector reinterpret cast operation"]
45559#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_f32)"]
45560#[inline]
45561#[cfg(target_endian = "big")]
45562#[target_feature(enable = "neon")]
45563#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45564#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45565#[cfg_attr(
45566 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45567 assert_instr(nop)
45568)]
45569#[cfg_attr(
45570 not(target_arch = "arm"),
45571 stable(feature = "neon_intrinsics", since = "1.59.0")
45572)]
45573#[cfg_attr(
45574 target_arch = "arm",
45575 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45576)]
45577pub fn vreinterpret_p16_f32(a: float32x2_t) -> poly16x4_t {
45578 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45579 unsafe {
45580 let ret_val: poly16x4_t = transmute(a);
45581 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
45582 }
45583}
45584#[doc = "Vector reinterpret cast operation"]
45585#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_f32)"]
45586#[inline]
45587#[cfg(target_endian = "little")]
45588#[target_feature(enable = "neon")]
45589#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45590#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45591#[cfg_attr(
45592 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45593 assert_instr(nop)
45594)]
45595#[cfg_attr(
45596 not(target_arch = "arm"),
45597 stable(feature = "neon_intrinsics", since = "1.59.0")
45598)]
45599#[cfg_attr(
45600 target_arch = "arm",
45601 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45602)]
45603pub fn vreinterpretq_p128_f32(a: float32x4_t) -> p128 {
45604 unsafe { transmute(a) }
45605}
45606#[doc = "Vector reinterpret cast operation"]
45607#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_f32)"]
45608#[inline]
45609#[cfg(target_endian = "big")]
45610#[target_feature(enable = "neon")]
45611#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45612#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45613#[cfg_attr(
45614 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45615 assert_instr(nop)
45616)]
45617#[cfg_attr(
45618 not(target_arch = "arm"),
45619 stable(feature = "neon_intrinsics", since = "1.59.0")
45620)]
45621#[cfg_attr(
45622 target_arch = "arm",
45623 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45624)]
45625pub fn vreinterpretq_p128_f32(a: float32x4_t) -> p128 {
45626 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
45627 unsafe { transmute(a) }
45628}
45629#[doc = "Vector reinterpret cast operation"]
45630#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_f32)"]
45631#[inline]
45632#[cfg(target_endian = "little")]
45633#[target_feature(enable = "neon")]
45634#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45635#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45636#[cfg_attr(
45637 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45638 assert_instr(nop)
45639)]
45640#[cfg_attr(
45641 not(target_arch = "arm"),
45642 stable(feature = "neon_intrinsics", since = "1.59.0")
45643)]
45644#[cfg_attr(
45645 target_arch = "arm",
45646 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45647)]
45648pub fn vreinterpretq_s8_f32(a: float32x4_t) -> int8x16_t {
45649 unsafe { transmute(a) }
45650}
45651#[doc = "Vector reinterpret cast operation"]
45652#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_f32)"]
45653#[inline]
45654#[cfg(target_endian = "big")]
45655#[target_feature(enable = "neon")]
45656#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45657#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45658#[cfg_attr(
45659 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45660 assert_instr(nop)
45661)]
45662#[cfg_attr(
45663 not(target_arch = "arm"),
45664 stable(feature = "neon_intrinsics", since = "1.59.0")
45665)]
45666#[cfg_attr(
45667 target_arch = "arm",
45668 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45669)]
45670pub fn vreinterpretq_s8_f32(a: float32x4_t) -> int8x16_t {
45671 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
45672 unsafe {
45673 let ret_val: int8x16_t = transmute(a);
45674 simd_shuffle!(
45675 ret_val,
45676 ret_val,
45677 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
45678 )
45679 }
45680}
45681#[doc = "Vector reinterpret cast operation"]
45682#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_f32)"]
45683#[inline]
45684#[cfg(target_endian = "little")]
45685#[target_feature(enable = "neon")]
45686#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45687#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45688#[cfg_attr(
45689 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45690 assert_instr(nop)
45691)]
45692#[cfg_attr(
45693 not(target_arch = "arm"),
45694 stable(feature = "neon_intrinsics", since = "1.59.0")
45695)]
45696#[cfg_attr(
45697 target_arch = "arm",
45698 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45699)]
45700pub fn vreinterpretq_s16_f32(a: float32x4_t) -> int16x8_t {
45701 unsafe { transmute(a) }
45702}
45703#[doc = "Vector reinterpret cast operation"]
45704#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_f32)"]
45705#[inline]
45706#[cfg(target_endian = "big")]
45707#[target_feature(enable = "neon")]
45708#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45709#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45710#[cfg_attr(
45711 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45712 assert_instr(nop)
45713)]
45714#[cfg_attr(
45715 not(target_arch = "arm"),
45716 stable(feature = "neon_intrinsics", since = "1.59.0")
45717)]
45718#[cfg_attr(
45719 target_arch = "arm",
45720 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45721)]
45722pub fn vreinterpretq_s16_f32(a: float32x4_t) -> int16x8_t {
45723 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
45724 unsafe {
45725 let ret_val: int16x8_t = transmute(a);
45726 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
45727 }
45728}
45729#[doc = "Vector reinterpret cast operation"]
45730#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_f32)"]
45731#[inline]
45732#[cfg(target_endian = "little")]
45733#[target_feature(enable = "neon")]
45734#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45735#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45736#[cfg_attr(
45737 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45738 assert_instr(nop)
45739)]
45740#[cfg_attr(
45741 not(target_arch = "arm"),
45742 stable(feature = "neon_intrinsics", since = "1.59.0")
45743)]
45744#[cfg_attr(
45745 target_arch = "arm",
45746 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45747)]
45748pub fn vreinterpretq_s32_f32(a: float32x4_t) -> int32x4_t {
45749 unsafe { transmute(a) }
45750}
45751#[doc = "Vector reinterpret cast operation"]
45752#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_f32)"]
45753#[inline]
45754#[cfg(target_endian = "big")]
45755#[target_feature(enable = "neon")]
45756#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45757#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45758#[cfg_attr(
45759 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45760 assert_instr(nop)
45761)]
45762#[cfg_attr(
45763 not(target_arch = "arm"),
45764 stable(feature = "neon_intrinsics", since = "1.59.0")
45765)]
45766#[cfg_attr(
45767 target_arch = "arm",
45768 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45769)]
45770pub fn vreinterpretq_s32_f32(a: float32x4_t) -> int32x4_t {
45771 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
45772 unsafe {
45773 let ret_val: int32x4_t = transmute(a);
45774 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
45775 }
45776}
45777#[doc = "Vector reinterpret cast operation"]
45778#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_f32)"]
45779#[inline]
45780#[cfg(target_endian = "little")]
45781#[target_feature(enable = "neon")]
45782#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45783#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45784#[cfg_attr(
45785 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45786 assert_instr(nop)
45787)]
45788#[cfg_attr(
45789 not(target_arch = "arm"),
45790 stable(feature = "neon_intrinsics", since = "1.59.0")
45791)]
45792#[cfg_attr(
45793 target_arch = "arm",
45794 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45795)]
45796pub fn vreinterpretq_s64_f32(a: float32x4_t) -> int64x2_t {
45797 unsafe { transmute(a) }
45798}
45799#[doc = "Vector reinterpret cast operation"]
45800#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_f32)"]
45801#[inline]
45802#[cfg(target_endian = "big")]
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_s64_f32(a: float32x4_t) -> int64x2_t {
45819 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
45820 unsafe {
45821 let ret_val: int64x2_t = transmute(a);
45822 simd_shuffle!(ret_val, ret_val, [1, 0])
45823 }
45824}
45825#[doc = "Vector reinterpret cast operation"]
45826#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_f32)"]
45827#[inline]
45828#[cfg(target_endian = "little")]
45829#[target_feature(enable = "neon")]
45830#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45831#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45832#[cfg_attr(
45833 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45834 assert_instr(nop)
45835)]
45836#[cfg_attr(
45837 not(target_arch = "arm"),
45838 stable(feature = "neon_intrinsics", since = "1.59.0")
45839)]
45840#[cfg_attr(
45841 target_arch = "arm",
45842 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45843)]
45844pub fn vreinterpretq_u8_f32(a: float32x4_t) -> uint8x16_t {
45845 unsafe { transmute(a) }
45846}
45847#[doc = "Vector reinterpret cast operation"]
45848#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_f32)"]
45849#[inline]
45850#[cfg(target_endian = "big")]
45851#[target_feature(enable = "neon")]
45852#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45853#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45854#[cfg_attr(
45855 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45856 assert_instr(nop)
45857)]
45858#[cfg_attr(
45859 not(target_arch = "arm"),
45860 stable(feature = "neon_intrinsics", since = "1.59.0")
45861)]
45862#[cfg_attr(
45863 target_arch = "arm",
45864 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45865)]
45866pub fn vreinterpretq_u8_f32(a: float32x4_t) -> uint8x16_t {
45867 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
45868 unsafe {
45869 let ret_val: uint8x16_t = transmute(a);
45870 simd_shuffle!(
45871 ret_val,
45872 ret_val,
45873 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
45874 )
45875 }
45876}
45877#[doc = "Vector reinterpret cast operation"]
45878#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_f32)"]
45879#[inline]
45880#[cfg(target_endian = "little")]
45881#[target_feature(enable = "neon")]
45882#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45883#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45884#[cfg_attr(
45885 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45886 assert_instr(nop)
45887)]
45888#[cfg_attr(
45889 not(target_arch = "arm"),
45890 stable(feature = "neon_intrinsics", since = "1.59.0")
45891)]
45892#[cfg_attr(
45893 target_arch = "arm",
45894 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45895)]
45896pub fn vreinterpretq_u16_f32(a: float32x4_t) -> uint16x8_t {
45897 unsafe { transmute(a) }
45898}
45899#[doc = "Vector reinterpret cast operation"]
45900#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_f32)"]
45901#[inline]
45902#[cfg(target_endian = "big")]
45903#[target_feature(enable = "neon")]
45904#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45905#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45906#[cfg_attr(
45907 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45908 assert_instr(nop)
45909)]
45910#[cfg_attr(
45911 not(target_arch = "arm"),
45912 stable(feature = "neon_intrinsics", since = "1.59.0")
45913)]
45914#[cfg_attr(
45915 target_arch = "arm",
45916 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45917)]
45918pub fn vreinterpretq_u16_f32(a: float32x4_t) -> uint16x8_t {
45919 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
45920 unsafe {
45921 let ret_val: uint16x8_t = transmute(a);
45922 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
45923 }
45924}
45925#[doc = "Vector reinterpret cast operation"]
45926#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_f32)"]
45927#[inline]
45928#[cfg(target_endian = "little")]
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 vreinterpretq_u32_f32(a: float32x4_t) -> uint32x4_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/vreinterpretq_u32_f32)"]
45949#[inline]
45950#[cfg(target_endian = "big")]
45951#[target_feature(enable = "neon")]
45952#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45953#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45954#[cfg_attr(
45955 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45956 assert_instr(nop)
45957)]
45958#[cfg_attr(
45959 not(target_arch = "arm"),
45960 stable(feature = "neon_intrinsics", since = "1.59.0")
45961)]
45962#[cfg_attr(
45963 target_arch = "arm",
45964 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45965)]
45966pub fn vreinterpretq_u32_f32(a: float32x4_t) -> uint32x4_t {
45967 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
45968 unsafe {
45969 let ret_val: uint32x4_t = transmute(a);
45970 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
45971 }
45972}
45973#[doc = "Vector reinterpret cast operation"]
45974#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_f32)"]
45975#[inline]
45976#[cfg(target_endian = "little")]
45977#[target_feature(enable = "neon")]
45978#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45979#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45980#[cfg_attr(
45981 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45982 assert_instr(nop)
45983)]
45984#[cfg_attr(
45985 not(target_arch = "arm"),
45986 stable(feature = "neon_intrinsics", since = "1.59.0")
45987)]
45988#[cfg_attr(
45989 target_arch = "arm",
45990 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45991)]
45992pub fn vreinterpretq_u64_f32(a: float32x4_t) -> uint64x2_t {
45993 unsafe { transmute(a) }
45994}
45995#[doc = "Vector reinterpret cast operation"]
45996#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_f32)"]
45997#[inline]
45998#[cfg(target_endian = "big")]
45999#[target_feature(enable = "neon")]
46000#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46001#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46002#[cfg_attr(
46003 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46004 assert_instr(nop)
46005)]
46006#[cfg_attr(
46007 not(target_arch = "arm"),
46008 stable(feature = "neon_intrinsics", since = "1.59.0")
46009)]
46010#[cfg_attr(
46011 target_arch = "arm",
46012 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46013)]
46014pub fn vreinterpretq_u64_f32(a: float32x4_t) -> uint64x2_t {
46015 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46016 unsafe {
46017 let ret_val: uint64x2_t = transmute(a);
46018 simd_shuffle!(ret_val, ret_val, [1, 0])
46019 }
46020}
46021#[doc = "Vector reinterpret cast operation"]
46022#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_f32)"]
46023#[inline]
46024#[cfg(target_endian = "little")]
46025#[target_feature(enable = "neon")]
46026#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46027#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46028#[cfg_attr(
46029 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46030 assert_instr(nop)
46031)]
46032#[cfg_attr(
46033 not(target_arch = "arm"),
46034 stable(feature = "neon_intrinsics", since = "1.59.0")
46035)]
46036#[cfg_attr(
46037 target_arch = "arm",
46038 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46039)]
46040pub fn vreinterpretq_p8_f32(a: float32x4_t) -> poly8x16_t {
46041 unsafe { transmute(a) }
46042}
46043#[doc = "Vector reinterpret cast operation"]
46044#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_f32)"]
46045#[inline]
46046#[cfg(target_endian = "big")]
46047#[target_feature(enable = "neon")]
46048#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46049#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46050#[cfg_attr(
46051 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46052 assert_instr(nop)
46053)]
46054#[cfg_attr(
46055 not(target_arch = "arm"),
46056 stable(feature = "neon_intrinsics", since = "1.59.0")
46057)]
46058#[cfg_attr(
46059 target_arch = "arm",
46060 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46061)]
46062pub fn vreinterpretq_p8_f32(a: float32x4_t) -> poly8x16_t {
46063 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46064 unsafe {
46065 let ret_val: poly8x16_t = transmute(a);
46066 simd_shuffle!(
46067 ret_val,
46068 ret_val,
46069 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
46070 )
46071 }
46072}
46073#[doc = "Vector reinterpret cast operation"]
46074#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_f32)"]
46075#[inline]
46076#[cfg(target_endian = "little")]
46077#[target_feature(enable = "neon")]
46078#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46079#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46080#[cfg_attr(
46081 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46082 assert_instr(nop)
46083)]
46084#[cfg_attr(
46085 not(target_arch = "arm"),
46086 stable(feature = "neon_intrinsics", since = "1.59.0")
46087)]
46088#[cfg_attr(
46089 target_arch = "arm",
46090 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46091)]
46092pub fn vreinterpretq_p16_f32(a: float32x4_t) -> poly16x8_t {
46093 unsafe { transmute(a) }
46094}
46095#[doc = "Vector reinterpret cast operation"]
46096#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_f32)"]
46097#[inline]
46098#[cfg(target_endian = "big")]
46099#[target_feature(enable = "neon")]
46100#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46101#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46102#[cfg_attr(
46103 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46104 assert_instr(nop)
46105)]
46106#[cfg_attr(
46107 not(target_arch = "arm"),
46108 stable(feature = "neon_intrinsics", since = "1.59.0")
46109)]
46110#[cfg_attr(
46111 target_arch = "arm",
46112 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46113)]
46114pub fn vreinterpretq_p16_f32(a: float32x4_t) -> poly16x8_t {
46115 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46116 unsafe {
46117 let ret_val: poly16x8_t = transmute(a);
46118 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
46119 }
46120}
46121#[doc = "Vector reinterpret cast operation"]
46122#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s8)"]
46123#[inline]
46124#[cfg(target_endian = "little")]
46125#[target_feature(enable = "neon")]
46126#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46127#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46128#[cfg_attr(
46129 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46130 assert_instr(nop)
46131)]
46132#[cfg_attr(
46133 not(target_arch = "arm"),
46134 stable(feature = "neon_intrinsics", since = "1.59.0")
46135)]
46136#[cfg_attr(
46137 target_arch = "arm",
46138 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46139)]
46140pub fn vreinterpret_f32_s8(a: int8x8_t) -> float32x2_t {
46141 unsafe { transmute(a) }
46142}
46143#[doc = "Vector reinterpret cast operation"]
46144#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s8)"]
46145#[inline]
46146#[cfg(target_endian = "big")]
46147#[target_feature(enable = "neon")]
46148#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46149#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46150#[cfg_attr(
46151 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46152 assert_instr(nop)
46153)]
46154#[cfg_attr(
46155 not(target_arch = "arm"),
46156 stable(feature = "neon_intrinsics", since = "1.59.0")
46157)]
46158#[cfg_attr(
46159 target_arch = "arm",
46160 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46161)]
46162pub fn vreinterpret_f32_s8(a: int8x8_t) -> float32x2_t {
46163 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
46164 unsafe {
46165 let ret_val: float32x2_t = transmute(a);
46166 simd_shuffle!(ret_val, ret_val, [1, 0])
46167 }
46168}
46169#[doc = "Vector reinterpret cast operation"]
46170#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_s8)"]
46171#[inline]
46172#[cfg(target_endian = "little")]
46173#[target_feature(enable = "neon")]
46174#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46175#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46176#[cfg_attr(
46177 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46178 assert_instr(nop)
46179)]
46180#[cfg_attr(
46181 not(target_arch = "arm"),
46182 stable(feature = "neon_intrinsics", since = "1.59.0")
46183)]
46184#[cfg_attr(
46185 target_arch = "arm",
46186 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46187)]
46188pub fn vreinterpret_s16_s8(a: int8x8_t) -> int16x4_t {
46189 unsafe { transmute(a) }
46190}
46191#[doc = "Vector reinterpret cast operation"]
46192#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_s8)"]
46193#[inline]
46194#[cfg(target_endian = "big")]
46195#[target_feature(enable = "neon")]
46196#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46197#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46198#[cfg_attr(
46199 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46200 assert_instr(nop)
46201)]
46202#[cfg_attr(
46203 not(target_arch = "arm"),
46204 stable(feature = "neon_intrinsics", since = "1.59.0")
46205)]
46206#[cfg_attr(
46207 target_arch = "arm",
46208 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46209)]
46210pub fn vreinterpret_s16_s8(a: int8x8_t) -> int16x4_t {
46211 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
46212 unsafe {
46213 let ret_val: int16x4_t = transmute(a);
46214 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
46215 }
46216}
46217#[doc = "Vector reinterpret cast operation"]
46218#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s8)"]
46219#[inline]
46220#[cfg(target_endian = "little")]
46221#[target_feature(enable = "neon")]
46222#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46223#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46224#[cfg_attr(
46225 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46226 assert_instr(nop)
46227)]
46228#[cfg_attr(
46229 not(target_arch = "arm"),
46230 stable(feature = "neon_intrinsics", since = "1.59.0")
46231)]
46232#[cfg_attr(
46233 target_arch = "arm",
46234 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46235)]
46236pub fn vreinterpret_s32_s8(a: int8x8_t) -> int32x2_t {
46237 unsafe { transmute(a) }
46238}
46239#[doc = "Vector reinterpret cast operation"]
46240#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s8)"]
46241#[inline]
46242#[cfg(target_endian = "big")]
46243#[target_feature(enable = "neon")]
46244#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46245#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46246#[cfg_attr(
46247 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46248 assert_instr(nop)
46249)]
46250#[cfg_attr(
46251 not(target_arch = "arm"),
46252 stable(feature = "neon_intrinsics", since = "1.59.0")
46253)]
46254#[cfg_attr(
46255 target_arch = "arm",
46256 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46257)]
46258pub fn vreinterpret_s32_s8(a: int8x8_t) -> int32x2_t {
46259 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
46260 unsafe {
46261 let ret_val: int32x2_t = transmute(a);
46262 simd_shuffle!(ret_val, ret_val, [1, 0])
46263 }
46264}
46265#[doc = "Vector reinterpret cast operation"]
46266#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_s8)"]
46267#[inline]
46268#[cfg(target_endian = "little")]
46269#[target_feature(enable = "neon")]
46270#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46271#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46272#[cfg_attr(
46273 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46274 assert_instr(nop)
46275)]
46276#[cfg_attr(
46277 not(target_arch = "arm"),
46278 stable(feature = "neon_intrinsics", since = "1.59.0")
46279)]
46280#[cfg_attr(
46281 target_arch = "arm",
46282 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46283)]
46284pub fn vreinterpret_s64_s8(a: int8x8_t) -> int64x1_t {
46285 unsafe { transmute(a) }
46286}
46287#[doc = "Vector reinterpret cast operation"]
46288#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_s8)"]
46289#[inline]
46290#[cfg(target_endian = "big")]
46291#[target_feature(enable = "neon")]
46292#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46293#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46294#[cfg_attr(
46295 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46296 assert_instr(nop)
46297)]
46298#[cfg_attr(
46299 not(target_arch = "arm"),
46300 stable(feature = "neon_intrinsics", since = "1.59.0")
46301)]
46302#[cfg_attr(
46303 target_arch = "arm",
46304 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46305)]
46306pub fn vreinterpret_s64_s8(a: int8x8_t) -> int64x1_t {
46307 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
46308 unsafe { transmute(a) }
46309}
46310#[doc = "Vector reinterpret cast operation"]
46311#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s8)"]
46312#[inline]
46313#[cfg(target_endian = "little")]
46314#[target_feature(enable = "neon")]
46315#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46316#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46317#[cfg_attr(
46318 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46319 assert_instr(nop)
46320)]
46321#[cfg_attr(
46322 not(target_arch = "arm"),
46323 stable(feature = "neon_intrinsics", since = "1.59.0")
46324)]
46325#[cfg_attr(
46326 target_arch = "arm",
46327 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46328)]
46329pub fn vreinterpret_u8_s8(a: int8x8_t) -> uint8x8_t {
46330 unsafe { transmute(a) }
46331}
46332#[doc = "Vector reinterpret cast operation"]
46333#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s8)"]
46334#[inline]
46335#[cfg(target_endian = "big")]
46336#[target_feature(enable = "neon")]
46337#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46338#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46339#[cfg_attr(
46340 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46341 assert_instr(nop)
46342)]
46343#[cfg_attr(
46344 not(target_arch = "arm"),
46345 stable(feature = "neon_intrinsics", since = "1.59.0")
46346)]
46347#[cfg_attr(
46348 target_arch = "arm",
46349 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46350)]
46351pub fn vreinterpret_u8_s8(a: int8x8_t) -> uint8x8_t {
46352 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
46353 unsafe {
46354 let ret_val: uint8x8_t = transmute(a);
46355 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
46356 }
46357}
46358#[doc = "Vector reinterpret cast operation"]
46359#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s8)"]
46360#[inline]
46361#[cfg(target_endian = "little")]
46362#[target_feature(enable = "neon")]
46363#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46364#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46365#[cfg_attr(
46366 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46367 assert_instr(nop)
46368)]
46369#[cfg_attr(
46370 not(target_arch = "arm"),
46371 stable(feature = "neon_intrinsics", since = "1.59.0")
46372)]
46373#[cfg_attr(
46374 target_arch = "arm",
46375 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46376)]
46377pub fn vreinterpret_u16_s8(a: int8x8_t) -> uint16x4_t {
46378 unsafe { transmute(a) }
46379}
46380#[doc = "Vector reinterpret cast operation"]
46381#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s8)"]
46382#[inline]
46383#[cfg(target_endian = "big")]
46384#[target_feature(enable = "neon")]
46385#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46386#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46387#[cfg_attr(
46388 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46389 assert_instr(nop)
46390)]
46391#[cfg_attr(
46392 not(target_arch = "arm"),
46393 stable(feature = "neon_intrinsics", since = "1.59.0")
46394)]
46395#[cfg_attr(
46396 target_arch = "arm",
46397 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46398)]
46399pub fn vreinterpret_u16_s8(a: int8x8_t) -> uint16x4_t {
46400 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
46401 unsafe {
46402 let ret_val: uint16x4_t = transmute(a);
46403 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
46404 }
46405}
46406#[doc = "Vector reinterpret cast operation"]
46407#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s8)"]
46408#[inline]
46409#[cfg(target_endian = "little")]
46410#[target_feature(enable = "neon")]
46411#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46412#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46413#[cfg_attr(
46414 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46415 assert_instr(nop)
46416)]
46417#[cfg_attr(
46418 not(target_arch = "arm"),
46419 stable(feature = "neon_intrinsics", since = "1.59.0")
46420)]
46421#[cfg_attr(
46422 target_arch = "arm",
46423 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46424)]
46425pub fn vreinterpret_u32_s8(a: int8x8_t) -> uint32x2_t {
46426 unsafe { transmute(a) }
46427}
46428#[doc = "Vector reinterpret cast operation"]
46429#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s8)"]
46430#[inline]
46431#[cfg(target_endian = "big")]
46432#[target_feature(enable = "neon")]
46433#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46434#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46435#[cfg_attr(
46436 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46437 assert_instr(nop)
46438)]
46439#[cfg_attr(
46440 not(target_arch = "arm"),
46441 stable(feature = "neon_intrinsics", since = "1.59.0")
46442)]
46443#[cfg_attr(
46444 target_arch = "arm",
46445 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46446)]
46447pub fn vreinterpret_u32_s8(a: int8x8_t) -> uint32x2_t {
46448 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
46449 unsafe {
46450 let ret_val: uint32x2_t = transmute(a);
46451 simd_shuffle!(ret_val, ret_val, [1, 0])
46452 }
46453}
46454#[doc = "Vector reinterpret cast operation"]
46455#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s8)"]
46456#[inline]
46457#[cfg(target_endian = "little")]
46458#[target_feature(enable = "neon")]
46459#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46460#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46461#[cfg_attr(
46462 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46463 assert_instr(nop)
46464)]
46465#[cfg_attr(
46466 not(target_arch = "arm"),
46467 stable(feature = "neon_intrinsics", since = "1.59.0")
46468)]
46469#[cfg_attr(
46470 target_arch = "arm",
46471 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46472)]
46473pub fn vreinterpret_u64_s8(a: int8x8_t) -> uint64x1_t {
46474 unsafe { transmute(a) }
46475}
46476#[doc = "Vector reinterpret cast operation"]
46477#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s8)"]
46478#[inline]
46479#[cfg(target_endian = "big")]
46480#[target_feature(enable = "neon")]
46481#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46482#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46483#[cfg_attr(
46484 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46485 assert_instr(nop)
46486)]
46487#[cfg_attr(
46488 not(target_arch = "arm"),
46489 stable(feature = "neon_intrinsics", since = "1.59.0")
46490)]
46491#[cfg_attr(
46492 target_arch = "arm",
46493 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46494)]
46495pub fn vreinterpret_u64_s8(a: int8x8_t) -> uint64x1_t {
46496 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
46497 unsafe { transmute(a) }
46498}
46499#[doc = "Vector reinterpret cast operation"]
46500#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s8)"]
46501#[inline]
46502#[cfg(target_endian = "little")]
46503#[target_feature(enable = "neon")]
46504#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46505#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46506#[cfg_attr(
46507 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46508 assert_instr(nop)
46509)]
46510#[cfg_attr(
46511 not(target_arch = "arm"),
46512 stable(feature = "neon_intrinsics", since = "1.59.0")
46513)]
46514#[cfg_attr(
46515 target_arch = "arm",
46516 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46517)]
46518pub fn vreinterpret_p8_s8(a: int8x8_t) -> poly8x8_t {
46519 unsafe { transmute(a) }
46520}
46521#[doc = "Vector reinterpret cast operation"]
46522#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s8)"]
46523#[inline]
46524#[cfg(target_endian = "big")]
46525#[target_feature(enable = "neon")]
46526#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46527#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46528#[cfg_attr(
46529 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46530 assert_instr(nop)
46531)]
46532#[cfg_attr(
46533 not(target_arch = "arm"),
46534 stable(feature = "neon_intrinsics", since = "1.59.0")
46535)]
46536#[cfg_attr(
46537 target_arch = "arm",
46538 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46539)]
46540pub fn vreinterpret_p8_s8(a: int8x8_t) -> poly8x8_t {
46541 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
46542 unsafe {
46543 let ret_val: poly8x8_t = transmute(a);
46544 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
46545 }
46546}
46547#[doc = "Vector reinterpret cast operation"]
46548#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s8)"]
46549#[inline]
46550#[cfg(target_endian = "little")]
46551#[target_feature(enable = "neon")]
46552#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46553#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46554#[cfg_attr(
46555 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46556 assert_instr(nop)
46557)]
46558#[cfg_attr(
46559 not(target_arch = "arm"),
46560 stable(feature = "neon_intrinsics", since = "1.59.0")
46561)]
46562#[cfg_attr(
46563 target_arch = "arm",
46564 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46565)]
46566pub fn vreinterpret_p16_s8(a: int8x8_t) -> poly16x4_t {
46567 unsafe { transmute(a) }
46568}
46569#[doc = "Vector reinterpret cast operation"]
46570#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s8)"]
46571#[inline]
46572#[cfg(target_endian = "big")]
46573#[target_feature(enable = "neon")]
46574#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46575#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46576#[cfg_attr(
46577 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46578 assert_instr(nop)
46579)]
46580#[cfg_attr(
46581 not(target_arch = "arm"),
46582 stable(feature = "neon_intrinsics", since = "1.59.0")
46583)]
46584#[cfg_attr(
46585 target_arch = "arm",
46586 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46587)]
46588pub fn vreinterpret_p16_s8(a: int8x8_t) -> poly16x4_t {
46589 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
46590 unsafe {
46591 let ret_val: poly16x4_t = transmute(a);
46592 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
46593 }
46594}
46595#[doc = "Vector reinterpret cast operation"]
46596#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s8)"]
46597#[inline]
46598#[cfg(target_endian = "little")]
46599#[target_feature(enable = "neon")]
46600#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46601#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46602#[cfg_attr(
46603 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46604 assert_instr(nop)
46605)]
46606#[cfg_attr(
46607 not(target_arch = "arm"),
46608 stable(feature = "neon_intrinsics", since = "1.59.0")
46609)]
46610#[cfg_attr(
46611 target_arch = "arm",
46612 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46613)]
46614pub fn vreinterpretq_f32_s8(a: int8x16_t) -> float32x4_t {
46615 unsafe { transmute(a) }
46616}
46617#[doc = "Vector reinterpret cast operation"]
46618#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s8)"]
46619#[inline]
46620#[cfg(target_endian = "big")]
46621#[target_feature(enable = "neon")]
46622#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46623#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46624#[cfg_attr(
46625 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46626 assert_instr(nop)
46627)]
46628#[cfg_attr(
46629 not(target_arch = "arm"),
46630 stable(feature = "neon_intrinsics", since = "1.59.0")
46631)]
46632#[cfg_attr(
46633 target_arch = "arm",
46634 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46635)]
46636pub fn vreinterpretq_f32_s8(a: int8x16_t) -> float32x4_t {
46637 let a: int8x16_t =
46638 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
46639 unsafe {
46640 let ret_val: float32x4_t = transmute(a);
46641 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
46642 }
46643}
46644#[doc = "Vector reinterpret cast operation"]
46645#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s8)"]
46646#[inline]
46647#[cfg(target_endian = "little")]
46648#[target_feature(enable = "neon")]
46649#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46650#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46651#[cfg_attr(
46652 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46653 assert_instr(nop)
46654)]
46655#[cfg_attr(
46656 not(target_arch = "arm"),
46657 stable(feature = "neon_intrinsics", since = "1.59.0")
46658)]
46659#[cfg_attr(
46660 target_arch = "arm",
46661 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46662)]
46663pub fn vreinterpretq_s16_s8(a: int8x16_t) -> int16x8_t {
46664 unsafe { transmute(a) }
46665}
46666#[doc = "Vector reinterpret cast operation"]
46667#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s8)"]
46668#[inline]
46669#[cfg(target_endian = "big")]
46670#[target_feature(enable = "neon")]
46671#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46672#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46673#[cfg_attr(
46674 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46675 assert_instr(nop)
46676)]
46677#[cfg_attr(
46678 not(target_arch = "arm"),
46679 stable(feature = "neon_intrinsics", since = "1.59.0")
46680)]
46681#[cfg_attr(
46682 target_arch = "arm",
46683 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46684)]
46685pub fn vreinterpretq_s16_s8(a: int8x16_t) -> int16x8_t {
46686 let a: int8x16_t =
46687 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
46688 unsafe {
46689 let ret_val: int16x8_t = transmute(a);
46690 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
46691 }
46692}
46693#[doc = "Vector reinterpret cast operation"]
46694#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s8)"]
46695#[inline]
46696#[cfg(target_endian = "little")]
46697#[target_feature(enable = "neon")]
46698#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46699#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46700#[cfg_attr(
46701 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46702 assert_instr(nop)
46703)]
46704#[cfg_attr(
46705 not(target_arch = "arm"),
46706 stable(feature = "neon_intrinsics", since = "1.59.0")
46707)]
46708#[cfg_attr(
46709 target_arch = "arm",
46710 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46711)]
46712pub fn vreinterpretq_s32_s8(a: int8x16_t) -> int32x4_t {
46713 unsafe { transmute(a) }
46714}
46715#[doc = "Vector reinterpret cast operation"]
46716#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s8)"]
46717#[inline]
46718#[cfg(target_endian = "big")]
46719#[target_feature(enable = "neon")]
46720#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46721#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46722#[cfg_attr(
46723 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46724 assert_instr(nop)
46725)]
46726#[cfg_attr(
46727 not(target_arch = "arm"),
46728 stable(feature = "neon_intrinsics", since = "1.59.0")
46729)]
46730#[cfg_attr(
46731 target_arch = "arm",
46732 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46733)]
46734pub fn vreinterpretq_s32_s8(a: int8x16_t) -> int32x4_t {
46735 let a: int8x16_t =
46736 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
46737 unsafe {
46738 let ret_val: int32x4_t = transmute(a);
46739 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
46740 }
46741}
46742#[doc = "Vector reinterpret cast operation"]
46743#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s8)"]
46744#[inline]
46745#[cfg(target_endian = "little")]
46746#[target_feature(enable = "neon")]
46747#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46748#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46749#[cfg_attr(
46750 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46751 assert_instr(nop)
46752)]
46753#[cfg_attr(
46754 not(target_arch = "arm"),
46755 stable(feature = "neon_intrinsics", since = "1.59.0")
46756)]
46757#[cfg_attr(
46758 target_arch = "arm",
46759 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46760)]
46761pub fn vreinterpretq_s64_s8(a: int8x16_t) -> int64x2_t {
46762 unsafe { transmute(a) }
46763}
46764#[doc = "Vector reinterpret cast operation"]
46765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s8)"]
46766#[inline]
46767#[cfg(target_endian = "big")]
46768#[target_feature(enable = "neon")]
46769#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46770#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46771#[cfg_attr(
46772 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46773 assert_instr(nop)
46774)]
46775#[cfg_attr(
46776 not(target_arch = "arm"),
46777 stable(feature = "neon_intrinsics", since = "1.59.0")
46778)]
46779#[cfg_attr(
46780 target_arch = "arm",
46781 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46782)]
46783pub fn vreinterpretq_s64_s8(a: int8x16_t) -> int64x2_t {
46784 let a: int8x16_t =
46785 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
46786 unsafe {
46787 let ret_val: int64x2_t = transmute(a);
46788 simd_shuffle!(ret_val, ret_val, [1, 0])
46789 }
46790}
46791#[doc = "Vector reinterpret cast operation"]
46792#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s8)"]
46793#[inline]
46794#[cfg(target_endian = "little")]
46795#[target_feature(enable = "neon")]
46796#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46797#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46798#[cfg_attr(
46799 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46800 assert_instr(nop)
46801)]
46802#[cfg_attr(
46803 not(target_arch = "arm"),
46804 stable(feature = "neon_intrinsics", since = "1.59.0")
46805)]
46806#[cfg_attr(
46807 target_arch = "arm",
46808 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46809)]
46810pub fn vreinterpretq_u8_s8(a: int8x16_t) -> uint8x16_t {
46811 unsafe { transmute(a) }
46812}
46813#[doc = "Vector reinterpret cast operation"]
46814#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s8)"]
46815#[inline]
46816#[cfg(target_endian = "big")]
46817#[target_feature(enable = "neon")]
46818#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46819#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46820#[cfg_attr(
46821 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46822 assert_instr(nop)
46823)]
46824#[cfg_attr(
46825 not(target_arch = "arm"),
46826 stable(feature = "neon_intrinsics", since = "1.59.0")
46827)]
46828#[cfg_attr(
46829 target_arch = "arm",
46830 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46831)]
46832pub fn vreinterpretq_u8_s8(a: int8x16_t) -> uint8x16_t {
46833 let a: int8x16_t =
46834 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
46835 unsafe {
46836 let ret_val: uint8x16_t = transmute(a);
46837 simd_shuffle!(
46838 ret_val,
46839 ret_val,
46840 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
46841 )
46842 }
46843}
46844#[doc = "Vector reinterpret cast operation"]
46845#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s8)"]
46846#[inline]
46847#[cfg(target_endian = "little")]
46848#[target_feature(enable = "neon")]
46849#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46850#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46851#[cfg_attr(
46852 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46853 assert_instr(nop)
46854)]
46855#[cfg_attr(
46856 not(target_arch = "arm"),
46857 stable(feature = "neon_intrinsics", since = "1.59.0")
46858)]
46859#[cfg_attr(
46860 target_arch = "arm",
46861 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46862)]
46863pub fn vreinterpretq_u16_s8(a: int8x16_t) -> uint16x8_t {
46864 unsafe { transmute(a) }
46865}
46866#[doc = "Vector reinterpret cast operation"]
46867#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s8)"]
46868#[inline]
46869#[cfg(target_endian = "big")]
46870#[target_feature(enable = "neon")]
46871#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46872#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46873#[cfg_attr(
46874 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46875 assert_instr(nop)
46876)]
46877#[cfg_attr(
46878 not(target_arch = "arm"),
46879 stable(feature = "neon_intrinsics", since = "1.59.0")
46880)]
46881#[cfg_attr(
46882 target_arch = "arm",
46883 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46884)]
46885pub fn vreinterpretq_u16_s8(a: int8x16_t) -> uint16x8_t {
46886 let a: int8x16_t =
46887 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
46888 unsafe {
46889 let ret_val: uint16x8_t = transmute(a);
46890 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
46891 }
46892}
46893#[doc = "Vector reinterpret cast operation"]
46894#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s8)"]
46895#[inline]
46896#[cfg(target_endian = "little")]
46897#[target_feature(enable = "neon")]
46898#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46899#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46900#[cfg_attr(
46901 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46902 assert_instr(nop)
46903)]
46904#[cfg_attr(
46905 not(target_arch = "arm"),
46906 stable(feature = "neon_intrinsics", since = "1.59.0")
46907)]
46908#[cfg_attr(
46909 target_arch = "arm",
46910 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46911)]
46912pub fn vreinterpretq_u32_s8(a: int8x16_t) -> uint32x4_t {
46913 unsafe { transmute(a) }
46914}
46915#[doc = "Vector reinterpret cast operation"]
46916#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s8)"]
46917#[inline]
46918#[cfg(target_endian = "big")]
46919#[target_feature(enable = "neon")]
46920#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46921#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46922#[cfg_attr(
46923 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46924 assert_instr(nop)
46925)]
46926#[cfg_attr(
46927 not(target_arch = "arm"),
46928 stable(feature = "neon_intrinsics", since = "1.59.0")
46929)]
46930#[cfg_attr(
46931 target_arch = "arm",
46932 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46933)]
46934pub fn vreinterpretq_u32_s8(a: int8x16_t) -> uint32x4_t {
46935 let a: int8x16_t =
46936 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
46937 unsafe {
46938 let ret_val: uint32x4_t = transmute(a);
46939 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
46940 }
46941}
46942#[doc = "Vector reinterpret cast operation"]
46943#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s8)"]
46944#[inline]
46945#[cfg(target_endian = "little")]
46946#[target_feature(enable = "neon")]
46947#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46948#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46949#[cfg_attr(
46950 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46951 assert_instr(nop)
46952)]
46953#[cfg_attr(
46954 not(target_arch = "arm"),
46955 stable(feature = "neon_intrinsics", since = "1.59.0")
46956)]
46957#[cfg_attr(
46958 target_arch = "arm",
46959 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46960)]
46961pub fn vreinterpretq_u64_s8(a: int8x16_t) -> uint64x2_t {
46962 unsafe { transmute(a) }
46963}
46964#[doc = "Vector reinterpret cast operation"]
46965#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s8)"]
46966#[inline]
46967#[cfg(target_endian = "big")]
46968#[target_feature(enable = "neon")]
46969#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46970#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46971#[cfg_attr(
46972 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46973 assert_instr(nop)
46974)]
46975#[cfg_attr(
46976 not(target_arch = "arm"),
46977 stable(feature = "neon_intrinsics", since = "1.59.0")
46978)]
46979#[cfg_attr(
46980 target_arch = "arm",
46981 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46982)]
46983pub fn vreinterpretq_u64_s8(a: int8x16_t) -> uint64x2_t {
46984 let a: int8x16_t =
46985 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
46986 unsafe {
46987 let ret_val: uint64x2_t = transmute(a);
46988 simd_shuffle!(ret_val, ret_val, [1, 0])
46989 }
46990}
46991#[doc = "Vector reinterpret cast operation"]
46992#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s8)"]
46993#[inline]
46994#[cfg(target_endian = "little")]
46995#[target_feature(enable = "neon")]
46996#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46997#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46998#[cfg_attr(
46999 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47000 assert_instr(nop)
47001)]
47002#[cfg_attr(
47003 not(target_arch = "arm"),
47004 stable(feature = "neon_intrinsics", since = "1.59.0")
47005)]
47006#[cfg_attr(
47007 target_arch = "arm",
47008 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47009)]
47010pub fn vreinterpretq_p8_s8(a: int8x16_t) -> poly8x16_t {
47011 unsafe { transmute(a) }
47012}
47013#[doc = "Vector reinterpret cast operation"]
47014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s8)"]
47015#[inline]
47016#[cfg(target_endian = "big")]
47017#[target_feature(enable = "neon")]
47018#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47019#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47020#[cfg_attr(
47021 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47022 assert_instr(nop)
47023)]
47024#[cfg_attr(
47025 not(target_arch = "arm"),
47026 stable(feature = "neon_intrinsics", since = "1.59.0")
47027)]
47028#[cfg_attr(
47029 target_arch = "arm",
47030 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47031)]
47032pub fn vreinterpretq_p8_s8(a: int8x16_t) -> poly8x16_t {
47033 let a: int8x16_t =
47034 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
47035 unsafe {
47036 let ret_val: poly8x16_t = transmute(a);
47037 simd_shuffle!(
47038 ret_val,
47039 ret_val,
47040 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
47041 )
47042 }
47043}
47044#[doc = "Vector reinterpret cast operation"]
47045#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s8)"]
47046#[inline]
47047#[cfg(target_endian = "little")]
47048#[target_feature(enable = "neon")]
47049#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47050#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47051#[cfg_attr(
47052 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47053 assert_instr(nop)
47054)]
47055#[cfg_attr(
47056 not(target_arch = "arm"),
47057 stable(feature = "neon_intrinsics", since = "1.59.0")
47058)]
47059#[cfg_attr(
47060 target_arch = "arm",
47061 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47062)]
47063pub fn vreinterpretq_p16_s8(a: int8x16_t) -> poly16x8_t {
47064 unsafe { transmute(a) }
47065}
47066#[doc = "Vector reinterpret cast operation"]
47067#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s8)"]
47068#[inline]
47069#[cfg(target_endian = "big")]
47070#[target_feature(enable = "neon")]
47071#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47072#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47073#[cfg_attr(
47074 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47075 assert_instr(nop)
47076)]
47077#[cfg_attr(
47078 not(target_arch = "arm"),
47079 stable(feature = "neon_intrinsics", since = "1.59.0")
47080)]
47081#[cfg_attr(
47082 target_arch = "arm",
47083 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47084)]
47085pub fn vreinterpretq_p16_s8(a: int8x16_t) -> poly16x8_t {
47086 let a: int8x16_t =
47087 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
47088 unsafe {
47089 let ret_val: poly16x8_t = transmute(a);
47090 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
47091 }
47092}
47093#[doc = "Vector reinterpret cast operation"]
47094#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s16)"]
47095#[inline]
47096#[cfg(target_endian = "little")]
47097#[target_feature(enable = "neon")]
47098#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47099#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47100#[cfg_attr(
47101 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47102 assert_instr(nop)
47103)]
47104#[cfg_attr(
47105 not(target_arch = "arm"),
47106 stable(feature = "neon_intrinsics", since = "1.59.0")
47107)]
47108#[cfg_attr(
47109 target_arch = "arm",
47110 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47111)]
47112pub fn vreinterpret_f32_s16(a: int16x4_t) -> float32x2_t {
47113 unsafe { transmute(a) }
47114}
47115#[doc = "Vector reinterpret cast operation"]
47116#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s16)"]
47117#[inline]
47118#[cfg(target_endian = "big")]
47119#[target_feature(enable = "neon")]
47120#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47121#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47122#[cfg_attr(
47123 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47124 assert_instr(nop)
47125)]
47126#[cfg_attr(
47127 not(target_arch = "arm"),
47128 stable(feature = "neon_intrinsics", since = "1.59.0")
47129)]
47130#[cfg_attr(
47131 target_arch = "arm",
47132 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47133)]
47134pub fn vreinterpret_f32_s16(a: int16x4_t) -> float32x2_t {
47135 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
47136 unsafe {
47137 let ret_val: float32x2_t = transmute(a);
47138 simd_shuffle!(ret_val, ret_val, [1, 0])
47139 }
47140}
47141#[doc = "Vector reinterpret cast operation"]
47142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s16)"]
47143#[inline]
47144#[cfg(target_endian = "little")]
47145#[target_feature(enable = "neon")]
47146#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47147#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47148#[cfg_attr(
47149 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47150 assert_instr(nop)
47151)]
47152#[cfg_attr(
47153 not(target_arch = "arm"),
47154 stable(feature = "neon_intrinsics", since = "1.59.0")
47155)]
47156#[cfg_attr(
47157 target_arch = "arm",
47158 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47159)]
47160pub fn vreinterpret_s8_s16(a: int16x4_t) -> int8x8_t {
47161 unsafe { transmute(a) }
47162}
47163#[doc = "Vector reinterpret cast operation"]
47164#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s16)"]
47165#[inline]
47166#[cfg(target_endian = "big")]
47167#[target_feature(enable = "neon")]
47168#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47169#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47170#[cfg_attr(
47171 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47172 assert_instr(nop)
47173)]
47174#[cfg_attr(
47175 not(target_arch = "arm"),
47176 stable(feature = "neon_intrinsics", since = "1.59.0")
47177)]
47178#[cfg_attr(
47179 target_arch = "arm",
47180 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47181)]
47182pub fn vreinterpret_s8_s16(a: int16x4_t) -> int8x8_t {
47183 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
47184 unsafe {
47185 let ret_val: int8x8_t = transmute(a);
47186 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
47187 }
47188}
47189#[doc = "Vector reinterpret cast operation"]
47190#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s16)"]
47191#[inline]
47192#[cfg(target_endian = "little")]
47193#[target_feature(enable = "neon")]
47194#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47195#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47196#[cfg_attr(
47197 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47198 assert_instr(nop)
47199)]
47200#[cfg_attr(
47201 not(target_arch = "arm"),
47202 stable(feature = "neon_intrinsics", since = "1.59.0")
47203)]
47204#[cfg_attr(
47205 target_arch = "arm",
47206 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47207)]
47208pub fn vreinterpret_s32_s16(a: int16x4_t) -> int32x2_t {
47209 unsafe { transmute(a) }
47210}
47211#[doc = "Vector reinterpret cast operation"]
47212#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s16)"]
47213#[inline]
47214#[cfg(target_endian = "big")]
47215#[target_feature(enable = "neon")]
47216#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47217#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47218#[cfg_attr(
47219 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47220 assert_instr(nop)
47221)]
47222#[cfg_attr(
47223 not(target_arch = "arm"),
47224 stable(feature = "neon_intrinsics", since = "1.59.0")
47225)]
47226#[cfg_attr(
47227 target_arch = "arm",
47228 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47229)]
47230pub fn vreinterpret_s32_s16(a: int16x4_t) -> int32x2_t {
47231 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
47232 unsafe {
47233 let ret_val: int32x2_t = transmute(a);
47234 simd_shuffle!(ret_val, ret_val, [1, 0])
47235 }
47236}
47237#[doc = "Vector reinterpret cast operation"]
47238#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_s16)"]
47239#[inline]
47240#[cfg(target_endian = "little")]
47241#[target_feature(enable = "neon")]
47242#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47243#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47244#[cfg_attr(
47245 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47246 assert_instr(nop)
47247)]
47248#[cfg_attr(
47249 not(target_arch = "arm"),
47250 stable(feature = "neon_intrinsics", since = "1.59.0")
47251)]
47252#[cfg_attr(
47253 target_arch = "arm",
47254 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47255)]
47256pub fn vreinterpret_s64_s16(a: int16x4_t) -> int64x1_t {
47257 unsafe { transmute(a) }
47258}
47259#[doc = "Vector reinterpret cast operation"]
47260#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_s16)"]
47261#[inline]
47262#[cfg(target_endian = "big")]
47263#[target_feature(enable = "neon")]
47264#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47265#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47266#[cfg_attr(
47267 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47268 assert_instr(nop)
47269)]
47270#[cfg_attr(
47271 not(target_arch = "arm"),
47272 stable(feature = "neon_intrinsics", since = "1.59.0")
47273)]
47274#[cfg_attr(
47275 target_arch = "arm",
47276 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47277)]
47278pub fn vreinterpret_s64_s16(a: int16x4_t) -> int64x1_t {
47279 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
47280 unsafe { transmute(a) }
47281}
47282#[doc = "Vector reinterpret cast operation"]
47283#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s16)"]
47284#[inline]
47285#[cfg(target_endian = "little")]
47286#[target_feature(enable = "neon")]
47287#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47288#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47289#[cfg_attr(
47290 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47291 assert_instr(nop)
47292)]
47293#[cfg_attr(
47294 not(target_arch = "arm"),
47295 stable(feature = "neon_intrinsics", since = "1.59.0")
47296)]
47297#[cfg_attr(
47298 target_arch = "arm",
47299 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47300)]
47301pub fn vreinterpret_u8_s16(a: int16x4_t) -> uint8x8_t {
47302 unsafe { transmute(a) }
47303}
47304#[doc = "Vector reinterpret cast operation"]
47305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s16)"]
47306#[inline]
47307#[cfg(target_endian = "big")]
47308#[target_feature(enable = "neon")]
47309#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47310#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47311#[cfg_attr(
47312 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47313 assert_instr(nop)
47314)]
47315#[cfg_attr(
47316 not(target_arch = "arm"),
47317 stable(feature = "neon_intrinsics", since = "1.59.0")
47318)]
47319#[cfg_attr(
47320 target_arch = "arm",
47321 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47322)]
47323pub fn vreinterpret_u8_s16(a: int16x4_t) -> uint8x8_t {
47324 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
47325 unsafe {
47326 let ret_val: uint8x8_t = transmute(a);
47327 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
47328 }
47329}
47330#[doc = "Vector reinterpret cast operation"]
47331#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s16)"]
47332#[inline]
47333#[cfg(target_endian = "little")]
47334#[target_feature(enable = "neon")]
47335#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47336#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47337#[cfg_attr(
47338 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47339 assert_instr(nop)
47340)]
47341#[cfg_attr(
47342 not(target_arch = "arm"),
47343 stable(feature = "neon_intrinsics", since = "1.59.0")
47344)]
47345#[cfg_attr(
47346 target_arch = "arm",
47347 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47348)]
47349pub fn vreinterpret_u16_s16(a: int16x4_t) -> uint16x4_t {
47350 unsafe { transmute(a) }
47351}
47352#[doc = "Vector reinterpret cast operation"]
47353#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s16)"]
47354#[inline]
47355#[cfg(target_endian = "big")]
47356#[target_feature(enable = "neon")]
47357#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47358#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47359#[cfg_attr(
47360 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47361 assert_instr(nop)
47362)]
47363#[cfg_attr(
47364 not(target_arch = "arm"),
47365 stable(feature = "neon_intrinsics", since = "1.59.0")
47366)]
47367#[cfg_attr(
47368 target_arch = "arm",
47369 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47370)]
47371pub fn vreinterpret_u16_s16(a: int16x4_t) -> uint16x4_t {
47372 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
47373 unsafe {
47374 let ret_val: uint16x4_t = transmute(a);
47375 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
47376 }
47377}
47378#[doc = "Vector reinterpret cast operation"]
47379#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s16)"]
47380#[inline]
47381#[cfg(target_endian = "little")]
47382#[target_feature(enable = "neon")]
47383#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47384#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47385#[cfg_attr(
47386 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47387 assert_instr(nop)
47388)]
47389#[cfg_attr(
47390 not(target_arch = "arm"),
47391 stable(feature = "neon_intrinsics", since = "1.59.0")
47392)]
47393#[cfg_attr(
47394 target_arch = "arm",
47395 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47396)]
47397pub fn vreinterpret_u32_s16(a: int16x4_t) -> uint32x2_t {
47398 unsafe { transmute(a) }
47399}
47400#[doc = "Vector reinterpret cast operation"]
47401#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s16)"]
47402#[inline]
47403#[cfg(target_endian = "big")]
47404#[target_feature(enable = "neon")]
47405#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47406#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47407#[cfg_attr(
47408 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47409 assert_instr(nop)
47410)]
47411#[cfg_attr(
47412 not(target_arch = "arm"),
47413 stable(feature = "neon_intrinsics", since = "1.59.0")
47414)]
47415#[cfg_attr(
47416 target_arch = "arm",
47417 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47418)]
47419pub fn vreinterpret_u32_s16(a: int16x4_t) -> uint32x2_t {
47420 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
47421 unsafe {
47422 let ret_val: uint32x2_t = transmute(a);
47423 simd_shuffle!(ret_val, ret_val, [1, 0])
47424 }
47425}
47426#[doc = "Vector reinterpret cast operation"]
47427#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s16)"]
47428#[inline]
47429#[cfg(target_endian = "little")]
47430#[target_feature(enable = "neon")]
47431#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47432#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47433#[cfg_attr(
47434 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47435 assert_instr(nop)
47436)]
47437#[cfg_attr(
47438 not(target_arch = "arm"),
47439 stable(feature = "neon_intrinsics", since = "1.59.0")
47440)]
47441#[cfg_attr(
47442 target_arch = "arm",
47443 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47444)]
47445pub fn vreinterpret_u64_s16(a: int16x4_t) -> uint64x1_t {
47446 unsafe { transmute(a) }
47447}
47448#[doc = "Vector reinterpret cast operation"]
47449#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s16)"]
47450#[inline]
47451#[cfg(target_endian = "big")]
47452#[target_feature(enable = "neon")]
47453#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47454#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47455#[cfg_attr(
47456 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47457 assert_instr(nop)
47458)]
47459#[cfg_attr(
47460 not(target_arch = "arm"),
47461 stable(feature = "neon_intrinsics", since = "1.59.0")
47462)]
47463#[cfg_attr(
47464 target_arch = "arm",
47465 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47466)]
47467pub fn vreinterpret_u64_s16(a: int16x4_t) -> uint64x1_t {
47468 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
47469 unsafe { transmute(a) }
47470}
47471#[doc = "Vector reinterpret cast operation"]
47472#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s16)"]
47473#[inline]
47474#[cfg(target_endian = "little")]
47475#[target_feature(enable = "neon")]
47476#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47477#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47478#[cfg_attr(
47479 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47480 assert_instr(nop)
47481)]
47482#[cfg_attr(
47483 not(target_arch = "arm"),
47484 stable(feature = "neon_intrinsics", since = "1.59.0")
47485)]
47486#[cfg_attr(
47487 target_arch = "arm",
47488 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47489)]
47490pub fn vreinterpret_p8_s16(a: int16x4_t) -> poly8x8_t {
47491 unsafe { transmute(a) }
47492}
47493#[doc = "Vector reinterpret cast operation"]
47494#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s16)"]
47495#[inline]
47496#[cfg(target_endian = "big")]
47497#[target_feature(enable = "neon")]
47498#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47499#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47500#[cfg_attr(
47501 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47502 assert_instr(nop)
47503)]
47504#[cfg_attr(
47505 not(target_arch = "arm"),
47506 stable(feature = "neon_intrinsics", since = "1.59.0")
47507)]
47508#[cfg_attr(
47509 target_arch = "arm",
47510 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47511)]
47512pub fn vreinterpret_p8_s16(a: int16x4_t) -> poly8x8_t {
47513 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
47514 unsafe {
47515 let ret_val: poly8x8_t = transmute(a);
47516 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
47517 }
47518}
47519#[doc = "Vector reinterpret cast operation"]
47520#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s16)"]
47521#[inline]
47522#[cfg(target_endian = "little")]
47523#[target_feature(enable = "neon")]
47524#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47525#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47526#[cfg_attr(
47527 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47528 assert_instr(nop)
47529)]
47530#[cfg_attr(
47531 not(target_arch = "arm"),
47532 stable(feature = "neon_intrinsics", since = "1.59.0")
47533)]
47534#[cfg_attr(
47535 target_arch = "arm",
47536 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47537)]
47538pub fn vreinterpret_p16_s16(a: int16x4_t) -> poly16x4_t {
47539 unsafe { transmute(a) }
47540}
47541#[doc = "Vector reinterpret cast operation"]
47542#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s16)"]
47543#[inline]
47544#[cfg(target_endian = "big")]
47545#[target_feature(enable = "neon")]
47546#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47547#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47548#[cfg_attr(
47549 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47550 assert_instr(nop)
47551)]
47552#[cfg_attr(
47553 not(target_arch = "arm"),
47554 stable(feature = "neon_intrinsics", since = "1.59.0")
47555)]
47556#[cfg_attr(
47557 target_arch = "arm",
47558 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47559)]
47560pub fn vreinterpret_p16_s16(a: int16x4_t) -> poly16x4_t {
47561 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
47562 unsafe {
47563 let ret_val: poly16x4_t = transmute(a);
47564 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
47565 }
47566}
47567#[doc = "Vector reinterpret cast operation"]
47568#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s16)"]
47569#[inline]
47570#[cfg(target_endian = "little")]
47571#[target_feature(enable = "neon")]
47572#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47573#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47574#[cfg_attr(
47575 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47576 assert_instr(nop)
47577)]
47578#[cfg_attr(
47579 not(target_arch = "arm"),
47580 stable(feature = "neon_intrinsics", since = "1.59.0")
47581)]
47582#[cfg_attr(
47583 target_arch = "arm",
47584 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47585)]
47586pub fn vreinterpretq_f32_s16(a: int16x8_t) -> float32x4_t {
47587 unsafe { transmute(a) }
47588}
47589#[doc = "Vector reinterpret cast operation"]
47590#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s16)"]
47591#[inline]
47592#[cfg(target_endian = "big")]
47593#[target_feature(enable = "neon")]
47594#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47595#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47596#[cfg_attr(
47597 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47598 assert_instr(nop)
47599)]
47600#[cfg_attr(
47601 not(target_arch = "arm"),
47602 stable(feature = "neon_intrinsics", since = "1.59.0")
47603)]
47604#[cfg_attr(
47605 target_arch = "arm",
47606 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47607)]
47608pub fn vreinterpretq_f32_s16(a: int16x8_t) -> float32x4_t {
47609 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47610 unsafe {
47611 let ret_val: float32x4_t = transmute(a);
47612 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
47613 }
47614}
47615#[doc = "Vector reinterpret cast operation"]
47616#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s16)"]
47617#[inline]
47618#[cfg(target_endian = "little")]
47619#[target_feature(enable = "neon")]
47620#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47621#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47622#[cfg_attr(
47623 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47624 assert_instr(nop)
47625)]
47626#[cfg_attr(
47627 not(target_arch = "arm"),
47628 stable(feature = "neon_intrinsics", since = "1.59.0")
47629)]
47630#[cfg_attr(
47631 target_arch = "arm",
47632 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47633)]
47634pub fn vreinterpretq_s8_s16(a: int16x8_t) -> int8x16_t {
47635 unsafe { transmute(a) }
47636}
47637#[doc = "Vector reinterpret cast operation"]
47638#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s16)"]
47639#[inline]
47640#[cfg(target_endian = "big")]
47641#[target_feature(enable = "neon")]
47642#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47643#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47644#[cfg_attr(
47645 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47646 assert_instr(nop)
47647)]
47648#[cfg_attr(
47649 not(target_arch = "arm"),
47650 stable(feature = "neon_intrinsics", since = "1.59.0")
47651)]
47652#[cfg_attr(
47653 target_arch = "arm",
47654 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47655)]
47656pub fn vreinterpretq_s8_s16(a: int16x8_t) -> int8x16_t {
47657 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47658 unsafe {
47659 let ret_val: int8x16_t = transmute(a);
47660 simd_shuffle!(
47661 ret_val,
47662 ret_val,
47663 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
47664 )
47665 }
47666}
47667#[doc = "Vector reinterpret cast operation"]
47668#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s16)"]
47669#[inline]
47670#[cfg(target_endian = "little")]
47671#[target_feature(enable = "neon")]
47672#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47673#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47674#[cfg_attr(
47675 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47676 assert_instr(nop)
47677)]
47678#[cfg_attr(
47679 not(target_arch = "arm"),
47680 stable(feature = "neon_intrinsics", since = "1.59.0")
47681)]
47682#[cfg_attr(
47683 target_arch = "arm",
47684 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47685)]
47686pub fn vreinterpretq_s32_s16(a: int16x8_t) -> int32x4_t {
47687 unsafe { transmute(a) }
47688}
47689#[doc = "Vector reinterpret cast operation"]
47690#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s16)"]
47691#[inline]
47692#[cfg(target_endian = "big")]
47693#[target_feature(enable = "neon")]
47694#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
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_s32_s16(a: int16x8_t) -> int32x4_t {
47709 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47710 unsafe {
47711 let ret_val: int32x4_t = transmute(a);
47712 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
47713 }
47714}
47715#[doc = "Vector reinterpret cast operation"]
47716#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s16)"]
47717#[inline]
47718#[cfg(target_endian = "little")]
47719#[target_feature(enable = "neon")]
47720#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47721#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47722#[cfg_attr(
47723 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47724 assert_instr(nop)
47725)]
47726#[cfg_attr(
47727 not(target_arch = "arm"),
47728 stable(feature = "neon_intrinsics", since = "1.59.0")
47729)]
47730#[cfg_attr(
47731 target_arch = "arm",
47732 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47733)]
47734pub fn vreinterpretq_s64_s16(a: int16x8_t) -> int64x2_t {
47735 unsafe { transmute(a) }
47736}
47737#[doc = "Vector reinterpret cast operation"]
47738#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s16)"]
47739#[inline]
47740#[cfg(target_endian = "big")]
47741#[target_feature(enable = "neon")]
47742#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47743#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47744#[cfg_attr(
47745 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47746 assert_instr(nop)
47747)]
47748#[cfg_attr(
47749 not(target_arch = "arm"),
47750 stable(feature = "neon_intrinsics", since = "1.59.0")
47751)]
47752#[cfg_attr(
47753 target_arch = "arm",
47754 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47755)]
47756pub fn vreinterpretq_s64_s16(a: int16x8_t) -> int64x2_t {
47757 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47758 unsafe {
47759 let ret_val: int64x2_t = transmute(a);
47760 simd_shuffle!(ret_val, ret_val, [1, 0])
47761 }
47762}
47763#[doc = "Vector reinterpret cast operation"]
47764#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s16)"]
47765#[inline]
47766#[cfg(target_endian = "little")]
47767#[target_feature(enable = "neon")]
47768#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47769#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47770#[cfg_attr(
47771 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47772 assert_instr(nop)
47773)]
47774#[cfg_attr(
47775 not(target_arch = "arm"),
47776 stable(feature = "neon_intrinsics", since = "1.59.0")
47777)]
47778#[cfg_attr(
47779 target_arch = "arm",
47780 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47781)]
47782pub fn vreinterpretq_u8_s16(a: int16x8_t) -> uint8x16_t {
47783 unsafe { transmute(a) }
47784}
47785#[doc = "Vector reinterpret cast operation"]
47786#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s16)"]
47787#[inline]
47788#[cfg(target_endian = "big")]
47789#[target_feature(enable = "neon")]
47790#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47791#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47792#[cfg_attr(
47793 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47794 assert_instr(nop)
47795)]
47796#[cfg_attr(
47797 not(target_arch = "arm"),
47798 stable(feature = "neon_intrinsics", since = "1.59.0")
47799)]
47800#[cfg_attr(
47801 target_arch = "arm",
47802 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47803)]
47804pub fn vreinterpretq_u8_s16(a: int16x8_t) -> uint8x16_t {
47805 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47806 unsafe {
47807 let ret_val: uint8x16_t = transmute(a);
47808 simd_shuffle!(
47809 ret_val,
47810 ret_val,
47811 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
47812 )
47813 }
47814}
47815#[doc = "Vector reinterpret cast operation"]
47816#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s16)"]
47817#[inline]
47818#[cfg(target_endian = "little")]
47819#[target_feature(enable = "neon")]
47820#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
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_u16_s16(a: int16x8_t) -> uint16x8_t {
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_u16_s16)"]
47839#[inline]
47840#[cfg(target_endian = "big")]
47841#[target_feature(enable = "neon")]
47842#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47843#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47844#[cfg_attr(
47845 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47846 assert_instr(nop)
47847)]
47848#[cfg_attr(
47849 not(target_arch = "arm"),
47850 stable(feature = "neon_intrinsics", since = "1.59.0")
47851)]
47852#[cfg_attr(
47853 target_arch = "arm",
47854 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47855)]
47856pub fn vreinterpretq_u16_s16(a: int16x8_t) -> uint16x8_t {
47857 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47858 unsafe {
47859 let ret_val: uint16x8_t = transmute(a);
47860 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
47861 }
47862}
47863#[doc = "Vector reinterpret cast operation"]
47864#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s16)"]
47865#[inline]
47866#[cfg(target_endian = "little")]
47867#[target_feature(enable = "neon")]
47868#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47869#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47870#[cfg_attr(
47871 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47872 assert_instr(nop)
47873)]
47874#[cfg_attr(
47875 not(target_arch = "arm"),
47876 stable(feature = "neon_intrinsics", since = "1.59.0")
47877)]
47878#[cfg_attr(
47879 target_arch = "arm",
47880 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47881)]
47882pub fn vreinterpretq_u32_s16(a: int16x8_t) -> uint32x4_t {
47883 unsafe { transmute(a) }
47884}
47885#[doc = "Vector reinterpret cast operation"]
47886#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s16)"]
47887#[inline]
47888#[cfg(target_endian = "big")]
47889#[target_feature(enable = "neon")]
47890#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47891#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47892#[cfg_attr(
47893 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47894 assert_instr(nop)
47895)]
47896#[cfg_attr(
47897 not(target_arch = "arm"),
47898 stable(feature = "neon_intrinsics", since = "1.59.0")
47899)]
47900#[cfg_attr(
47901 target_arch = "arm",
47902 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47903)]
47904pub fn vreinterpretq_u32_s16(a: int16x8_t) -> uint32x4_t {
47905 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47906 unsafe {
47907 let ret_val: uint32x4_t = transmute(a);
47908 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
47909 }
47910}
47911#[doc = "Vector reinterpret cast operation"]
47912#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s16)"]
47913#[inline]
47914#[cfg(target_endian = "little")]
47915#[target_feature(enable = "neon")]
47916#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47917#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47918#[cfg_attr(
47919 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47920 assert_instr(nop)
47921)]
47922#[cfg_attr(
47923 not(target_arch = "arm"),
47924 stable(feature = "neon_intrinsics", since = "1.59.0")
47925)]
47926#[cfg_attr(
47927 target_arch = "arm",
47928 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47929)]
47930pub fn vreinterpretq_u64_s16(a: int16x8_t) -> uint64x2_t {
47931 unsafe { transmute(a) }
47932}
47933#[doc = "Vector reinterpret cast operation"]
47934#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s16)"]
47935#[inline]
47936#[cfg(target_endian = "big")]
47937#[target_feature(enable = "neon")]
47938#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47939#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47940#[cfg_attr(
47941 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47942 assert_instr(nop)
47943)]
47944#[cfg_attr(
47945 not(target_arch = "arm"),
47946 stable(feature = "neon_intrinsics", since = "1.59.0")
47947)]
47948#[cfg_attr(
47949 target_arch = "arm",
47950 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47951)]
47952pub fn vreinterpretq_u64_s16(a: int16x8_t) -> uint64x2_t {
47953 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47954 unsafe {
47955 let ret_val: uint64x2_t = transmute(a);
47956 simd_shuffle!(ret_val, ret_val, [1, 0])
47957 }
47958}
47959#[doc = "Vector reinterpret cast operation"]
47960#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s16)"]
47961#[inline]
47962#[cfg(target_endian = "little")]
47963#[target_feature(enable = "neon")]
47964#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47965#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47966#[cfg_attr(
47967 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47968 assert_instr(nop)
47969)]
47970#[cfg_attr(
47971 not(target_arch = "arm"),
47972 stable(feature = "neon_intrinsics", since = "1.59.0")
47973)]
47974#[cfg_attr(
47975 target_arch = "arm",
47976 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47977)]
47978pub fn vreinterpretq_p8_s16(a: int16x8_t) -> poly8x16_t {
47979 unsafe { transmute(a) }
47980}
47981#[doc = "Vector reinterpret cast operation"]
47982#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s16)"]
47983#[inline]
47984#[cfg(target_endian = "big")]
47985#[target_feature(enable = "neon")]
47986#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47987#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47988#[cfg_attr(
47989 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47990 assert_instr(nop)
47991)]
47992#[cfg_attr(
47993 not(target_arch = "arm"),
47994 stable(feature = "neon_intrinsics", since = "1.59.0")
47995)]
47996#[cfg_attr(
47997 target_arch = "arm",
47998 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47999)]
48000pub fn vreinterpretq_p8_s16(a: int16x8_t) -> poly8x16_t {
48001 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
48002 unsafe {
48003 let ret_val: poly8x16_t = transmute(a);
48004 simd_shuffle!(
48005 ret_val,
48006 ret_val,
48007 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
48008 )
48009 }
48010}
48011#[doc = "Vector reinterpret cast operation"]
48012#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s16)"]
48013#[inline]
48014#[cfg(target_endian = "little")]
48015#[target_feature(enable = "neon")]
48016#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48017#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48018#[cfg_attr(
48019 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48020 assert_instr(nop)
48021)]
48022#[cfg_attr(
48023 not(target_arch = "arm"),
48024 stable(feature = "neon_intrinsics", since = "1.59.0")
48025)]
48026#[cfg_attr(
48027 target_arch = "arm",
48028 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48029)]
48030pub fn vreinterpretq_p16_s16(a: int16x8_t) -> poly16x8_t {
48031 unsafe { transmute(a) }
48032}
48033#[doc = "Vector reinterpret cast operation"]
48034#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s16)"]
48035#[inline]
48036#[cfg(target_endian = "big")]
48037#[target_feature(enable = "neon")]
48038#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48039#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48040#[cfg_attr(
48041 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48042 assert_instr(nop)
48043)]
48044#[cfg_attr(
48045 not(target_arch = "arm"),
48046 stable(feature = "neon_intrinsics", since = "1.59.0")
48047)]
48048#[cfg_attr(
48049 target_arch = "arm",
48050 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48051)]
48052pub fn vreinterpretq_p16_s16(a: int16x8_t) -> poly16x8_t {
48053 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
48054 unsafe {
48055 let ret_val: poly16x8_t = transmute(a);
48056 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
48057 }
48058}
48059#[doc = "Vector reinterpret cast operation"]
48060#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s32)"]
48061#[inline]
48062#[cfg(target_endian = "little")]
48063#[target_feature(enable = "neon")]
48064#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48065#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48066#[cfg_attr(
48067 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48068 assert_instr(nop)
48069)]
48070#[cfg_attr(
48071 not(target_arch = "arm"),
48072 stable(feature = "neon_intrinsics", since = "1.59.0")
48073)]
48074#[cfg_attr(
48075 target_arch = "arm",
48076 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48077)]
48078pub fn vreinterpret_f32_s32(a: int32x2_t) -> float32x2_t {
48079 unsafe { transmute(a) }
48080}
48081#[doc = "Vector reinterpret cast operation"]
48082#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s32)"]
48083#[inline]
48084#[cfg(target_endian = "big")]
48085#[target_feature(enable = "neon")]
48086#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48087#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48088#[cfg_attr(
48089 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48090 assert_instr(nop)
48091)]
48092#[cfg_attr(
48093 not(target_arch = "arm"),
48094 stable(feature = "neon_intrinsics", since = "1.59.0")
48095)]
48096#[cfg_attr(
48097 target_arch = "arm",
48098 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48099)]
48100pub fn vreinterpret_f32_s32(a: int32x2_t) -> float32x2_t {
48101 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
48102 unsafe {
48103 let ret_val: float32x2_t = transmute(a);
48104 simd_shuffle!(ret_val, ret_val, [1, 0])
48105 }
48106}
48107#[doc = "Vector reinterpret cast operation"]
48108#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s32)"]
48109#[inline]
48110#[cfg(target_endian = "little")]
48111#[target_feature(enable = "neon")]
48112#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48113#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48114#[cfg_attr(
48115 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48116 assert_instr(nop)
48117)]
48118#[cfg_attr(
48119 not(target_arch = "arm"),
48120 stable(feature = "neon_intrinsics", since = "1.59.0")
48121)]
48122#[cfg_attr(
48123 target_arch = "arm",
48124 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48125)]
48126pub fn vreinterpret_s8_s32(a: int32x2_t) -> int8x8_t {
48127 unsafe { transmute(a) }
48128}
48129#[doc = "Vector reinterpret cast operation"]
48130#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s32)"]
48131#[inline]
48132#[cfg(target_endian = "big")]
48133#[target_feature(enable = "neon")]
48134#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48135#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48136#[cfg_attr(
48137 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48138 assert_instr(nop)
48139)]
48140#[cfg_attr(
48141 not(target_arch = "arm"),
48142 stable(feature = "neon_intrinsics", since = "1.59.0")
48143)]
48144#[cfg_attr(
48145 target_arch = "arm",
48146 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48147)]
48148pub fn vreinterpret_s8_s32(a: int32x2_t) -> int8x8_t {
48149 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
48150 unsafe {
48151 let ret_val: int8x8_t = transmute(a);
48152 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
48153 }
48154}
48155#[doc = "Vector reinterpret cast operation"]
48156#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_s32)"]
48157#[inline]
48158#[cfg(target_endian = "little")]
48159#[target_feature(enable = "neon")]
48160#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48161#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48162#[cfg_attr(
48163 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48164 assert_instr(nop)
48165)]
48166#[cfg_attr(
48167 not(target_arch = "arm"),
48168 stable(feature = "neon_intrinsics", since = "1.59.0")
48169)]
48170#[cfg_attr(
48171 target_arch = "arm",
48172 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48173)]
48174pub fn vreinterpret_s16_s32(a: int32x2_t) -> int16x4_t {
48175 unsafe { transmute(a) }
48176}
48177#[doc = "Vector reinterpret cast operation"]
48178#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_s32)"]
48179#[inline]
48180#[cfg(target_endian = "big")]
48181#[target_feature(enable = "neon")]
48182#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48183#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48184#[cfg_attr(
48185 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48186 assert_instr(nop)
48187)]
48188#[cfg_attr(
48189 not(target_arch = "arm"),
48190 stable(feature = "neon_intrinsics", since = "1.59.0")
48191)]
48192#[cfg_attr(
48193 target_arch = "arm",
48194 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48195)]
48196pub fn vreinterpret_s16_s32(a: int32x2_t) -> int16x4_t {
48197 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
48198 unsafe {
48199 let ret_val: int16x4_t = transmute(a);
48200 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
48201 }
48202}
48203#[doc = "Vector reinterpret cast operation"]
48204#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_s32)"]
48205#[inline]
48206#[cfg(target_endian = "little")]
48207#[target_feature(enable = "neon")]
48208#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48209#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48210#[cfg_attr(
48211 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48212 assert_instr(nop)
48213)]
48214#[cfg_attr(
48215 not(target_arch = "arm"),
48216 stable(feature = "neon_intrinsics", since = "1.59.0")
48217)]
48218#[cfg_attr(
48219 target_arch = "arm",
48220 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48221)]
48222pub fn vreinterpret_s64_s32(a: int32x2_t) -> int64x1_t {
48223 unsafe { transmute(a) }
48224}
48225#[doc = "Vector reinterpret cast operation"]
48226#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_s32)"]
48227#[inline]
48228#[cfg(target_endian = "big")]
48229#[target_feature(enable = "neon")]
48230#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48231#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48232#[cfg_attr(
48233 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48234 assert_instr(nop)
48235)]
48236#[cfg_attr(
48237 not(target_arch = "arm"),
48238 stable(feature = "neon_intrinsics", since = "1.59.0")
48239)]
48240#[cfg_attr(
48241 target_arch = "arm",
48242 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48243)]
48244pub fn vreinterpret_s64_s32(a: int32x2_t) -> int64x1_t {
48245 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
48246 unsafe { transmute(a) }
48247}
48248#[doc = "Vector reinterpret cast operation"]
48249#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s32)"]
48250#[inline]
48251#[cfg(target_endian = "little")]
48252#[target_feature(enable = "neon")]
48253#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48254#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48255#[cfg_attr(
48256 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48257 assert_instr(nop)
48258)]
48259#[cfg_attr(
48260 not(target_arch = "arm"),
48261 stable(feature = "neon_intrinsics", since = "1.59.0")
48262)]
48263#[cfg_attr(
48264 target_arch = "arm",
48265 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48266)]
48267pub fn vreinterpret_u8_s32(a: int32x2_t) -> uint8x8_t {
48268 unsafe { transmute(a) }
48269}
48270#[doc = "Vector reinterpret cast operation"]
48271#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s32)"]
48272#[inline]
48273#[cfg(target_endian = "big")]
48274#[target_feature(enable = "neon")]
48275#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48276#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48277#[cfg_attr(
48278 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48279 assert_instr(nop)
48280)]
48281#[cfg_attr(
48282 not(target_arch = "arm"),
48283 stable(feature = "neon_intrinsics", since = "1.59.0")
48284)]
48285#[cfg_attr(
48286 target_arch = "arm",
48287 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48288)]
48289pub fn vreinterpret_u8_s32(a: int32x2_t) -> uint8x8_t {
48290 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
48291 unsafe {
48292 let ret_val: uint8x8_t = transmute(a);
48293 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
48294 }
48295}
48296#[doc = "Vector reinterpret cast operation"]
48297#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s32)"]
48298#[inline]
48299#[cfg(target_endian = "little")]
48300#[target_feature(enable = "neon")]
48301#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48302#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48303#[cfg_attr(
48304 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48305 assert_instr(nop)
48306)]
48307#[cfg_attr(
48308 not(target_arch = "arm"),
48309 stable(feature = "neon_intrinsics", since = "1.59.0")
48310)]
48311#[cfg_attr(
48312 target_arch = "arm",
48313 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48314)]
48315pub fn vreinterpret_u16_s32(a: int32x2_t) -> uint16x4_t {
48316 unsafe { transmute(a) }
48317}
48318#[doc = "Vector reinterpret cast operation"]
48319#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s32)"]
48320#[inline]
48321#[cfg(target_endian = "big")]
48322#[target_feature(enable = "neon")]
48323#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48324#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48325#[cfg_attr(
48326 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48327 assert_instr(nop)
48328)]
48329#[cfg_attr(
48330 not(target_arch = "arm"),
48331 stable(feature = "neon_intrinsics", since = "1.59.0")
48332)]
48333#[cfg_attr(
48334 target_arch = "arm",
48335 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48336)]
48337pub fn vreinterpret_u16_s32(a: int32x2_t) -> uint16x4_t {
48338 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
48339 unsafe {
48340 let ret_val: uint16x4_t = transmute(a);
48341 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
48342 }
48343}
48344#[doc = "Vector reinterpret cast operation"]
48345#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s32)"]
48346#[inline]
48347#[cfg(target_endian = "little")]
48348#[target_feature(enable = "neon")]
48349#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48350#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48351#[cfg_attr(
48352 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48353 assert_instr(nop)
48354)]
48355#[cfg_attr(
48356 not(target_arch = "arm"),
48357 stable(feature = "neon_intrinsics", since = "1.59.0")
48358)]
48359#[cfg_attr(
48360 target_arch = "arm",
48361 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48362)]
48363pub fn vreinterpret_u32_s32(a: int32x2_t) -> uint32x2_t {
48364 unsafe { transmute(a) }
48365}
48366#[doc = "Vector reinterpret cast operation"]
48367#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s32)"]
48368#[inline]
48369#[cfg(target_endian = "big")]
48370#[target_feature(enable = "neon")]
48371#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48372#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48373#[cfg_attr(
48374 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48375 assert_instr(nop)
48376)]
48377#[cfg_attr(
48378 not(target_arch = "arm"),
48379 stable(feature = "neon_intrinsics", since = "1.59.0")
48380)]
48381#[cfg_attr(
48382 target_arch = "arm",
48383 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48384)]
48385pub fn vreinterpret_u32_s32(a: int32x2_t) -> uint32x2_t {
48386 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
48387 unsafe {
48388 let ret_val: uint32x2_t = transmute(a);
48389 simd_shuffle!(ret_val, ret_val, [1, 0])
48390 }
48391}
48392#[doc = "Vector reinterpret cast operation"]
48393#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s32)"]
48394#[inline]
48395#[cfg(target_endian = "little")]
48396#[target_feature(enable = "neon")]
48397#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48398#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48399#[cfg_attr(
48400 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48401 assert_instr(nop)
48402)]
48403#[cfg_attr(
48404 not(target_arch = "arm"),
48405 stable(feature = "neon_intrinsics", since = "1.59.0")
48406)]
48407#[cfg_attr(
48408 target_arch = "arm",
48409 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48410)]
48411pub fn vreinterpret_u64_s32(a: int32x2_t) -> uint64x1_t {
48412 unsafe { transmute(a) }
48413}
48414#[doc = "Vector reinterpret cast operation"]
48415#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s32)"]
48416#[inline]
48417#[cfg(target_endian = "big")]
48418#[target_feature(enable = "neon")]
48419#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48420#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48421#[cfg_attr(
48422 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48423 assert_instr(nop)
48424)]
48425#[cfg_attr(
48426 not(target_arch = "arm"),
48427 stable(feature = "neon_intrinsics", since = "1.59.0")
48428)]
48429#[cfg_attr(
48430 target_arch = "arm",
48431 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48432)]
48433pub fn vreinterpret_u64_s32(a: int32x2_t) -> uint64x1_t {
48434 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
48435 unsafe { transmute(a) }
48436}
48437#[doc = "Vector reinterpret cast operation"]
48438#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s32)"]
48439#[inline]
48440#[cfg(target_endian = "little")]
48441#[target_feature(enable = "neon")]
48442#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48443#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48444#[cfg_attr(
48445 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48446 assert_instr(nop)
48447)]
48448#[cfg_attr(
48449 not(target_arch = "arm"),
48450 stable(feature = "neon_intrinsics", since = "1.59.0")
48451)]
48452#[cfg_attr(
48453 target_arch = "arm",
48454 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48455)]
48456pub fn vreinterpret_p8_s32(a: int32x2_t) -> poly8x8_t {
48457 unsafe { transmute(a) }
48458}
48459#[doc = "Vector reinterpret cast operation"]
48460#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s32)"]
48461#[inline]
48462#[cfg(target_endian = "big")]
48463#[target_feature(enable = "neon")]
48464#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48465#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48466#[cfg_attr(
48467 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48468 assert_instr(nop)
48469)]
48470#[cfg_attr(
48471 not(target_arch = "arm"),
48472 stable(feature = "neon_intrinsics", since = "1.59.0")
48473)]
48474#[cfg_attr(
48475 target_arch = "arm",
48476 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48477)]
48478pub fn vreinterpret_p8_s32(a: int32x2_t) -> poly8x8_t {
48479 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
48480 unsafe {
48481 let ret_val: poly8x8_t = transmute(a);
48482 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
48483 }
48484}
48485#[doc = "Vector reinterpret cast operation"]
48486#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s32)"]
48487#[inline]
48488#[cfg(target_endian = "little")]
48489#[target_feature(enable = "neon")]
48490#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48491#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48492#[cfg_attr(
48493 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48494 assert_instr(nop)
48495)]
48496#[cfg_attr(
48497 not(target_arch = "arm"),
48498 stable(feature = "neon_intrinsics", since = "1.59.0")
48499)]
48500#[cfg_attr(
48501 target_arch = "arm",
48502 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48503)]
48504pub fn vreinterpret_p16_s32(a: int32x2_t) -> poly16x4_t {
48505 unsafe { transmute(a) }
48506}
48507#[doc = "Vector reinterpret cast operation"]
48508#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s32)"]
48509#[inline]
48510#[cfg(target_endian = "big")]
48511#[target_feature(enable = "neon")]
48512#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48513#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48514#[cfg_attr(
48515 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48516 assert_instr(nop)
48517)]
48518#[cfg_attr(
48519 not(target_arch = "arm"),
48520 stable(feature = "neon_intrinsics", since = "1.59.0")
48521)]
48522#[cfg_attr(
48523 target_arch = "arm",
48524 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48525)]
48526pub fn vreinterpret_p16_s32(a: int32x2_t) -> poly16x4_t {
48527 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
48528 unsafe {
48529 let ret_val: poly16x4_t = transmute(a);
48530 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
48531 }
48532}
48533#[doc = "Vector reinterpret cast operation"]
48534#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s32)"]
48535#[inline]
48536#[cfg(target_endian = "little")]
48537#[target_feature(enable = "neon")]
48538#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48539#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48540#[cfg_attr(
48541 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48542 assert_instr(nop)
48543)]
48544#[cfg_attr(
48545 not(target_arch = "arm"),
48546 stable(feature = "neon_intrinsics", since = "1.59.0")
48547)]
48548#[cfg_attr(
48549 target_arch = "arm",
48550 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48551)]
48552pub fn vreinterpretq_f32_s32(a: int32x4_t) -> float32x4_t {
48553 unsafe { transmute(a) }
48554}
48555#[doc = "Vector reinterpret cast operation"]
48556#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s32)"]
48557#[inline]
48558#[cfg(target_endian = "big")]
48559#[target_feature(enable = "neon")]
48560#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48561#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48562#[cfg_attr(
48563 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48564 assert_instr(nop)
48565)]
48566#[cfg_attr(
48567 not(target_arch = "arm"),
48568 stable(feature = "neon_intrinsics", since = "1.59.0")
48569)]
48570#[cfg_attr(
48571 target_arch = "arm",
48572 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48573)]
48574pub fn vreinterpretq_f32_s32(a: int32x4_t) -> float32x4_t {
48575 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48576 unsafe {
48577 let ret_val: float32x4_t = transmute(a);
48578 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
48579 }
48580}
48581#[doc = "Vector reinterpret cast operation"]
48582#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s32)"]
48583#[inline]
48584#[cfg(target_endian = "little")]
48585#[target_feature(enable = "neon")]
48586#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48587#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48588#[cfg_attr(
48589 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48590 assert_instr(nop)
48591)]
48592#[cfg_attr(
48593 not(target_arch = "arm"),
48594 stable(feature = "neon_intrinsics", since = "1.59.0")
48595)]
48596#[cfg_attr(
48597 target_arch = "arm",
48598 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48599)]
48600pub fn vreinterpretq_s8_s32(a: int32x4_t) -> int8x16_t {
48601 unsafe { transmute(a) }
48602}
48603#[doc = "Vector reinterpret cast operation"]
48604#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s32)"]
48605#[inline]
48606#[cfg(target_endian = "big")]
48607#[target_feature(enable = "neon")]
48608#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48609#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48610#[cfg_attr(
48611 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48612 assert_instr(nop)
48613)]
48614#[cfg_attr(
48615 not(target_arch = "arm"),
48616 stable(feature = "neon_intrinsics", since = "1.59.0")
48617)]
48618#[cfg_attr(
48619 target_arch = "arm",
48620 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48621)]
48622pub fn vreinterpretq_s8_s32(a: int32x4_t) -> int8x16_t {
48623 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48624 unsafe {
48625 let ret_val: int8x16_t = transmute(a);
48626 simd_shuffle!(
48627 ret_val,
48628 ret_val,
48629 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
48630 )
48631 }
48632}
48633#[doc = "Vector reinterpret cast operation"]
48634#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s32)"]
48635#[inline]
48636#[cfg(target_endian = "little")]
48637#[target_feature(enable = "neon")]
48638#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48639#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48640#[cfg_attr(
48641 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48642 assert_instr(nop)
48643)]
48644#[cfg_attr(
48645 not(target_arch = "arm"),
48646 stable(feature = "neon_intrinsics", since = "1.59.0")
48647)]
48648#[cfg_attr(
48649 target_arch = "arm",
48650 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48651)]
48652pub fn vreinterpretq_s16_s32(a: int32x4_t) -> int16x8_t {
48653 unsafe { transmute(a) }
48654}
48655#[doc = "Vector reinterpret cast operation"]
48656#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s32)"]
48657#[inline]
48658#[cfg(target_endian = "big")]
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(nop))]
48662#[cfg_attr(
48663 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48664 assert_instr(nop)
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 vreinterpretq_s16_s32(a: int32x4_t) -> int16x8_t {
48675 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48676 unsafe {
48677 let ret_val: int16x8_t = transmute(a);
48678 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
48679 }
48680}
48681#[doc = "Vector reinterpret cast operation"]
48682#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s32)"]
48683#[inline]
48684#[cfg(target_endian = "little")]
48685#[target_feature(enable = "neon")]
48686#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48687#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48688#[cfg_attr(
48689 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48690 assert_instr(nop)
48691)]
48692#[cfg_attr(
48693 not(target_arch = "arm"),
48694 stable(feature = "neon_intrinsics", since = "1.59.0")
48695)]
48696#[cfg_attr(
48697 target_arch = "arm",
48698 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48699)]
48700pub fn vreinterpretq_s64_s32(a: int32x4_t) -> int64x2_t {
48701 unsafe { transmute(a) }
48702}
48703#[doc = "Vector reinterpret cast operation"]
48704#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s32)"]
48705#[inline]
48706#[cfg(target_endian = "big")]
48707#[target_feature(enable = "neon")]
48708#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48709#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48710#[cfg_attr(
48711 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48712 assert_instr(nop)
48713)]
48714#[cfg_attr(
48715 not(target_arch = "arm"),
48716 stable(feature = "neon_intrinsics", since = "1.59.0")
48717)]
48718#[cfg_attr(
48719 target_arch = "arm",
48720 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48721)]
48722pub fn vreinterpretq_s64_s32(a: int32x4_t) -> int64x2_t {
48723 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48724 unsafe {
48725 let ret_val: int64x2_t = transmute(a);
48726 simd_shuffle!(ret_val, ret_val, [1, 0])
48727 }
48728}
48729#[doc = "Vector reinterpret cast operation"]
48730#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s32)"]
48731#[inline]
48732#[cfg(target_endian = "little")]
48733#[target_feature(enable = "neon")]
48734#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48735#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48736#[cfg_attr(
48737 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48738 assert_instr(nop)
48739)]
48740#[cfg_attr(
48741 not(target_arch = "arm"),
48742 stable(feature = "neon_intrinsics", since = "1.59.0")
48743)]
48744#[cfg_attr(
48745 target_arch = "arm",
48746 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48747)]
48748pub fn vreinterpretq_u8_s32(a: int32x4_t) -> uint8x16_t {
48749 unsafe { transmute(a) }
48750}
48751#[doc = "Vector reinterpret cast operation"]
48752#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s32)"]
48753#[inline]
48754#[cfg(target_endian = "big")]
48755#[target_feature(enable = "neon")]
48756#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48757#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48758#[cfg_attr(
48759 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48760 assert_instr(nop)
48761)]
48762#[cfg_attr(
48763 not(target_arch = "arm"),
48764 stable(feature = "neon_intrinsics", since = "1.59.0")
48765)]
48766#[cfg_attr(
48767 target_arch = "arm",
48768 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48769)]
48770pub fn vreinterpretq_u8_s32(a: int32x4_t) -> uint8x16_t {
48771 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48772 unsafe {
48773 let ret_val: uint8x16_t = transmute(a);
48774 simd_shuffle!(
48775 ret_val,
48776 ret_val,
48777 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
48778 )
48779 }
48780}
48781#[doc = "Vector reinterpret cast operation"]
48782#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s32)"]
48783#[inline]
48784#[cfg(target_endian = "little")]
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(nop))]
48788#[cfg_attr(
48789 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48790 assert_instr(nop)
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 vreinterpretq_u16_s32(a: int32x4_t) -> uint16x8_t {
48801 unsafe { transmute(a) }
48802}
48803#[doc = "Vector reinterpret cast operation"]
48804#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s32)"]
48805#[inline]
48806#[cfg(target_endian = "big")]
48807#[target_feature(enable = "neon")]
48808#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48809#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48810#[cfg_attr(
48811 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48812 assert_instr(nop)
48813)]
48814#[cfg_attr(
48815 not(target_arch = "arm"),
48816 stable(feature = "neon_intrinsics", since = "1.59.0")
48817)]
48818#[cfg_attr(
48819 target_arch = "arm",
48820 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48821)]
48822pub fn vreinterpretq_u16_s32(a: int32x4_t) -> uint16x8_t {
48823 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48824 unsafe {
48825 let ret_val: uint16x8_t = transmute(a);
48826 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
48827 }
48828}
48829#[doc = "Vector reinterpret cast operation"]
48830#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s32)"]
48831#[inline]
48832#[cfg(target_endian = "little")]
48833#[target_feature(enable = "neon")]
48834#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48835#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48836#[cfg_attr(
48837 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48838 assert_instr(nop)
48839)]
48840#[cfg_attr(
48841 not(target_arch = "arm"),
48842 stable(feature = "neon_intrinsics", since = "1.59.0")
48843)]
48844#[cfg_attr(
48845 target_arch = "arm",
48846 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48847)]
48848pub fn vreinterpretq_u32_s32(a: int32x4_t) -> uint32x4_t {
48849 unsafe { transmute(a) }
48850}
48851#[doc = "Vector reinterpret cast operation"]
48852#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s32)"]
48853#[inline]
48854#[cfg(target_endian = "big")]
48855#[target_feature(enable = "neon")]
48856#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48857#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48858#[cfg_attr(
48859 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48860 assert_instr(nop)
48861)]
48862#[cfg_attr(
48863 not(target_arch = "arm"),
48864 stable(feature = "neon_intrinsics", since = "1.59.0")
48865)]
48866#[cfg_attr(
48867 target_arch = "arm",
48868 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48869)]
48870pub fn vreinterpretq_u32_s32(a: int32x4_t) -> uint32x4_t {
48871 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48872 unsafe {
48873 let ret_val: uint32x4_t = transmute(a);
48874 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
48875 }
48876}
48877#[doc = "Vector reinterpret cast operation"]
48878#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s32)"]
48879#[inline]
48880#[cfg(target_endian = "little")]
48881#[target_feature(enable = "neon")]
48882#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48883#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48884#[cfg_attr(
48885 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48886 assert_instr(nop)
48887)]
48888#[cfg_attr(
48889 not(target_arch = "arm"),
48890 stable(feature = "neon_intrinsics", since = "1.59.0")
48891)]
48892#[cfg_attr(
48893 target_arch = "arm",
48894 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48895)]
48896pub fn vreinterpretq_u64_s32(a: int32x4_t) -> uint64x2_t {
48897 unsafe { transmute(a) }
48898}
48899#[doc = "Vector reinterpret cast operation"]
48900#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s32)"]
48901#[inline]
48902#[cfg(target_endian = "big")]
48903#[target_feature(enable = "neon")]
48904#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48905#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48906#[cfg_attr(
48907 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48908 assert_instr(nop)
48909)]
48910#[cfg_attr(
48911 not(target_arch = "arm"),
48912 stable(feature = "neon_intrinsics", since = "1.59.0")
48913)]
48914#[cfg_attr(
48915 target_arch = "arm",
48916 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48917)]
48918pub fn vreinterpretq_u64_s32(a: int32x4_t) -> uint64x2_t {
48919 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48920 unsafe {
48921 let ret_val: uint64x2_t = transmute(a);
48922 simd_shuffle!(ret_val, ret_val, [1, 0])
48923 }
48924}
48925#[doc = "Vector reinterpret cast operation"]
48926#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s32)"]
48927#[inline]
48928#[cfg(target_endian = "little")]
48929#[target_feature(enable = "neon")]
48930#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48931#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48932#[cfg_attr(
48933 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48934 assert_instr(nop)
48935)]
48936#[cfg_attr(
48937 not(target_arch = "arm"),
48938 stable(feature = "neon_intrinsics", since = "1.59.0")
48939)]
48940#[cfg_attr(
48941 target_arch = "arm",
48942 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48943)]
48944pub fn vreinterpretq_p8_s32(a: int32x4_t) -> poly8x16_t {
48945 unsafe { transmute(a) }
48946}
48947#[doc = "Vector reinterpret cast operation"]
48948#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s32)"]
48949#[inline]
48950#[cfg(target_endian = "big")]
48951#[target_feature(enable = "neon")]
48952#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48953#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48954#[cfg_attr(
48955 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48956 assert_instr(nop)
48957)]
48958#[cfg_attr(
48959 not(target_arch = "arm"),
48960 stable(feature = "neon_intrinsics", since = "1.59.0")
48961)]
48962#[cfg_attr(
48963 target_arch = "arm",
48964 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48965)]
48966pub fn vreinterpretq_p8_s32(a: int32x4_t) -> poly8x16_t {
48967 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48968 unsafe {
48969 let ret_val: poly8x16_t = transmute(a);
48970 simd_shuffle!(
48971 ret_val,
48972 ret_val,
48973 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
48974 )
48975 }
48976}
48977#[doc = "Vector reinterpret cast operation"]
48978#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s32)"]
48979#[inline]
48980#[cfg(target_endian = "little")]
48981#[target_feature(enable = "neon")]
48982#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48983#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48984#[cfg_attr(
48985 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48986 assert_instr(nop)
48987)]
48988#[cfg_attr(
48989 not(target_arch = "arm"),
48990 stable(feature = "neon_intrinsics", since = "1.59.0")
48991)]
48992#[cfg_attr(
48993 target_arch = "arm",
48994 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48995)]
48996pub fn vreinterpretq_p16_s32(a: int32x4_t) -> poly16x8_t {
48997 unsafe { transmute(a) }
48998}
48999#[doc = "Vector reinterpret cast operation"]
49000#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s32)"]
49001#[inline]
49002#[cfg(target_endian = "big")]
49003#[target_feature(enable = "neon")]
49004#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49005#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49006#[cfg_attr(
49007 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49008 assert_instr(nop)
49009)]
49010#[cfg_attr(
49011 not(target_arch = "arm"),
49012 stable(feature = "neon_intrinsics", since = "1.59.0")
49013)]
49014#[cfg_attr(
49015 target_arch = "arm",
49016 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49017)]
49018pub fn vreinterpretq_p16_s32(a: int32x4_t) -> poly16x8_t {
49019 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
49020 unsafe {
49021 let ret_val: poly16x8_t = transmute(a);
49022 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
49023 }
49024}
49025#[doc = "Vector reinterpret cast operation"]
49026#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s64)"]
49027#[inline]
49028#[cfg(target_endian = "little")]
49029#[target_feature(enable = "neon")]
49030#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49031#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49032#[cfg_attr(
49033 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49034 assert_instr(nop)
49035)]
49036#[cfg_attr(
49037 not(target_arch = "arm"),
49038 stable(feature = "neon_intrinsics", since = "1.59.0")
49039)]
49040#[cfg_attr(
49041 target_arch = "arm",
49042 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49043)]
49044pub fn vreinterpret_f32_s64(a: int64x1_t) -> float32x2_t {
49045 unsafe { transmute(a) }
49046}
49047#[doc = "Vector reinterpret cast operation"]
49048#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s64)"]
49049#[inline]
49050#[cfg(target_endian = "big")]
49051#[target_feature(enable = "neon")]
49052#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49053#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49054#[cfg_attr(
49055 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49056 assert_instr(nop)
49057)]
49058#[cfg_attr(
49059 not(target_arch = "arm"),
49060 stable(feature = "neon_intrinsics", since = "1.59.0")
49061)]
49062#[cfg_attr(
49063 target_arch = "arm",
49064 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49065)]
49066pub fn vreinterpret_f32_s64(a: int64x1_t) -> float32x2_t {
49067 unsafe {
49068 let ret_val: float32x2_t = transmute(a);
49069 simd_shuffle!(ret_val, ret_val, [1, 0])
49070 }
49071}
49072#[doc = "Vector reinterpret cast operation"]
49073#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s64)"]
49074#[inline]
49075#[cfg(target_endian = "little")]
49076#[target_feature(enable = "neon")]
49077#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49078#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49079#[cfg_attr(
49080 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49081 assert_instr(nop)
49082)]
49083#[cfg_attr(
49084 not(target_arch = "arm"),
49085 stable(feature = "neon_intrinsics", since = "1.59.0")
49086)]
49087#[cfg_attr(
49088 target_arch = "arm",
49089 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49090)]
49091pub fn vreinterpret_s8_s64(a: int64x1_t) -> int8x8_t {
49092 unsafe { transmute(a) }
49093}
49094#[doc = "Vector reinterpret cast operation"]
49095#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s64)"]
49096#[inline]
49097#[cfg(target_endian = "big")]
49098#[target_feature(enable = "neon")]
49099#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49100#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49101#[cfg_attr(
49102 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49103 assert_instr(nop)
49104)]
49105#[cfg_attr(
49106 not(target_arch = "arm"),
49107 stable(feature = "neon_intrinsics", since = "1.59.0")
49108)]
49109#[cfg_attr(
49110 target_arch = "arm",
49111 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49112)]
49113pub fn vreinterpret_s8_s64(a: int64x1_t) -> int8x8_t {
49114 unsafe {
49115 let ret_val: int8x8_t = transmute(a);
49116 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
49117 }
49118}
49119#[doc = "Vector reinterpret cast operation"]
49120#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_s64)"]
49121#[inline]
49122#[cfg(target_endian = "little")]
49123#[target_feature(enable = "neon")]
49124#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49125#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49126#[cfg_attr(
49127 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49128 assert_instr(nop)
49129)]
49130#[cfg_attr(
49131 not(target_arch = "arm"),
49132 stable(feature = "neon_intrinsics", since = "1.59.0")
49133)]
49134#[cfg_attr(
49135 target_arch = "arm",
49136 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49137)]
49138pub fn vreinterpret_s16_s64(a: int64x1_t) -> int16x4_t {
49139 unsafe { transmute(a) }
49140}
49141#[doc = "Vector reinterpret cast operation"]
49142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_s64)"]
49143#[inline]
49144#[cfg(target_endian = "big")]
49145#[target_feature(enable = "neon")]
49146#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49147#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49148#[cfg_attr(
49149 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49150 assert_instr(nop)
49151)]
49152#[cfg_attr(
49153 not(target_arch = "arm"),
49154 stable(feature = "neon_intrinsics", since = "1.59.0")
49155)]
49156#[cfg_attr(
49157 target_arch = "arm",
49158 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49159)]
49160pub fn vreinterpret_s16_s64(a: int64x1_t) -> int16x4_t {
49161 unsafe {
49162 let ret_val: int16x4_t = transmute(a);
49163 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
49164 }
49165}
49166#[doc = "Vector reinterpret cast operation"]
49167#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s64)"]
49168#[inline]
49169#[cfg(target_endian = "little")]
49170#[target_feature(enable = "neon")]
49171#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49172#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49173#[cfg_attr(
49174 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49175 assert_instr(nop)
49176)]
49177#[cfg_attr(
49178 not(target_arch = "arm"),
49179 stable(feature = "neon_intrinsics", since = "1.59.0")
49180)]
49181#[cfg_attr(
49182 target_arch = "arm",
49183 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49184)]
49185pub fn vreinterpret_s32_s64(a: int64x1_t) -> int32x2_t {
49186 unsafe { transmute(a) }
49187}
49188#[doc = "Vector reinterpret cast operation"]
49189#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s64)"]
49190#[inline]
49191#[cfg(target_endian = "big")]
49192#[target_feature(enable = "neon")]
49193#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49194#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49195#[cfg_attr(
49196 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49197 assert_instr(nop)
49198)]
49199#[cfg_attr(
49200 not(target_arch = "arm"),
49201 stable(feature = "neon_intrinsics", since = "1.59.0")
49202)]
49203#[cfg_attr(
49204 target_arch = "arm",
49205 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49206)]
49207pub fn vreinterpret_s32_s64(a: int64x1_t) -> int32x2_t {
49208 unsafe {
49209 let ret_val: int32x2_t = transmute(a);
49210 simd_shuffle!(ret_val, ret_val, [1, 0])
49211 }
49212}
49213#[doc = "Vector reinterpret cast operation"]
49214#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s64)"]
49215#[inline]
49216#[cfg(target_endian = "little")]
49217#[target_feature(enable = "neon")]
49218#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49219#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49220#[cfg_attr(
49221 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49222 assert_instr(nop)
49223)]
49224#[cfg_attr(
49225 not(target_arch = "arm"),
49226 stable(feature = "neon_intrinsics", since = "1.59.0")
49227)]
49228#[cfg_attr(
49229 target_arch = "arm",
49230 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49231)]
49232pub fn vreinterpret_u8_s64(a: int64x1_t) -> uint8x8_t {
49233 unsafe { transmute(a) }
49234}
49235#[doc = "Vector reinterpret cast operation"]
49236#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s64)"]
49237#[inline]
49238#[cfg(target_endian = "big")]
49239#[target_feature(enable = "neon")]
49240#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49241#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49242#[cfg_attr(
49243 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49244 assert_instr(nop)
49245)]
49246#[cfg_attr(
49247 not(target_arch = "arm"),
49248 stable(feature = "neon_intrinsics", since = "1.59.0")
49249)]
49250#[cfg_attr(
49251 target_arch = "arm",
49252 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49253)]
49254pub fn vreinterpret_u8_s64(a: int64x1_t) -> uint8x8_t {
49255 unsafe {
49256 let ret_val: uint8x8_t = transmute(a);
49257 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
49258 }
49259}
49260#[doc = "Vector reinterpret cast operation"]
49261#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s64)"]
49262#[inline]
49263#[cfg(target_endian = "little")]
49264#[target_feature(enable = "neon")]
49265#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49266#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49267#[cfg_attr(
49268 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49269 assert_instr(nop)
49270)]
49271#[cfg_attr(
49272 not(target_arch = "arm"),
49273 stable(feature = "neon_intrinsics", since = "1.59.0")
49274)]
49275#[cfg_attr(
49276 target_arch = "arm",
49277 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49278)]
49279pub fn vreinterpret_u16_s64(a: int64x1_t) -> uint16x4_t {
49280 unsafe { transmute(a) }
49281}
49282#[doc = "Vector reinterpret cast operation"]
49283#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s64)"]
49284#[inline]
49285#[cfg(target_endian = "big")]
49286#[target_feature(enable = "neon")]
49287#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49288#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49289#[cfg_attr(
49290 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49291 assert_instr(nop)
49292)]
49293#[cfg_attr(
49294 not(target_arch = "arm"),
49295 stable(feature = "neon_intrinsics", since = "1.59.0")
49296)]
49297#[cfg_attr(
49298 target_arch = "arm",
49299 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49300)]
49301pub fn vreinterpret_u16_s64(a: int64x1_t) -> uint16x4_t {
49302 unsafe {
49303 let ret_val: uint16x4_t = transmute(a);
49304 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
49305 }
49306}
49307#[doc = "Vector reinterpret cast operation"]
49308#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s64)"]
49309#[inline]
49310#[cfg(target_endian = "little")]
49311#[target_feature(enable = "neon")]
49312#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49313#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49314#[cfg_attr(
49315 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49316 assert_instr(nop)
49317)]
49318#[cfg_attr(
49319 not(target_arch = "arm"),
49320 stable(feature = "neon_intrinsics", since = "1.59.0")
49321)]
49322#[cfg_attr(
49323 target_arch = "arm",
49324 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49325)]
49326pub fn vreinterpret_u32_s64(a: int64x1_t) -> uint32x2_t {
49327 unsafe { transmute(a) }
49328}
49329#[doc = "Vector reinterpret cast operation"]
49330#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s64)"]
49331#[inline]
49332#[cfg(target_endian = "big")]
49333#[target_feature(enable = "neon")]
49334#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49335#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49336#[cfg_attr(
49337 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49338 assert_instr(nop)
49339)]
49340#[cfg_attr(
49341 not(target_arch = "arm"),
49342 stable(feature = "neon_intrinsics", since = "1.59.0")
49343)]
49344#[cfg_attr(
49345 target_arch = "arm",
49346 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49347)]
49348pub fn vreinterpret_u32_s64(a: int64x1_t) -> uint32x2_t {
49349 unsafe {
49350 let ret_val: uint32x2_t = transmute(a);
49351 simd_shuffle!(ret_val, ret_val, [1, 0])
49352 }
49353}
49354#[doc = "Vector reinterpret cast operation"]
49355#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s64)"]
49356#[inline]
49357#[target_feature(enable = "neon")]
49358#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49359#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49360#[cfg_attr(
49361 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49362 assert_instr(nop)
49363)]
49364#[cfg_attr(
49365 not(target_arch = "arm"),
49366 stable(feature = "neon_intrinsics", since = "1.59.0")
49367)]
49368#[cfg_attr(
49369 target_arch = "arm",
49370 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49371)]
49372pub fn vreinterpret_u64_s64(a: int64x1_t) -> uint64x1_t {
49373 unsafe { transmute(a) }
49374}
49375#[doc = "Vector reinterpret cast operation"]
49376#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s64)"]
49377#[inline]
49378#[cfg(target_endian = "little")]
49379#[target_feature(enable = "neon")]
49380#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49381#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49382#[cfg_attr(
49383 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49384 assert_instr(nop)
49385)]
49386#[cfg_attr(
49387 not(target_arch = "arm"),
49388 stable(feature = "neon_intrinsics", since = "1.59.0")
49389)]
49390#[cfg_attr(
49391 target_arch = "arm",
49392 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49393)]
49394pub fn vreinterpret_p8_s64(a: int64x1_t) -> poly8x8_t {
49395 unsafe { transmute(a) }
49396}
49397#[doc = "Vector reinterpret cast operation"]
49398#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s64)"]
49399#[inline]
49400#[cfg(target_endian = "big")]
49401#[target_feature(enable = "neon")]
49402#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49403#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49404#[cfg_attr(
49405 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49406 assert_instr(nop)
49407)]
49408#[cfg_attr(
49409 not(target_arch = "arm"),
49410 stable(feature = "neon_intrinsics", since = "1.59.0")
49411)]
49412#[cfg_attr(
49413 target_arch = "arm",
49414 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49415)]
49416pub fn vreinterpret_p8_s64(a: int64x1_t) -> poly8x8_t {
49417 unsafe {
49418 let ret_val: poly8x8_t = transmute(a);
49419 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
49420 }
49421}
49422#[doc = "Vector reinterpret cast operation"]
49423#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s64)"]
49424#[inline]
49425#[cfg(target_endian = "little")]
49426#[target_feature(enable = "neon")]
49427#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49428#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49429#[cfg_attr(
49430 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49431 assert_instr(nop)
49432)]
49433#[cfg_attr(
49434 not(target_arch = "arm"),
49435 stable(feature = "neon_intrinsics", since = "1.59.0")
49436)]
49437#[cfg_attr(
49438 target_arch = "arm",
49439 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49440)]
49441pub fn vreinterpret_p16_s64(a: int64x1_t) -> poly16x4_t {
49442 unsafe { transmute(a) }
49443}
49444#[doc = "Vector reinterpret cast operation"]
49445#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s64)"]
49446#[inline]
49447#[cfg(target_endian = "big")]
49448#[target_feature(enable = "neon")]
49449#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49450#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49451#[cfg_attr(
49452 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49453 assert_instr(nop)
49454)]
49455#[cfg_attr(
49456 not(target_arch = "arm"),
49457 stable(feature = "neon_intrinsics", since = "1.59.0")
49458)]
49459#[cfg_attr(
49460 target_arch = "arm",
49461 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49462)]
49463pub fn vreinterpret_p16_s64(a: int64x1_t) -> poly16x4_t {
49464 unsafe {
49465 let ret_val: poly16x4_t = transmute(a);
49466 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
49467 }
49468}
49469#[doc = "Vector reinterpret cast operation"]
49470#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s64)"]
49471#[inline]
49472#[cfg(target_endian = "little")]
49473#[target_feature(enable = "neon")]
49474#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49475#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49476#[cfg_attr(
49477 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49478 assert_instr(nop)
49479)]
49480#[cfg_attr(
49481 not(target_arch = "arm"),
49482 stable(feature = "neon_intrinsics", since = "1.59.0")
49483)]
49484#[cfg_attr(
49485 target_arch = "arm",
49486 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49487)]
49488pub fn vreinterpretq_f32_s64(a: int64x2_t) -> float32x4_t {
49489 unsafe { transmute(a) }
49490}
49491#[doc = "Vector reinterpret cast operation"]
49492#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s64)"]
49493#[inline]
49494#[cfg(target_endian = "big")]
49495#[target_feature(enable = "neon")]
49496#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49497#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49498#[cfg_attr(
49499 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49500 assert_instr(nop)
49501)]
49502#[cfg_attr(
49503 not(target_arch = "arm"),
49504 stable(feature = "neon_intrinsics", since = "1.59.0")
49505)]
49506#[cfg_attr(
49507 target_arch = "arm",
49508 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49509)]
49510pub fn vreinterpretq_f32_s64(a: int64x2_t) -> float32x4_t {
49511 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49512 unsafe {
49513 let ret_val: float32x4_t = transmute(a);
49514 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
49515 }
49516}
49517#[doc = "Vector reinterpret cast operation"]
49518#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s64)"]
49519#[inline]
49520#[cfg(target_endian = "little")]
49521#[target_feature(enable = "neon")]
49522#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49523#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49524#[cfg_attr(
49525 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49526 assert_instr(nop)
49527)]
49528#[cfg_attr(
49529 not(target_arch = "arm"),
49530 stable(feature = "neon_intrinsics", since = "1.59.0")
49531)]
49532#[cfg_attr(
49533 target_arch = "arm",
49534 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49535)]
49536pub fn vreinterpretq_s8_s64(a: int64x2_t) -> int8x16_t {
49537 unsafe { transmute(a) }
49538}
49539#[doc = "Vector reinterpret cast operation"]
49540#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s64)"]
49541#[inline]
49542#[cfg(target_endian = "big")]
49543#[target_feature(enable = "neon")]
49544#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49545#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49546#[cfg_attr(
49547 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49548 assert_instr(nop)
49549)]
49550#[cfg_attr(
49551 not(target_arch = "arm"),
49552 stable(feature = "neon_intrinsics", since = "1.59.0")
49553)]
49554#[cfg_attr(
49555 target_arch = "arm",
49556 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49557)]
49558pub fn vreinterpretq_s8_s64(a: int64x2_t) -> int8x16_t {
49559 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49560 unsafe {
49561 let ret_val: int8x16_t = transmute(a);
49562 simd_shuffle!(
49563 ret_val,
49564 ret_val,
49565 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
49566 )
49567 }
49568}
49569#[doc = "Vector reinterpret cast operation"]
49570#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s64)"]
49571#[inline]
49572#[cfg(target_endian = "little")]
49573#[target_feature(enable = "neon")]
49574#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49575#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49576#[cfg_attr(
49577 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49578 assert_instr(nop)
49579)]
49580#[cfg_attr(
49581 not(target_arch = "arm"),
49582 stable(feature = "neon_intrinsics", since = "1.59.0")
49583)]
49584#[cfg_attr(
49585 target_arch = "arm",
49586 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49587)]
49588pub fn vreinterpretq_s16_s64(a: int64x2_t) -> int16x8_t {
49589 unsafe { transmute(a) }
49590}
49591#[doc = "Vector reinterpret cast operation"]
49592#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s64)"]
49593#[inline]
49594#[cfg(target_endian = "big")]
49595#[target_feature(enable = "neon")]
49596#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49597#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49598#[cfg_attr(
49599 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49600 assert_instr(nop)
49601)]
49602#[cfg_attr(
49603 not(target_arch = "arm"),
49604 stable(feature = "neon_intrinsics", since = "1.59.0")
49605)]
49606#[cfg_attr(
49607 target_arch = "arm",
49608 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49609)]
49610pub fn vreinterpretq_s16_s64(a: int64x2_t) -> int16x8_t {
49611 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49612 unsafe {
49613 let ret_val: int16x8_t = transmute(a);
49614 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
49615 }
49616}
49617#[doc = "Vector reinterpret cast operation"]
49618#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s64)"]
49619#[inline]
49620#[cfg(target_endian = "little")]
49621#[target_feature(enable = "neon")]
49622#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49623#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49624#[cfg_attr(
49625 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49626 assert_instr(nop)
49627)]
49628#[cfg_attr(
49629 not(target_arch = "arm"),
49630 stable(feature = "neon_intrinsics", since = "1.59.0")
49631)]
49632#[cfg_attr(
49633 target_arch = "arm",
49634 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49635)]
49636pub fn vreinterpretq_s32_s64(a: int64x2_t) -> int32x4_t {
49637 unsafe { transmute(a) }
49638}
49639#[doc = "Vector reinterpret cast operation"]
49640#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s64)"]
49641#[inline]
49642#[cfg(target_endian = "big")]
49643#[target_feature(enable = "neon")]
49644#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49645#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49646#[cfg_attr(
49647 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49648 assert_instr(nop)
49649)]
49650#[cfg_attr(
49651 not(target_arch = "arm"),
49652 stable(feature = "neon_intrinsics", since = "1.59.0")
49653)]
49654#[cfg_attr(
49655 target_arch = "arm",
49656 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49657)]
49658pub fn vreinterpretq_s32_s64(a: int64x2_t) -> int32x4_t {
49659 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49660 unsafe {
49661 let ret_val: int32x4_t = transmute(a);
49662 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
49663 }
49664}
49665#[doc = "Vector reinterpret cast operation"]
49666#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s64)"]
49667#[inline]
49668#[cfg(target_endian = "little")]
49669#[target_feature(enable = "neon")]
49670#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49671#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49672#[cfg_attr(
49673 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49674 assert_instr(nop)
49675)]
49676#[cfg_attr(
49677 not(target_arch = "arm"),
49678 stable(feature = "neon_intrinsics", since = "1.59.0")
49679)]
49680#[cfg_attr(
49681 target_arch = "arm",
49682 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49683)]
49684pub fn vreinterpretq_u8_s64(a: int64x2_t) -> uint8x16_t {
49685 unsafe { transmute(a) }
49686}
49687#[doc = "Vector reinterpret cast operation"]
49688#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s64)"]
49689#[inline]
49690#[cfg(target_endian = "big")]
49691#[target_feature(enable = "neon")]
49692#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49693#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49694#[cfg_attr(
49695 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49696 assert_instr(nop)
49697)]
49698#[cfg_attr(
49699 not(target_arch = "arm"),
49700 stable(feature = "neon_intrinsics", since = "1.59.0")
49701)]
49702#[cfg_attr(
49703 target_arch = "arm",
49704 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49705)]
49706pub fn vreinterpretq_u8_s64(a: int64x2_t) -> uint8x16_t {
49707 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49708 unsafe {
49709 let ret_val: uint8x16_t = transmute(a);
49710 simd_shuffle!(
49711 ret_val,
49712 ret_val,
49713 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
49714 )
49715 }
49716}
49717#[doc = "Vector reinterpret cast operation"]
49718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s64)"]
49719#[inline]
49720#[cfg(target_endian = "little")]
49721#[target_feature(enable = "neon")]
49722#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49723#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49724#[cfg_attr(
49725 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49726 assert_instr(nop)
49727)]
49728#[cfg_attr(
49729 not(target_arch = "arm"),
49730 stable(feature = "neon_intrinsics", since = "1.59.0")
49731)]
49732#[cfg_attr(
49733 target_arch = "arm",
49734 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49735)]
49736pub fn vreinterpretq_u16_s64(a: int64x2_t) -> uint16x8_t {
49737 unsafe { transmute(a) }
49738}
49739#[doc = "Vector reinterpret cast operation"]
49740#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s64)"]
49741#[inline]
49742#[cfg(target_endian = "big")]
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(nop))]
49746#[cfg_attr(
49747 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49748 assert_instr(nop)
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 vreinterpretq_u16_s64(a: int64x2_t) -> uint16x8_t {
49759 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49760 unsafe {
49761 let ret_val: uint16x8_t = transmute(a);
49762 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
49763 }
49764}
49765#[doc = "Vector reinterpret cast operation"]
49766#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s64)"]
49767#[inline]
49768#[cfg(target_endian = "little")]
49769#[target_feature(enable = "neon")]
49770#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49771#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49772#[cfg_attr(
49773 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49774 assert_instr(nop)
49775)]
49776#[cfg_attr(
49777 not(target_arch = "arm"),
49778 stable(feature = "neon_intrinsics", since = "1.59.0")
49779)]
49780#[cfg_attr(
49781 target_arch = "arm",
49782 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49783)]
49784pub fn vreinterpretq_u32_s64(a: int64x2_t) -> uint32x4_t {
49785 unsafe { transmute(a) }
49786}
49787#[doc = "Vector reinterpret cast operation"]
49788#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s64)"]
49789#[inline]
49790#[cfg(target_endian = "big")]
49791#[target_feature(enable = "neon")]
49792#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49793#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49794#[cfg_attr(
49795 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49796 assert_instr(nop)
49797)]
49798#[cfg_attr(
49799 not(target_arch = "arm"),
49800 stable(feature = "neon_intrinsics", since = "1.59.0")
49801)]
49802#[cfg_attr(
49803 target_arch = "arm",
49804 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49805)]
49806pub fn vreinterpretq_u32_s64(a: int64x2_t) -> uint32x4_t {
49807 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49808 unsafe {
49809 let ret_val: uint32x4_t = transmute(a);
49810 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
49811 }
49812}
49813#[doc = "Vector reinterpret cast operation"]
49814#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s64)"]
49815#[inline]
49816#[cfg(target_endian = "little")]
49817#[target_feature(enable = "neon")]
49818#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49819#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49820#[cfg_attr(
49821 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49822 assert_instr(nop)
49823)]
49824#[cfg_attr(
49825 not(target_arch = "arm"),
49826 stable(feature = "neon_intrinsics", since = "1.59.0")
49827)]
49828#[cfg_attr(
49829 target_arch = "arm",
49830 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49831)]
49832pub fn vreinterpretq_u64_s64(a: int64x2_t) -> uint64x2_t {
49833 unsafe { transmute(a) }
49834}
49835#[doc = "Vector reinterpret cast operation"]
49836#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s64)"]
49837#[inline]
49838#[cfg(target_endian = "big")]
49839#[target_feature(enable = "neon")]
49840#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49841#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49842#[cfg_attr(
49843 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49844 assert_instr(nop)
49845)]
49846#[cfg_attr(
49847 not(target_arch = "arm"),
49848 stable(feature = "neon_intrinsics", since = "1.59.0")
49849)]
49850#[cfg_attr(
49851 target_arch = "arm",
49852 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49853)]
49854pub fn vreinterpretq_u64_s64(a: int64x2_t) -> uint64x2_t {
49855 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49856 unsafe {
49857 let ret_val: uint64x2_t = transmute(a);
49858 simd_shuffle!(ret_val, ret_val, [1, 0])
49859 }
49860}
49861#[doc = "Vector reinterpret cast operation"]
49862#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s64)"]
49863#[inline]
49864#[cfg(target_endian = "little")]
49865#[target_feature(enable = "neon")]
49866#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49867#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49868#[cfg_attr(
49869 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49870 assert_instr(nop)
49871)]
49872#[cfg_attr(
49873 not(target_arch = "arm"),
49874 stable(feature = "neon_intrinsics", since = "1.59.0")
49875)]
49876#[cfg_attr(
49877 target_arch = "arm",
49878 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49879)]
49880pub fn vreinterpretq_p8_s64(a: int64x2_t) -> poly8x16_t {
49881 unsafe { transmute(a) }
49882}
49883#[doc = "Vector reinterpret cast operation"]
49884#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s64)"]
49885#[inline]
49886#[cfg(target_endian = "big")]
49887#[target_feature(enable = "neon")]
49888#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49889#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49890#[cfg_attr(
49891 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49892 assert_instr(nop)
49893)]
49894#[cfg_attr(
49895 not(target_arch = "arm"),
49896 stable(feature = "neon_intrinsics", since = "1.59.0")
49897)]
49898#[cfg_attr(
49899 target_arch = "arm",
49900 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49901)]
49902pub fn vreinterpretq_p8_s64(a: int64x2_t) -> poly8x16_t {
49903 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49904 unsafe {
49905 let ret_val: poly8x16_t = transmute(a);
49906 simd_shuffle!(
49907 ret_val,
49908 ret_val,
49909 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
49910 )
49911 }
49912}
49913#[doc = "Vector reinterpret cast operation"]
49914#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s64)"]
49915#[inline]
49916#[cfg(target_endian = "little")]
49917#[target_feature(enable = "neon")]
49918#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49919#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49920#[cfg_attr(
49921 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49922 assert_instr(nop)
49923)]
49924#[cfg_attr(
49925 not(target_arch = "arm"),
49926 stable(feature = "neon_intrinsics", since = "1.59.0")
49927)]
49928#[cfg_attr(
49929 target_arch = "arm",
49930 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49931)]
49932pub fn vreinterpretq_p16_s64(a: int64x2_t) -> poly16x8_t {
49933 unsafe { transmute(a) }
49934}
49935#[doc = "Vector reinterpret cast operation"]
49936#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s64)"]
49937#[inline]
49938#[cfg(target_endian = "big")]
49939#[target_feature(enable = "neon")]
49940#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49941#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49942#[cfg_attr(
49943 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49944 assert_instr(nop)
49945)]
49946#[cfg_attr(
49947 not(target_arch = "arm"),
49948 stable(feature = "neon_intrinsics", since = "1.59.0")
49949)]
49950#[cfg_attr(
49951 target_arch = "arm",
49952 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49953)]
49954pub fn vreinterpretq_p16_s64(a: int64x2_t) -> poly16x8_t {
49955 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49956 unsafe {
49957 let ret_val: poly16x8_t = transmute(a);
49958 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
49959 }
49960}
49961#[doc = "Vector reinterpret cast operation"]
49962#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u8)"]
49963#[inline]
49964#[cfg(target_endian = "little")]
49965#[target_feature(enable = "neon")]
49966#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49967#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49968#[cfg_attr(
49969 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49970 assert_instr(nop)
49971)]
49972#[cfg_attr(
49973 not(target_arch = "arm"),
49974 stable(feature = "neon_intrinsics", since = "1.59.0")
49975)]
49976#[cfg_attr(
49977 target_arch = "arm",
49978 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49979)]
49980pub fn vreinterpret_f32_u8(a: uint8x8_t) -> float32x2_t {
49981 unsafe { transmute(a) }
49982}
49983#[doc = "Vector reinterpret cast operation"]
49984#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u8)"]
49985#[inline]
49986#[cfg(target_endian = "big")]
49987#[target_feature(enable = "neon")]
49988#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49989#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49990#[cfg_attr(
49991 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49992 assert_instr(nop)
49993)]
49994#[cfg_attr(
49995 not(target_arch = "arm"),
49996 stable(feature = "neon_intrinsics", since = "1.59.0")
49997)]
49998#[cfg_attr(
49999 target_arch = "arm",
50000 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50001)]
50002pub fn vreinterpret_f32_u8(a: uint8x8_t) -> float32x2_t {
50003 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
50004 unsafe {
50005 let ret_val: float32x2_t = transmute(a);
50006 simd_shuffle!(ret_val, ret_val, [1, 0])
50007 }
50008}
50009#[doc = "Vector reinterpret cast operation"]
50010#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u8)"]
50011#[inline]
50012#[cfg(target_endian = "little")]
50013#[target_feature(enable = "neon")]
50014#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50015#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50016#[cfg_attr(
50017 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50018 assert_instr(nop)
50019)]
50020#[cfg_attr(
50021 not(target_arch = "arm"),
50022 stable(feature = "neon_intrinsics", since = "1.59.0")
50023)]
50024#[cfg_attr(
50025 target_arch = "arm",
50026 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50027)]
50028pub fn vreinterpret_s8_u8(a: uint8x8_t) -> int8x8_t {
50029 unsafe { transmute(a) }
50030}
50031#[doc = "Vector reinterpret cast operation"]
50032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u8)"]
50033#[inline]
50034#[cfg(target_endian = "big")]
50035#[target_feature(enable = "neon")]
50036#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50037#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50038#[cfg_attr(
50039 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50040 assert_instr(nop)
50041)]
50042#[cfg_attr(
50043 not(target_arch = "arm"),
50044 stable(feature = "neon_intrinsics", since = "1.59.0")
50045)]
50046#[cfg_attr(
50047 target_arch = "arm",
50048 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50049)]
50050pub fn vreinterpret_s8_u8(a: uint8x8_t) -> int8x8_t {
50051 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
50052 unsafe {
50053 let ret_val: int8x8_t = transmute(a);
50054 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
50055 }
50056}
50057#[doc = "Vector reinterpret cast operation"]
50058#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u8)"]
50059#[inline]
50060#[cfg(target_endian = "little")]
50061#[target_feature(enable = "neon")]
50062#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50063#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50064#[cfg_attr(
50065 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50066 assert_instr(nop)
50067)]
50068#[cfg_attr(
50069 not(target_arch = "arm"),
50070 stable(feature = "neon_intrinsics", since = "1.59.0")
50071)]
50072#[cfg_attr(
50073 target_arch = "arm",
50074 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50075)]
50076pub fn vreinterpret_s16_u8(a: uint8x8_t) -> int16x4_t {
50077 unsafe { transmute(a) }
50078}
50079#[doc = "Vector reinterpret cast operation"]
50080#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u8)"]
50081#[inline]
50082#[cfg(target_endian = "big")]
50083#[target_feature(enable = "neon")]
50084#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50085#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50086#[cfg_attr(
50087 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50088 assert_instr(nop)
50089)]
50090#[cfg_attr(
50091 not(target_arch = "arm"),
50092 stable(feature = "neon_intrinsics", since = "1.59.0")
50093)]
50094#[cfg_attr(
50095 target_arch = "arm",
50096 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50097)]
50098pub fn vreinterpret_s16_u8(a: uint8x8_t) -> int16x4_t {
50099 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
50100 unsafe {
50101 let ret_val: int16x4_t = transmute(a);
50102 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
50103 }
50104}
50105#[doc = "Vector reinterpret cast operation"]
50106#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u8)"]
50107#[inline]
50108#[cfg(target_endian = "little")]
50109#[target_feature(enable = "neon")]
50110#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50111#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50112#[cfg_attr(
50113 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50114 assert_instr(nop)
50115)]
50116#[cfg_attr(
50117 not(target_arch = "arm"),
50118 stable(feature = "neon_intrinsics", since = "1.59.0")
50119)]
50120#[cfg_attr(
50121 target_arch = "arm",
50122 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50123)]
50124pub fn vreinterpret_s32_u8(a: uint8x8_t) -> int32x2_t {
50125 unsafe { transmute(a) }
50126}
50127#[doc = "Vector reinterpret cast operation"]
50128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u8)"]
50129#[inline]
50130#[cfg(target_endian = "big")]
50131#[target_feature(enable = "neon")]
50132#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50133#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50134#[cfg_attr(
50135 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50136 assert_instr(nop)
50137)]
50138#[cfg_attr(
50139 not(target_arch = "arm"),
50140 stable(feature = "neon_intrinsics", since = "1.59.0")
50141)]
50142#[cfg_attr(
50143 target_arch = "arm",
50144 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50145)]
50146pub fn vreinterpret_s32_u8(a: uint8x8_t) -> int32x2_t {
50147 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
50148 unsafe {
50149 let ret_val: int32x2_t = transmute(a);
50150 simd_shuffle!(ret_val, ret_val, [1, 0])
50151 }
50152}
50153#[doc = "Vector reinterpret cast operation"]
50154#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u8)"]
50155#[inline]
50156#[cfg(target_endian = "little")]
50157#[target_feature(enable = "neon")]
50158#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50159#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50160#[cfg_attr(
50161 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50162 assert_instr(nop)
50163)]
50164#[cfg_attr(
50165 not(target_arch = "arm"),
50166 stable(feature = "neon_intrinsics", since = "1.59.0")
50167)]
50168#[cfg_attr(
50169 target_arch = "arm",
50170 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50171)]
50172pub fn vreinterpret_s64_u8(a: uint8x8_t) -> int64x1_t {
50173 unsafe { transmute(a) }
50174}
50175#[doc = "Vector reinterpret cast operation"]
50176#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u8)"]
50177#[inline]
50178#[cfg(target_endian = "big")]
50179#[target_feature(enable = "neon")]
50180#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50181#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50182#[cfg_attr(
50183 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50184 assert_instr(nop)
50185)]
50186#[cfg_attr(
50187 not(target_arch = "arm"),
50188 stable(feature = "neon_intrinsics", since = "1.59.0")
50189)]
50190#[cfg_attr(
50191 target_arch = "arm",
50192 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50193)]
50194pub fn vreinterpret_s64_u8(a: uint8x8_t) -> int64x1_t {
50195 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
50196 unsafe { transmute(a) }
50197}
50198#[doc = "Vector reinterpret cast operation"]
50199#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u8)"]
50200#[inline]
50201#[cfg(target_endian = "little")]
50202#[target_feature(enable = "neon")]
50203#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50204#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50205#[cfg_attr(
50206 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50207 assert_instr(nop)
50208)]
50209#[cfg_attr(
50210 not(target_arch = "arm"),
50211 stable(feature = "neon_intrinsics", since = "1.59.0")
50212)]
50213#[cfg_attr(
50214 target_arch = "arm",
50215 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50216)]
50217pub fn vreinterpret_u16_u8(a: uint8x8_t) -> uint16x4_t {
50218 unsafe { transmute(a) }
50219}
50220#[doc = "Vector reinterpret cast operation"]
50221#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u8)"]
50222#[inline]
50223#[cfg(target_endian = "big")]
50224#[target_feature(enable = "neon")]
50225#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50226#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50227#[cfg_attr(
50228 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50229 assert_instr(nop)
50230)]
50231#[cfg_attr(
50232 not(target_arch = "arm"),
50233 stable(feature = "neon_intrinsics", since = "1.59.0")
50234)]
50235#[cfg_attr(
50236 target_arch = "arm",
50237 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50238)]
50239pub fn vreinterpret_u16_u8(a: uint8x8_t) -> uint16x4_t {
50240 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
50241 unsafe {
50242 let ret_val: uint16x4_t = transmute(a);
50243 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
50244 }
50245}
50246#[doc = "Vector reinterpret cast operation"]
50247#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u8)"]
50248#[inline]
50249#[cfg(target_endian = "little")]
50250#[target_feature(enable = "neon")]
50251#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50252#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50253#[cfg_attr(
50254 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50255 assert_instr(nop)
50256)]
50257#[cfg_attr(
50258 not(target_arch = "arm"),
50259 stable(feature = "neon_intrinsics", since = "1.59.0")
50260)]
50261#[cfg_attr(
50262 target_arch = "arm",
50263 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50264)]
50265pub fn vreinterpret_u32_u8(a: uint8x8_t) -> uint32x2_t {
50266 unsafe { transmute(a) }
50267}
50268#[doc = "Vector reinterpret cast operation"]
50269#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u8)"]
50270#[inline]
50271#[cfg(target_endian = "big")]
50272#[target_feature(enable = "neon")]
50273#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50274#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50275#[cfg_attr(
50276 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50277 assert_instr(nop)
50278)]
50279#[cfg_attr(
50280 not(target_arch = "arm"),
50281 stable(feature = "neon_intrinsics", since = "1.59.0")
50282)]
50283#[cfg_attr(
50284 target_arch = "arm",
50285 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50286)]
50287pub fn vreinterpret_u32_u8(a: uint8x8_t) -> uint32x2_t {
50288 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
50289 unsafe {
50290 let ret_val: uint32x2_t = transmute(a);
50291 simd_shuffle!(ret_val, ret_val, [1, 0])
50292 }
50293}
50294#[doc = "Vector reinterpret cast operation"]
50295#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u8)"]
50296#[inline]
50297#[cfg(target_endian = "little")]
50298#[target_feature(enable = "neon")]
50299#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50300#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50301#[cfg_attr(
50302 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50303 assert_instr(nop)
50304)]
50305#[cfg_attr(
50306 not(target_arch = "arm"),
50307 stable(feature = "neon_intrinsics", since = "1.59.0")
50308)]
50309#[cfg_attr(
50310 target_arch = "arm",
50311 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50312)]
50313pub fn vreinterpret_u64_u8(a: uint8x8_t) -> uint64x1_t {
50314 unsafe { transmute(a) }
50315}
50316#[doc = "Vector reinterpret cast operation"]
50317#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u8)"]
50318#[inline]
50319#[cfg(target_endian = "big")]
50320#[target_feature(enable = "neon")]
50321#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50322#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50323#[cfg_attr(
50324 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50325 assert_instr(nop)
50326)]
50327#[cfg_attr(
50328 not(target_arch = "arm"),
50329 stable(feature = "neon_intrinsics", since = "1.59.0")
50330)]
50331#[cfg_attr(
50332 target_arch = "arm",
50333 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50334)]
50335pub fn vreinterpret_u64_u8(a: uint8x8_t) -> uint64x1_t {
50336 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
50337 unsafe { transmute(a) }
50338}
50339#[doc = "Vector reinterpret cast operation"]
50340#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u8)"]
50341#[inline]
50342#[cfg(target_endian = "little")]
50343#[target_feature(enable = "neon")]
50344#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50345#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50346#[cfg_attr(
50347 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50348 assert_instr(nop)
50349)]
50350#[cfg_attr(
50351 not(target_arch = "arm"),
50352 stable(feature = "neon_intrinsics", since = "1.59.0")
50353)]
50354#[cfg_attr(
50355 target_arch = "arm",
50356 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50357)]
50358pub fn vreinterpret_p8_u8(a: uint8x8_t) -> poly8x8_t {
50359 unsafe { transmute(a) }
50360}
50361#[doc = "Vector reinterpret cast operation"]
50362#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u8)"]
50363#[inline]
50364#[cfg(target_endian = "big")]
50365#[target_feature(enable = "neon")]
50366#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50367#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50368#[cfg_attr(
50369 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50370 assert_instr(nop)
50371)]
50372#[cfg_attr(
50373 not(target_arch = "arm"),
50374 stable(feature = "neon_intrinsics", since = "1.59.0")
50375)]
50376#[cfg_attr(
50377 target_arch = "arm",
50378 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50379)]
50380pub fn vreinterpret_p8_u8(a: uint8x8_t) -> poly8x8_t {
50381 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
50382 unsafe {
50383 let ret_val: poly8x8_t = transmute(a);
50384 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
50385 }
50386}
50387#[doc = "Vector reinterpret cast operation"]
50388#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u8)"]
50389#[inline]
50390#[cfg(target_endian = "little")]
50391#[target_feature(enable = "neon")]
50392#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50393#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50394#[cfg_attr(
50395 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50396 assert_instr(nop)
50397)]
50398#[cfg_attr(
50399 not(target_arch = "arm"),
50400 stable(feature = "neon_intrinsics", since = "1.59.0")
50401)]
50402#[cfg_attr(
50403 target_arch = "arm",
50404 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50405)]
50406pub fn vreinterpret_p16_u8(a: uint8x8_t) -> poly16x4_t {
50407 unsafe { transmute(a) }
50408}
50409#[doc = "Vector reinterpret cast operation"]
50410#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u8)"]
50411#[inline]
50412#[cfg(target_endian = "big")]
50413#[target_feature(enable = "neon")]
50414#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50415#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50416#[cfg_attr(
50417 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50418 assert_instr(nop)
50419)]
50420#[cfg_attr(
50421 not(target_arch = "arm"),
50422 stable(feature = "neon_intrinsics", since = "1.59.0")
50423)]
50424#[cfg_attr(
50425 target_arch = "arm",
50426 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50427)]
50428pub fn vreinterpret_p16_u8(a: uint8x8_t) -> poly16x4_t {
50429 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
50430 unsafe {
50431 let ret_val: poly16x4_t = transmute(a);
50432 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
50433 }
50434}
50435#[doc = "Vector reinterpret cast operation"]
50436#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u8)"]
50437#[inline]
50438#[cfg(target_endian = "little")]
50439#[target_feature(enable = "neon")]
50440#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50441#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50442#[cfg_attr(
50443 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50444 assert_instr(nop)
50445)]
50446#[cfg_attr(
50447 not(target_arch = "arm"),
50448 stable(feature = "neon_intrinsics", since = "1.59.0")
50449)]
50450#[cfg_attr(
50451 target_arch = "arm",
50452 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50453)]
50454pub fn vreinterpretq_f32_u8(a: uint8x16_t) -> float32x4_t {
50455 unsafe { transmute(a) }
50456}
50457#[doc = "Vector reinterpret cast operation"]
50458#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u8)"]
50459#[inline]
50460#[cfg(target_endian = "big")]
50461#[target_feature(enable = "neon")]
50462#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50463#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50464#[cfg_attr(
50465 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50466 assert_instr(nop)
50467)]
50468#[cfg_attr(
50469 not(target_arch = "arm"),
50470 stable(feature = "neon_intrinsics", since = "1.59.0")
50471)]
50472#[cfg_attr(
50473 target_arch = "arm",
50474 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50475)]
50476pub fn vreinterpretq_f32_u8(a: uint8x16_t) -> float32x4_t {
50477 let a: uint8x16_t =
50478 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
50479 unsafe {
50480 let ret_val: float32x4_t = transmute(a);
50481 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
50482 }
50483}
50484#[doc = "Vector reinterpret cast operation"]
50485#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u8)"]
50486#[inline]
50487#[cfg(target_endian = "little")]
50488#[target_feature(enable = "neon")]
50489#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50490#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50491#[cfg_attr(
50492 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50493 assert_instr(nop)
50494)]
50495#[cfg_attr(
50496 not(target_arch = "arm"),
50497 stable(feature = "neon_intrinsics", since = "1.59.0")
50498)]
50499#[cfg_attr(
50500 target_arch = "arm",
50501 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50502)]
50503pub fn vreinterpretq_s8_u8(a: uint8x16_t) -> int8x16_t {
50504 unsafe { transmute(a) }
50505}
50506#[doc = "Vector reinterpret cast operation"]
50507#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u8)"]
50508#[inline]
50509#[cfg(target_endian = "big")]
50510#[target_feature(enable = "neon")]
50511#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50512#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50513#[cfg_attr(
50514 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50515 assert_instr(nop)
50516)]
50517#[cfg_attr(
50518 not(target_arch = "arm"),
50519 stable(feature = "neon_intrinsics", since = "1.59.0")
50520)]
50521#[cfg_attr(
50522 target_arch = "arm",
50523 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50524)]
50525pub fn vreinterpretq_s8_u8(a: uint8x16_t) -> int8x16_t {
50526 let a: uint8x16_t =
50527 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
50528 unsafe {
50529 let ret_val: int8x16_t = transmute(a);
50530 simd_shuffle!(
50531 ret_val,
50532 ret_val,
50533 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
50534 )
50535 }
50536}
50537#[doc = "Vector reinterpret cast operation"]
50538#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u8)"]
50539#[inline]
50540#[cfg(target_endian = "little")]
50541#[target_feature(enable = "neon")]
50542#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50543#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50544#[cfg_attr(
50545 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50546 assert_instr(nop)
50547)]
50548#[cfg_attr(
50549 not(target_arch = "arm"),
50550 stable(feature = "neon_intrinsics", since = "1.59.0")
50551)]
50552#[cfg_attr(
50553 target_arch = "arm",
50554 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50555)]
50556pub fn vreinterpretq_s16_u8(a: uint8x16_t) -> int16x8_t {
50557 unsafe { transmute(a) }
50558}
50559#[doc = "Vector reinterpret cast operation"]
50560#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u8)"]
50561#[inline]
50562#[cfg(target_endian = "big")]
50563#[target_feature(enable = "neon")]
50564#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50565#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50566#[cfg_attr(
50567 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50568 assert_instr(nop)
50569)]
50570#[cfg_attr(
50571 not(target_arch = "arm"),
50572 stable(feature = "neon_intrinsics", since = "1.59.0")
50573)]
50574#[cfg_attr(
50575 target_arch = "arm",
50576 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50577)]
50578pub fn vreinterpretq_s16_u8(a: uint8x16_t) -> int16x8_t {
50579 let a: uint8x16_t =
50580 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
50581 unsafe {
50582 let ret_val: int16x8_t = transmute(a);
50583 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
50584 }
50585}
50586#[doc = "Vector reinterpret cast operation"]
50587#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u8)"]
50588#[inline]
50589#[cfg(target_endian = "little")]
50590#[target_feature(enable = "neon")]
50591#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50592#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50593#[cfg_attr(
50594 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50595 assert_instr(nop)
50596)]
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 vreinterpretq_s32_u8(a: uint8x16_t) -> int32x4_t {
50606 unsafe { transmute(a) }
50607}
50608#[doc = "Vector reinterpret cast operation"]
50609#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u8)"]
50610#[inline]
50611#[cfg(target_endian = "big")]
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(nop))]
50615#[cfg_attr(
50616 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50617 assert_instr(nop)
50618)]
50619#[cfg_attr(
50620 not(target_arch = "arm"),
50621 stable(feature = "neon_intrinsics", since = "1.59.0")
50622)]
50623#[cfg_attr(
50624 target_arch = "arm",
50625 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50626)]
50627pub fn vreinterpretq_s32_u8(a: uint8x16_t) -> int32x4_t {
50628 let a: uint8x16_t =
50629 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
50630 unsafe {
50631 let ret_val: int32x4_t = transmute(a);
50632 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
50633 }
50634}
50635#[doc = "Vector reinterpret cast operation"]
50636#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u8)"]
50637#[inline]
50638#[cfg(target_endian = "little")]
50639#[target_feature(enable = "neon")]
50640#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50641#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50642#[cfg_attr(
50643 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50644 assert_instr(nop)
50645)]
50646#[cfg_attr(
50647 not(target_arch = "arm"),
50648 stable(feature = "neon_intrinsics", since = "1.59.0")
50649)]
50650#[cfg_attr(
50651 target_arch = "arm",
50652 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50653)]
50654pub fn vreinterpretq_s64_u8(a: uint8x16_t) -> int64x2_t {
50655 unsafe { transmute(a) }
50656}
50657#[doc = "Vector reinterpret cast operation"]
50658#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u8)"]
50659#[inline]
50660#[cfg(target_endian = "big")]
50661#[target_feature(enable = "neon")]
50662#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50663#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50664#[cfg_attr(
50665 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50666 assert_instr(nop)
50667)]
50668#[cfg_attr(
50669 not(target_arch = "arm"),
50670 stable(feature = "neon_intrinsics", since = "1.59.0")
50671)]
50672#[cfg_attr(
50673 target_arch = "arm",
50674 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50675)]
50676pub fn vreinterpretq_s64_u8(a: uint8x16_t) -> int64x2_t {
50677 let a: uint8x16_t =
50678 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
50679 unsafe {
50680 let ret_val: int64x2_t = transmute(a);
50681 simd_shuffle!(ret_val, ret_val, [1, 0])
50682 }
50683}
50684#[doc = "Vector reinterpret cast operation"]
50685#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u8)"]
50686#[inline]
50687#[cfg(target_endian = "little")]
50688#[target_feature(enable = "neon")]
50689#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50690#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50691#[cfg_attr(
50692 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50693 assert_instr(nop)
50694)]
50695#[cfg_attr(
50696 not(target_arch = "arm"),
50697 stable(feature = "neon_intrinsics", since = "1.59.0")
50698)]
50699#[cfg_attr(
50700 target_arch = "arm",
50701 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50702)]
50703pub fn vreinterpretq_u16_u8(a: uint8x16_t) -> uint16x8_t {
50704 unsafe { transmute(a) }
50705}
50706#[doc = "Vector reinterpret cast operation"]
50707#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u8)"]
50708#[inline]
50709#[cfg(target_endian = "big")]
50710#[target_feature(enable = "neon")]
50711#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50712#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50713#[cfg_attr(
50714 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50715 assert_instr(nop)
50716)]
50717#[cfg_attr(
50718 not(target_arch = "arm"),
50719 stable(feature = "neon_intrinsics", since = "1.59.0")
50720)]
50721#[cfg_attr(
50722 target_arch = "arm",
50723 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50724)]
50725pub fn vreinterpretq_u16_u8(a: uint8x16_t) -> uint16x8_t {
50726 let a: uint8x16_t =
50727 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
50728 unsafe {
50729 let ret_val: uint16x8_t = transmute(a);
50730 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
50731 }
50732}
50733#[doc = "Vector reinterpret cast operation"]
50734#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u8)"]
50735#[inline]
50736#[cfg(target_endian = "little")]
50737#[target_feature(enable = "neon")]
50738#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50739#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50740#[cfg_attr(
50741 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50742 assert_instr(nop)
50743)]
50744#[cfg_attr(
50745 not(target_arch = "arm"),
50746 stable(feature = "neon_intrinsics", since = "1.59.0")
50747)]
50748#[cfg_attr(
50749 target_arch = "arm",
50750 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50751)]
50752pub fn vreinterpretq_u32_u8(a: uint8x16_t) -> uint32x4_t {
50753 unsafe { transmute(a) }
50754}
50755#[doc = "Vector reinterpret cast operation"]
50756#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u8)"]
50757#[inline]
50758#[cfg(target_endian = "big")]
50759#[target_feature(enable = "neon")]
50760#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50761#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50762#[cfg_attr(
50763 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50764 assert_instr(nop)
50765)]
50766#[cfg_attr(
50767 not(target_arch = "arm"),
50768 stable(feature = "neon_intrinsics", since = "1.59.0")
50769)]
50770#[cfg_attr(
50771 target_arch = "arm",
50772 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50773)]
50774pub fn vreinterpretq_u32_u8(a: uint8x16_t) -> uint32x4_t {
50775 let a: uint8x16_t =
50776 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
50777 unsafe {
50778 let ret_val: uint32x4_t = transmute(a);
50779 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
50780 }
50781}
50782#[doc = "Vector reinterpret cast operation"]
50783#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u8)"]
50784#[inline]
50785#[cfg(target_endian = "little")]
50786#[target_feature(enable = "neon")]
50787#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50788#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50789#[cfg_attr(
50790 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50791 assert_instr(nop)
50792)]
50793#[cfg_attr(
50794 not(target_arch = "arm"),
50795 stable(feature = "neon_intrinsics", since = "1.59.0")
50796)]
50797#[cfg_attr(
50798 target_arch = "arm",
50799 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50800)]
50801pub fn vreinterpretq_u64_u8(a: uint8x16_t) -> uint64x2_t {
50802 unsafe { transmute(a) }
50803}
50804#[doc = "Vector reinterpret cast operation"]
50805#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u8)"]
50806#[inline]
50807#[cfg(target_endian = "big")]
50808#[target_feature(enable = "neon")]
50809#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50810#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50811#[cfg_attr(
50812 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50813 assert_instr(nop)
50814)]
50815#[cfg_attr(
50816 not(target_arch = "arm"),
50817 stable(feature = "neon_intrinsics", since = "1.59.0")
50818)]
50819#[cfg_attr(
50820 target_arch = "arm",
50821 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50822)]
50823pub fn vreinterpretq_u64_u8(a: uint8x16_t) -> uint64x2_t {
50824 let a: uint8x16_t =
50825 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
50826 unsafe {
50827 let ret_val: uint64x2_t = transmute(a);
50828 simd_shuffle!(ret_val, ret_val, [1, 0])
50829 }
50830}
50831#[doc = "Vector reinterpret cast operation"]
50832#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u8)"]
50833#[inline]
50834#[cfg(target_endian = "little")]
50835#[target_feature(enable = "neon")]
50836#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50837#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50838#[cfg_attr(
50839 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50840 assert_instr(nop)
50841)]
50842#[cfg_attr(
50843 not(target_arch = "arm"),
50844 stable(feature = "neon_intrinsics", since = "1.59.0")
50845)]
50846#[cfg_attr(
50847 target_arch = "arm",
50848 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50849)]
50850pub fn vreinterpretq_p8_u8(a: uint8x16_t) -> poly8x16_t {
50851 unsafe { transmute(a) }
50852}
50853#[doc = "Vector reinterpret cast operation"]
50854#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u8)"]
50855#[inline]
50856#[cfg(target_endian = "big")]
50857#[target_feature(enable = "neon")]
50858#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50859#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50860#[cfg_attr(
50861 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50862 assert_instr(nop)
50863)]
50864#[cfg_attr(
50865 not(target_arch = "arm"),
50866 stable(feature = "neon_intrinsics", since = "1.59.0")
50867)]
50868#[cfg_attr(
50869 target_arch = "arm",
50870 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50871)]
50872pub fn vreinterpretq_p8_u8(a: uint8x16_t) -> poly8x16_t {
50873 let a: uint8x16_t =
50874 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
50875 unsafe {
50876 let ret_val: poly8x16_t = transmute(a);
50877 simd_shuffle!(
50878 ret_val,
50879 ret_val,
50880 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
50881 )
50882 }
50883}
50884#[doc = "Vector reinterpret cast operation"]
50885#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u8)"]
50886#[inline]
50887#[cfg(target_endian = "little")]
50888#[target_feature(enable = "neon")]
50889#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50890#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50891#[cfg_attr(
50892 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50893 assert_instr(nop)
50894)]
50895#[cfg_attr(
50896 not(target_arch = "arm"),
50897 stable(feature = "neon_intrinsics", since = "1.59.0")
50898)]
50899#[cfg_attr(
50900 target_arch = "arm",
50901 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50902)]
50903pub fn vreinterpretq_p16_u8(a: uint8x16_t) -> poly16x8_t {
50904 unsafe { transmute(a) }
50905}
50906#[doc = "Vector reinterpret cast operation"]
50907#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u8)"]
50908#[inline]
50909#[cfg(target_endian = "big")]
50910#[target_feature(enable = "neon")]
50911#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50912#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50913#[cfg_attr(
50914 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50915 assert_instr(nop)
50916)]
50917#[cfg_attr(
50918 not(target_arch = "arm"),
50919 stable(feature = "neon_intrinsics", since = "1.59.0")
50920)]
50921#[cfg_attr(
50922 target_arch = "arm",
50923 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50924)]
50925pub fn vreinterpretq_p16_u8(a: uint8x16_t) -> poly16x8_t {
50926 let a: uint8x16_t =
50927 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
50928 unsafe {
50929 let ret_val: poly16x8_t = transmute(a);
50930 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
50931 }
50932}
50933#[doc = "Vector reinterpret cast operation"]
50934#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u16)"]
50935#[inline]
50936#[cfg(target_endian = "little")]
50937#[target_feature(enable = "neon")]
50938#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50939#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50940#[cfg_attr(
50941 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50942 assert_instr(nop)
50943)]
50944#[cfg_attr(
50945 not(target_arch = "arm"),
50946 stable(feature = "neon_intrinsics", since = "1.59.0")
50947)]
50948#[cfg_attr(
50949 target_arch = "arm",
50950 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50951)]
50952pub fn vreinterpret_f32_u16(a: uint16x4_t) -> float32x2_t {
50953 unsafe { transmute(a) }
50954}
50955#[doc = "Vector reinterpret cast operation"]
50956#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u16)"]
50957#[inline]
50958#[cfg(target_endian = "big")]
50959#[target_feature(enable = "neon")]
50960#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50961#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50962#[cfg_attr(
50963 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50964 assert_instr(nop)
50965)]
50966#[cfg_attr(
50967 not(target_arch = "arm"),
50968 stable(feature = "neon_intrinsics", since = "1.59.0")
50969)]
50970#[cfg_attr(
50971 target_arch = "arm",
50972 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50973)]
50974pub fn vreinterpret_f32_u16(a: uint16x4_t) -> float32x2_t {
50975 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
50976 unsafe {
50977 let ret_val: float32x2_t = transmute(a);
50978 simd_shuffle!(ret_val, ret_val, [1, 0])
50979 }
50980}
50981#[doc = "Vector reinterpret cast operation"]
50982#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u16)"]
50983#[inline]
50984#[cfg(target_endian = "little")]
50985#[target_feature(enable = "neon")]
50986#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50987#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50988#[cfg_attr(
50989 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50990 assert_instr(nop)
50991)]
50992#[cfg_attr(
50993 not(target_arch = "arm"),
50994 stable(feature = "neon_intrinsics", since = "1.59.0")
50995)]
50996#[cfg_attr(
50997 target_arch = "arm",
50998 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50999)]
51000pub fn vreinterpret_s8_u16(a: uint16x4_t) -> int8x8_t {
51001 unsafe { transmute(a) }
51002}
51003#[doc = "Vector reinterpret cast operation"]
51004#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u16)"]
51005#[inline]
51006#[cfg(target_endian = "big")]
51007#[target_feature(enable = "neon")]
51008#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51009#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51010#[cfg_attr(
51011 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51012 assert_instr(nop)
51013)]
51014#[cfg_attr(
51015 not(target_arch = "arm"),
51016 stable(feature = "neon_intrinsics", since = "1.59.0")
51017)]
51018#[cfg_attr(
51019 target_arch = "arm",
51020 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51021)]
51022pub fn vreinterpret_s8_u16(a: uint16x4_t) -> int8x8_t {
51023 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
51024 unsafe {
51025 let ret_val: int8x8_t = transmute(a);
51026 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
51027 }
51028}
51029#[doc = "Vector reinterpret cast operation"]
51030#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u16)"]
51031#[inline]
51032#[cfg(target_endian = "little")]
51033#[target_feature(enable = "neon")]
51034#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51035#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51036#[cfg_attr(
51037 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51038 assert_instr(nop)
51039)]
51040#[cfg_attr(
51041 not(target_arch = "arm"),
51042 stable(feature = "neon_intrinsics", since = "1.59.0")
51043)]
51044#[cfg_attr(
51045 target_arch = "arm",
51046 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51047)]
51048pub fn vreinterpret_s16_u16(a: uint16x4_t) -> int16x4_t {
51049 unsafe { transmute(a) }
51050}
51051#[doc = "Vector reinterpret cast operation"]
51052#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u16)"]
51053#[inline]
51054#[cfg(target_endian = "big")]
51055#[target_feature(enable = "neon")]
51056#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51057#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51058#[cfg_attr(
51059 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51060 assert_instr(nop)
51061)]
51062#[cfg_attr(
51063 not(target_arch = "arm"),
51064 stable(feature = "neon_intrinsics", since = "1.59.0")
51065)]
51066#[cfg_attr(
51067 target_arch = "arm",
51068 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51069)]
51070pub fn vreinterpret_s16_u16(a: uint16x4_t) -> int16x4_t {
51071 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
51072 unsafe {
51073 let ret_val: int16x4_t = transmute(a);
51074 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
51075 }
51076}
51077#[doc = "Vector reinterpret cast operation"]
51078#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u16)"]
51079#[inline]
51080#[cfg(target_endian = "little")]
51081#[target_feature(enable = "neon")]
51082#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51083#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51084#[cfg_attr(
51085 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51086 assert_instr(nop)
51087)]
51088#[cfg_attr(
51089 not(target_arch = "arm"),
51090 stable(feature = "neon_intrinsics", since = "1.59.0")
51091)]
51092#[cfg_attr(
51093 target_arch = "arm",
51094 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51095)]
51096pub fn vreinterpret_s32_u16(a: uint16x4_t) -> int32x2_t {
51097 unsafe { transmute(a) }
51098}
51099#[doc = "Vector reinterpret cast operation"]
51100#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u16)"]
51101#[inline]
51102#[cfg(target_endian = "big")]
51103#[target_feature(enable = "neon")]
51104#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51105#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51106#[cfg_attr(
51107 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51108 assert_instr(nop)
51109)]
51110#[cfg_attr(
51111 not(target_arch = "arm"),
51112 stable(feature = "neon_intrinsics", since = "1.59.0")
51113)]
51114#[cfg_attr(
51115 target_arch = "arm",
51116 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51117)]
51118pub fn vreinterpret_s32_u16(a: uint16x4_t) -> int32x2_t {
51119 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
51120 unsafe {
51121 let ret_val: int32x2_t = transmute(a);
51122 simd_shuffle!(ret_val, ret_val, [1, 0])
51123 }
51124}
51125#[doc = "Vector reinterpret cast operation"]
51126#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u16)"]
51127#[inline]
51128#[cfg(target_endian = "little")]
51129#[target_feature(enable = "neon")]
51130#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51131#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51132#[cfg_attr(
51133 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51134 assert_instr(nop)
51135)]
51136#[cfg_attr(
51137 not(target_arch = "arm"),
51138 stable(feature = "neon_intrinsics", since = "1.59.0")
51139)]
51140#[cfg_attr(
51141 target_arch = "arm",
51142 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51143)]
51144pub fn vreinterpret_s64_u16(a: uint16x4_t) -> int64x1_t {
51145 unsafe { transmute(a) }
51146}
51147#[doc = "Vector reinterpret cast operation"]
51148#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u16)"]
51149#[inline]
51150#[cfg(target_endian = "big")]
51151#[target_feature(enable = "neon")]
51152#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51153#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51154#[cfg_attr(
51155 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51156 assert_instr(nop)
51157)]
51158#[cfg_attr(
51159 not(target_arch = "arm"),
51160 stable(feature = "neon_intrinsics", since = "1.59.0")
51161)]
51162#[cfg_attr(
51163 target_arch = "arm",
51164 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51165)]
51166pub fn vreinterpret_s64_u16(a: uint16x4_t) -> int64x1_t {
51167 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
51168 unsafe { transmute(a) }
51169}
51170#[doc = "Vector reinterpret cast operation"]
51171#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u16)"]
51172#[inline]
51173#[cfg(target_endian = "little")]
51174#[target_feature(enable = "neon")]
51175#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51176#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51177#[cfg_attr(
51178 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51179 assert_instr(nop)
51180)]
51181#[cfg_attr(
51182 not(target_arch = "arm"),
51183 stable(feature = "neon_intrinsics", since = "1.59.0")
51184)]
51185#[cfg_attr(
51186 target_arch = "arm",
51187 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51188)]
51189pub fn vreinterpret_u8_u16(a: uint16x4_t) -> uint8x8_t {
51190 unsafe { transmute(a) }
51191}
51192#[doc = "Vector reinterpret cast operation"]
51193#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u16)"]
51194#[inline]
51195#[cfg(target_endian = "big")]
51196#[target_feature(enable = "neon")]
51197#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51198#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51199#[cfg_attr(
51200 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51201 assert_instr(nop)
51202)]
51203#[cfg_attr(
51204 not(target_arch = "arm"),
51205 stable(feature = "neon_intrinsics", since = "1.59.0")
51206)]
51207#[cfg_attr(
51208 target_arch = "arm",
51209 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51210)]
51211pub fn vreinterpret_u8_u16(a: uint16x4_t) -> uint8x8_t {
51212 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
51213 unsafe {
51214 let ret_val: uint8x8_t = transmute(a);
51215 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
51216 }
51217}
51218#[doc = "Vector reinterpret cast operation"]
51219#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u16)"]
51220#[inline]
51221#[cfg(target_endian = "little")]
51222#[target_feature(enable = "neon")]
51223#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51224#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51225#[cfg_attr(
51226 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51227 assert_instr(nop)
51228)]
51229#[cfg_attr(
51230 not(target_arch = "arm"),
51231 stable(feature = "neon_intrinsics", since = "1.59.0")
51232)]
51233#[cfg_attr(
51234 target_arch = "arm",
51235 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51236)]
51237pub fn vreinterpret_u32_u16(a: uint16x4_t) -> uint32x2_t {
51238 unsafe { transmute(a) }
51239}
51240#[doc = "Vector reinterpret cast operation"]
51241#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u16)"]
51242#[inline]
51243#[cfg(target_endian = "big")]
51244#[target_feature(enable = "neon")]
51245#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51246#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51247#[cfg_attr(
51248 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51249 assert_instr(nop)
51250)]
51251#[cfg_attr(
51252 not(target_arch = "arm"),
51253 stable(feature = "neon_intrinsics", since = "1.59.0")
51254)]
51255#[cfg_attr(
51256 target_arch = "arm",
51257 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51258)]
51259pub fn vreinterpret_u32_u16(a: uint16x4_t) -> uint32x2_t {
51260 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
51261 unsafe {
51262 let ret_val: uint32x2_t = transmute(a);
51263 simd_shuffle!(ret_val, ret_val, [1, 0])
51264 }
51265}
51266#[doc = "Vector reinterpret cast operation"]
51267#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u16)"]
51268#[inline]
51269#[cfg(target_endian = "little")]
51270#[target_feature(enable = "neon")]
51271#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51272#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51273#[cfg_attr(
51274 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51275 assert_instr(nop)
51276)]
51277#[cfg_attr(
51278 not(target_arch = "arm"),
51279 stable(feature = "neon_intrinsics", since = "1.59.0")
51280)]
51281#[cfg_attr(
51282 target_arch = "arm",
51283 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51284)]
51285pub fn vreinterpret_u64_u16(a: uint16x4_t) -> uint64x1_t {
51286 unsafe { transmute(a) }
51287}
51288#[doc = "Vector reinterpret cast operation"]
51289#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u16)"]
51290#[inline]
51291#[cfg(target_endian = "big")]
51292#[target_feature(enable = "neon")]
51293#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51294#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51295#[cfg_attr(
51296 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51297 assert_instr(nop)
51298)]
51299#[cfg_attr(
51300 not(target_arch = "arm"),
51301 stable(feature = "neon_intrinsics", since = "1.59.0")
51302)]
51303#[cfg_attr(
51304 target_arch = "arm",
51305 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51306)]
51307pub fn vreinterpret_u64_u16(a: uint16x4_t) -> uint64x1_t {
51308 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
51309 unsafe { transmute(a) }
51310}
51311#[doc = "Vector reinterpret cast operation"]
51312#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u16)"]
51313#[inline]
51314#[cfg(target_endian = "little")]
51315#[target_feature(enable = "neon")]
51316#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51317#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51318#[cfg_attr(
51319 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51320 assert_instr(nop)
51321)]
51322#[cfg_attr(
51323 not(target_arch = "arm"),
51324 stable(feature = "neon_intrinsics", since = "1.59.0")
51325)]
51326#[cfg_attr(
51327 target_arch = "arm",
51328 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51329)]
51330pub fn vreinterpret_p8_u16(a: uint16x4_t) -> poly8x8_t {
51331 unsafe { transmute(a) }
51332}
51333#[doc = "Vector reinterpret cast operation"]
51334#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u16)"]
51335#[inline]
51336#[cfg(target_endian = "big")]
51337#[target_feature(enable = "neon")]
51338#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51339#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51340#[cfg_attr(
51341 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51342 assert_instr(nop)
51343)]
51344#[cfg_attr(
51345 not(target_arch = "arm"),
51346 stable(feature = "neon_intrinsics", since = "1.59.0")
51347)]
51348#[cfg_attr(
51349 target_arch = "arm",
51350 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51351)]
51352pub fn vreinterpret_p8_u16(a: uint16x4_t) -> poly8x8_t {
51353 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
51354 unsafe {
51355 let ret_val: poly8x8_t = transmute(a);
51356 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
51357 }
51358}
51359#[doc = "Vector reinterpret cast operation"]
51360#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u16)"]
51361#[inline]
51362#[cfg(target_endian = "little")]
51363#[target_feature(enable = "neon")]
51364#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51365#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51366#[cfg_attr(
51367 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51368 assert_instr(nop)
51369)]
51370#[cfg_attr(
51371 not(target_arch = "arm"),
51372 stable(feature = "neon_intrinsics", since = "1.59.0")
51373)]
51374#[cfg_attr(
51375 target_arch = "arm",
51376 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51377)]
51378pub fn vreinterpret_p16_u16(a: uint16x4_t) -> poly16x4_t {
51379 unsafe { transmute(a) }
51380}
51381#[doc = "Vector reinterpret cast operation"]
51382#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u16)"]
51383#[inline]
51384#[cfg(target_endian = "big")]
51385#[target_feature(enable = "neon")]
51386#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51387#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51388#[cfg_attr(
51389 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51390 assert_instr(nop)
51391)]
51392#[cfg_attr(
51393 not(target_arch = "arm"),
51394 stable(feature = "neon_intrinsics", since = "1.59.0")
51395)]
51396#[cfg_attr(
51397 target_arch = "arm",
51398 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51399)]
51400pub fn vreinterpret_p16_u16(a: uint16x4_t) -> poly16x4_t {
51401 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
51402 unsafe {
51403 let ret_val: poly16x4_t = transmute(a);
51404 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
51405 }
51406}
51407#[doc = "Vector reinterpret cast operation"]
51408#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u16)"]
51409#[inline]
51410#[cfg(target_endian = "little")]
51411#[target_feature(enable = "neon")]
51412#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51413#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51414#[cfg_attr(
51415 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51416 assert_instr(nop)
51417)]
51418#[cfg_attr(
51419 not(target_arch = "arm"),
51420 stable(feature = "neon_intrinsics", since = "1.59.0")
51421)]
51422#[cfg_attr(
51423 target_arch = "arm",
51424 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51425)]
51426pub fn vreinterpretq_f32_u16(a: uint16x8_t) -> float32x4_t {
51427 unsafe { transmute(a) }
51428}
51429#[doc = "Vector reinterpret cast operation"]
51430#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u16)"]
51431#[inline]
51432#[cfg(target_endian = "big")]
51433#[target_feature(enable = "neon")]
51434#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51435#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51436#[cfg_attr(
51437 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51438 assert_instr(nop)
51439)]
51440#[cfg_attr(
51441 not(target_arch = "arm"),
51442 stable(feature = "neon_intrinsics", since = "1.59.0")
51443)]
51444#[cfg_attr(
51445 target_arch = "arm",
51446 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51447)]
51448pub fn vreinterpretq_f32_u16(a: uint16x8_t) -> float32x4_t {
51449 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51450 unsafe {
51451 let ret_val: float32x4_t = transmute(a);
51452 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
51453 }
51454}
51455#[doc = "Vector reinterpret cast operation"]
51456#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u16)"]
51457#[inline]
51458#[cfg(target_endian = "little")]
51459#[target_feature(enable = "neon")]
51460#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51461#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51462#[cfg_attr(
51463 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51464 assert_instr(nop)
51465)]
51466#[cfg_attr(
51467 not(target_arch = "arm"),
51468 stable(feature = "neon_intrinsics", since = "1.59.0")
51469)]
51470#[cfg_attr(
51471 target_arch = "arm",
51472 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51473)]
51474pub fn vreinterpretq_s8_u16(a: uint16x8_t) -> int8x16_t {
51475 unsafe { transmute(a) }
51476}
51477#[doc = "Vector reinterpret cast operation"]
51478#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u16)"]
51479#[inline]
51480#[cfg(target_endian = "big")]
51481#[target_feature(enable = "neon")]
51482#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51483#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51484#[cfg_attr(
51485 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51486 assert_instr(nop)
51487)]
51488#[cfg_attr(
51489 not(target_arch = "arm"),
51490 stable(feature = "neon_intrinsics", since = "1.59.0")
51491)]
51492#[cfg_attr(
51493 target_arch = "arm",
51494 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51495)]
51496pub fn vreinterpretq_s8_u16(a: uint16x8_t) -> int8x16_t {
51497 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51498 unsafe {
51499 let ret_val: int8x16_t = transmute(a);
51500 simd_shuffle!(
51501 ret_val,
51502 ret_val,
51503 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
51504 )
51505 }
51506}
51507#[doc = "Vector reinterpret cast operation"]
51508#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u16)"]
51509#[inline]
51510#[cfg(target_endian = "little")]
51511#[target_feature(enable = "neon")]
51512#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51513#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51514#[cfg_attr(
51515 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51516 assert_instr(nop)
51517)]
51518#[cfg_attr(
51519 not(target_arch = "arm"),
51520 stable(feature = "neon_intrinsics", since = "1.59.0")
51521)]
51522#[cfg_attr(
51523 target_arch = "arm",
51524 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51525)]
51526pub fn vreinterpretq_s16_u16(a: uint16x8_t) -> int16x8_t {
51527 unsafe { transmute(a) }
51528}
51529#[doc = "Vector reinterpret cast operation"]
51530#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u16)"]
51531#[inline]
51532#[cfg(target_endian = "big")]
51533#[target_feature(enable = "neon")]
51534#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51535#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51536#[cfg_attr(
51537 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51538 assert_instr(nop)
51539)]
51540#[cfg_attr(
51541 not(target_arch = "arm"),
51542 stable(feature = "neon_intrinsics", since = "1.59.0")
51543)]
51544#[cfg_attr(
51545 target_arch = "arm",
51546 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51547)]
51548pub fn vreinterpretq_s16_u16(a: uint16x8_t) -> int16x8_t {
51549 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51550 unsafe {
51551 let ret_val: int16x8_t = transmute(a);
51552 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
51553 }
51554}
51555#[doc = "Vector reinterpret cast operation"]
51556#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u16)"]
51557#[inline]
51558#[cfg(target_endian = "little")]
51559#[target_feature(enable = "neon")]
51560#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51561#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51562#[cfg_attr(
51563 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51564 assert_instr(nop)
51565)]
51566#[cfg_attr(
51567 not(target_arch = "arm"),
51568 stable(feature = "neon_intrinsics", since = "1.59.0")
51569)]
51570#[cfg_attr(
51571 target_arch = "arm",
51572 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51573)]
51574pub fn vreinterpretq_s32_u16(a: uint16x8_t) -> int32x4_t {
51575 unsafe { transmute(a) }
51576}
51577#[doc = "Vector reinterpret cast operation"]
51578#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u16)"]
51579#[inline]
51580#[cfg(target_endian = "big")]
51581#[target_feature(enable = "neon")]
51582#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51583#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51584#[cfg_attr(
51585 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51586 assert_instr(nop)
51587)]
51588#[cfg_attr(
51589 not(target_arch = "arm"),
51590 stable(feature = "neon_intrinsics", since = "1.59.0")
51591)]
51592#[cfg_attr(
51593 target_arch = "arm",
51594 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51595)]
51596pub fn vreinterpretq_s32_u16(a: uint16x8_t) -> int32x4_t {
51597 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51598 unsafe {
51599 let ret_val: int32x4_t = transmute(a);
51600 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
51601 }
51602}
51603#[doc = "Vector reinterpret cast operation"]
51604#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u16)"]
51605#[inline]
51606#[cfg(target_endian = "little")]
51607#[target_feature(enable = "neon")]
51608#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51609#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51610#[cfg_attr(
51611 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51612 assert_instr(nop)
51613)]
51614#[cfg_attr(
51615 not(target_arch = "arm"),
51616 stable(feature = "neon_intrinsics", since = "1.59.0")
51617)]
51618#[cfg_attr(
51619 target_arch = "arm",
51620 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51621)]
51622pub fn vreinterpretq_s64_u16(a: uint16x8_t) -> int64x2_t {
51623 unsafe { transmute(a) }
51624}
51625#[doc = "Vector reinterpret cast operation"]
51626#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u16)"]
51627#[inline]
51628#[cfg(target_endian = "big")]
51629#[target_feature(enable = "neon")]
51630#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51631#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51632#[cfg_attr(
51633 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51634 assert_instr(nop)
51635)]
51636#[cfg_attr(
51637 not(target_arch = "arm"),
51638 stable(feature = "neon_intrinsics", since = "1.59.0")
51639)]
51640#[cfg_attr(
51641 target_arch = "arm",
51642 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51643)]
51644pub fn vreinterpretq_s64_u16(a: uint16x8_t) -> int64x2_t {
51645 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51646 unsafe {
51647 let ret_val: int64x2_t = transmute(a);
51648 simd_shuffle!(ret_val, ret_val, [1, 0])
51649 }
51650}
51651#[doc = "Vector reinterpret cast operation"]
51652#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u16)"]
51653#[inline]
51654#[cfg(target_endian = "little")]
51655#[target_feature(enable = "neon")]
51656#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51657#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51658#[cfg_attr(
51659 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51660 assert_instr(nop)
51661)]
51662#[cfg_attr(
51663 not(target_arch = "arm"),
51664 stable(feature = "neon_intrinsics", since = "1.59.0")
51665)]
51666#[cfg_attr(
51667 target_arch = "arm",
51668 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51669)]
51670pub fn vreinterpretq_u8_u16(a: uint16x8_t) -> uint8x16_t {
51671 unsafe { transmute(a) }
51672}
51673#[doc = "Vector reinterpret cast operation"]
51674#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u16)"]
51675#[inline]
51676#[cfg(target_endian = "big")]
51677#[target_feature(enable = "neon")]
51678#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51679#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51680#[cfg_attr(
51681 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51682 assert_instr(nop)
51683)]
51684#[cfg_attr(
51685 not(target_arch = "arm"),
51686 stable(feature = "neon_intrinsics", since = "1.59.0")
51687)]
51688#[cfg_attr(
51689 target_arch = "arm",
51690 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51691)]
51692pub fn vreinterpretq_u8_u16(a: uint16x8_t) -> uint8x16_t {
51693 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51694 unsafe {
51695 let ret_val: uint8x16_t = transmute(a);
51696 simd_shuffle!(
51697 ret_val,
51698 ret_val,
51699 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
51700 )
51701 }
51702}
51703#[doc = "Vector reinterpret cast operation"]
51704#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u16)"]
51705#[inline]
51706#[cfg(target_endian = "little")]
51707#[target_feature(enable = "neon")]
51708#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51709#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51710#[cfg_attr(
51711 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51712 assert_instr(nop)
51713)]
51714#[cfg_attr(
51715 not(target_arch = "arm"),
51716 stable(feature = "neon_intrinsics", since = "1.59.0")
51717)]
51718#[cfg_attr(
51719 target_arch = "arm",
51720 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51721)]
51722pub fn vreinterpretq_u32_u16(a: uint16x8_t) -> uint32x4_t {
51723 unsafe { transmute(a) }
51724}
51725#[doc = "Vector reinterpret cast operation"]
51726#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u16)"]
51727#[inline]
51728#[cfg(target_endian = "big")]
51729#[target_feature(enable = "neon")]
51730#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51731#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51732#[cfg_attr(
51733 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51734 assert_instr(nop)
51735)]
51736#[cfg_attr(
51737 not(target_arch = "arm"),
51738 stable(feature = "neon_intrinsics", since = "1.59.0")
51739)]
51740#[cfg_attr(
51741 target_arch = "arm",
51742 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51743)]
51744pub fn vreinterpretq_u32_u16(a: uint16x8_t) -> uint32x4_t {
51745 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51746 unsafe {
51747 let ret_val: uint32x4_t = transmute(a);
51748 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
51749 }
51750}
51751#[doc = "Vector reinterpret cast operation"]
51752#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u16)"]
51753#[inline]
51754#[cfg(target_endian = "little")]
51755#[target_feature(enable = "neon")]
51756#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51757#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51758#[cfg_attr(
51759 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51760 assert_instr(nop)
51761)]
51762#[cfg_attr(
51763 not(target_arch = "arm"),
51764 stable(feature = "neon_intrinsics", since = "1.59.0")
51765)]
51766#[cfg_attr(
51767 target_arch = "arm",
51768 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51769)]
51770pub fn vreinterpretq_u64_u16(a: uint16x8_t) -> uint64x2_t {
51771 unsafe { transmute(a) }
51772}
51773#[doc = "Vector reinterpret cast operation"]
51774#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u16)"]
51775#[inline]
51776#[cfg(target_endian = "big")]
51777#[target_feature(enable = "neon")]
51778#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51779#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51780#[cfg_attr(
51781 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51782 assert_instr(nop)
51783)]
51784#[cfg_attr(
51785 not(target_arch = "arm"),
51786 stable(feature = "neon_intrinsics", since = "1.59.0")
51787)]
51788#[cfg_attr(
51789 target_arch = "arm",
51790 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51791)]
51792pub fn vreinterpretq_u64_u16(a: uint16x8_t) -> uint64x2_t {
51793 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51794 unsafe {
51795 let ret_val: uint64x2_t = transmute(a);
51796 simd_shuffle!(ret_val, ret_val, [1, 0])
51797 }
51798}
51799#[doc = "Vector reinterpret cast operation"]
51800#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u16)"]
51801#[inline]
51802#[cfg(target_endian = "little")]
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))]
51806#[cfg_attr(
51807 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51808 assert_instr(nop)
51809)]
51810#[cfg_attr(
51811 not(target_arch = "arm"),
51812 stable(feature = "neon_intrinsics", since = "1.59.0")
51813)]
51814#[cfg_attr(
51815 target_arch = "arm",
51816 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51817)]
51818pub fn vreinterpretq_p8_u16(a: uint16x8_t) -> poly8x16_t {
51819 unsafe { transmute(a) }
51820}
51821#[doc = "Vector reinterpret cast operation"]
51822#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u16)"]
51823#[inline]
51824#[cfg(target_endian = "big")]
51825#[target_feature(enable = "neon")]
51826#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51827#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51828#[cfg_attr(
51829 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51830 assert_instr(nop)
51831)]
51832#[cfg_attr(
51833 not(target_arch = "arm"),
51834 stable(feature = "neon_intrinsics", since = "1.59.0")
51835)]
51836#[cfg_attr(
51837 target_arch = "arm",
51838 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51839)]
51840pub fn vreinterpretq_p8_u16(a: uint16x8_t) -> poly8x16_t {
51841 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51842 unsafe {
51843 let ret_val: poly8x16_t = transmute(a);
51844 simd_shuffle!(
51845 ret_val,
51846 ret_val,
51847 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
51848 )
51849 }
51850}
51851#[doc = "Vector reinterpret cast operation"]
51852#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u16)"]
51853#[inline]
51854#[cfg(target_endian = "little")]
51855#[target_feature(enable = "neon")]
51856#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51857#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51858#[cfg_attr(
51859 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51860 assert_instr(nop)
51861)]
51862#[cfg_attr(
51863 not(target_arch = "arm"),
51864 stable(feature = "neon_intrinsics", since = "1.59.0")
51865)]
51866#[cfg_attr(
51867 target_arch = "arm",
51868 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51869)]
51870pub fn vreinterpretq_p16_u16(a: uint16x8_t) -> poly16x8_t {
51871 unsafe { transmute(a) }
51872}
51873#[doc = "Vector reinterpret cast operation"]
51874#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u16)"]
51875#[inline]
51876#[cfg(target_endian = "big")]
51877#[target_feature(enable = "neon")]
51878#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51879#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51880#[cfg_attr(
51881 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51882 assert_instr(nop)
51883)]
51884#[cfg_attr(
51885 not(target_arch = "arm"),
51886 stable(feature = "neon_intrinsics", since = "1.59.0")
51887)]
51888#[cfg_attr(
51889 target_arch = "arm",
51890 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51891)]
51892pub fn vreinterpretq_p16_u16(a: uint16x8_t) -> poly16x8_t {
51893 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51894 unsafe {
51895 let ret_val: poly16x8_t = transmute(a);
51896 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
51897 }
51898}
51899#[doc = "Vector reinterpret cast operation"]
51900#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u32)"]
51901#[inline]
51902#[cfg(target_endian = "little")]
51903#[target_feature(enable = "neon")]
51904#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51905#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51906#[cfg_attr(
51907 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51908 assert_instr(nop)
51909)]
51910#[cfg_attr(
51911 not(target_arch = "arm"),
51912 stable(feature = "neon_intrinsics", since = "1.59.0")
51913)]
51914#[cfg_attr(
51915 target_arch = "arm",
51916 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51917)]
51918pub fn vreinterpret_f32_u32(a: uint32x2_t) -> float32x2_t {
51919 unsafe { transmute(a) }
51920}
51921#[doc = "Vector reinterpret cast operation"]
51922#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u32)"]
51923#[inline]
51924#[cfg(target_endian = "big")]
51925#[target_feature(enable = "neon")]
51926#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51927#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51928#[cfg_attr(
51929 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51930 assert_instr(nop)
51931)]
51932#[cfg_attr(
51933 not(target_arch = "arm"),
51934 stable(feature = "neon_intrinsics", since = "1.59.0")
51935)]
51936#[cfg_attr(
51937 target_arch = "arm",
51938 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51939)]
51940pub fn vreinterpret_f32_u32(a: uint32x2_t) -> float32x2_t {
51941 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
51942 unsafe {
51943 let ret_val: float32x2_t = transmute(a);
51944 simd_shuffle!(ret_val, ret_val, [1, 0])
51945 }
51946}
51947#[doc = "Vector reinterpret cast operation"]
51948#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u32)"]
51949#[inline]
51950#[cfg(target_endian = "little")]
51951#[target_feature(enable = "neon")]
51952#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51953#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51954#[cfg_attr(
51955 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51956 assert_instr(nop)
51957)]
51958#[cfg_attr(
51959 not(target_arch = "arm"),
51960 stable(feature = "neon_intrinsics", since = "1.59.0")
51961)]
51962#[cfg_attr(
51963 target_arch = "arm",
51964 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51965)]
51966pub fn vreinterpret_s8_u32(a: uint32x2_t) -> int8x8_t {
51967 unsafe { transmute(a) }
51968}
51969#[doc = "Vector reinterpret cast operation"]
51970#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u32)"]
51971#[inline]
51972#[cfg(target_endian = "big")]
51973#[target_feature(enable = "neon")]
51974#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51975#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51976#[cfg_attr(
51977 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51978 assert_instr(nop)
51979)]
51980#[cfg_attr(
51981 not(target_arch = "arm"),
51982 stable(feature = "neon_intrinsics", since = "1.59.0")
51983)]
51984#[cfg_attr(
51985 target_arch = "arm",
51986 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51987)]
51988pub fn vreinterpret_s8_u32(a: uint32x2_t) -> int8x8_t {
51989 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
51990 unsafe {
51991 let ret_val: int8x8_t = transmute(a);
51992 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
51993 }
51994}
51995#[doc = "Vector reinterpret cast operation"]
51996#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u32)"]
51997#[inline]
51998#[cfg(target_endian = "little")]
51999#[target_feature(enable = "neon")]
52000#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52001#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52002#[cfg_attr(
52003 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52004 assert_instr(nop)
52005)]
52006#[cfg_attr(
52007 not(target_arch = "arm"),
52008 stable(feature = "neon_intrinsics", since = "1.59.0")
52009)]
52010#[cfg_attr(
52011 target_arch = "arm",
52012 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52013)]
52014pub fn vreinterpret_s16_u32(a: uint32x2_t) -> int16x4_t {
52015 unsafe { transmute(a) }
52016}
52017#[doc = "Vector reinterpret cast operation"]
52018#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u32)"]
52019#[inline]
52020#[cfg(target_endian = "big")]
52021#[target_feature(enable = "neon")]
52022#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52023#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52024#[cfg_attr(
52025 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52026 assert_instr(nop)
52027)]
52028#[cfg_attr(
52029 not(target_arch = "arm"),
52030 stable(feature = "neon_intrinsics", since = "1.59.0")
52031)]
52032#[cfg_attr(
52033 target_arch = "arm",
52034 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52035)]
52036pub fn vreinterpret_s16_u32(a: uint32x2_t) -> int16x4_t {
52037 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
52038 unsafe {
52039 let ret_val: int16x4_t = transmute(a);
52040 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
52041 }
52042}
52043#[doc = "Vector reinterpret cast operation"]
52044#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u32)"]
52045#[inline]
52046#[cfg(target_endian = "little")]
52047#[target_feature(enable = "neon")]
52048#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52049#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52050#[cfg_attr(
52051 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52052 assert_instr(nop)
52053)]
52054#[cfg_attr(
52055 not(target_arch = "arm"),
52056 stable(feature = "neon_intrinsics", since = "1.59.0")
52057)]
52058#[cfg_attr(
52059 target_arch = "arm",
52060 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52061)]
52062pub fn vreinterpret_s32_u32(a: uint32x2_t) -> int32x2_t {
52063 unsafe { transmute(a) }
52064}
52065#[doc = "Vector reinterpret cast operation"]
52066#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u32)"]
52067#[inline]
52068#[cfg(target_endian = "big")]
52069#[target_feature(enable = "neon")]
52070#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52071#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52072#[cfg_attr(
52073 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52074 assert_instr(nop)
52075)]
52076#[cfg_attr(
52077 not(target_arch = "arm"),
52078 stable(feature = "neon_intrinsics", since = "1.59.0")
52079)]
52080#[cfg_attr(
52081 target_arch = "arm",
52082 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52083)]
52084pub fn vreinterpret_s32_u32(a: uint32x2_t) -> int32x2_t {
52085 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
52086 unsafe {
52087 let ret_val: int32x2_t = transmute(a);
52088 simd_shuffle!(ret_val, ret_val, [1, 0])
52089 }
52090}
52091#[doc = "Vector reinterpret cast operation"]
52092#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u32)"]
52093#[inline]
52094#[cfg(target_endian = "little")]
52095#[target_feature(enable = "neon")]
52096#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52097#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52098#[cfg_attr(
52099 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52100 assert_instr(nop)
52101)]
52102#[cfg_attr(
52103 not(target_arch = "arm"),
52104 stable(feature = "neon_intrinsics", since = "1.59.0")
52105)]
52106#[cfg_attr(
52107 target_arch = "arm",
52108 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52109)]
52110pub fn vreinterpret_s64_u32(a: uint32x2_t) -> int64x1_t {
52111 unsafe { transmute(a) }
52112}
52113#[doc = "Vector reinterpret cast operation"]
52114#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u32)"]
52115#[inline]
52116#[cfg(target_endian = "big")]
52117#[target_feature(enable = "neon")]
52118#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52119#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52120#[cfg_attr(
52121 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52122 assert_instr(nop)
52123)]
52124#[cfg_attr(
52125 not(target_arch = "arm"),
52126 stable(feature = "neon_intrinsics", since = "1.59.0")
52127)]
52128#[cfg_attr(
52129 target_arch = "arm",
52130 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52131)]
52132pub fn vreinterpret_s64_u32(a: uint32x2_t) -> int64x1_t {
52133 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
52134 unsafe { transmute(a) }
52135}
52136#[doc = "Vector reinterpret cast operation"]
52137#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u32)"]
52138#[inline]
52139#[cfg(target_endian = "little")]
52140#[target_feature(enable = "neon")]
52141#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52142#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52143#[cfg_attr(
52144 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52145 assert_instr(nop)
52146)]
52147#[cfg_attr(
52148 not(target_arch = "arm"),
52149 stable(feature = "neon_intrinsics", since = "1.59.0")
52150)]
52151#[cfg_attr(
52152 target_arch = "arm",
52153 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52154)]
52155pub fn vreinterpret_u8_u32(a: uint32x2_t) -> uint8x8_t {
52156 unsafe { transmute(a) }
52157}
52158#[doc = "Vector reinterpret cast operation"]
52159#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u32)"]
52160#[inline]
52161#[cfg(target_endian = "big")]
52162#[target_feature(enable = "neon")]
52163#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52164#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52165#[cfg_attr(
52166 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52167 assert_instr(nop)
52168)]
52169#[cfg_attr(
52170 not(target_arch = "arm"),
52171 stable(feature = "neon_intrinsics", since = "1.59.0")
52172)]
52173#[cfg_attr(
52174 target_arch = "arm",
52175 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52176)]
52177pub fn vreinterpret_u8_u32(a: uint32x2_t) -> uint8x8_t {
52178 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
52179 unsafe {
52180 let ret_val: uint8x8_t = transmute(a);
52181 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
52182 }
52183}
52184#[doc = "Vector reinterpret cast operation"]
52185#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u32)"]
52186#[inline]
52187#[cfg(target_endian = "little")]
52188#[target_feature(enable = "neon")]
52189#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52190#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52191#[cfg_attr(
52192 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52193 assert_instr(nop)
52194)]
52195#[cfg_attr(
52196 not(target_arch = "arm"),
52197 stable(feature = "neon_intrinsics", since = "1.59.0")
52198)]
52199#[cfg_attr(
52200 target_arch = "arm",
52201 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52202)]
52203pub fn vreinterpret_u16_u32(a: uint32x2_t) -> uint16x4_t {
52204 unsafe { transmute(a) }
52205}
52206#[doc = "Vector reinterpret cast operation"]
52207#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u32)"]
52208#[inline]
52209#[cfg(target_endian = "big")]
52210#[target_feature(enable = "neon")]
52211#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52212#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52213#[cfg_attr(
52214 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52215 assert_instr(nop)
52216)]
52217#[cfg_attr(
52218 not(target_arch = "arm"),
52219 stable(feature = "neon_intrinsics", since = "1.59.0")
52220)]
52221#[cfg_attr(
52222 target_arch = "arm",
52223 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52224)]
52225pub fn vreinterpret_u16_u32(a: uint32x2_t) -> uint16x4_t {
52226 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
52227 unsafe {
52228 let ret_val: uint16x4_t = transmute(a);
52229 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
52230 }
52231}
52232#[doc = "Vector reinterpret cast operation"]
52233#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u32)"]
52234#[inline]
52235#[cfg(target_endian = "little")]
52236#[target_feature(enable = "neon")]
52237#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52238#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52239#[cfg_attr(
52240 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52241 assert_instr(nop)
52242)]
52243#[cfg_attr(
52244 not(target_arch = "arm"),
52245 stable(feature = "neon_intrinsics", since = "1.59.0")
52246)]
52247#[cfg_attr(
52248 target_arch = "arm",
52249 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52250)]
52251pub fn vreinterpret_u64_u32(a: uint32x2_t) -> uint64x1_t {
52252 unsafe { transmute(a) }
52253}
52254#[doc = "Vector reinterpret cast operation"]
52255#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u32)"]
52256#[inline]
52257#[cfg(target_endian = "big")]
52258#[target_feature(enable = "neon")]
52259#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52260#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52261#[cfg_attr(
52262 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52263 assert_instr(nop)
52264)]
52265#[cfg_attr(
52266 not(target_arch = "arm"),
52267 stable(feature = "neon_intrinsics", since = "1.59.0")
52268)]
52269#[cfg_attr(
52270 target_arch = "arm",
52271 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52272)]
52273pub fn vreinterpret_u64_u32(a: uint32x2_t) -> uint64x1_t {
52274 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
52275 unsafe { transmute(a) }
52276}
52277#[doc = "Vector reinterpret cast operation"]
52278#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u32)"]
52279#[inline]
52280#[cfg(target_endian = "little")]
52281#[target_feature(enable = "neon")]
52282#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52283#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52284#[cfg_attr(
52285 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52286 assert_instr(nop)
52287)]
52288#[cfg_attr(
52289 not(target_arch = "arm"),
52290 stable(feature = "neon_intrinsics", since = "1.59.0")
52291)]
52292#[cfg_attr(
52293 target_arch = "arm",
52294 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52295)]
52296pub fn vreinterpret_p8_u32(a: uint32x2_t) -> poly8x8_t {
52297 unsafe { transmute(a) }
52298}
52299#[doc = "Vector reinterpret cast operation"]
52300#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u32)"]
52301#[inline]
52302#[cfg(target_endian = "big")]
52303#[target_feature(enable = "neon")]
52304#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52305#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52306#[cfg_attr(
52307 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52308 assert_instr(nop)
52309)]
52310#[cfg_attr(
52311 not(target_arch = "arm"),
52312 stable(feature = "neon_intrinsics", since = "1.59.0")
52313)]
52314#[cfg_attr(
52315 target_arch = "arm",
52316 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52317)]
52318pub fn vreinterpret_p8_u32(a: uint32x2_t) -> poly8x8_t {
52319 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
52320 unsafe {
52321 let ret_val: poly8x8_t = transmute(a);
52322 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
52323 }
52324}
52325#[doc = "Vector reinterpret cast operation"]
52326#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u32)"]
52327#[inline]
52328#[cfg(target_endian = "little")]
52329#[target_feature(enable = "neon")]
52330#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52331#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52332#[cfg_attr(
52333 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52334 assert_instr(nop)
52335)]
52336#[cfg_attr(
52337 not(target_arch = "arm"),
52338 stable(feature = "neon_intrinsics", since = "1.59.0")
52339)]
52340#[cfg_attr(
52341 target_arch = "arm",
52342 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52343)]
52344pub fn vreinterpret_p16_u32(a: uint32x2_t) -> poly16x4_t {
52345 unsafe { transmute(a) }
52346}
52347#[doc = "Vector reinterpret cast operation"]
52348#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u32)"]
52349#[inline]
52350#[cfg(target_endian = "big")]
52351#[target_feature(enable = "neon")]
52352#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52353#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52354#[cfg_attr(
52355 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52356 assert_instr(nop)
52357)]
52358#[cfg_attr(
52359 not(target_arch = "arm"),
52360 stable(feature = "neon_intrinsics", since = "1.59.0")
52361)]
52362#[cfg_attr(
52363 target_arch = "arm",
52364 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52365)]
52366pub fn vreinterpret_p16_u32(a: uint32x2_t) -> poly16x4_t {
52367 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
52368 unsafe {
52369 let ret_val: poly16x4_t = transmute(a);
52370 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
52371 }
52372}
52373#[doc = "Vector reinterpret cast operation"]
52374#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u32)"]
52375#[inline]
52376#[cfg(target_endian = "little")]
52377#[target_feature(enable = "neon")]
52378#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52379#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52380#[cfg_attr(
52381 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52382 assert_instr(nop)
52383)]
52384#[cfg_attr(
52385 not(target_arch = "arm"),
52386 stable(feature = "neon_intrinsics", since = "1.59.0")
52387)]
52388#[cfg_attr(
52389 target_arch = "arm",
52390 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52391)]
52392pub fn vreinterpretq_f32_u32(a: uint32x4_t) -> float32x4_t {
52393 unsafe { transmute(a) }
52394}
52395#[doc = "Vector reinterpret cast operation"]
52396#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u32)"]
52397#[inline]
52398#[cfg(target_endian = "big")]
52399#[target_feature(enable = "neon")]
52400#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52401#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52402#[cfg_attr(
52403 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52404 assert_instr(nop)
52405)]
52406#[cfg_attr(
52407 not(target_arch = "arm"),
52408 stable(feature = "neon_intrinsics", since = "1.59.0")
52409)]
52410#[cfg_attr(
52411 target_arch = "arm",
52412 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52413)]
52414pub fn vreinterpretq_f32_u32(a: uint32x4_t) -> float32x4_t {
52415 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52416 unsafe {
52417 let ret_val: float32x4_t = transmute(a);
52418 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
52419 }
52420}
52421#[doc = "Vector reinterpret cast operation"]
52422#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u32)"]
52423#[inline]
52424#[cfg(target_endian = "little")]
52425#[target_feature(enable = "neon")]
52426#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52427#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52428#[cfg_attr(
52429 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52430 assert_instr(nop)
52431)]
52432#[cfg_attr(
52433 not(target_arch = "arm"),
52434 stable(feature = "neon_intrinsics", since = "1.59.0")
52435)]
52436#[cfg_attr(
52437 target_arch = "arm",
52438 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52439)]
52440pub fn vreinterpretq_s8_u32(a: uint32x4_t) -> int8x16_t {
52441 unsafe { transmute(a) }
52442}
52443#[doc = "Vector reinterpret cast operation"]
52444#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u32)"]
52445#[inline]
52446#[cfg(target_endian = "big")]
52447#[target_feature(enable = "neon")]
52448#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52449#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52450#[cfg_attr(
52451 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52452 assert_instr(nop)
52453)]
52454#[cfg_attr(
52455 not(target_arch = "arm"),
52456 stable(feature = "neon_intrinsics", since = "1.59.0")
52457)]
52458#[cfg_attr(
52459 target_arch = "arm",
52460 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52461)]
52462pub fn vreinterpretq_s8_u32(a: uint32x4_t) -> int8x16_t {
52463 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52464 unsafe {
52465 let ret_val: int8x16_t = transmute(a);
52466 simd_shuffle!(
52467 ret_val,
52468 ret_val,
52469 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
52470 )
52471 }
52472}
52473#[doc = "Vector reinterpret cast operation"]
52474#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u32)"]
52475#[inline]
52476#[cfg(target_endian = "little")]
52477#[target_feature(enable = "neon")]
52478#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52479#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52480#[cfg_attr(
52481 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52482 assert_instr(nop)
52483)]
52484#[cfg_attr(
52485 not(target_arch = "arm"),
52486 stable(feature = "neon_intrinsics", since = "1.59.0")
52487)]
52488#[cfg_attr(
52489 target_arch = "arm",
52490 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52491)]
52492pub fn vreinterpretq_s16_u32(a: uint32x4_t) -> int16x8_t {
52493 unsafe { transmute(a) }
52494}
52495#[doc = "Vector reinterpret cast operation"]
52496#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u32)"]
52497#[inline]
52498#[cfg(target_endian = "big")]
52499#[target_feature(enable = "neon")]
52500#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52501#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52502#[cfg_attr(
52503 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52504 assert_instr(nop)
52505)]
52506#[cfg_attr(
52507 not(target_arch = "arm"),
52508 stable(feature = "neon_intrinsics", since = "1.59.0")
52509)]
52510#[cfg_attr(
52511 target_arch = "arm",
52512 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52513)]
52514pub fn vreinterpretq_s16_u32(a: uint32x4_t) -> int16x8_t {
52515 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52516 unsafe {
52517 let ret_val: int16x8_t = transmute(a);
52518 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
52519 }
52520}
52521#[doc = "Vector reinterpret cast operation"]
52522#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u32)"]
52523#[inline]
52524#[cfg(target_endian = "little")]
52525#[target_feature(enable = "neon")]
52526#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52527#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52528#[cfg_attr(
52529 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52530 assert_instr(nop)
52531)]
52532#[cfg_attr(
52533 not(target_arch = "arm"),
52534 stable(feature = "neon_intrinsics", since = "1.59.0")
52535)]
52536#[cfg_attr(
52537 target_arch = "arm",
52538 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52539)]
52540pub fn vreinterpretq_s32_u32(a: uint32x4_t) -> int32x4_t {
52541 unsafe { transmute(a) }
52542}
52543#[doc = "Vector reinterpret cast operation"]
52544#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u32)"]
52545#[inline]
52546#[cfg(target_endian = "big")]
52547#[target_feature(enable = "neon")]
52548#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52549#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52550#[cfg_attr(
52551 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52552 assert_instr(nop)
52553)]
52554#[cfg_attr(
52555 not(target_arch = "arm"),
52556 stable(feature = "neon_intrinsics", since = "1.59.0")
52557)]
52558#[cfg_attr(
52559 target_arch = "arm",
52560 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52561)]
52562pub fn vreinterpretq_s32_u32(a: uint32x4_t) -> int32x4_t {
52563 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52564 unsafe {
52565 let ret_val: int32x4_t = transmute(a);
52566 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
52567 }
52568}
52569#[doc = "Vector reinterpret cast operation"]
52570#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u32)"]
52571#[inline]
52572#[cfg(target_endian = "little")]
52573#[target_feature(enable = "neon")]
52574#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52575#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52576#[cfg_attr(
52577 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52578 assert_instr(nop)
52579)]
52580#[cfg_attr(
52581 not(target_arch = "arm"),
52582 stable(feature = "neon_intrinsics", since = "1.59.0")
52583)]
52584#[cfg_attr(
52585 target_arch = "arm",
52586 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52587)]
52588pub fn vreinterpretq_s64_u32(a: uint32x4_t) -> int64x2_t {
52589 unsafe { transmute(a) }
52590}
52591#[doc = "Vector reinterpret cast operation"]
52592#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u32)"]
52593#[inline]
52594#[cfg(target_endian = "big")]
52595#[target_feature(enable = "neon")]
52596#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52597#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52598#[cfg_attr(
52599 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52600 assert_instr(nop)
52601)]
52602#[cfg_attr(
52603 not(target_arch = "arm"),
52604 stable(feature = "neon_intrinsics", since = "1.59.0")
52605)]
52606#[cfg_attr(
52607 target_arch = "arm",
52608 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52609)]
52610pub fn vreinterpretq_s64_u32(a: uint32x4_t) -> int64x2_t {
52611 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52612 unsafe {
52613 let ret_val: int64x2_t = transmute(a);
52614 simd_shuffle!(ret_val, ret_val, [1, 0])
52615 }
52616}
52617#[doc = "Vector reinterpret cast operation"]
52618#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u32)"]
52619#[inline]
52620#[cfg(target_endian = "little")]
52621#[target_feature(enable = "neon")]
52622#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52623#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52624#[cfg_attr(
52625 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52626 assert_instr(nop)
52627)]
52628#[cfg_attr(
52629 not(target_arch = "arm"),
52630 stable(feature = "neon_intrinsics", since = "1.59.0")
52631)]
52632#[cfg_attr(
52633 target_arch = "arm",
52634 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52635)]
52636pub fn vreinterpretq_u8_u32(a: uint32x4_t) -> uint8x16_t {
52637 unsafe { transmute(a) }
52638}
52639#[doc = "Vector reinterpret cast operation"]
52640#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u32)"]
52641#[inline]
52642#[cfg(target_endian = "big")]
52643#[target_feature(enable = "neon")]
52644#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52645#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52646#[cfg_attr(
52647 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52648 assert_instr(nop)
52649)]
52650#[cfg_attr(
52651 not(target_arch = "arm"),
52652 stable(feature = "neon_intrinsics", since = "1.59.0")
52653)]
52654#[cfg_attr(
52655 target_arch = "arm",
52656 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52657)]
52658pub fn vreinterpretq_u8_u32(a: uint32x4_t) -> uint8x16_t {
52659 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52660 unsafe {
52661 let ret_val: uint8x16_t = transmute(a);
52662 simd_shuffle!(
52663 ret_val,
52664 ret_val,
52665 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
52666 )
52667 }
52668}
52669#[doc = "Vector reinterpret cast operation"]
52670#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u32)"]
52671#[inline]
52672#[cfg(target_endian = "little")]
52673#[target_feature(enable = "neon")]
52674#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52675#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52676#[cfg_attr(
52677 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52678 assert_instr(nop)
52679)]
52680#[cfg_attr(
52681 not(target_arch = "arm"),
52682 stable(feature = "neon_intrinsics", since = "1.59.0")
52683)]
52684#[cfg_attr(
52685 target_arch = "arm",
52686 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52687)]
52688pub fn vreinterpretq_u16_u32(a: uint32x4_t) -> uint16x8_t {
52689 unsafe { transmute(a) }
52690}
52691#[doc = "Vector reinterpret cast operation"]
52692#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u32)"]
52693#[inline]
52694#[cfg(target_endian = "big")]
52695#[target_feature(enable = "neon")]
52696#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52697#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52698#[cfg_attr(
52699 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52700 assert_instr(nop)
52701)]
52702#[cfg_attr(
52703 not(target_arch = "arm"),
52704 stable(feature = "neon_intrinsics", since = "1.59.0")
52705)]
52706#[cfg_attr(
52707 target_arch = "arm",
52708 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52709)]
52710pub fn vreinterpretq_u16_u32(a: uint32x4_t) -> uint16x8_t {
52711 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52712 unsafe {
52713 let ret_val: uint16x8_t = transmute(a);
52714 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
52715 }
52716}
52717#[doc = "Vector reinterpret cast operation"]
52718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u32)"]
52719#[inline]
52720#[cfg(target_endian = "little")]
52721#[target_feature(enable = "neon")]
52722#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52723#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52724#[cfg_attr(
52725 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52726 assert_instr(nop)
52727)]
52728#[cfg_attr(
52729 not(target_arch = "arm"),
52730 stable(feature = "neon_intrinsics", since = "1.59.0")
52731)]
52732#[cfg_attr(
52733 target_arch = "arm",
52734 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52735)]
52736pub fn vreinterpretq_u64_u32(a: uint32x4_t) -> uint64x2_t {
52737 unsafe { transmute(a) }
52738}
52739#[doc = "Vector reinterpret cast operation"]
52740#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u32)"]
52741#[inline]
52742#[cfg(target_endian = "big")]
52743#[target_feature(enable = "neon")]
52744#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52745#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52746#[cfg_attr(
52747 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52748 assert_instr(nop)
52749)]
52750#[cfg_attr(
52751 not(target_arch = "arm"),
52752 stable(feature = "neon_intrinsics", since = "1.59.0")
52753)]
52754#[cfg_attr(
52755 target_arch = "arm",
52756 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52757)]
52758pub fn vreinterpretq_u64_u32(a: uint32x4_t) -> uint64x2_t {
52759 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52760 unsafe {
52761 let ret_val: uint64x2_t = transmute(a);
52762 simd_shuffle!(ret_val, ret_val, [1, 0])
52763 }
52764}
52765#[doc = "Vector reinterpret cast operation"]
52766#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u32)"]
52767#[inline]
52768#[cfg(target_endian = "little")]
52769#[target_feature(enable = "neon")]
52770#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52771#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52772#[cfg_attr(
52773 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52774 assert_instr(nop)
52775)]
52776#[cfg_attr(
52777 not(target_arch = "arm"),
52778 stable(feature = "neon_intrinsics", since = "1.59.0")
52779)]
52780#[cfg_attr(
52781 target_arch = "arm",
52782 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52783)]
52784pub fn vreinterpretq_p8_u32(a: uint32x4_t) -> poly8x16_t {
52785 unsafe { transmute(a) }
52786}
52787#[doc = "Vector reinterpret cast operation"]
52788#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u32)"]
52789#[inline]
52790#[cfg(target_endian = "big")]
52791#[target_feature(enable = "neon")]
52792#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52793#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52794#[cfg_attr(
52795 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52796 assert_instr(nop)
52797)]
52798#[cfg_attr(
52799 not(target_arch = "arm"),
52800 stable(feature = "neon_intrinsics", since = "1.59.0")
52801)]
52802#[cfg_attr(
52803 target_arch = "arm",
52804 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52805)]
52806pub fn vreinterpretq_p8_u32(a: uint32x4_t) -> poly8x16_t {
52807 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52808 unsafe {
52809 let ret_val: poly8x16_t = transmute(a);
52810 simd_shuffle!(
52811 ret_val,
52812 ret_val,
52813 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
52814 )
52815 }
52816}
52817#[doc = "Vector reinterpret cast operation"]
52818#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u32)"]
52819#[inline]
52820#[cfg(target_endian = "little")]
52821#[target_feature(enable = "neon")]
52822#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52823#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52824#[cfg_attr(
52825 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52826 assert_instr(nop)
52827)]
52828#[cfg_attr(
52829 not(target_arch = "arm"),
52830 stable(feature = "neon_intrinsics", since = "1.59.0")
52831)]
52832#[cfg_attr(
52833 target_arch = "arm",
52834 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52835)]
52836pub fn vreinterpretq_p16_u32(a: uint32x4_t) -> poly16x8_t {
52837 unsafe { transmute(a) }
52838}
52839#[doc = "Vector reinterpret cast operation"]
52840#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u32)"]
52841#[inline]
52842#[cfg(target_endian = "big")]
52843#[target_feature(enable = "neon")]
52844#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52845#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52846#[cfg_attr(
52847 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52848 assert_instr(nop)
52849)]
52850#[cfg_attr(
52851 not(target_arch = "arm"),
52852 stable(feature = "neon_intrinsics", since = "1.59.0")
52853)]
52854#[cfg_attr(
52855 target_arch = "arm",
52856 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52857)]
52858pub fn vreinterpretq_p16_u32(a: uint32x4_t) -> poly16x8_t {
52859 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52860 unsafe {
52861 let ret_val: poly16x8_t = transmute(a);
52862 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
52863 }
52864}
52865#[doc = "Vector reinterpret cast operation"]
52866#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u64)"]
52867#[inline]
52868#[cfg(target_endian = "little")]
52869#[target_feature(enable = "neon")]
52870#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52871#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52872#[cfg_attr(
52873 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52874 assert_instr(nop)
52875)]
52876#[cfg_attr(
52877 not(target_arch = "arm"),
52878 stable(feature = "neon_intrinsics", since = "1.59.0")
52879)]
52880#[cfg_attr(
52881 target_arch = "arm",
52882 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52883)]
52884pub fn vreinterpret_f32_u64(a: uint64x1_t) -> float32x2_t {
52885 unsafe { transmute(a) }
52886}
52887#[doc = "Vector reinterpret cast operation"]
52888#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u64)"]
52889#[inline]
52890#[cfg(target_endian = "big")]
52891#[target_feature(enable = "neon")]
52892#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52893#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52894#[cfg_attr(
52895 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52896 assert_instr(nop)
52897)]
52898#[cfg_attr(
52899 not(target_arch = "arm"),
52900 stable(feature = "neon_intrinsics", since = "1.59.0")
52901)]
52902#[cfg_attr(
52903 target_arch = "arm",
52904 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52905)]
52906pub fn vreinterpret_f32_u64(a: uint64x1_t) -> float32x2_t {
52907 unsafe {
52908 let ret_val: float32x2_t = transmute(a);
52909 simd_shuffle!(ret_val, ret_val, [1, 0])
52910 }
52911}
52912#[doc = "Vector reinterpret cast operation"]
52913#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u64)"]
52914#[inline]
52915#[cfg(target_endian = "little")]
52916#[target_feature(enable = "neon")]
52917#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52918#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52919#[cfg_attr(
52920 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52921 assert_instr(nop)
52922)]
52923#[cfg_attr(
52924 not(target_arch = "arm"),
52925 stable(feature = "neon_intrinsics", since = "1.59.0")
52926)]
52927#[cfg_attr(
52928 target_arch = "arm",
52929 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52930)]
52931pub fn vreinterpret_s8_u64(a: uint64x1_t) -> int8x8_t {
52932 unsafe { transmute(a) }
52933}
52934#[doc = "Vector reinterpret cast operation"]
52935#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u64)"]
52936#[inline]
52937#[cfg(target_endian = "big")]
52938#[target_feature(enable = "neon")]
52939#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52940#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52941#[cfg_attr(
52942 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52943 assert_instr(nop)
52944)]
52945#[cfg_attr(
52946 not(target_arch = "arm"),
52947 stable(feature = "neon_intrinsics", since = "1.59.0")
52948)]
52949#[cfg_attr(
52950 target_arch = "arm",
52951 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52952)]
52953pub fn vreinterpret_s8_u64(a: uint64x1_t) -> int8x8_t {
52954 unsafe {
52955 let ret_val: int8x8_t = transmute(a);
52956 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
52957 }
52958}
52959#[doc = "Vector reinterpret cast operation"]
52960#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u64)"]
52961#[inline]
52962#[cfg(target_endian = "little")]
52963#[target_feature(enable = "neon")]
52964#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52965#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52966#[cfg_attr(
52967 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52968 assert_instr(nop)
52969)]
52970#[cfg_attr(
52971 not(target_arch = "arm"),
52972 stable(feature = "neon_intrinsics", since = "1.59.0")
52973)]
52974#[cfg_attr(
52975 target_arch = "arm",
52976 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52977)]
52978pub fn vreinterpret_s16_u64(a: uint64x1_t) -> int16x4_t {
52979 unsafe { transmute(a) }
52980}
52981#[doc = "Vector reinterpret cast operation"]
52982#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u64)"]
52983#[inline]
52984#[cfg(target_endian = "big")]
52985#[target_feature(enable = "neon")]
52986#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52987#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52988#[cfg_attr(
52989 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52990 assert_instr(nop)
52991)]
52992#[cfg_attr(
52993 not(target_arch = "arm"),
52994 stable(feature = "neon_intrinsics", since = "1.59.0")
52995)]
52996#[cfg_attr(
52997 target_arch = "arm",
52998 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52999)]
53000pub fn vreinterpret_s16_u64(a: uint64x1_t) -> int16x4_t {
53001 unsafe {
53002 let ret_val: int16x4_t = transmute(a);
53003 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
53004 }
53005}
53006#[doc = "Vector reinterpret cast operation"]
53007#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u64)"]
53008#[inline]
53009#[cfg(target_endian = "little")]
53010#[target_feature(enable = "neon")]
53011#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53012#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53013#[cfg_attr(
53014 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53015 assert_instr(nop)
53016)]
53017#[cfg_attr(
53018 not(target_arch = "arm"),
53019 stable(feature = "neon_intrinsics", since = "1.59.0")
53020)]
53021#[cfg_attr(
53022 target_arch = "arm",
53023 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53024)]
53025pub fn vreinterpret_s32_u64(a: uint64x1_t) -> int32x2_t {
53026 unsafe { transmute(a) }
53027}
53028#[doc = "Vector reinterpret cast operation"]
53029#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u64)"]
53030#[inline]
53031#[cfg(target_endian = "big")]
53032#[target_feature(enable = "neon")]
53033#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53034#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53035#[cfg_attr(
53036 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53037 assert_instr(nop)
53038)]
53039#[cfg_attr(
53040 not(target_arch = "arm"),
53041 stable(feature = "neon_intrinsics", since = "1.59.0")
53042)]
53043#[cfg_attr(
53044 target_arch = "arm",
53045 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53046)]
53047pub fn vreinterpret_s32_u64(a: uint64x1_t) -> int32x2_t {
53048 unsafe {
53049 let ret_val: int32x2_t = transmute(a);
53050 simd_shuffle!(ret_val, ret_val, [1, 0])
53051 }
53052}
53053#[doc = "Vector reinterpret cast operation"]
53054#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u64)"]
53055#[inline]
53056#[target_feature(enable = "neon")]
53057#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53058#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53059#[cfg_attr(
53060 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53061 assert_instr(nop)
53062)]
53063#[cfg_attr(
53064 not(target_arch = "arm"),
53065 stable(feature = "neon_intrinsics", since = "1.59.0")
53066)]
53067#[cfg_attr(
53068 target_arch = "arm",
53069 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53070)]
53071pub fn vreinterpret_s64_u64(a: uint64x1_t) -> int64x1_t {
53072 unsafe { transmute(a) }
53073}
53074#[doc = "Vector reinterpret cast operation"]
53075#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u64)"]
53076#[inline]
53077#[cfg(target_endian = "little")]
53078#[target_feature(enable = "neon")]
53079#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53080#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53081#[cfg_attr(
53082 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53083 assert_instr(nop)
53084)]
53085#[cfg_attr(
53086 not(target_arch = "arm"),
53087 stable(feature = "neon_intrinsics", since = "1.59.0")
53088)]
53089#[cfg_attr(
53090 target_arch = "arm",
53091 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53092)]
53093pub fn vreinterpret_u8_u64(a: uint64x1_t) -> uint8x8_t {
53094 unsafe { transmute(a) }
53095}
53096#[doc = "Vector reinterpret cast operation"]
53097#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u64)"]
53098#[inline]
53099#[cfg(target_endian = "big")]
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(nop))]
53103#[cfg_attr(
53104 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53105 assert_instr(nop)
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 vreinterpret_u8_u64(a: uint64x1_t) -> uint8x8_t {
53116 unsafe {
53117 let ret_val: uint8x8_t = transmute(a);
53118 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
53119 }
53120}
53121#[doc = "Vector reinterpret cast operation"]
53122#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u64)"]
53123#[inline]
53124#[cfg(target_endian = "little")]
53125#[target_feature(enable = "neon")]
53126#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53127#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53128#[cfg_attr(
53129 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53130 assert_instr(nop)
53131)]
53132#[cfg_attr(
53133 not(target_arch = "arm"),
53134 stable(feature = "neon_intrinsics", since = "1.59.0")
53135)]
53136#[cfg_attr(
53137 target_arch = "arm",
53138 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53139)]
53140pub fn vreinterpret_u16_u64(a: uint64x1_t) -> uint16x4_t {
53141 unsafe { transmute(a) }
53142}
53143#[doc = "Vector reinterpret cast operation"]
53144#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u64)"]
53145#[inline]
53146#[cfg(target_endian = "big")]
53147#[target_feature(enable = "neon")]
53148#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53149#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53150#[cfg_attr(
53151 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53152 assert_instr(nop)
53153)]
53154#[cfg_attr(
53155 not(target_arch = "arm"),
53156 stable(feature = "neon_intrinsics", since = "1.59.0")
53157)]
53158#[cfg_attr(
53159 target_arch = "arm",
53160 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53161)]
53162pub fn vreinterpret_u16_u64(a: uint64x1_t) -> uint16x4_t {
53163 unsafe {
53164 let ret_val: uint16x4_t = transmute(a);
53165 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
53166 }
53167}
53168#[doc = "Vector reinterpret cast operation"]
53169#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u64)"]
53170#[inline]
53171#[cfg(target_endian = "little")]
53172#[target_feature(enable = "neon")]
53173#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53174#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53175#[cfg_attr(
53176 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53177 assert_instr(nop)
53178)]
53179#[cfg_attr(
53180 not(target_arch = "arm"),
53181 stable(feature = "neon_intrinsics", since = "1.59.0")
53182)]
53183#[cfg_attr(
53184 target_arch = "arm",
53185 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53186)]
53187pub fn vreinterpret_u32_u64(a: uint64x1_t) -> uint32x2_t {
53188 unsafe { transmute(a) }
53189}
53190#[doc = "Vector reinterpret cast operation"]
53191#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u64)"]
53192#[inline]
53193#[cfg(target_endian = "big")]
53194#[target_feature(enable = "neon")]
53195#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53196#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53197#[cfg_attr(
53198 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53199 assert_instr(nop)
53200)]
53201#[cfg_attr(
53202 not(target_arch = "arm"),
53203 stable(feature = "neon_intrinsics", since = "1.59.0")
53204)]
53205#[cfg_attr(
53206 target_arch = "arm",
53207 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53208)]
53209pub fn vreinterpret_u32_u64(a: uint64x1_t) -> uint32x2_t {
53210 unsafe {
53211 let ret_val: uint32x2_t = transmute(a);
53212 simd_shuffle!(ret_val, ret_val, [1, 0])
53213 }
53214}
53215#[doc = "Vector reinterpret cast operation"]
53216#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u64)"]
53217#[inline]
53218#[cfg(target_endian = "little")]
53219#[target_feature(enable = "neon")]
53220#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53221#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53222#[cfg_attr(
53223 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53224 assert_instr(nop)
53225)]
53226#[cfg_attr(
53227 not(target_arch = "arm"),
53228 stable(feature = "neon_intrinsics", since = "1.59.0")
53229)]
53230#[cfg_attr(
53231 target_arch = "arm",
53232 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53233)]
53234pub fn vreinterpret_p8_u64(a: uint64x1_t) -> poly8x8_t {
53235 unsafe { transmute(a) }
53236}
53237#[doc = "Vector reinterpret cast operation"]
53238#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u64)"]
53239#[inline]
53240#[cfg(target_endian = "big")]
53241#[target_feature(enable = "neon")]
53242#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53243#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53244#[cfg_attr(
53245 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53246 assert_instr(nop)
53247)]
53248#[cfg_attr(
53249 not(target_arch = "arm"),
53250 stable(feature = "neon_intrinsics", since = "1.59.0")
53251)]
53252#[cfg_attr(
53253 target_arch = "arm",
53254 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53255)]
53256pub fn vreinterpret_p8_u64(a: uint64x1_t) -> poly8x8_t {
53257 unsafe {
53258 let ret_val: poly8x8_t = transmute(a);
53259 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
53260 }
53261}
53262#[doc = "Vector reinterpret cast operation"]
53263#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u64)"]
53264#[inline]
53265#[cfg(target_endian = "little")]
53266#[target_feature(enable = "neon")]
53267#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53268#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53269#[cfg_attr(
53270 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53271 assert_instr(nop)
53272)]
53273#[cfg_attr(
53274 not(target_arch = "arm"),
53275 stable(feature = "neon_intrinsics", since = "1.59.0")
53276)]
53277#[cfg_attr(
53278 target_arch = "arm",
53279 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53280)]
53281pub fn vreinterpret_p16_u64(a: uint64x1_t) -> poly16x4_t {
53282 unsafe { transmute(a) }
53283}
53284#[doc = "Vector reinterpret cast operation"]
53285#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u64)"]
53286#[inline]
53287#[cfg(target_endian = "big")]
53288#[target_feature(enable = "neon")]
53289#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53290#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53291#[cfg_attr(
53292 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53293 assert_instr(nop)
53294)]
53295#[cfg_attr(
53296 not(target_arch = "arm"),
53297 stable(feature = "neon_intrinsics", since = "1.59.0")
53298)]
53299#[cfg_attr(
53300 target_arch = "arm",
53301 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53302)]
53303pub fn vreinterpret_p16_u64(a: uint64x1_t) -> poly16x4_t {
53304 unsafe {
53305 let ret_val: poly16x4_t = transmute(a);
53306 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
53307 }
53308}
53309#[doc = "Vector reinterpret cast operation"]
53310#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u64)"]
53311#[inline]
53312#[cfg(target_endian = "little")]
53313#[target_feature(enable = "neon")]
53314#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53315#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53316#[cfg_attr(
53317 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53318 assert_instr(nop)
53319)]
53320#[cfg_attr(
53321 not(target_arch = "arm"),
53322 stable(feature = "neon_intrinsics", since = "1.59.0")
53323)]
53324#[cfg_attr(
53325 target_arch = "arm",
53326 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53327)]
53328pub fn vreinterpretq_f32_u64(a: uint64x2_t) -> float32x4_t {
53329 unsafe { transmute(a) }
53330}
53331#[doc = "Vector reinterpret cast operation"]
53332#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u64)"]
53333#[inline]
53334#[cfg(target_endian = "big")]
53335#[target_feature(enable = "neon")]
53336#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53337#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53338#[cfg_attr(
53339 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53340 assert_instr(nop)
53341)]
53342#[cfg_attr(
53343 not(target_arch = "arm"),
53344 stable(feature = "neon_intrinsics", since = "1.59.0")
53345)]
53346#[cfg_attr(
53347 target_arch = "arm",
53348 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53349)]
53350pub fn vreinterpretq_f32_u64(a: uint64x2_t) -> float32x4_t {
53351 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
53352 unsafe {
53353 let ret_val: float32x4_t = transmute(a);
53354 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
53355 }
53356}
53357#[doc = "Vector reinterpret cast operation"]
53358#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u64)"]
53359#[inline]
53360#[cfg(target_endian = "little")]
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(nop))]
53364#[cfg_attr(
53365 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53366 assert_instr(nop)
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 vreinterpretq_s8_u64(a: uint64x2_t) -> int8x16_t {
53377 unsafe { transmute(a) }
53378}
53379#[doc = "Vector reinterpret cast operation"]
53380#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u64)"]
53381#[inline]
53382#[cfg(target_endian = "big")]
53383#[target_feature(enable = "neon")]
53384#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53385#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53386#[cfg_attr(
53387 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53388 assert_instr(nop)
53389)]
53390#[cfg_attr(
53391 not(target_arch = "arm"),
53392 stable(feature = "neon_intrinsics", since = "1.59.0")
53393)]
53394#[cfg_attr(
53395 target_arch = "arm",
53396 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53397)]
53398pub fn vreinterpretq_s8_u64(a: uint64x2_t) -> int8x16_t {
53399 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
53400 unsafe {
53401 let ret_val: int8x16_t = transmute(a);
53402 simd_shuffle!(
53403 ret_val,
53404 ret_val,
53405 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
53406 )
53407 }
53408}
53409#[doc = "Vector reinterpret cast operation"]
53410#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u64)"]
53411#[inline]
53412#[cfg(target_endian = "little")]
53413#[target_feature(enable = "neon")]
53414#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53415#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53416#[cfg_attr(
53417 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53418 assert_instr(nop)
53419)]
53420#[cfg_attr(
53421 not(target_arch = "arm"),
53422 stable(feature = "neon_intrinsics", since = "1.59.0")
53423)]
53424#[cfg_attr(
53425 target_arch = "arm",
53426 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53427)]
53428pub fn vreinterpretq_s16_u64(a: uint64x2_t) -> int16x8_t {
53429 unsafe { transmute(a) }
53430}
53431#[doc = "Vector reinterpret cast operation"]
53432#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u64)"]
53433#[inline]
53434#[cfg(target_endian = "big")]
53435#[target_feature(enable = "neon")]
53436#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53437#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53438#[cfg_attr(
53439 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53440 assert_instr(nop)
53441)]
53442#[cfg_attr(
53443 not(target_arch = "arm"),
53444 stable(feature = "neon_intrinsics", since = "1.59.0")
53445)]
53446#[cfg_attr(
53447 target_arch = "arm",
53448 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53449)]
53450pub fn vreinterpretq_s16_u64(a: uint64x2_t) -> int16x8_t {
53451 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
53452 unsafe {
53453 let ret_val: int16x8_t = transmute(a);
53454 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
53455 }
53456}
53457#[doc = "Vector reinterpret cast operation"]
53458#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u64)"]
53459#[inline]
53460#[cfg(target_endian = "little")]
53461#[target_feature(enable = "neon")]
53462#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53463#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53464#[cfg_attr(
53465 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53466 assert_instr(nop)
53467)]
53468#[cfg_attr(
53469 not(target_arch = "arm"),
53470 stable(feature = "neon_intrinsics", since = "1.59.0")
53471)]
53472#[cfg_attr(
53473 target_arch = "arm",
53474 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53475)]
53476pub fn vreinterpretq_s32_u64(a: uint64x2_t) -> int32x4_t {
53477 unsafe { transmute(a) }
53478}
53479#[doc = "Vector reinterpret cast operation"]
53480#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u64)"]
53481#[inline]
53482#[cfg(target_endian = "big")]
53483#[target_feature(enable = "neon")]
53484#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53485#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53486#[cfg_attr(
53487 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53488 assert_instr(nop)
53489)]
53490#[cfg_attr(
53491 not(target_arch = "arm"),
53492 stable(feature = "neon_intrinsics", since = "1.59.0")
53493)]
53494#[cfg_attr(
53495 target_arch = "arm",
53496 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53497)]
53498pub fn vreinterpretq_s32_u64(a: uint64x2_t) -> int32x4_t {
53499 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
53500 unsafe {
53501 let ret_val: int32x4_t = transmute(a);
53502 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
53503 }
53504}
53505#[doc = "Vector reinterpret cast operation"]
53506#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u64)"]
53507#[inline]
53508#[cfg(target_endian = "little")]
53509#[target_feature(enable = "neon")]
53510#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53511#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53512#[cfg_attr(
53513 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53514 assert_instr(nop)
53515)]
53516#[cfg_attr(
53517 not(target_arch = "arm"),
53518 stable(feature = "neon_intrinsics", since = "1.59.0")
53519)]
53520#[cfg_attr(
53521 target_arch = "arm",
53522 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53523)]
53524pub fn vreinterpretq_s64_u64(a: uint64x2_t) -> int64x2_t {
53525 unsafe { transmute(a) }
53526}
53527#[doc = "Vector reinterpret cast operation"]
53528#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u64)"]
53529#[inline]
53530#[cfg(target_endian = "big")]
53531#[target_feature(enable = "neon")]
53532#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53533#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53534#[cfg_attr(
53535 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53536 assert_instr(nop)
53537)]
53538#[cfg_attr(
53539 not(target_arch = "arm"),
53540 stable(feature = "neon_intrinsics", since = "1.59.0")
53541)]
53542#[cfg_attr(
53543 target_arch = "arm",
53544 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53545)]
53546pub fn vreinterpretq_s64_u64(a: uint64x2_t) -> int64x2_t {
53547 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
53548 unsafe {
53549 let ret_val: int64x2_t = transmute(a);
53550 simd_shuffle!(ret_val, ret_val, [1, 0])
53551 }
53552}
53553#[doc = "Vector reinterpret cast operation"]
53554#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u64)"]
53555#[inline]
53556#[cfg(target_endian = "little")]
53557#[target_feature(enable = "neon")]
53558#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53559#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53560#[cfg_attr(
53561 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53562 assert_instr(nop)
53563)]
53564#[cfg_attr(
53565 not(target_arch = "arm"),
53566 stable(feature = "neon_intrinsics", since = "1.59.0")
53567)]
53568#[cfg_attr(
53569 target_arch = "arm",
53570 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53571)]
53572pub fn vreinterpretq_u8_u64(a: uint64x2_t) -> uint8x16_t {
53573 unsafe { transmute(a) }
53574}
53575#[doc = "Vector reinterpret cast operation"]
53576#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u64)"]
53577#[inline]
53578#[cfg(target_endian = "big")]
53579#[target_feature(enable = "neon")]
53580#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53581#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53582#[cfg_attr(
53583 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53584 assert_instr(nop)
53585)]
53586#[cfg_attr(
53587 not(target_arch = "arm"),
53588 stable(feature = "neon_intrinsics", since = "1.59.0")
53589)]
53590#[cfg_attr(
53591 target_arch = "arm",
53592 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53593)]
53594pub fn vreinterpretq_u8_u64(a: uint64x2_t) -> uint8x16_t {
53595 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
53596 unsafe {
53597 let ret_val: uint8x16_t = transmute(a);
53598 simd_shuffle!(
53599 ret_val,
53600 ret_val,
53601 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
53602 )
53603 }
53604}
53605#[doc = "Vector reinterpret cast operation"]
53606#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u64)"]
53607#[inline]
53608#[cfg(target_endian = "little")]
53609#[target_feature(enable = "neon")]
53610#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53611#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53612#[cfg_attr(
53613 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53614 assert_instr(nop)
53615)]
53616#[cfg_attr(
53617 not(target_arch = "arm"),
53618 stable(feature = "neon_intrinsics", since = "1.59.0")
53619)]
53620#[cfg_attr(
53621 target_arch = "arm",
53622 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53623)]
53624pub fn vreinterpretq_u16_u64(a: uint64x2_t) -> uint16x8_t {
53625 unsafe { transmute(a) }
53626}
53627#[doc = "Vector reinterpret cast operation"]
53628#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u64)"]
53629#[inline]
53630#[cfg(target_endian = "big")]
53631#[target_feature(enable = "neon")]
53632#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53633#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53634#[cfg_attr(
53635 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53636 assert_instr(nop)
53637)]
53638#[cfg_attr(
53639 not(target_arch = "arm"),
53640 stable(feature = "neon_intrinsics", since = "1.59.0")
53641)]
53642#[cfg_attr(
53643 target_arch = "arm",
53644 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53645)]
53646pub fn vreinterpretq_u16_u64(a: uint64x2_t) -> uint16x8_t {
53647 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
53648 unsafe {
53649 let ret_val: uint16x8_t = transmute(a);
53650 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
53651 }
53652}
53653#[doc = "Vector reinterpret cast operation"]
53654#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u64)"]
53655#[inline]
53656#[cfg(target_endian = "little")]
53657#[target_feature(enable = "neon")]
53658#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53659#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53660#[cfg_attr(
53661 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53662 assert_instr(nop)
53663)]
53664#[cfg_attr(
53665 not(target_arch = "arm"),
53666 stable(feature = "neon_intrinsics", since = "1.59.0")
53667)]
53668#[cfg_attr(
53669 target_arch = "arm",
53670 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53671)]
53672pub fn vreinterpretq_u32_u64(a: uint64x2_t) -> uint32x4_t {
53673 unsafe { transmute(a) }
53674}
53675#[doc = "Vector reinterpret cast operation"]
53676#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u64)"]
53677#[inline]
53678#[cfg(target_endian = "big")]
53679#[target_feature(enable = "neon")]
53680#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53681#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53682#[cfg_attr(
53683 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53684 assert_instr(nop)
53685)]
53686#[cfg_attr(
53687 not(target_arch = "arm"),
53688 stable(feature = "neon_intrinsics", since = "1.59.0")
53689)]
53690#[cfg_attr(
53691 target_arch = "arm",
53692 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53693)]
53694pub fn vreinterpretq_u32_u64(a: uint64x2_t) -> uint32x4_t {
53695 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
53696 unsafe {
53697 let ret_val: uint32x4_t = transmute(a);
53698 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
53699 }
53700}
53701#[doc = "Vector reinterpret cast operation"]
53702#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u64)"]
53703#[inline]
53704#[cfg(target_endian = "little")]
53705#[target_feature(enable = "neon")]
53706#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53707#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53708#[cfg_attr(
53709 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53710 assert_instr(nop)
53711)]
53712#[cfg_attr(
53713 not(target_arch = "arm"),
53714 stable(feature = "neon_intrinsics", since = "1.59.0")
53715)]
53716#[cfg_attr(
53717 target_arch = "arm",
53718 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53719)]
53720pub fn vreinterpretq_p8_u64(a: uint64x2_t) -> poly8x16_t {
53721 unsafe { transmute(a) }
53722}
53723#[doc = "Vector reinterpret cast operation"]
53724#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u64)"]
53725#[inline]
53726#[cfg(target_endian = "big")]
53727#[target_feature(enable = "neon")]
53728#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53729#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53730#[cfg_attr(
53731 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53732 assert_instr(nop)
53733)]
53734#[cfg_attr(
53735 not(target_arch = "arm"),
53736 stable(feature = "neon_intrinsics", since = "1.59.0")
53737)]
53738#[cfg_attr(
53739 target_arch = "arm",
53740 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53741)]
53742pub fn vreinterpretq_p8_u64(a: uint64x2_t) -> poly8x16_t {
53743 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
53744 unsafe {
53745 let ret_val: poly8x16_t = transmute(a);
53746 simd_shuffle!(
53747 ret_val,
53748 ret_val,
53749 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
53750 )
53751 }
53752}
53753#[doc = "Vector reinterpret cast operation"]
53754#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u64)"]
53755#[inline]
53756#[cfg(target_endian = "little")]
53757#[target_feature(enable = "neon")]
53758#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53759#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53760#[cfg_attr(
53761 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53762 assert_instr(nop)
53763)]
53764#[cfg_attr(
53765 not(target_arch = "arm"),
53766 stable(feature = "neon_intrinsics", since = "1.59.0")
53767)]
53768#[cfg_attr(
53769 target_arch = "arm",
53770 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53771)]
53772pub fn vreinterpretq_p16_u64(a: uint64x2_t) -> poly16x8_t {
53773 unsafe { transmute(a) }
53774}
53775#[doc = "Vector reinterpret cast operation"]
53776#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u64)"]
53777#[inline]
53778#[cfg(target_endian = "big")]
53779#[target_feature(enable = "neon")]
53780#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53781#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53782#[cfg_attr(
53783 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53784 assert_instr(nop)
53785)]
53786#[cfg_attr(
53787 not(target_arch = "arm"),
53788 stable(feature = "neon_intrinsics", since = "1.59.0")
53789)]
53790#[cfg_attr(
53791 target_arch = "arm",
53792 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53793)]
53794pub fn vreinterpretq_p16_u64(a: uint64x2_t) -> poly16x8_t {
53795 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
53796 unsafe {
53797 let ret_val: poly16x8_t = transmute(a);
53798 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
53799 }
53800}
53801#[doc = "Vector reinterpret cast operation"]
53802#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_p8)"]
53803#[inline]
53804#[cfg(target_endian = "little")]
53805#[target_feature(enable = "neon")]
53806#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53807#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53808#[cfg_attr(
53809 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53810 assert_instr(nop)
53811)]
53812#[cfg_attr(
53813 not(target_arch = "arm"),
53814 stable(feature = "neon_intrinsics", since = "1.59.0")
53815)]
53816#[cfg_attr(
53817 target_arch = "arm",
53818 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53819)]
53820pub fn vreinterpret_f32_p8(a: poly8x8_t) -> float32x2_t {
53821 unsafe { transmute(a) }
53822}
53823#[doc = "Vector reinterpret cast operation"]
53824#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_p8)"]
53825#[inline]
53826#[cfg(target_endian = "big")]
53827#[target_feature(enable = "neon")]
53828#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53829#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53830#[cfg_attr(
53831 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53832 assert_instr(nop)
53833)]
53834#[cfg_attr(
53835 not(target_arch = "arm"),
53836 stable(feature = "neon_intrinsics", since = "1.59.0")
53837)]
53838#[cfg_attr(
53839 target_arch = "arm",
53840 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53841)]
53842pub fn vreinterpret_f32_p8(a: poly8x8_t) -> float32x2_t {
53843 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
53844 unsafe {
53845 let ret_val: float32x2_t = transmute(a);
53846 simd_shuffle!(ret_val, ret_val, [1, 0])
53847 }
53848}
53849#[doc = "Vector reinterpret cast operation"]
53850#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p8)"]
53851#[inline]
53852#[cfg(target_endian = "little")]
53853#[target_feature(enable = "neon")]
53854#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53855#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53856#[cfg_attr(
53857 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53858 assert_instr(nop)
53859)]
53860#[cfg_attr(
53861 not(target_arch = "arm"),
53862 stable(feature = "neon_intrinsics", since = "1.59.0")
53863)]
53864#[cfg_attr(
53865 target_arch = "arm",
53866 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53867)]
53868pub fn vreinterpret_s8_p8(a: poly8x8_t) -> int8x8_t {
53869 unsafe { transmute(a) }
53870}
53871#[doc = "Vector reinterpret cast operation"]
53872#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p8)"]
53873#[inline]
53874#[cfg(target_endian = "big")]
53875#[target_feature(enable = "neon")]
53876#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53877#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53878#[cfg_attr(
53879 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53880 assert_instr(nop)
53881)]
53882#[cfg_attr(
53883 not(target_arch = "arm"),
53884 stable(feature = "neon_intrinsics", since = "1.59.0")
53885)]
53886#[cfg_attr(
53887 target_arch = "arm",
53888 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53889)]
53890pub fn vreinterpret_s8_p8(a: poly8x8_t) -> int8x8_t {
53891 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
53892 unsafe {
53893 let ret_val: int8x8_t = transmute(a);
53894 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
53895 }
53896}
53897#[doc = "Vector reinterpret cast operation"]
53898#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p8)"]
53899#[inline]
53900#[cfg(target_endian = "little")]
53901#[target_feature(enable = "neon")]
53902#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53903#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53904#[cfg_attr(
53905 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53906 assert_instr(nop)
53907)]
53908#[cfg_attr(
53909 not(target_arch = "arm"),
53910 stable(feature = "neon_intrinsics", since = "1.59.0")
53911)]
53912#[cfg_attr(
53913 target_arch = "arm",
53914 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53915)]
53916pub fn vreinterpret_s16_p8(a: poly8x8_t) -> int16x4_t {
53917 unsafe { transmute(a) }
53918}
53919#[doc = "Vector reinterpret cast operation"]
53920#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p8)"]
53921#[inline]
53922#[cfg(target_endian = "big")]
53923#[target_feature(enable = "neon")]
53924#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53925#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53926#[cfg_attr(
53927 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53928 assert_instr(nop)
53929)]
53930#[cfg_attr(
53931 not(target_arch = "arm"),
53932 stable(feature = "neon_intrinsics", since = "1.59.0")
53933)]
53934#[cfg_attr(
53935 target_arch = "arm",
53936 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53937)]
53938pub fn vreinterpret_s16_p8(a: poly8x8_t) -> int16x4_t {
53939 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
53940 unsafe {
53941 let ret_val: int16x4_t = transmute(a);
53942 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
53943 }
53944}
53945#[doc = "Vector reinterpret cast operation"]
53946#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p8)"]
53947#[inline]
53948#[cfg(target_endian = "little")]
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(nop))]
53952#[cfg_attr(
53953 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53954 assert_instr(nop)
53955)]
53956#[cfg_attr(
53957 not(target_arch = "arm"),
53958 stable(feature = "neon_intrinsics", since = "1.59.0")
53959)]
53960#[cfg_attr(
53961 target_arch = "arm",
53962 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53963)]
53964pub fn vreinterpret_s32_p8(a: poly8x8_t) -> int32x2_t {
53965 unsafe { transmute(a) }
53966}
53967#[doc = "Vector reinterpret cast operation"]
53968#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p8)"]
53969#[inline]
53970#[cfg(target_endian = "big")]
53971#[target_feature(enable = "neon")]
53972#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53973#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53974#[cfg_attr(
53975 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53976 assert_instr(nop)
53977)]
53978#[cfg_attr(
53979 not(target_arch = "arm"),
53980 stable(feature = "neon_intrinsics", since = "1.59.0")
53981)]
53982#[cfg_attr(
53983 target_arch = "arm",
53984 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53985)]
53986pub fn vreinterpret_s32_p8(a: poly8x8_t) -> int32x2_t {
53987 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
53988 unsafe {
53989 let ret_val: int32x2_t = transmute(a);
53990 simd_shuffle!(ret_val, ret_val, [1, 0])
53991 }
53992}
53993#[doc = "Vector reinterpret cast operation"]
53994#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_p8)"]
53995#[inline]
53996#[cfg(target_endian = "little")]
53997#[target_feature(enable = "neon")]
53998#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53999#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54000#[cfg_attr(
54001 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54002 assert_instr(nop)
54003)]
54004#[cfg_attr(
54005 not(target_arch = "arm"),
54006 stable(feature = "neon_intrinsics", since = "1.59.0")
54007)]
54008#[cfg_attr(
54009 target_arch = "arm",
54010 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54011)]
54012pub fn vreinterpret_s64_p8(a: poly8x8_t) -> int64x1_t {
54013 unsafe { transmute(a) }
54014}
54015#[doc = "Vector reinterpret cast operation"]
54016#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_p8)"]
54017#[inline]
54018#[cfg(target_endian = "big")]
54019#[target_feature(enable = "neon")]
54020#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54021#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54022#[cfg_attr(
54023 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54024 assert_instr(nop)
54025)]
54026#[cfg_attr(
54027 not(target_arch = "arm"),
54028 stable(feature = "neon_intrinsics", since = "1.59.0")
54029)]
54030#[cfg_attr(
54031 target_arch = "arm",
54032 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54033)]
54034pub fn vreinterpret_s64_p8(a: poly8x8_t) -> int64x1_t {
54035 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54036 unsafe { transmute(a) }
54037}
54038#[doc = "Vector reinterpret cast operation"]
54039#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p8)"]
54040#[inline]
54041#[cfg(target_endian = "little")]
54042#[target_feature(enable = "neon")]
54043#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54044#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54045#[cfg_attr(
54046 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54047 assert_instr(nop)
54048)]
54049#[cfg_attr(
54050 not(target_arch = "arm"),
54051 stable(feature = "neon_intrinsics", since = "1.59.0")
54052)]
54053#[cfg_attr(
54054 target_arch = "arm",
54055 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54056)]
54057pub fn vreinterpret_u8_p8(a: poly8x8_t) -> uint8x8_t {
54058 unsafe { transmute(a) }
54059}
54060#[doc = "Vector reinterpret cast operation"]
54061#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p8)"]
54062#[inline]
54063#[cfg(target_endian = "big")]
54064#[target_feature(enable = "neon")]
54065#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54066#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54067#[cfg_attr(
54068 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54069 assert_instr(nop)
54070)]
54071#[cfg_attr(
54072 not(target_arch = "arm"),
54073 stable(feature = "neon_intrinsics", since = "1.59.0")
54074)]
54075#[cfg_attr(
54076 target_arch = "arm",
54077 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54078)]
54079pub fn vreinterpret_u8_p8(a: poly8x8_t) -> uint8x8_t {
54080 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54081 unsafe {
54082 let ret_val: uint8x8_t = transmute(a);
54083 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
54084 }
54085}
54086#[doc = "Vector reinterpret cast operation"]
54087#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p8)"]
54088#[inline]
54089#[cfg(target_endian = "little")]
54090#[target_feature(enable = "neon")]
54091#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54092#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54093#[cfg_attr(
54094 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54095 assert_instr(nop)
54096)]
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 vreinterpret_u16_p8(a: poly8x8_t) -> uint16x4_t {
54106 unsafe { transmute(a) }
54107}
54108#[doc = "Vector reinterpret cast operation"]
54109#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p8)"]
54110#[inline]
54111#[cfg(target_endian = "big")]
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(nop))]
54115#[cfg_attr(
54116 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54117 assert_instr(nop)
54118)]
54119#[cfg_attr(
54120 not(target_arch = "arm"),
54121 stable(feature = "neon_intrinsics", since = "1.59.0")
54122)]
54123#[cfg_attr(
54124 target_arch = "arm",
54125 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54126)]
54127pub fn vreinterpret_u16_p8(a: poly8x8_t) -> uint16x4_t {
54128 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54129 unsafe {
54130 let ret_val: uint16x4_t = transmute(a);
54131 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
54132 }
54133}
54134#[doc = "Vector reinterpret cast operation"]
54135#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p8)"]
54136#[inline]
54137#[cfg(target_endian = "little")]
54138#[target_feature(enable = "neon")]
54139#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54140#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54141#[cfg_attr(
54142 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54143 assert_instr(nop)
54144)]
54145#[cfg_attr(
54146 not(target_arch = "arm"),
54147 stable(feature = "neon_intrinsics", since = "1.59.0")
54148)]
54149#[cfg_attr(
54150 target_arch = "arm",
54151 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54152)]
54153pub fn vreinterpret_u32_p8(a: poly8x8_t) -> uint32x2_t {
54154 unsafe { transmute(a) }
54155}
54156#[doc = "Vector reinterpret cast operation"]
54157#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p8)"]
54158#[inline]
54159#[cfg(target_endian = "big")]
54160#[target_feature(enable = "neon")]
54161#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54162#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54163#[cfg_attr(
54164 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54165 assert_instr(nop)
54166)]
54167#[cfg_attr(
54168 not(target_arch = "arm"),
54169 stable(feature = "neon_intrinsics", since = "1.59.0")
54170)]
54171#[cfg_attr(
54172 target_arch = "arm",
54173 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54174)]
54175pub fn vreinterpret_u32_p8(a: poly8x8_t) -> uint32x2_t {
54176 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54177 unsafe {
54178 let ret_val: uint32x2_t = transmute(a);
54179 simd_shuffle!(ret_val, ret_val, [1, 0])
54180 }
54181}
54182#[doc = "Vector reinterpret cast operation"]
54183#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_p8)"]
54184#[inline]
54185#[cfg(target_endian = "little")]
54186#[target_feature(enable = "neon")]
54187#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54188#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54189#[cfg_attr(
54190 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54191 assert_instr(nop)
54192)]
54193#[cfg_attr(
54194 not(target_arch = "arm"),
54195 stable(feature = "neon_intrinsics", since = "1.59.0")
54196)]
54197#[cfg_attr(
54198 target_arch = "arm",
54199 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54200)]
54201pub fn vreinterpret_u64_p8(a: poly8x8_t) -> uint64x1_t {
54202 unsafe { transmute(a) }
54203}
54204#[doc = "Vector reinterpret cast operation"]
54205#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_p8)"]
54206#[inline]
54207#[cfg(target_endian = "big")]
54208#[target_feature(enable = "neon")]
54209#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54210#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54211#[cfg_attr(
54212 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54213 assert_instr(nop)
54214)]
54215#[cfg_attr(
54216 not(target_arch = "arm"),
54217 stable(feature = "neon_intrinsics", since = "1.59.0")
54218)]
54219#[cfg_attr(
54220 target_arch = "arm",
54221 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54222)]
54223pub fn vreinterpret_u64_p8(a: poly8x8_t) -> uint64x1_t {
54224 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54225 unsafe { transmute(a) }
54226}
54227#[doc = "Vector reinterpret cast operation"]
54228#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_p8)"]
54229#[inline]
54230#[cfg(target_endian = "little")]
54231#[target_feature(enable = "neon")]
54232#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54233#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54234#[cfg_attr(
54235 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54236 assert_instr(nop)
54237)]
54238#[cfg_attr(
54239 not(target_arch = "arm"),
54240 stable(feature = "neon_intrinsics", since = "1.59.0")
54241)]
54242#[cfg_attr(
54243 target_arch = "arm",
54244 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54245)]
54246pub fn vreinterpret_p16_p8(a: poly8x8_t) -> poly16x4_t {
54247 unsafe { transmute(a) }
54248}
54249#[doc = "Vector reinterpret cast operation"]
54250#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_p8)"]
54251#[inline]
54252#[cfg(target_endian = "big")]
54253#[target_feature(enable = "neon")]
54254#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54255#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54256#[cfg_attr(
54257 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54258 assert_instr(nop)
54259)]
54260#[cfg_attr(
54261 not(target_arch = "arm"),
54262 stable(feature = "neon_intrinsics", since = "1.59.0")
54263)]
54264#[cfg_attr(
54265 target_arch = "arm",
54266 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54267)]
54268pub fn vreinterpret_p16_p8(a: poly8x8_t) -> poly16x4_t {
54269 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54270 unsafe {
54271 let ret_val: poly16x4_t = transmute(a);
54272 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
54273 }
54274}
54275#[doc = "Vector reinterpret cast operation"]
54276#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p8)"]
54277#[inline]
54278#[cfg(target_endian = "little")]
54279#[target_feature(enable = "neon")]
54280#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54281#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54282#[cfg_attr(
54283 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54284 assert_instr(nop)
54285)]
54286#[cfg_attr(
54287 not(target_arch = "arm"),
54288 stable(feature = "neon_intrinsics", since = "1.59.0")
54289)]
54290#[cfg_attr(
54291 target_arch = "arm",
54292 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54293)]
54294pub fn vreinterpretq_f32_p8(a: poly8x16_t) -> float32x4_t {
54295 unsafe { transmute(a) }
54296}
54297#[doc = "Vector reinterpret cast operation"]
54298#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p8)"]
54299#[inline]
54300#[cfg(target_endian = "big")]
54301#[target_feature(enable = "neon")]
54302#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54303#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54304#[cfg_attr(
54305 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54306 assert_instr(nop)
54307)]
54308#[cfg_attr(
54309 not(target_arch = "arm"),
54310 stable(feature = "neon_intrinsics", since = "1.59.0")
54311)]
54312#[cfg_attr(
54313 target_arch = "arm",
54314 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54315)]
54316pub fn vreinterpretq_f32_p8(a: poly8x16_t) -> float32x4_t {
54317 let a: poly8x16_t =
54318 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
54319 unsafe {
54320 let ret_val: float32x4_t = transmute(a);
54321 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
54322 }
54323}
54324#[doc = "Vector reinterpret cast operation"]
54325#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p8)"]
54326#[inline]
54327#[cfg(target_endian = "little")]
54328#[target_feature(enable = "neon")]
54329#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54330#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54331#[cfg_attr(
54332 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54333 assert_instr(nop)
54334)]
54335#[cfg_attr(
54336 not(target_arch = "arm"),
54337 stable(feature = "neon_intrinsics", since = "1.59.0")
54338)]
54339#[cfg_attr(
54340 target_arch = "arm",
54341 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54342)]
54343pub fn vreinterpretq_s8_p8(a: poly8x16_t) -> int8x16_t {
54344 unsafe { transmute(a) }
54345}
54346#[doc = "Vector reinterpret cast operation"]
54347#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p8)"]
54348#[inline]
54349#[cfg(target_endian = "big")]
54350#[target_feature(enable = "neon")]
54351#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54352#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54353#[cfg_attr(
54354 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54355 assert_instr(nop)
54356)]
54357#[cfg_attr(
54358 not(target_arch = "arm"),
54359 stable(feature = "neon_intrinsics", since = "1.59.0")
54360)]
54361#[cfg_attr(
54362 target_arch = "arm",
54363 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54364)]
54365pub fn vreinterpretq_s8_p8(a: poly8x16_t) -> int8x16_t {
54366 let a: poly8x16_t =
54367 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
54368 unsafe {
54369 let ret_val: int8x16_t = transmute(a);
54370 simd_shuffle!(
54371 ret_val,
54372 ret_val,
54373 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
54374 )
54375 }
54376}
54377#[doc = "Vector reinterpret cast operation"]
54378#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p8)"]
54379#[inline]
54380#[cfg(target_endian = "little")]
54381#[target_feature(enable = "neon")]
54382#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54383#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54384#[cfg_attr(
54385 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54386 assert_instr(nop)
54387)]
54388#[cfg_attr(
54389 not(target_arch = "arm"),
54390 stable(feature = "neon_intrinsics", since = "1.59.0")
54391)]
54392#[cfg_attr(
54393 target_arch = "arm",
54394 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54395)]
54396pub fn vreinterpretq_s16_p8(a: poly8x16_t) -> int16x8_t {
54397 unsafe { transmute(a) }
54398}
54399#[doc = "Vector reinterpret cast operation"]
54400#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p8)"]
54401#[inline]
54402#[cfg(target_endian = "big")]
54403#[target_feature(enable = "neon")]
54404#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54405#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54406#[cfg_attr(
54407 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54408 assert_instr(nop)
54409)]
54410#[cfg_attr(
54411 not(target_arch = "arm"),
54412 stable(feature = "neon_intrinsics", since = "1.59.0")
54413)]
54414#[cfg_attr(
54415 target_arch = "arm",
54416 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54417)]
54418pub fn vreinterpretq_s16_p8(a: poly8x16_t) -> int16x8_t {
54419 let a: poly8x16_t =
54420 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
54421 unsafe {
54422 let ret_val: int16x8_t = transmute(a);
54423 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
54424 }
54425}
54426#[doc = "Vector reinterpret cast operation"]
54427#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p8)"]
54428#[inline]
54429#[cfg(target_endian = "little")]
54430#[target_feature(enable = "neon")]
54431#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54432#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54433#[cfg_attr(
54434 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54435 assert_instr(nop)
54436)]
54437#[cfg_attr(
54438 not(target_arch = "arm"),
54439 stable(feature = "neon_intrinsics", since = "1.59.0")
54440)]
54441#[cfg_attr(
54442 target_arch = "arm",
54443 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54444)]
54445pub fn vreinterpretq_s32_p8(a: poly8x16_t) -> int32x4_t {
54446 unsafe { transmute(a) }
54447}
54448#[doc = "Vector reinterpret cast operation"]
54449#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p8)"]
54450#[inline]
54451#[cfg(target_endian = "big")]
54452#[target_feature(enable = "neon")]
54453#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54454#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54455#[cfg_attr(
54456 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54457 assert_instr(nop)
54458)]
54459#[cfg_attr(
54460 not(target_arch = "arm"),
54461 stable(feature = "neon_intrinsics", since = "1.59.0")
54462)]
54463#[cfg_attr(
54464 target_arch = "arm",
54465 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54466)]
54467pub fn vreinterpretq_s32_p8(a: poly8x16_t) -> int32x4_t {
54468 let a: poly8x16_t =
54469 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
54470 unsafe {
54471 let ret_val: int32x4_t = transmute(a);
54472 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
54473 }
54474}
54475#[doc = "Vector reinterpret cast operation"]
54476#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p8)"]
54477#[inline]
54478#[cfg(target_endian = "little")]
54479#[target_feature(enable = "neon")]
54480#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54481#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54482#[cfg_attr(
54483 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54484 assert_instr(nop)
54485)]
54486#[cfg_attr(
54487 not(target_arch = "arm"),
54488 stable(feature = "neon_intrinsics", since = "1.59.0")
54489)]
54490#[cfg_attr(
54491 target_arch = "arm",
54492 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54493)]
54494pub fn vreinterpretq_s64_p8(a: poly8x16_t) -> int64x2_t {
54495 unsafe { transmute(a) }
54496}
54497#[doc = "Vector reinterpret cast operation"]
54498#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p8)"]
54499#[inline]
54500#[cfg(target_endian = "big")]
54501#[target_feature(enable = "neon")]
54502#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54503#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54504#[cfg_attr(
54505 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54506 assert_instr(nop)
54507)]
54508#[cfg_attr(
54509 not(target_arch = "arm"),
54510 stable(feature = "neon_intrinsics", since = "1.59.0")
54511)]
54512#[cfg_attr(
54513 target_arch = "arm",
54514 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54515)]
54516pub fn vreinterpretq_s64_p8(a: poly8x16_t) -> int64x2_t {
54517 let a: poly8x16_t =
54518 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
54519 unsafe {
54520 let ret_val: int64x2_t = transmute(a);
54521 simd_shuffle!(ret_val, ret_val, [1, 0])
54522 }
54523}
54524#[doc = "Vector reinterpret cast operation"]
54525#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p8)"]
54526#[inline]
54527#[cfg(target_endian = "little")]
54528#[target_feature(enable = "neon")]
54529#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54530#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54531#[cfg_attr(
54532 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54533 assert_instr(nop)
54534)]
54535#[cfg_attr(
54536 not(target_arch = "arm"),
54537 stable(feature = "neon_intrinsics", since = "1.59.0")
54538)]
54539#[cfg_attr(
54540 target_arch = "arm",
54541 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54542)]
54543pub fn vreinterpretq_u8_p8(a: poly8x16_t) -> uint8x16_t {
54544 unsafe { transmute(a) }
54545}
54546#[doc = "Vector reinterpret cast operation"]
54547#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p8)"]
54548#[inline]
54549#[cfg(target_endian = "big")]
54550#[target_feature(enable = "neon")]
54551#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54552#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54553#[cfg_attr(
54554 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54555 assert_instr(nop)
54556)]
54557#[cfg_attr(
54558 not(target_arch = "arm"),
54559 stable(feature = "neon_intrinsics", since = "1.59.0")
54560)]
54561#[cfg_attr(
54562 target_arch = "arm",
54563 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54564)]
54565pub fn vreinterpretq_u8_p8(a: poly8x16_t) -> uint8x16_t {
54566 let a: poly8x16_t =
54567 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
54568 unsafe {
54569 let ret_val: uint8x16_t = transmute(a);
54570 simd_shuffle!(
54571 ret_val,
54572 ret_val,
54573 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
54574 )
54575 }
54576}
54577#[doc = "Vector reinterpret cast operation"]
54578#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p8)"]
54579#[inline]
54580#[cfg(target_endian = "little")]
54581#[target_feature(enable = "neon")]
54582#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54583#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54584#[cfg_attr(
54585 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54586 assert_instr(nop)
54587)]
54588#[cfg_attr(
54589 not(target_arch = "arm"),
54590 stable(feature = "neon_intrinsics", since = "1.59.0")
54591)]
54592#[cfg_attr(
54593 target_arch = "arm",
54594 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54595)]
54596pub fn vreinterpretq_u16_p8(a: poly8x16_t) -> uint16x8_t {
54597 unsafe { transmute(a) }
54598}
54599#[doc = "Vector reinterpret cast operation"]
54600#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p8)"]
54601#[inline]
54602#[cfg(target_endian = "big")]
54603#[target_feature(enable = "neon")]
54604#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54605#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54606#[cfg_attr(
54607 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54608 assert_instr(nop)
54609)]
54610#[cfg_attr(
54611 not(target_arch = "arm"),
54612 stable(feature = "neon_intrinsics", since = "1.59.0")
54613)]
54614#[cfg_attr(
54615 target_arch = "arm",
54616 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54617)]
54618pub fn vreinterpretq_u16_p8(a: poly8x16_t) -> uint16x8_t {
54619 let a: poly8x16_t =
54620 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
54621 unsafe {
54622 let ret_val: uint16x8_t = transmute(a);
54623 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
54624 }
54625}
54626#[doc = "Vector reinterpret cast operation"]
54627#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p8)"]
54628#[inline]
54629#[cfg(target_endian = "little")]
54630#[target_feature(enable = "neon")]
54631#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54632#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54633#[cfg_attr(
54634 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54635 assert_instr(nop)
54636)]
54637#[cfg_attr(
54638 not(target_arch = "arm"),
54639 stable(feature = "neon_intrinsics", since = "1.59.0")
54640)]
54641#[cfg_attr(
54642 target_arch = "arm",
54643 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54644)]
54645pub fn vreinterpretq_u32_p8(a: poly8x16_t) -> uint32x4_t {
54646 unsafe { transmute(a) }
54647}
54648#[doc = "Vector reinterpret cast operation"]
54649#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p8)"]
54650#[inline]
54651#[cfg(target_endian = "big")]
54652#[target_feature(enable = "neon")]
54653#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54654#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54655#[cfg_attr(
54656 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54657 assert_instr(nop)
54658)]
54659#[cfg_attr(
54660 not(target_arch = "arm"),
54661 stable(feature = "neon_intrinsics", since = "1.59.0")
54662)]
54663#[cfg_attr(
54664 target_arch = "arm",
54665 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54666)]
54667pub fn vreinterpretq_u32_p8(a: poly8x16_t) -> uint32x4_t {
54668 let a: poly8x16_t =
54669 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
54670 unsafe {
54671 let ret_val: uint32x4_t = transmute(a);
54672 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
54673 }
54674}
54675#[doc = "Vector reinterpret cast operation"]
54676#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p8)"]
54677#[inline]
54678#[cfg(target_endian = "little")]
54679#[target_feature(enable = "neon")]
54680#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54681#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54682#[cfg_attr(
54683 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54684 assert_instr(nop)
54685)]
54686#[cfg_attr(
54687 not(target_arch = "arm"),
54688 stable(feature = "neon_intrinsics", since = "1.59.0")
54689)]
54690#[cfg_attr(
54691 target_arch = "arm",
54692 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54693)]
54694pub fn vreinterpretq_u64_p8(a: poly8x16_t) -> uint64x2_t {
54695 unsafe { transmute(a) }
54696}
54697#[doc = "Vector reinterpret cast operation"]
54698#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p8)"]
54699#[inline]
54700#[cfg(target_endian = "big")]
54701#[target_feature(enable = "neon")]
54702#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54703#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54704#[cfg_attr(
54705 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54706 assert_instr(nop)
54707)]
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 vreinterpretq_u64_p8(a: poly8x16_t) -> uint64x2_t {
54717 let a: poly8x16_t =
54718 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
54719 unsafe {
54720 let ret_val: uint64x2_t = transmute(a);
54721 simd_shuffle!(ret_val, ret_val, [1, 0])
54722 }
54723}
54724#[doc = "Vector reinterpret cast operation"]
54725#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p8)"]
54726#[inline]
54727#[cfg(target_endian = "little")]
54728#[target_feature(enable = "neon")]
54729#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54730#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54731#[cfg_attr(
54732 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54733 assert_instr(nop)
54734)]
54735#[cfg_attr(
54736 not(target_arch = "arm"),
54737 stable(feature = "neon_intrinsics", since = "1.59.0")
54738)]
54739#[cfg_attr(
54740 target_arch = "arm",
54741 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54742)]
54743pub fn vreinterpretq_p16_p8(a: poly8x16_t) -> poly16x8_t {
54744 unsafe { transmute(a) }
54745}
54746#[doc = "Vector reinterpret cast operation"]
54747#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p8)"]
54748#[inline]
54749#[cfg(target_endian = "big")]
54750#[target_feature(enable = "neon")]
54751#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54752#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54753#[cfg_attr(
54754 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54755 assert_instr(nop)
54756)]
54757#[cfg_attr(
54758 not(target_arch = "arm"),
54759 stable(feature = "neon_intrinsics", since = "1.59.0")
54760)]
54761#[cfg_attr(
54762 target_arch = "arm",
54763 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54764)]
54765pub fn vreinterpretq_p16_p8(a: poly8x16_t) -> poly16x8_t {
54766 let a: poly8x16_t =
54767 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
54768 unsafe {
54769 let ret_val: poly16x8_t = transmute(a);
54770 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
54771 }
54772}
54773#[doc = "Vector reinterpret cast operation"]
54774#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_p16)"]
54775#[inline]
54776#[cfg(target_endian = "little")]
54777#[target_feature(enable = "neon")]
54778#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54779#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54780#[cfg_attr(
54781 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54782 assert_instr(nop)
54783)]
54784#[cfg_attr(
54785 not(target_arch = "arm"),
54786 stable(feature = "neon_intrinsics", since = "1.59.0")
54787)]
54788#[cfg_attr(
54789 target_arch = "arm",
54790 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54791)]
54792pub fn vreinterpret_f32_p16(a: poly16x4_t) -> float32x2_t {
54793 unsafe { transmute(a) }
54794}
54795#[doc = "Vector reinterpret cast operation"]
54796#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_p16)"]
54797#[inline]
54798#[cfg(target_endian = "big")]
54799#[target_feature(enable = "neon")]
54800#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54801#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54802#[cfg_attr(
54803 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54804 assert_instr(nop)
54805)]
54806#[cfg_attr(
54807 not(target_arch = "arm"),
54808 stable(feature = "neon_intrinsics", since = "1.59.0")
54809)]
54810#[cfg_attr(
54811 target_arch = "arm",
54812 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54813)]
54814pub fn vreinterpret_f32_p16(a: poly16x4_t) -> float32x2_t {
54815 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
54816 unsafe {
54817 let ret_val: float32x2_t = transmute(a);
54818 simd_shuffle!(ret_val, ret_val, [1, 0])
54819 }
54820}
54821#[doc = "Vector reinterpret cast operation"]
54822#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p16)"]
54823#[inline]
54824#[cfg(target_endian = "little")]
54825#[target_feature(enable = "neon")]
54826#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54827#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54828#[cfg_attr(
54829 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54830 assert_instr(nop)
54831)]
54832#[cfg_attr(
54833 not(target_arch = "arm"),
54834 stable(feature = "neon_intrinsics", since = "1.59.0")
54835)]
54836#[cfg_attr(
54837 target_arch = "arm",
54838 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54839)]
54840pub fn vreinterpret_s8_p16(a: poly16x4_t) -> int8x8_t {
54841 unsafe { transmute(a) }
54842}
54843#[doc = "Vector reinterpret cast operation"]
54844#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p16)"]
54845#[inline]
54846#[cfg(target_endian = "big")]
54847#[target_feature(enable = "neon")]
54848#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54849#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54850#[cfg_attr(
54851 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54852 assert_instr(nop)
54853)]
54854#[cfg_attr(
54855 not(target_arch = "arm"),
54856 stable(feature = "neon_intrinsics", since = "1.59.0")
54857)]
54858#[cfg_attr(
54859 target_arch = "arm",
54860 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54861)]
54862pub fn vreinterpret_s8_p16(a: poly16x4_t) -> int8x8_t {
54863 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
54864 unsafe {
54865 let ret_val: int8x8_t = transmute(a);
54866 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
54867 }
54868}
54869#[doc = "Vector reinterpret cast operation"]
54870#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p16)"]
54871#[inline]
54872#[cfg(target_endian = "little")]
54873#[target_feature(enable = "neon")]
54874#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54875#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54876#[cfg_attr(
54877 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54878 assert_instr(nop)
54879)]
54880#[cfg_attr(
54881 not(target_arch = "arm"),
54882 stable(feature = "neon_intrinsics", since = "1.59.0")
54883)]
54884#[cfg_attr(
54885 target_arch = "arm",
54886 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54887)]
54888pub fn vreinterpret_s16_p16(a: poly16x4_t) -> int16x4_t {
54889 unsafe { transmute(a) }
54890}
54891#[doc = "Vector reinterpret cast operation"]
54892#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p16)"]
54893#[inline]
54894#[cfg(target_endian = "big")]
54895#[target_feature(enable = "neon")]
54896#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54897#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54898#[cfg_attr(
54899 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54900 assert_instr(nop)
54901)]
54902#[cfg_attr(
54903 not(target_arch = "arm"),
54904 stable(feature = "neon_intrinsics", since = "1.59.0")
54905)]
54906#[cfg_attr(
54907 target_arch = "arm",
54908 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54909)]
54910pub fn vreinterpret_s16_p16(a: poly16x4_t) -> int16x4_t {
54911 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
54912 unsafe {
54913 let ret_val: int16x4_t = transmute(a);
54914 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
54915 }
54916}
54917#[doc = "Vector reinterpret cast operation"]
54918#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p16)"]
54919#[inline]
54920#[cfg(target_endian = "little")]
54921#[target_feature(enable = "neon")]
54922#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54923#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54924#[cfg_attr(
54925 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54926 assert_instr(nop)
54927)]
54928#[cfg_attr(
54929 not(target_arch = "arm"),
54930 stable(feature = "neon_intrinsics", since = "1.59.0")
54931)]
54932#[cfg_attr(
54933 target_arch = "arm",
54934 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54935)]
54936pub fn vreinterpret_s32_p16(a: poly16x4_t) -> int32x2_t {
54937 unsafe { transmute(a) }
54938}
54939#[doc = "Vector reinterpret cast operation"]
54940#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p16)"]
54941#[inline]
54942#[cfg(target_endian = "big")]
54943#[target_feature(enable = "neon")]
54944#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54945#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54946#[cfg_attr(
54947 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54948 assert_instr(nop)
54949)]
54950#[cfg_attr(
54951 not(target_arch = "arm"),
54952 stable(feature = "neon_intrinsics", since = "1.59.0")
54953)]
54954#[cfg_attr(
54955 target_arch = "arm",
54956 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54957)]
54958pub fn vreinterpret_s32_p16(a: poly16x4_t) -> int32x2_t {
54959 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
54960 unsafe {
54961 let ret_val: int32x2_t = transmute(a);
54962 simd_shuffle!(ret_val, ret_val, [1, 0])
54963 }
54964}
54965#[doc = "Vector reinterpret cast operation"]
54966#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_p16)"]
54967#[inline]
54968#[cfg(target_endian = "little")]
54969#[target_feature(enable = "neon")]
54970#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54971#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54972#[cfg_attr(
54973 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54974 assert_instr(nop)
54975)]
54976#[cfg_attr(
54977 not(target_arch = "arm"),
54978 stable(feature = "neon_intrinsics", since = "1.59.0")
54979)]
54980#[cfg_attr(
54981 target_arch = "arm",
54982 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54983)]
54984pub fn vreinterpret_s64_p16(a: poly16x4_t) -> int64x1_t {
54985 unsafe { transmute(a) }
54986}
54987#[doc = "Vector reinterpret cast operation"]
54988#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_p16)"]
54989#[inline]
54990#[cfg(target_endian = "big")]
54991#[target_feature(enable = "neon")]
54992#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
54993#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54994#[cfg_attr(
54995 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54996 assert_instr(nop)
54997)]
54998#[cfg_attr(
54999 not(target_arch = "arm"),
55000 stable(feature = "neon_intrinsics", since = "1.59.0")
55001)]
55002#[cfg_attr(
55003 target_arch = "arm",
55004 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55005)]
55006pub fn vreinterpret_s64_p16(a: poly16x4_t) -> int64x1_t {
55007 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
55008 unsafe { transmute(a) }
55009}
55010#[doc = "Vector reinterpret cast operation"]
55011#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p16)"]
55012#[inline]
55013#[cfg(target_endian = "little")]
55014#[target_feature(enable = "neon")]
55015#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55016#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55017#[cfg_attr(
55018 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55019 assert_instr(nop)
55020)]
55021#[cfg_attr(
55022 not(target_arch = "arm"),
55023 stable(feature = "neon_intrinsics", since = "1.59.0")
55024)]
55025#[cfg_attr(
55026 target_arch = "arm",
55027 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55028)]
55029pub fn vreinterpret_u8_p16(a: poly16x4_t) -> uint8x8_t {
55030 unsafe { transmute(a) }
55031}
55032#[doc = "Vector reinterpret cast operation"]
55033#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p16)"]
55034#[inline]
55035#[cfg(target_endian = "big")]
55036#[target_feature(enable = "neon")]
55037#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55038#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55039#[cfg_attr(
55040 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55041 assert_instr(nop)
55042)]
55043#[cfg_attr(
55044 not(target_arch = "arm"),
55045 stable(feature = "neon_intrinsics", since = "1.59.0")
55046)]
55047#[cfg_attr(
55048 target_arch = "arm",
55049 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55050)]
55051pub fn vreinterpret_u8_p16(a: poly16x4_t) -> uint8x8_t {
55052 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
55053 unsafe {
55054 let ret_val: uint8x8_t = transmute(a);
55055 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
55056 }
55057}
55058#[doc = "Vector reinterpret cast operation"]
55059#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p16)"]
55060#[inline]
55061#[cfg(target_endian = "little")]
55062#[target_feature(enable = "neon")]
55063#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55064#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55065#[cfg_attr(
55066 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55067 assert_instr(nop)
55068)]
55069#[cfg_attr(
55070 not(target_arch = "arm"),
55071 stable(feature = "neon_intrinsics", since = "1.59.0")
55072)]
55073#[cfg_attr(
55074 target_arch = "arm",
55075 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55076)]
55077pub fn vreinterpret_u16_p16(a: poly16x4_t) -> uint16x4_t {
55078 unsafe { transmute(a) }
55079}
55080#[doc = "Vector reinterpret cast operation"]
55081#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p16)"]
55082#[inline]
55083#[cfg(target_endian = "big")]
55084#[target_feature(enable = "neon")]
55085#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55086#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55087#[cfg_attr(
55088 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55089 assert_instr(nop)
55090)]
55091#[cfg_attr(
55092 not(target_arch = "arm"),
55093 stable(feature = "neon_intrinsics", since = "1.59.0")
55094)]
55095#[cfg_attr(
55096 target_arch = "arm",
55097 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55098)]
55099pub fn vreinterpret_u16_p16(a: poly16x4_t) -> uint16x4_t {
55100 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
55101 unsafe {
55102 let ret_val: uint16x4_t = transmute(a);
55103 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
55104 }
55105}
55106#[doc = "Vector reinterpret cast operation"]
55107#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p16)"]
55108#[inline]
55109#[cfg(target_endian = "little")]
55110#[target_feature(enable = "neon")]
55111#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55112#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55113#[cfg_attr(
55114 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55115 assert_instr(nop)
55116)]
55117#[cfg_attr(
55118 not(target_arch = "arm"),
55119 stable(feature = "neon_intrinsics", since = "1.59.0")
55120)]
55121#[cfg_attr(
55122 target_arch = "arm",
55123 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55124)]
55125pub fn vreinterpret_u32_p16(a: poly16x4_t) -> uint32x2_t {
55126 unsafe { transmute(a) }
55127}
55128#[doc = "Vector reinterpret cast operation"]
55129#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p16)"]
55130#[inline]
55131#[cfg(target_endian = "big")]
55132#[target_feature(enable = "neon")]
55133#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55134#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55135#[cfg_attr(
55136 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55137 assert_instr(nop)
55138)]
55139#[cfg_attr(
55140 not(target_arch = "arm"),
55141 stable(feature = "neon_intrinsics", since = "1.59.0")
55142)]
55143#[cfg_attr(
55144 target_arch = "arm",
55145 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55146)]
55147pub fn vreinterpret_u32_p16(a: poly16x4_t) -> uint32x2_t {
55148 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
55149 unsafe {
55150 let ret_val: uint32x2_t = transmute(a);
55151 simd_shuffle!(ret_val, ret_val, [1, 0])
55152 }
55153}
55154#[doc = "Vector reinterpret cast operation"]
55155#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_p16)"]
55156#[inline]
55157#[cfg(target_endian = "little")]
55158#[target_feature(enable = "neon")]
55159#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55160#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55161#[cfg_attr(
55162 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55163 assert_instr(nop)
55164)]
55165#[cfg_attr(
55166 not(target_arch = "arm"),
55167 stable(feature = "neon_intrinsics", since = "1.59.0")
55168)]
55169#[cfg_attr(
55170 target_arch = "arm",
55171 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55172)]
55173pub fn vreinterpret_u64_p16(a: poly16x4_t) -> uint64x1_t {
55174 unsafe { transmute(a) }
55175}
55176#[doc = "Vector reinterpret cast operation"]
55177#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_p16)"]
55178#[inline]
55179#[cfg(target_endian = "big")]
55180#[target_feature(enable = "neon")]
55181#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55182#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55183#[cfg_attr(
55184 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55185 assert_instr(nop)
55186)]
55187#[cfg_attr(
55188 not(target_arch = "arm"),
55189 stable(feature = "neon_intrinsics", since = "1.59.0")
55190)]
55191#[cfg_attr(
55192 target_arch = "arm",
55193 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55194)]
55195pub fn vreinterpret_u64_p16(a: poly16x4_t) -> uint64x1_t {
55196 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
55197 unsafe { transmute(a) }
55198}
55199#[doc = "Vector reinterpret cast operation"]
55200#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_p16)"]
55201#[inline]
55202#[cfg(target_endian = "little")]
55203#[target_feature(enable = "neon")]
55204#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55205#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55206#[cfg_attr(
55207 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55208 assert_instr(nop)
55209)]
55210#[cfg_attr(
55211 not(target_arch = "arm"),
55212 stable(feature = "neon_intrinsics", since = "1.59.0")
55213)]
55214#[cfg_attr(
55215 target_arch = "arm",
55216 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55217)]
55218pub fn vreinterpret_p8_p16(a: poly16x4_t) -> poly8x8_t {
55219 unsafe { transmute(a) }
55220}
55221#[doc = "Vector reinterpret cast operation"]
55222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_p16)"]
55223#[inline]
55224#[cfg(target_endian = "big")]
55225#[target_feature(enable = "neon")]
55226#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55227#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55228#[cfg_attr(
55229 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55230 assert_instr(nop)
55231)]
55232#[cfg_attr(
55233 not(target_arch = "arm"),
55234 stable(feature = "neon_intrinsics", since = "1.59.0")
55235)]
55236#[cfg_attr(
55237 target_arch = "arm",
55238 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55239)]
55240pub fn vreinterpret_p8_p16(a: poly16x4_t) -> poly8x8_t {
55241 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
55242 unsafe {
55243 let ret_val: poly8x8_t = transmute(a);
55244 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
55245 }
55246}
55247#[doc = "Vector reinterpret cast operation"]
55248#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p16)"]
55249#[inline]
55250#[cfg(target_endian = "little")]
55251#[target_feature(enable = "neon")]
55252#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55253#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55254#[cfg_attr(
55255 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55256 assert_instr(nop)
55257)]
55258#[cfg_attr(
55259 not(target_arch = "arm"),
55260 stable(feature = "neon_intrinsics", since = "1.59.0")
55261)]
55262#[cfg_attr(
55263 target_arch = "arm",
55264 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55265)]
55266pub fn vreinterpretq_f32_p16(a: poly16x8_t) -> float32x4_t {
55267 unsafe { transmute(a) }
55268}
55269#[doc = "Vector reinterpret cast operation"]
55270#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p16)"]
55271#[inline]
55272#[cfg(target_endian = "big")]
55273#[target_feature(enable = "neon")]
55274#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55275#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55276#[cfg_attr(
55277 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55278 assert_instr(nop)
55279)]
55280#[cfg_attr(
55281 not(target_arch = "arm"),
55282 stable(feature = "neon_intrinsics", since = "1.59.0")
55283)]
55284#[cfg_attr(
55285 target_arch = "arm",
55286 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55287)]
55288pub fn vreinterpretq_f32_p16(a: poly16x8_t) -> float32x4_t {
55289 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
55290 unsafe {
55291 let ret_val: float32x4_t = transmute(a);
55292 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
55293 }
55294}
55295#[doc = "Vector reinterpret cast operation"]
55296#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p16)"]
55297#[inline]
55298#[cfg(target_endian = "little")]
55299#[target_feature(enable = "neon")]
55300#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55301#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55302#[cfg_attr(
55303 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55304 assert_instr(nop)
55305)]
55306#[cfg_attr(
55307 not(target_arch = "arm"),
55308 stable(feature = "neon_intrinsics", since = "1.59.0")
55309)]
55310#[cfg_attr(
55311 target_arch = "arm",
55312 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55313)]
55314pub fn vreinterpretq_s8_p16(a: poly16x8_t) -> int8x16_t {
55315 unsafe { transmute(a) }
55316}
55317#[doc = "Vector reinterpret cast operation"]
55318#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p16)"]
55319#[inline]
55320#[cfg(target_endian = "big")]
55321#[target_feature(enable = "neon")]
55322#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55323#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55324#[cfg_attr(
55325 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55326 assert_instr(nop)
55327)]
55328#[cfg_attr(
55329 not(target_arch = "arm"),
55330 stable(feature = "neon_intrinsics", since = "1.59.0")
55331)]
55332#[cfg_attr(
55333 target_arch = "arm",
55334 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55335)]
55336pub fn vreinterpretq_s8_p16(a: poly16x8_t) -> int8x16_t {
55337 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
55338 unsafe {
55339 let ret_val: int8x16_t = transmute(a);
55340 simd_shuffle!(
55341 ret_val,
55342 ret_val,
55343 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
55344 )
55345 }
55346}
55347#[doc = "Vector reinterpret cast operation"]
55348#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p16)"]
55349#[inline]
55350#[cfg(target_endian = "little")]
55351#[target_feature(enable = "neon")]
55352#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55353#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55354#[cfg_attr(
55355 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55356 assert_instr(nop)
55357)]
55358#[cfg_attr(
55359 not(target_arch = "arm"),
55360 stable(feature = "neon_intrinsics", since = "1.59.0")
55361)]
55362#[cfg_attr(
55363 target_arch = "arm",
55364 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55365)]
55366pub fn vreinterpretq_s16_p16(a: poly16x8_t) -> int16x8_t {
55367 unsafe { transmute(a) }
55368}
55369#[doc = "Vector reinterpret cast operation"]
55370#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p16)"]
55371#[inline]
55372#[cfg(target_endian = "big")]
55373#[target_feature(enable = "neon")]
55374#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55375#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55376#[cfg_attr(
55377 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55378 assert_instr(nop)
55379)]
55380#[cfg_attr(
55381 not(target_arch = "arm"),
55382 stable(feature = "neon_intrinsics", since = "1.59.0")
55383)]
55384#[cfg_attr(
55385 target_arch = "arm",
55386 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55387)]
55388pub fn vreinterpretq_s16_p16(a: poly16x8_t) -> int16x8_t {
55389 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
55390 unsafe {
55391 let ret_val: int16x8_t = transmute(a);
55392 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
55393 }
55394}
55395#[doc = "Vector reinterpret cast operation"]
55396#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p16)"]
55397#[inline]
55398#[cfg(target_endian = "little")]
55399#[target_feature(enable = "neon")]
55400#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55401#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55402#[cfg_attr(
55403 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55404 assert_instr(nop)
55405)]
55406#[cfg_attr(
55407 not(target_arch = "arm"),
55408 stable(feature = "neon_intrinsics", since = "1.59.0")
55409)]
55410#[cfg_attr(
55411 target_arch = "arm",
55412 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55413)]
55414pub fn vreinterpretq_s32_p16(a: poly16x8_t) -> int32x4_t {
55415 unsafe { transmute(a) }
55416}
55417#[doc = "Vector reinterpret cast operation"]
55418#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p16)"]
55419#[inline]
55420#[cfg(target_endian = "big")]
55421#[target_feature(enable = "neon")]
55422#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55423#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55424#[cfg_attr(
55425 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55426 assert_instr(nop)
55427)]
55428#[cfg_attr(
55429 not(target_arch = "arm"),
55430 stable(feature = "neon_intrinsics", since = "1.59.0")
55431)]
55432#[cfg_attr(
55433 target_arch = "arm",
55434 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55435)]
55436pub fn vreinterpretq_s32_p16(a: poly16x8_t) -> int32x4_t {
55437 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
55438 unsafe {
55439 let ret_val: int32x4_t = transmute(a);
55440 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
55441 }
55442}
55443#[doc = "Vector reinterpret cast operation"]
55444#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p16)"]
55445#[inline]
55446#[cfg(target_endian = "little")]
55447#[target_feature(enable = "neon")]
55448#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55449#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55450#[cfg_attr(
55451 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55452 assert_instr(nop)
55453)]
55454#[cfg_attr(
55455 not(target_arch = "arm"),
55456 stable(feature = "neon_intrinsics", since = "1.59.0")
55457)]
55458#[cfg_attr(
55459 target_arch = "arm",
55460 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55461)]
55462pub fn vreinterpretq_s64_p16(a: poly16x8_t) -> int64x2_t {
55463 unsafe { transmute(a) }
55464}
55465#[doc = "Vector reinterpret cast operation"]
55466#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p16)"]
55467#[inline]
55468#[cfg(target_endian = "big")]
55469#[target_feature(enable = "neon")]
55470#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55471#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55472#[cfg_attr(
55473 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55474 assert_instr(nop)
55475)]
55476#[cfg_attr(
55477 not(target_arch = "arm"),
55478 stable(feature = "neon_intrinsics", since = "1.59.0")
55479)]
55480#[cfg_attr(
55481 target_arch = "arm",
55482 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55483)]
55484pub fn vreinterpretq_s64_p16(a: poly16x8_t) -> int64x2_t {
55485 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
55486 unsafe {
55487 let ret_val: int64x2_t = transmute(a);
55488 simd_shuffle!(ret_val, ret_val, [1, 0])
55489 }
55490}
55491#[doc = "Vector reinterpret cast operation"]
55492#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p16)"]
55493#[inline]
55494#[cfg(target_endian = "little")]
55495#[target_feature(enable = "neon")]
55496#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55497#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55498#[cfg_attr(
55499 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55500 assert_instr(nop)
55501)]
55502#[cfg_attr(
55503 not(target_arch = "arm"),
55504 stable(feature = "neon_intrinsics", since = "1.59.0")
55505)]
55506#[cfg_attr(
55507 target_arch = "arm",
55508 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55509)]
55510pub fn vreinterpretq_u8_p16(a: poly16x8_t) -> uint8x16_t {
55511 unsafe { transmute(a) }
55512}
55513#[doc = "Vector reinterpret cast operation"]
55514#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p16)"]
55515#[inline]
55516#[cfg(target_endian = "big")]
55517#[target_feature(enable = "neon")]
55518#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55519#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55520#[cfg_attr(
55521 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55522 assert_instr(nop)
55523)]
55524#[cfg_attr(
55525 not(target_arch = "arm"),
55526 stable(feature = "neon_intrinsics", since = "1.59.0")
55527)]
55528#[cfg_attr(
55529 target_arch = "arm",
55530 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55531)]
55532pub fn vreinterpretq_u8_p16(a: poly16x8_t) -> uint8x16_t {
55533 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
55534 unsafe {
55535 let ret_val: uint8x16_t = transmute(a);
55536 simd_shuffle!(
55537 ret_val,
55538 ret_val,
55539 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
55540 )
55541 }
55542}
55543#[doc = "Vector reinterpret cast operation"]
55544#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p16)"]
55545#[inline]
55546#[cfg(target_endian = "little")]
55547#[target_feature(enable = "neon")]
55548#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55549#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55550#[cfg_attr(
55551 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55552 assert_instr(nop)
55553)]
55554#[cfg_attr(
55555 not(target_arch = "arm"),
55556 stable(feature = "neon_intrinsics", since = "1.59.0")
55557)]
55558#[cfg_attr(
55559 target_arch = "arm",
55560 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55561)]
55562pub fn vreinterpretq_u16_p16(a: poly16x8_t) -> uint16x8_t {
55563 unsafe { transmute(a) }
55564}
55565#[doc = "Vector reinterpret cast operation"]
55566#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p16)"]
55567#[inline]
55568#[cfg(target_endian = "big")]
55569#[target_feature(enable = "neon")]
55570#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55571#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55572#[cfg_attr(
55573 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55574 assert_instr(nop)
55575)]
55576#[cfg_attr(
55577 not(target_arch = "arm"),
55578 stable(feature = "neon_intrinsics", since = "1.59.0")
55579)]
55580#[cfg_attr(
55581 target_arch = "arm",
55582 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55583)]
55584pub fn vreinterpretq_u16_p16(a: poly16x8_t) -> uint16x8_t {
55585 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
55586 unsafe {
55587 let ret_val: uint16x8_t = transmute(a);
55588 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
55589 }
55590}
55591#[doc = "Vector reinterpret cast operation"]
55592#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p16)"]
55593#[inline]
55594#[cfg(target_endian = "little")]
55595#[target_feature(enable = "neon")]
55596#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55597#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55598#[cfg_attr(
55599 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55600 assert_instr(nop)
55601)]
55602#[cfg_attr(
55603 not(target_arch = "arm"),
55604 stable(feature = "neon_intrinsics", since = "1.59.0")
55605)]
55606#[cfg_attr(
55607 target_arch = "arm",
55608 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55609)]
55610pub fn vreinterpretq_u32_p16(a: poly16x8_t) -> uint32x4_t {
55611 unsafe { transmute(a) }
55612}
55613#[doc = "Vector reinterpret cast operation"]
55614#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p16)"]
55615#[inline]
55616#[cfg(target_endian = "big")]
55617#[target_feature(enable = "neon")]
55618#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55619#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55620#[cfg_attr(
55621 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55622 assert_instr(nop)
55623)]
55624#[cfg_attr(
55625 not(target_arch = "arm"),
55626 stable(feature = "neon_intrinsics", since = "1.59.0")
55627)]
55628#[cfg_attr(
55629 target_arch = "arm",
55630 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55631)]
55632pub fn vreinterpretq_u32_p16(a: poly16x8_t) -> uint32x4_t {
55633 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
55634 unsafe {
55635 let ret_val: uint32x4_t = transmute(a);
55636 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
55637 }
55638}
55639#[doc = "Vector reinterpret cast operation"]
55640#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p16)"]
55641#[inline]
55642#[cfg(target_endian = "little")]
55643#[target_feature(enable = "neon")]
55644#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55645#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55646#[cfg_attr(
55647 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55648 assert_instr(nop)
55649)]
55650#[cfg_attr(
55651 not(target_arch = "arm"),
55652 stable(feature = "neon_intrinsics", since = "1.59.0")
55653)]
55654#[cfg_attr(
55655 target_arch = "arm",
55656 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55657)]
55658pub fn vreinterpretq_u64_p16(a: poly16x8_t) -> uint64x2_t {
55659 unsafe { transmute(a) }
55660}
55661#[doc = "Vector reinterpret cast operation"]
55662#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p16)"]
55663#[inline]
55664#[cfg(target_endian = "big")]
55665#[target_feature(enable = "neon")]
55666#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55667#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55668#[cfg_attr(
55669 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55670 assert_instr(nop)
55671)]
55672#[cfg_attr(
55673 not(target_arch = "arm"),
55674 stable(feature = "neon_intrinsics", since = "1.59.0")
55675)]
55676#[cfg_attr(
55677 target_arch = "arm",
55678 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55679)]
55680pub fn vreinterpretq_u64_p16(a: poly16x8_t) -> uint64x2_t {
55681 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
55682 unsafe {
55683 let ret_val: uint64x2_t = transmute(a);
55684 simd_shuffle!(ret_val, ret_val, [1, 0])
55685 }
55686}
55687#[doc = "Vector reinterpret cast operation"]
55688#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p16)"]
55689#[inline]
55690#[cfg(target_endian = "little")]
55691#[target_feature(enable = "neon")]
55692#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55693#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55694#[cfg_attr(
55695 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55696 assert_instr(nop)
55697)]
55698#[cfg_attr(
55699 not(target_arch = "arm"),
55700 stable(feature = "neon_intrinsics", since = "1.59.0")
55701)]
55702#[cfg_attr(
55703 target_arch = "arm",
55704 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55705)]
55706pub fn vreinterpretq_p8_p16(a: poly16x8_t) -> poly8x16_t {
55707 unsafe { transmute(a) }
55708}
55709#[doc = "Vector reinterpret cast operation"]
55710#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p16)"]
55711#[inline]
55712#[cfg(target_endian = "big")]
55713#[target_feature(enable = "neon")]
55714#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55715#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55716#[cfg_attr(
55717 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55718 assert_instr(nop)
55719)]
55720#[cfg_attr(
55721 not(target_arch = "arm"),
55722 stable(feature = "neon_intrinsics", since = "1.59.0")
55723)]
55724#[cfg_attr(
55725 target_arch = "arm",
55726 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55727)]
55728pub fn vreinterpretq_p8_p16(a: poly16x8_t) -> poly8x16_t {
55729 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
55730 unsafe {
55731 let ret_val: poly8x16_t = transmute(a);
55732 simd_shuffle!(
55733 ret_val,
55734 ret_val,
55735 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
55736 )
55737 }
55738}
55739#[doc = "Vector reinterpret cast operation"]
55740#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p128)"]
55741#[inline]
55742#[cfg(target_endian = "little")]
55743#[target_feature(enable = "neon,aes")]
55744#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55745#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55746#[cfg_attr(
55747 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55748 assert_instr(nop)
55749)]
55750#[cfg_attr(
55751 not(target_arch = "arm"),
55752 stable(feature = "neon_intrinsics", since = "1.59.0")
55753)]
55754#[cfg_attr(
55755 target_arch = "arm",
55756 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55757)]
55758pub fn vreinterpretq_s8_p128(a: p128) -> int8x16_t {
55759 unsafe { transmute(a) }
55760}
55761#[doc = "Vector reinterpret cast operation"]
55762#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p128)"]
55763#[inline]
55764#[cfg(target_endian = "big")]
55765#[target_feature(enable = "neon,aes")]
55766#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55767#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55768#[cfg_attr(
55769 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55770 assert_instr(nop)
55771)]
55772#[cfg_attr(
55773 not(target_arch = "arm"),
55774 stable(feature = "neon_intrinsics", since = "1.59.0")
55775)]
55776#[cfg_attr(
55777 target_arch = "arm",
55778 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55779)]
55780pub fn vreinterpretq_s8_p128(a: p128) -> int8x16_t {
55781 unsafe {
55782 let ret_val: int8x16_t = transmute(a);
55783 simd_shuffle!(
55784 ret_val,
55785 ret_val,
55786 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
55787 )
55788 }
55789}
55790#[doc = "Vector reinterpret cast operation"]
55791#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p128)"]
55792#[inline]
55793#[cfg(target_endian = "little")]
55794#[target_feature(enable = "neon,aes")]
55795#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55796#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55797#[cfg_attr(
55798 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55799 assert_instr(nop)
55800)]
55801#[cfg_attr(
55802 not(target_arch = "arm"),
55803 stable(feature = "neon_intrinsics", since = "1.59.0")
55804)]
55805#[cfg_attr(
55806 target_arch = "arm",
55807 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55808)]
55809pub fn vreinterpretq_s16_p128(a: p128) -> int16x8_t {
55810 unsafe { transmute(a) }
55811}
55812#[doc = "Vector reinterpret cast operation"]
55813#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p128)"]
55814#[inline]
55815#[cfg(target_endian = "big")]
55816#[target_feature(enable = "neon,aes")]
55817#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55818#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55819#[cfg_attr(
55820 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55821 assert_instr(nop)
55822)]
55823#[cfg_attr(
55824 not(target_arch = "arm"),
55825 stable(feature = "neon_intrinsics", since = "1.59.0")
55826)]
55827#[cfg_attr(
55828 target_arch = "arm",
55829 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55830)]
55831pub fn vreinterpretq_s16_p128(a: p128) -> int16x8_t {
55832 unsafe {
55833 let ret_val: int16x8_t = transmute(a);
55834 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
55835 }
55836}
55837#[doc = "Vector reinterpret cast operation"]
55838#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p128)"]
55839#[inline]
55840#[cfg(target_endian = "little")]
55841#[target_feature(enable = "neon,aes")]
55842#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55843#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55844#[cfg_attr(
55845 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55846 assert_instr(nop)
55847)]
55848#[cfg_attr(
55849 not(target_arch = "arm"),
55850 stable(feature = "neon_intrinsics", since = "1.59.0")
55851)]
55852#[cfg_attr(
55853 target_arch = "arm",
55854 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55855)]
55856pub fn vreinterpretq_s32_p128(a: p128) -> int32x4_t {
55857 unsafe { transmute(a) }
55858}
55859#[doc = "Vector reinterpret cast operation"]
55860#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p128)"]
55861#[inline]
55862#[cfg(target_endian = "big")]
55863#[target_feature(enable = "neon,aes")]
55864#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55865#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55866#[cfg_attr(
55867 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55868 assert_instr(nop)
55869)]
55870#[cfg_attr(
55871 not(target_arch = "arm"),
55872 stable(feature = "neon_intrinsics", since = "1.59.0")
55873)]
55874#[cfg_attr(
55875 target_arch = "arm",
55876 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55877)]
55878pub fn vreinterpretq_s32_p128(a: p128) -> int32x4_t {
55879 unsafe {
55880 let ret_val: int32x4_t = transmute(a);
55881 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
55882 }
55883}
55884#[doc = "Vector reinterpret cast operation"]
55885#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p128)"]
55886#[inline]
55887#[cfg(target_endian = "little")]
55888#[target_feature(enable = "neon,aes")]
55889#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55890#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55891#[cfg_attr(
55892 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55893 assert_instr(nop)
55894)]
55895#[cfg_attr(
55896 not(target_arch = "arm"),
55897 stable(feature = "neon_intrinsics", since = "1.59.0")
55898)]
55899#[cfg_attr(
55900 target_arch = "arm",
55901 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55902)]
55903pub fn vreinterpretq_s64_p128(a: p128) -> int64x2_t {
55904 unsafe { transmute(a) }
55905}
55906#[doc = "Vector reinterpret cast operation"]
55907#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p128)"]
55908#[inline]
55909#[cfg(target_endian = "big")]
55910#[target_feature(enable = "neon,aes")]
55911#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55912#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55913#[cfg_attr(
55914 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55915 assert_instr(nop)
55916)]
55917#[cfg_attr(
55918 not(target_arch = "arm"),
55919 stable(feature = "neon_intrinsics", since = "1.59.0")
55920)]
55921#[cfg_attr(
55922 target_arch = "arm",
55923 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55924)]
55925pub fn vreinterpretq_s64_p128(a: p128) -> int64x2_t {
55926 unsafe {
55927 let ret_val: int64x2_t = transmute(a);
55928 simd_shuffle!(ret_val, ret_val, [1, 0])
55929 }
55930}
55931#[doc = "Vector reinterpret cast operation"]
55932#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p128)"]
55933#[inline]
55934#[cfg(target_endian = "little")]
55935#[target_feature(enable = "neon,aes")]
55936#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55937#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55938#[cfg_attr(
55939 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55940 assert_instr(nop)
55941)]
55942#[cfg_attr(
55943 not(target_arch = "arm"),
55944 stable(feature = "neon_intrinsics", since = "1.59.0")
55945)]
55946#[cfg_attr(
55947 target_arch = "arm",
55948 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55949)]
55950pub fn vreinterpretq_u8_p128(a: p128) -> uint8x16_t {
55951 unsafe { transmute(a) }
55952}
55953#[doc = "Vector reinterpret cast operation"]
55954#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p128)"]
55955#[inline]
55956#[cfg(target_endian = "big")]
55957#[target_feature(enable = "neon,aes")]
55958#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55959#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55960#[cfg_attr(
55961 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55962 assert_instr(nop)
55963)]
55964#[cfg_attr(
55965 not(target_arch = "arm"),
55966 stable(feature = "neon_intrinsics", since = "1.59.0")
55967)]
55968#[cfg_attr(
55969 target_arch = "arm",
55970 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55971)]
55972pub fn vreinterpretq_u8_p128(a: p128) -> uint8x16_t {
55973 unsafe {
55974 let ret_val: uint8x16_t = transmute(a);
55975 simd_shuffle!(
55976 ret_val,
55977 ret_val,
55978 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
55979 )
55980 }
55981}
55982#[doc = "Vector reinterpret cast operation"]
55983#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p128)"]
55984#[inline]
55985#[cfg(target_endian = "little")]
55986#[target_feature(enable = "neon,aes")]
55987#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55988#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55989#[cfg_attr(
55990 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55991 assert_instr(nop)
55992)]
55993#[cfg_attr(
55994 not(target_arch = "arm"),
55995 stable(feature = "neon_intrinsics", since = "1.59.0")
55996)]
55997#[cfg_attr(
55998 target_arch = "arm",
55999 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56000)]
56001pub fn vreinterpretq_u16_p128(a: p128) -> uint16x8_t {
56002 unsafe { transmute(a) }
56003}
56004#[doc = "Vector reinterpret cast operation"]
56005#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p128)"]
56006#[inline]
56007#[cfg(target_endian = "big")]
56008#[target_feature(enable = "neon,aes")]
56009#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56010#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56011#[cfg_attr(
56012 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56013 assert_instr(nop)
56014)]
56015#[cfg_attr(
56016 not(target_arch = "arm"),
56017 stable(feature = "neon_intrinsics", since = "1.59.0")
56018)]
56019#[cfg_attr(
56020 target_arch = "arm",
56021 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56022)]
56023pub fn vreinterpretq_u16_p128(a: p128) -> uint16x8_t {
56024 unsafe {
56025 let ret_val: uint16x8_t = transmute(a);
56026 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
56027 }
56028}
56029#[doc = "Vector reinterpret cast operation"]
56030#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p128)"]
56031#[inline]
56032#[cfg(target_endian = "little")]
56033#[target_feature(enable = "neon,aes")]
56034#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56035#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56036#[cfg_attr(
56037 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56038 assert_instr(nop)
56039)]
56040#[cfg_attr(
56041 not(target_arch = "arm"),
56042 stable(feature = "neon_intrinsics", since = "1.59.0")
56043)]
56044#[cfg_attr(
56045 target_arch = "arm",
56046 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56047)]
56048pub fn vreinterpretq_u32_p128(a: p128) -> uint32x4_t {
56049 unsafe { transmute(a) }
56050}
56051#[doc = "Vector reinterpret cast operation"]
56052#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p128)"]
56053#[inline]
56054#[cfg(target_endian = "big")]
56055#[target_feature(enable = "neon,aes")]
56056#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56057#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56058#[cfg_attr(
56059 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56060 assert_instr(nop)
56061)]
56062#[cfg_attr(
56063 not(target_arch = "arm"),
56064 stable(feature = "neon_intrinsics", since = "1.59.0")
56065)]
56066#[cfg_attr(
56067 target_arch = "arm",
56068 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56069)]
56070pub fn vreinterpretq_u32_p128(a: p128) -> uint32x4_t {
56071 unsafe {
56072 let ret_val: uint32x4_t = transmute(a);
56073 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
56074 }
56075}
56076#[doc = "Vector reinterpret cast operation"]
56077#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p128)"]
56078#[inline]
56079#[cfg(target_endian = "little")]
56080#[target_feature(enable = "neon,aes")]
56081#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56082#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56083#[cfg_attr(
56084 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56085 assert_instr(nop)
56086)]
56087#[cfg_attr(
56088 not(target_arch = "arm"),
56089 stable(feature = "neon_intrinsics", since = "1.59.0")
56090)]
56091#[cfg_attr(
56092 target_arch = "arm",
56093 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56094)]
56095pub fn vreinterpretq_u64_p128(a: p128) -> uint64x2_t {
56096 unsafe { transmute(a) }
56097}
56098#[doc = "Vector reinterpret cast operation"]
56099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p128)"]
56100#[inline]
56101#[cfg(target_endian = "big")]
56102#[target_feature(enable = "neon,aes")]
56103#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56104#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56105#[cfg_attr(
56106 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56107 assert_instr(nop)
56108)]
56109#[cfg_attr(
56110 not(target_arch = "arm"),
56111 stable(feature = "neon_intrinsics", since = "1.59.0")
56112)]
56113#[cfg_attr(
56114 target_arch = "arm",
56115 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56116)]
56117pub fn vreinterpretq_u64_p128(a: p128) -> uint64x2_t {
56118 unsafe {
56119 let ret_val: uint64x2_t = transmute(a);
56120 simd_shuffle!(ret_val, ret_val, [1, 0])
56121 }
56122}
56123#[doc = "Vector reinterpret cast operation"]
56124#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p128)"]
56125#[inline]
56126#[cfg(target_endian = "little")]
56127#[target_feature(enable = "neon,aes")]
56128#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56129#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56130#[cfg_attr(
56131 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56132 assert_instr(nop)
56133)]
56134#[cfg_attr(
56135 not(target_arch = "arm"),
56136 stable(feature = "neon_intrinsics", since = "1.59.0")
56137)]
56138#[cfg_attr(
56139 target_arch = "arm",
56140 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56141)]
56142pub fn vreinterpretq_p8_p128(a: p128) -> poly8x16_t {
56143 unsafe { transmute(a) }
56144}
56145#[doc = "Vector reinterpret cast operation"]
56146#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p128)"]
56147#[inline]
56148#[cfg(target_endian = "big")]
56149#[target_feature(enable = "neon,aes")]
56150#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56151#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56152#[cfg_attr(
56153 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56154 assert_instr(nop)
56155)]
56156#[cfg_attr(
56157 not(target_arch = "arm"),
56158 stable(feature = "neon_intrinsics", since = "1.59.0")
56159)]
56160#[cfg_attr(
56161 target_arch = "arm",
56162 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56163)]
56164pub fn vreinterpretq_p8_p128(a: p128) -> poly8x16_t {
56165 unsafe {
56166 let ret_val: poly8x16_t = transmute(a);
56167 simd_shuffle!(
56168 ret_val,
56169 ret_val,
56170 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
56171 )
56172 }
56173}
56174#[doc = "Vector reinterpret cast operation"]
56175#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p128)"]
56176#[inline]
56177#[cfg(target_endian = "little")]
56178#[target_feature(enable = "neon,aes")]
56179#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56180#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56181#[cfg_attr(
56182 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56183 assert_instr(nop)
56184)]
56185#[cfg_attr(
56186 not(target_arch = "arm"),
56187 stable(feature = "neon_intrinsics", since = "1.59.0")
56188)]
56189#[cfg_attr(
56190 target_arch = "arm",
56191 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56192)]
56193pub fn vreinterpretq_p16_p128(a: p128) -> poly16x8_t {
56194 unsafe { transmute(a) }
56195}
56196#[doc = "Vector reinterpret cast operation"]
56197#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p128)"]
56198#[inline]
56199#[cfg(target_endian = "big")]
56200#[target_feature(enable = "neon,aes")]
56201#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56202#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56203#[cfg_attr(
56204 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56205 assert_instr(nop)
56206)]
56207#[cfg_attr(
56208 not(target_arch = "arm"),
56209 stable(feature = "neon_intrinsics", since = "1.59.0")
56210)]
56211#[cfg_attr(
56212 target_arch = "arm",
56213 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56214)]
56215pub fn vreinterpretq_p16_p128(a: p128) -> poly16x8_t {
56216 unsafe {
56217 let ret_val: poly16x8_t = transmute(a);
56218 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
56219 }
56220}
56221#[doc = "Vector reinterpret cast operation"]
56222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p128)"]
56223#[inline]
56224#[cfg(target_endian = "little")]
56225#[target_feature(enable = "neon,aes")]
56226#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56227#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56228#[cfg_attr(
56229 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56230 assert_instr(nop)
56231)]
56232#[cfg_attr(
56233 not(target_arch = "arm"),
56234 stable(feature = "neon_intrinsics", since = "1.59.0")
56235)]
56236#[cfg_attr(
56237 target_arch = "arm",
56238 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56239)]
56240pub fn vreinterpretq_p64_p128(a: p128) -> poly64x2_t {
56241 unsafe { transmute(a) }
56242}
56243#[doc = "Vector reinterpret cast operation"]
56244#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p128)"]
56245#[inline]
56246#[cfg(target_endian = "big")]
56247#[target_feature(enable = "neon,aes")]
56248#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56249#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56250#[cfg_attr(
56251 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56252 assert_instr(nop)
56253)]
56254#[cfg_attr(
56255 not(target_arch = "arm"),
56256 stable(feature = "neon_intrinsics", since = "1.59.0")
56257)]
56258#[cfg_attr(
56259 target_arch = "arm",
56260 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56261)]
56262pub fn vreinterpretq_p64_p128(a: p128) -> poly64x2_t {
56263 unsafe {
56264 let ret_val: poly64x2_t = transmute(a);
56265 simd_shuffle!(ret_val, ret_val, [1, 0])
56266 }
56267}
56268#[doc = "Vector reinterpret cast operation"]
56269#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s8)"]
56270#[inline]
56271#[cfg(target_endian = "little")]
56272#[target_feature(enable = "neon,aes")]
56273#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56274#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56275#[cfg_attr(
56276 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56277 assert_instr(nop)
56278)]
56279#[cfg_attr(
56280 not(target_arch = "arm"),
56281 stable(feature = "neon_intrinsics", since = "1.59.0")
56282)]
56283#[cfg_attr(
56284 target_arch = "arm",
56285 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56286)]
56287pub fn vreinterpret_p64_s8(a: int8x8_t) -> poly64x1_t {
56288 unsafe { transmute(a) }
56289}
56290#[doc = "Vector reinterpret cast operation"]
56291#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s8)"]
56292#[inline]
56293#[cfg(target_endian = "big")]
56294#[target_feature(enable = "neon,aes")]
56295#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56296#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56297#[cfg_attr(
56298 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56299 assert_instr(nop)
56300)]
56301#[cfg_attr(
56302 not(target_arch = "arm"),
56303 stable(feature = "neon_intrinsics", since = "1.59.0")
56304)]
56305#[cfg_attr(
56306 target_arch = "arm",
56307 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56308)]
56309pub fn vreinterpret_p64_s8(a: int8x8_t) -> poly64x1_t {
56310 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
56311 unsafe { transmute(a) }
56312}
56313#[doc = "Vector reinterpret cast operation"]
56314#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s8)"]
56315#[inline]
56316#[cfg(target_endian = "little")]
56317#[target_feature(enable = "neon,aes")]
56318#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56319#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56320#[cfg_attr(
56321 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56322 assert_instr(nop)
56323)]
56324#[cfg_attr(
56325 not(target_arch = "arm"),
56326 stable(feature = "neon_intrinsics", since = "1.59.0")
56327)]
56328#[cfg_attr(
56329 target_arch = "arm",
56330 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56331)]
56332pub fn vreinterpretq_p128_s8(a: int8x16_t) -> p128 {
56333 unsafe { transmute(a) }
56334}
56335#[doc = "Vector reinterpret cast operation"]
56336#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s8)"]
56337#[inline]
56338#[cfg(target_endian = "big")]
56339#[target_feature(enable = "neon,aes")]
56340#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56341#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56342#[cfg_attr(
56343 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56344 assert_instr(nop)
56345)]
56346#[cfg_attr(
56347 not(target_arch = "arm"),
56348 stable(feature = "neon_intrinsics", since = "1.59.0")
56349)]
56350#[cfg_attr(
56351 target_arch = "arm",
56352 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56353)]
56354pub fn vreinterpretq_p128_s8(a: int8x16_t) -> p128 {
56355 let a: int8x16_t =
56356 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
56357 unsafe { transmute(a) }
56358}
56359#[doc = "Vector reinterpret cast operation"]
56360#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s8)"]
56361#[inline]
56362#[cfg(target_endian = "little")]
56363#[target_feature(enable = "neon,aes")]
56364#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56365#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56366#[cfg_attr(
56367 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56368 assert_instr(nop)
56369)]
56370#[cfg_attr(
56371 not(target_arch = "arm"),
56372 stable(feature = "neon_intrinsics", since = "1.59.0")
56373)]
56374#[cfg_attr(
56375 target_arch = "arm",
56376 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56377)]
56378pub fn vreinterpretq_p64_s8(a: int8x16_t) -> poly64x2_t {
56379 unsafe { transmute(a) }
56380}
56381#[doc = "Vector reinterpret cast operation"]
56382#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s8)"]
56383#[inline]
56384#[cfg(target_endian = "big")]
56385#[target_feature(enable = "neon,aes")]
56386#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56387#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56388#[cfg_attr(
56389 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56390 assert_instr(nop)
56391)]
56392#[cfg_attr(
56393 not(target_arch = "arm"),
56394 stable(feature = "neon_intrinsics", since = "1.59.0")
56395)]
56396#[cfg_attr(
56397 target_arch = "arm",
56398 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56399)]
56400pub fn vreinterpretq_p64_s8(a: int8x16_t) -> poly64x2_t {
56401 let a: int8x16_t =
56402 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
56403 unsafe {
56404 let ret_val: poly64x2_t = transmute(a);
56405 simd_shuffle!(ret_val, ret_val, [1, 0])
56406 }
56407}
56408#[doc = "Vector reinterpret cast operation"]
56409#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s16)"]
56410#[inline]
56411#[cfg(target_endian = "little")]
56412#[target_feature(enable = "neon,aes")]
56413#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56414#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56415#[cfg_attr(
56416 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56417 assert_instr(nop)
56418)]
56419#[cfg_attr(
56420 not(target_arch = "arm"),
56421 stable(feature = "neon_intrinsics", since = "1.59.0")
56422)]
56423#[cfg_attr(
56424 target_arch = "arm",
56425 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56426)]
56427pub fn vreinterpret_p64_s16(a: int16x4_t) -> poly64x1_t {
56428 unsafe { transmute(a) }
56429}
56430#[doc = "Vector reinterpret cast operation"]
56431#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s16)"]
56432#[inline]
56433#[cfg(target_endian = "big")]
56434#[target_feature(enable = "neon,aes")]
56435#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56436#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56437#[cfg_attr(
56438 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56439 assert_instr(nop)
56440)]
56441#[cfg_attr(
56442 not(target_arch = "arm"),
56443 stable(feature = "neon_intrinsics", since = "1.59.0")
56444)]
56445#[cfg_attr(
56446 target_arch = "arm",
56447 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56448)]
56449pub fn vreinterpret_p64_s16(a: int16x4_t) -> poly64x1_t {
56450 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
56451 unsafe { transmute(a) }
56452}
56453#[doc = "Vector reinterpret cast operation"]
56454#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s16)"]
56455#[inline]
56456#[cfg(target_endian = "little")]
56457#[target_feature(enable = "neon,aes")]
56458#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56459#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56460#[cfg_attr(
56461 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56462 assert_instr(nop)
56463)]
56464#[cfg_attr(
56465 not(target_arch = "arm"),
56466 stable(feature = "neon_intrinsics", since = "1.59.0")
56467)]
56468#[cfg_attr(
56469 target_arch = "arm",
56470 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56471)]
56472pub fn vreinterpretq_p128_s16(a: int16x8_t) -> p128 {
56473 unsafe { transmute(a) }
56474}
56475#[doc = "Vector reinterpret cast operation"]
56476#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s16)"]
56477#[inline]
56478#[cfg(target_endian = "big")]
56479#[target_feature(enable = "neon,aes")]
56480#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56481#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56482#[cfg_attr(
56483 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56484 assert_instr(nop)
56485)]
56486#[cfg_attr(
56487 not(target_arch = "arm"),
56488 stable(feature = "neon_intrinsics", since = "1.59.0")
56489)]
56490#[cfg_attr(
56491 target_arch = "arm",
56492 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56493)]
56494pub fn vreinterpretq_p128_s16(a: int16x8_t) -> p128 {
56495 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
56496 unsafe { transmute(a) }
56497}
56498#[doc = "Vector reinterpret cast operation"]
56499#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s16)"]
56500#[inline]
56501#[cfg(target_endian = "little")]
56502#[target_feature(enable = "neon,aes")]
56503#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56504#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56505#[cfg_attr(
56506 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56507 assert_instr(nop)
56508)]
56509#[cfg_attr(
56510 not(target_arch = "arm"),
56511 stable(feature = "neon_intrinsics", since = "1.59.0")
56512)]
56513#[cfg_attr(
56514 target_arch = "arm",
56515 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56516)]
56517pub fn vreinterpretq_p64_s16(a: int16x8_t) -> poly64x2_t {
56518 unsafe { transmute(a) }
56519}
56520#[doc = "Vector reinterpret cast operation"]
56521#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s16)"]
56522#[inline]
56523#[cfg(target_endian = "big")]
56524#[target_feature(enable = "neon,aes")]
56525#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56526#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56527#[cfg_attr(
56528 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56529 assert_instr(nop)
56530)]
56531#[cfg_attr(
56532 not(target_arch = "arm"),
56533 stable(feature = "neon_intrinsics", since = "1.59.0")
56534)]
56535#[cfg_attr(
56536 target_arch = "arm",
56537 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56538)]
56539pub fn vreinterpretq_p64_s16(a: int16x8_t) -> poly64x2_t {
56540 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
56541 unsafe {
56542 let ret_val: poly64x2_t = transmute(a);
56543 simd_shuffle!(ret_val, ret_val, [1, 0])
56544 }
56545}
56546#[doc = "Vector reinterpret cast operation"]
56547#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s32)"]
56548#[inline]
56549#[cfg(target_endian = "little")]
56550#[target_feature(enable = "neon,aes")]
56551#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56552#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56553#[cfg_attr(
56554 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56555 assert_instr(nop)
56556)]
56557#[cfg_attr(
56558 not(target_arch = "arm"),
56559 stable(feature = "neon_intrinsics", since = "1.59.0")
56560)]
56561#[cfg_attr(
56562 target_arch = "arm",
56563 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56564)]
56565pub fn vreinterpret_p64_s32(a: int32x2_t) -> poly64x1_t {
56566 unsafe { transmute(a) }
56567}
56568#[doc = "Vector reinterpret cast operation"]
56569#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s32)"]
56570#[inline]
56571#[cfg(target_endian = "big")]
56572#[target_feature(enable = "neon,aes")]
56573#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56574#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56575#[cfg_attr(
56576 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56577 assert_instr(nop)
56578)]
56579#[cfg_attr(
56580 not(target_arch = "arm"),
56581 stable(feature = "neon_intrinsics", since = "1.59.0")
56582)]
56583#[cfg_attr(
56584 target_arch = "arm",
56585 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56586)]
56587pub fn vreinterpret_p64_s32(a: int32x2_t) -> poly64x1_t {
56588 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
56589 unsafe { transmute(a) }
56590}
56591#[doc = "Vector reinterpret cast operation"]
56592#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s32)"]
56593#[inline]
56594#[cfg(target_endian = "little")]
56595#[target_feature(enable = "neon,aes")]
56596#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56597#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56598#[cfg_attr(
56599 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56600 assert_instr(nop)
56601)]
56602#[cfg_attr(
56603 not(target_arch = "arm"),
56604 stable(feature = "neon_intrinsics", since = "1.59.0")
56605)]
56606#[cfg_attr(
56607 target_arch = "arm",
56608 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56609)]
56610pub fn vreinterpretq_p128_s32(a: int32x4_t) -> p128 {
56611 unsafe { transmute(a) }
56612}
56613#[doc = "Vector reinterpret cast operation"]
56614#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s32)"]
56615#[inline]
56616#[cfg(target_endian = "big")]
56617#[target_feature(enable = "neon,aes")]
56618#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56619#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56620#[cfg_attr(
56621 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56622 assert_instr(nop)
56623)]
56624#[cfg_attr(
56625 not(target_arch = "arm"),
56626 stable(feature = "neon_intrinsics", since = "1.59.0")
56627)]
56628#[cfg_attr(
56629 target_arch = "arm",
56630 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56631)]
56632pub fn vreinterpretq_p128_s32(a: int32x4_t) -> p128 {
56633 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
56634 unsafe { transmute(a) }
56635}
56636#[doc = "Vector reinterpret cast operation"]
56637#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s32)"]
56638#[inline]
56639#[cfg(target_endian = "little")]
56640#[target_feature(enable = "neon,aes")]
56641#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56642#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56643#[cfg_attr(
56644 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56645 assert_instr(nop)
56646)]
56647#[cfg_attr(
56648 not(target_arch = "arm"),
56649 stable(feature = "neon_intrinsics", since = "1.59.0")
56650)]
56651#[cfg_attr(
56652 target_arch = "arm",
56653 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56654)]
56655pub fn vreinterpretq_p64_s32(a: int32x4_t) -> poly64x2_t {
56656 unsafe { transmute(a) }
56657}
56658#[doc = "Vector reinterpret cast operation"]
56659#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s32)"]
56660#[inline]
56661#[cfg(target_endian = "big")]
56662#[target_feature(enable = "neon,aes")]
56663#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56664#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56665#[cfg_attr(
56666 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56667 assert_instr(nop)
56668)]
56669#[cfg_attr(
56670 not(target_arch = "arm"),
56671 stable(feature = "neon_intrinsics", since = "1.59.0")
56672)]
56673#[cfg_attr(
56674 target_arch = "arm",
56675 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56676)]
56677pub fn vreinterpretq_p64_s32(a: int32x4_t) -> poly64x2_t {
56678 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
56679 unsafe {
56680 let ret_val: poly64x2_t = transmute(a);
56681 simd_shuffle!(ret_val, ret_val, [1, 0])
56682 }
56683}
56684#[doc = "Vector reinterpret cast operation"]
56685#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s64)"]
56686#[inline]
56687#[cfg(target_endian = "little")]
56688#[target_feature(enable = "neon,aes")]
56689#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56690#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56691#[cfg_attr(
56692 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56693 assert_instr(nop)
56694)]
56695#[cfg_attr(
56696 not(target_arch = "arm"),
56697 stable(feature = "neon_intrinsics", since = "1.59.0")
56698)]
56699#[cfg_attr(
56700 target_arch = "arm",
56701 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56702)]
56703pub fn vreinterpretq_p128_s64(a: int64x2_t) -> p128 {
56704 unsafe { transmute(a) }
56705}
56706#[doc = "Vector reinterpret cast operation"]
56707#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s64)"]
56708#[inline]
56709#[cfg(target_endian = "big")]
56710#[target_feature(enable = "neon,aes")]
56711#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56712#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56713#[cfg_attr(
56714 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56715 assert_instr(nop)
56716)]
56717#[cfg_attr(
56718 not(target_arch = "arm"),
56719 stable(feature = "neon_intrinsics", since = "1.59.0")
56720)]
56721#[cfg_attr(
56722 target_arch = "arm",
56723 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56724)]
56725pub fn vreinterpretq_p128_s64(a: int64x2_t) -> p128 {
56726 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
56727 unsafe { transmute(a) }
56728}
56729#[doc = "Vector reinterpret cast operation"]
56730#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u8)"]
56731#[inline]
56732#[cfg(target_endian = "little")]
56733#[target_feature(enable = "neon,aes")]
56734#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56735#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56736#[cfg_attr(
56737 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56738 assert_instr(nop)
56739)]
56740#[cfg_attr(
56741 not(target_arch = "arm"),
56742 stable(feature = "neon_intrinsics", since = "1.59.0")
56743)]
56744#[cfg_attr(
56745 target_arch = "arm",
56746 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56747)]
56748pub fn vreinterpret_p64_u8(a: uint8x8_t) -> poly64x1_t {
56749 unsafe { transmute(a) }
56750}
56751#[doc = "Vector reinterpret cast operation"]
56752#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u8)"]
56753#[inline]
56754#[cfg(target_endian = "big")]
56755#[target_feature(enable = "neon,aes")]
56756#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56757#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56758#[cfg_attr(
56759 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56760 assert_instr(nop)
56761)]
56762#[cfg_attr(
56763 not(target_arch = "arm"),
56764 stable(feature = "neon_intrinsics", since = "1.59.0")
56765)]
56766#[cfg_attr(
56767 target_arch = "arm",
56768 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56769)]
56770pub fn vreinterpret_p64_u8(a: uint8x8_t) -> poly64x1_t {
56771 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
56772 unsafe { transmute(a) }
56773}
56774#[doc = "Vector reinterpret cast operation"]
56775#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u8)"]
56776#[inline]
56777#[cfg(target_endian = "little")]
56778#[target_feature(enable = "neon,aes")]
56779#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56780#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56781#[cfg_attr(
56782 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56783 assert_instr(nop)
56784)]
56785#[cfg_attr(
56786 not(target_arch = "arm"),
56787 stable(feature = "neon_intrinsics", since = "1.59.0")
56788)]
56789#[cfg_attr(
56790 target_arch = "arm",
56791 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56792)]
56793pub fn vreinterpretq_p128_u8(a: uint8x16_t) -> p128 {
56794 unsafe { transmute(a) }
56795}
56796#[doc = "Vector reinterpret cast operation"]
56797#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u8)"]
56798#[inline]
56799#[cfg(target_endian = "big")]
56800#[target_feature(enable = "neon,aes")]
56801#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56802#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56803#[cfg_attr(
56804 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56805 assert_instr(nop)
56806)]
56807#[cfg_attr(
56808 not(target_arch = "arm"),
56809 stable(feature = "neon_intrinsics", since = "1.59.0")
56810)]
56811#[cfg_attr(
56812 target_arch = "arm",
56813 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56814)]
56815pub fn vreinterpretq_p128_u8(a: uint8x16_t) -> p128 {
56816 let a: uint8x16_t =
56817 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
56818 unsafe { transmute(a) }
56819}
56820#[doc = "Vector reinterpret cast operation"]
56821#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u8)"]
56822#[inline]
56823#[cfg(target_endian = "little")]
56824#[target_feature(enable = "neon,aes")]
56825#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56826#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56827#[cfg_attr(
56828 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56829 assert_instr(nop)
56830)]
56831#[cfg_attr(
56832 not(target_arch = "arm"),
56833 stable(feature = "neon_intrinsics", since = "1.59.0")
56834)]
56835#[cfg_attr(
56836 target_arch = "arm",
56837 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56838)]
56839pub fn vreinterpretq_p64_u8(a: uint8x16_t) -> poly64x2_t {
56840 unsafe { transmute(a) }
56841}
56842#[doc = "Vector reinterpret cast operation"]
56843#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u8)"]
56844#[inline]
56845#[cfg(target_endian = "big")]
56846#[target_feature(enable = "neon,aes")]
56847#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56848#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56849#[cfg_attr(
56850 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56851 assert_instr(nop)
56852)]
56853#[cfg_attr(
56854 not(target_arch = "arm"),
56855 stable(feature = "neon_intrinsics", since = "1.59.0")
56856)]
56857#[cfg_attr(
56858 target_arch = "arm",
56859 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56860)]
56861pub fn vreinterpretq_p64_u8(a: uint8x16_t) -> poly64x2_t {
56862 let a: uint8x16_t =
56863 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
56864 unsafe {
56865 let ret_val: poly64x2_t = transmute(a);
56866 simd_shuffle!(ret_val, ret_val, [1, 0])
56867 }
56868}
56869#[doc = "Vector reinterpret cast operation"]
56870#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u16)"]
56871#[inline]
56872#[cfg(target_endian = "little")]
56873#[target_feature(enable = "neon,aes")]
56874#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56875#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56876#[cfg_attr(
56877 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56878 assert_instr(nop)
56879)]
56880#[cfg_attr(
56881 not(target_arch = "arm"),
56882 stable(feature = "neon_intrinsics", since = "1.59.0")
56883)]
56884#[cfg_attr(
56885 target_arch = "arm",
56886 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56887)]
56888pub fn vreinterpret_p64_u16(a: uint16x4_t) -> poly64x1_t {
56889 unsafe { transmute(a) }
56890}
56891#[doc = "Vector reinterpret cast operation"]
56892#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u16)"]
56893#[inline]
56894#[cfg(target_endian = "big")]
56895#[target_feature(enable = "neon,aes")]
56896#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56897#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56898#[cfg_attr(
56899 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56900 assert_instr(nop)
56901)]
56902#[cfg_attr(
56903 not(target_arch = "arm"),
56904 stable(feature = "neon_intrinsics", since = "1.59.0")
56905)]
56906#[cfg_attr(
56907 target_arch = "arm",
56908 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56909)]
56910pub fn vreinterpret_p64_u16(a: uint16x4_t) -> poly64x1_t {
56911 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
56912 unsafe { transmute(a) }
56913}
56914#[doc = "Vector reinterpret cast operation"]
56915#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u16)"]
56916#[inline]
56917#[cfg(target_endian = "little")]
56918#[target_feature(enable = "neon,aes")]
56919#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56920#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56921#[cfg_attr(
56922 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56923 assert_instr(nop)
56924)]
56925#[cfg_attr(
56926 not(target_arch = "arm"),
56927 stable(feature = "neon_intrinsics", since = "1.59.0")
56928)]
56929#[cfg_attr(
56930 target_arch = "arm",
56931 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56932)]
56933pub fn vreinterpretq_p128_u16(a: uint16x8_t) -> p128 {
56934 unsafe { transmute(a) }
56935}
56936#[doc = "Vector reinterpret cast operation"]
56937#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u16)"]
56938#[inline]
56939#[cfg(target_endian = "big")]
56940#[target_feature(enable = "neon,aes")]
56941#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56942#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56943#[cfg_attr(
56944 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56945 assert_instr(nop)
56946)]
56947#[cfg_attr(
56948 not(target_arch = "arm"),
56949 stable(feature = "neon_intrinsics", since = "1.59.0")
56950)]
56951#[cfg_attr(
56952 target_arch = "arm",
56953 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56954)]
56955pub fn vreinterpretq_p128_u16(a: uint16x8_t) -> p128 {
56956 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
56957 unsafe { transmute(a) }
56958}
56959#[doc = "Vector reinterpret cast operation"]
56960#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u16)"]
56961#[inline]
56962#[cfg(target_endian = "little")]
56963#[target_feature(enable = "neon,aes")]
56964#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56965#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56966#[cfg_attr(
56967 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56968 assert_instr(nop)
56969)]
56970#[cfg_attr(
56971 not(target_arch = "arm"),
56972 stable(feature = "neon_intrinsics", since = "1.59.0")
56973)]
56974#[cfg_attr(
56975 target_arch = "arm",
56976 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56977)]
56978pub fn vreinterpretq_p64_u16(a: uint16x8_t) -> poly64x2_t {
56979 unsafe { transmute(a) }
56980}
56981#[doc = "Vector reinterpret cast operation"]
56982#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u16)"]
56983#[inline]
56984#[cfg(target_endian = "big")]
56985#[target_feature(enable = "neon,aes")]
56986#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
56987#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
56988#[cfg_attr(
56989 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56990 assert_instr(nop)
56991)]
56992#[cfg_attr(
56993 not(target_arch = "arm"),
56994 stable(feature = "neon_intrinsics", since = "1.59.0")
56995)]
56996#[cfg_attr(
56997 target_arch = "arm",
56998 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56999)]
57000pub fn vreinterpretq_p64_u16(a: uint16x8_t) -> poly64x2_t {
57001 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
57002 unsafe {
57003 let ret_val: poly64x2_t = transmute(a);
57004 simd_shuffle!(ret_val, ret_val, [1, 0])
57005 }
57006}
57007#[doc = "Vector reinterpret cast operation"]
57008#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u32)"]
57009#[inline]
57010#[cfg(target_endian = "little")]
57011#[target_feature(enable = "neon,aes")]
57012#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57013#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57014#[cfg_attr(
57015 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57016 assert_instr(nop)
57017)]
57018#[cfg_attr(
57019 not(target_arch = "arm"),
57020 stable(feature = "neon_intrinsics", since = "1.59.0")
57021)]
57022#[cfg_attr(
57023 target_arch = "arm",
57024 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57025)]
57026pub fn vreinterpret_p64_u32(a: uint32x2_t) -> poly64x1_t {
57027 unsafe { transmute(a) }
57028}
57029#[doc = "Vector reinterpret cast operation"]
57030#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u32)"]
57031#[inline]
57032#[cfg(target_endian = "big")]
57033#[target_feature(enable = "neon,aes")]
57034#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57035#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57036#[cfg_attr(
57037 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57038 assert_instr(nop)
57039)]
57040#[cfg_attr(
57041 not(target_arch = "arm"),
57042 stable(feature = "neon_intrinsics", since = "1.59.0")
57043)]
57044#[cfg_attr(
57045 target_arch = "arm",
57046 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57047)]
57048pub fn vreinterpret_p64_u32(a: uint32x2_t) -> poly64x1_t {
57049 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
57050 unsafe { transmute(a) }
57051}
57052#[doc = "Vector reinterpret cast operation"]
57053#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u32)"]
57054#[inline]
57055#[cfg(target_endian = "little")]
57056#[target_feature(enable = "neon,aes")]
57057#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57058#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57059#[cfg_attr(
57060 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57061 assert_instr(nop)
57062)]
57063#[cfg_attr(
57064 not(target_arch = "arm"),
57065 stable(feature = "neon_intrinsics", since = "1.59.0")
57066)]
57067#[cfg_attr(
57068 target_arch = "arm",
57069 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57070)]
57071pub fn vreinterpretq_p128_u32(a: uint32x4_t) -> p128 {
57072 unsafe { transmute(a) }
57073}
57074#[doc = "Vector reinterpret cast operation"]
57075#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u32)"]
57076#[inline]
57077#[cfg(target_endian = "big")]
57078#[target_feature(enable = "neon,aes")]
57079#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57080#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57081#[cfg_attr(
57082 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57083 assert_instr(nop)
57084)]
57085#[cfg_attr(
57086 not(target_arch = "arm"),
57087 stable(feature = "neon_intrinsics", since = "1.59.0")
57088)]
57089#[cfg_attr(
57090 target_arch = "arm",
57091 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57092)]
57093pub fn vreinterpretq_p128_u32(a: uint32x4_t) -> p128 {
57094 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
57095 unsafe { transmute(a) }
57096}
57097#[doc = "Vector reinterpret cast operation"]
57098#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u32)"]
57099#[inline]
57100#[cfg(target_endian = "little")]
57101#[target_feature(enable = "neon,aes")]
57102#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57103#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57104#[cfg_attr(
57105 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57106 assert_instr(nop)
57107)]
57108#[cfg_attr(
57109 not(target_arch = "arm"),
57110 stable(feature = "neon_intrinsics", since = "1.59.0")
57111)]
57112#[cfg_attr(
57113 target_arch = "arm",
57114 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57115)]
57116pub fn vreinterpretq_p64_u32(a: uint32x4_t) -> poly64x2_t {
57117 unsafe { transmute(a) }
57118}
57119#[doc = "Vector reinterpret cast operation"]
57120#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u32)"]
57121#[inline]
57122#[cfg(target_endian = "big")]
57123#[target_feature(enable = "neon,aes")]
57124#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57125#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57126#[cfg_attr(
57127 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57128 assert_instr(nop)
57129)]
57130#[cfg_attr(
57131 not(target_arch = "arm"),
57132 stable(feature = "neon_intrinsics", since = "1.59.0")
57133)]
57134#[cfg_attr(
57135 target_arch = "arm",
57136 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57137)]
57138pub fn vreinterpretq_p64_u32(a: uint32x4_t) -> poly64x2_t {
57139 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
57140 unsafe {
57141 let ret_val: poly64x2_t = transmute(a);
57142 simd_shuffle!(ret_val, ret_val, [1, 0])
57143 }
57144}
57145#[doc = "Vector reinterpret cast operation"]
57146#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u64)"]
57147#[inline]
57148#[cfg(target_endian = "little")]
57149#[target_feature(enable = "neon,aes")]
57150#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57151#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57152#[cfg_attr(
57153 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57154 assert_instr(nop)
57155)]
57156#[cfg_attr(
57157 not(target_arch = "arm"),
57158 stable(feature = "neon_intrinsics", since = "1.59.0")
57159)]
57160#[cfg_attr(
57161 target_arch = "arm",
57162 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57163)]
57164pub fn vreinterpretq_p128_u64(a: uint64x2_t) -> p128 {
57165 unsafe { transmute(a) }
57166}
57167#[doc = "Vector reinterpret cast operation"]
57168#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u64)"]
57169#[inline]
57170#[cfg(target_endian = "big")]
57171#[target_feature(enable = "neon,aes")]
57172#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57173#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57174#[cfg_attr(
57175 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57176 assert_instr(nop)
57177)]
57178#[cfg_attr(
57179 not(target_arch = "arm"),
57180 stable(feature = "neon_intrinsics", since = "1.59.0")
57181)]
57182#[cfg_attr(
57183 target_arch = "arm",
57184 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57185)]
57186pub fn vreinterpretq_p128_u64(a: uint64x2_t) -> p128 {
57187 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
57188 unsafe { transmute(a) }
57189}
57190#[doc = "Vector reinterpret cast operation"]
57191#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_p8)"]
57192#[inline]
57193#[cfg(target_endian = "little")]
57194#[target_feature(enable = "neon,aes")]
57195#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57196#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57197#[cfg_attr(
57198 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57199 assert_instr(nop)
57200)]
57201#[cfg_attr(
57202 not(target_arch = "arm"),
57203 stable(feature = "neon_intrinsics", since = "1.59.0")
57204)]
57205#[cfg_attr(
57206 target_arch = "arm",
57207 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57208)]
57209pub fn vreinterpret_p64_p8(a: poly8x8_t) -> poly64x1_t {
57210 unsafe { transmute(a) }
57211}
57212#[doc = "Vector reinterpret cast operation"]
57213#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_p8)"]
57214#[inline]
57215#[cfg(target_endian = "big")]
57216#[target_feature(enable = "neon,aes")]
57217#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57218#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57219#[cfg_attr(
57220 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57221 assert_instr(nop)
57222)]
57223#[cfg_attr(
57224 not(target_arch = "arm"),
57225 stable(feature = "neon_intrinsics", since = "1.59.0")
57226)]
57227#[cfg_attr(
57228 target_arch = "arm",
57229 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57230)]
57231pub fn vreinterpret_p64_p8(a: poly8x8_t) -> poly64x1_t {
57232 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
57233 unsafe { transmute(a) }
57234}
57235#[doc = "Vector reinterpret cast operation"]
57236#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p8)"]
57237#[inline]
57238#[cfg(target_endian = "little")]
57239#[target_feature(enable = "neon,aes")]
57240#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57241#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57242#[cfg_attr(
57243 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57244 assert_instr(nop)
57245)]
57246#[cfg_attr(
57247 not(target_arch = "arm"),
57248 stable(feature = "neon_intrinsics", since = "1.59.0")
57249)]
57250#[cfg_attr(
57251 target_arch = "arm",
57252 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57253)]
57254pub fn vreinterpretq_p128_p8(a: poly8x16_t) -> p128 {
57255 unsafe { transmute(a) }
57256}
57257#[doc = "Vector reinterpret cast operation"]
57258#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p8)"]
57259#[inline]
57260#[cfg(target_endian = "big")]
57261#[target_feature(enable = "neon,aes")]
57262#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57263#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57264#[cfg_attr(
57265 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57266 assert_instr(nop)
57267)]
57268#[cfg_attr(
57269 not(target_arch = "arm"),
57270 stable(feature = "neon_intrinsics", since = "1.59.0")
57271)]
57272#[cfg_attr(
57273 target_arch = "arm",
57274 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57275)]
57276pub fn vreinterpretq_p128_p8(a: poly8x16_t) -> p128 {
57277 let a: poly8x16_t =
57278 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
57279 unsafe { transmute(a) }
57280}
57281#[doc = "Vector reinterpret cast operation"]
57282#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p8)"]
57283#[inline]
57284#[cfg(target_endian = "little")]
57285#[target_feature(enable = "neon,aes")]
57286#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57287#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57288#[cfg_attr(
57289 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57290 assert_instr(nop)
57291)]
57292#[cfg_attr(
57293 not(target_arch = "arm"),
57294 stable(feature = "neon_intrinsics", since = "1.59.0")
57295)]
57296#[cfg_attr(
57297 target_arch = "arm",
57298 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57299)]
57300pub fn vreinterpretq_p64_p8(a: poly8x16_t) -> poly64x2_t {
57301 unsafe { transmute(a) }
57302}
57303#[doc = "Vector reinterpret cast operation"]
57304#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p8)"]
57305#[inline]
57306#[cfg(target_endian = "big")]
57307#[target_feature(enable = "neon,aes")]
57308#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57309#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57310#[cfg_attr(
57311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57312 assert_instr(nop)
57313)]
57314#[cfg_attr(
57315 not(target_arch = "arm"),
57316 stable(feature = "neon_intrinsics", since = "1.59.0")
57317)]
57318#[cfg_attr(
57319 target_arch = "arm",
57320 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57321)]
57322pub fn vreinterpretq_p64_p8(a: poly8x16_t) -> poly64x2_t {
57323 let a: poly8x16_t =
57324 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
57325 unsafe {
57326 let ret_val: poly64x2_t = transmute(a);
57327 simd_shuffle!(ret_val, ret_val, [1, 0])
57328 }
57329}
57330#[doc = "Vector reinterpret cast operation"]
57331#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_p16)"]
57332#[inline]
57333#[cfg(target_endian = "little")]
57334#[target_feature(enable = "neon,aes")]
57335#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57336#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57337#[cfg_attr(
57338 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57339 assert_instr(nop)
57340)]
57341#[cfg_attr(
57342 not(target_arch = "arm"),
57343 stable(feature = "neon_intrinsics", since = "1.59.0")
57344)]
57345#[cfg_attr(
57346 target_arch = "arm",
57347 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57348)]
57349pub fn vreinterpret_p64_p16(a: poly16x4_t) -> poly64x1_t {
57350 unsafe { transmute(a) }
57351}
57352#[doc = "Vector reinterpret cast operation"]
57353#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_p16)"]
57354#[inline]
57355#[cfg(target_endian = "big")]
57356#[target_feature(enable = "neon,aes")]
57357#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57358#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57359#[cfg_attr(
57360 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57361 assert_instr(nop)
57362)]
57363#[cfg_attr(
57364 not(target_arch = "arm"),
57365 stable(feature = "neon_intrinsics", since = "1.59.0")
57366)]
57367#[cfg_attr(
57368 target_arch = "arm",
57369 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57370)]
57371pub fn vreinterpret_p64_p16(a: poly16x4_t) -> poly64x1_t {
57372 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
57373 unsafe { transmute(a) }
57374}
57375#[doc = "Vector reinterpret cast operation"]
57376#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p16)"]
57377#[inline]
57378#[cfg(target_endian = "little")]
57379#[target_feature(enable = "neon,aes")]
57380#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57381#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57382#[cfg_attr(
57383 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57384 assert_instr(nop)
57385)]
57386#[cfg_attr(
57387 not(target_arch = "arm"),
57388 stable(feature = "neon_intrinsics", since = "1.59.0")
57389)]
57390#[cfg_attr(
57391 target_arch = "arm",
57392 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57393)]
57394pub fn vreinterpretq_p128_p16(a: poly16x8_t) -> p128 {
57395 unsafe { transmute(a) }
57396}
57397#[doc = "Vector reinterpret cast operation"]
57398#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p16)"]
57399#[inline]
57400#[cfg(target_endian = "big")]
57401#[target_feature(enable = "neon,aes")]
57402#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57403#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57404#[cfg_attr(
57405 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57406 assert_instr(nop)
57407)]
57408#[cfg_attr(
57409 not(target_arch = "arm"),
57410 stable(feature = "neon_intrinsics", since = "1.59.0")
57411)]
57412#[cfg_attr(
57413 target_arch = "arm",
57414 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57415)]
57416pub fn vreinterpretq_p128_p16(a: poly16x8_t) -> p128 {
57417 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
57418 unsafe { transmute(a) }
57419}
57420#[doc = "Vector reinterpret cast operation"]
57421#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p16)"]
57422#[inline]
57423#[cfg(target_endian = "little")]
57424#[target_feature(enable = "neon,aes")]
57425#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57426#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57427#[cfg_attr(
57428 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57429 assert_instr(nop)
57430)]
57431#[cfg_attr(
57432 not(target_arch = "arm"),
57433 stable(feature = "neon_intrinsics", since = "1.59.0")
57434)]
57435#[cfg_attr(
57436 target_arch = "arm",
57437 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57438)]
57439pub fn vreinterpretq_p64_p16(a: poly16x8_t) -> poly64x2_t {
57440 unsafe { transmute(a) }
57441}
57442#[doc = "Vector reinterpret cast operation"]
57443#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p16)"]
57444#[inline]
57445#[cfg(target_endian = "big")]
57446#[target_feature(enable = "neon,aes")]
57447#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57448#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57449#[cfg_attr(
57450 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57451 assert_instr(nop)
57452)]
57453#[cfg_attr(
57454 not(target_arch = "arm"),
57455 stable(feature = "neon_intrinsics", since = "1.59.0")
57456)]
57457#[cfg_attr(
57458 target_arch = "arm",
57459 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57460)]
57461pub fn vreinterpretq_p64_p16(a: poly16x8_t) -> poly64x2_t {
57462 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
57463 unsafe {
57464 let ret_val: poly64x2_t = transmute(a);
57465 simd_shuffle!(ret_val, ret_val, [1, 0])
57466 }
57467}
57468#[doc = "Vector reinterpret cast operation"]
57469#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p64)"]
57470#[inline]
57471#[cfg(target_endian = "little")]
57472#[target_feature(enable = "neon,aes")]
57473#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57474#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57475#[cfg_attr(
57476 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57477 assert_instr(nop)
57478)]
57479#[cfg_attr(
57480 not(target_arch = "arm"),
57481 stable(feature = "neon_intrinsics", since = "1.59.0")
57482)]
57483#[cfg_attr(
57484 target_arch = "arm",
57485 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57486)]
57487pub fn vreinterpret_s8_p64(a: poly64x1_t) -> int8x8_t {
57488 unsafe { transmute(a) }
57489}
57490#[doc = "Vector reinterpret cast operation"]
57491#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p64)"]
57492#[inline]
57493#[cfg(target_endian = "big")]
57494#[target_feature(enable = "neon,aes")]
57495#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57496#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57497#[cfg_attr(
57498 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57499 assert_instr(nop)
57500)]
57501#[cfg_attr(
57502 not(target_arch = "arm"),
57503 stable(feature = "neon_intrinsics", since = "1.59.0")
57504)]
57505#[cfg_attr(
57506 target_arch = "arm",
57507 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57508)]
57509pub fn vreinterpret_s8_p64(a: poly64x1_t) -> int8x8_t {
57510 unsafe {
57511 let ret_val: int8x8_t = transmute(a);
57512 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
57513 }
57514}
57515#[doc = "Vector reinterpret cast operation"]
57516#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p64)"]
57517#[inline]
57518#[cfg(target_endian = "little")]
57519#[target_feature(enable = "neon,aes")]
57520#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57521#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57522#[cfg_attr(
57523 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57524 assert_instr(nop)
57525)]
57526#[cfg_attr(
57527 not(target_arch = "arm"),
57528 stable(feature = "neon_intrinsics", since = "1.59.0")
57529)]
57530#[cfg_attr(
57531 target_arch = "arm",
57532 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57533)]
57534pub fn vreinterpret_s16_p64(a: poly64x1_t) -> int16x4_t {
57535 unsafe { transmute(a) }
57536}
57537#[doc = "Vector reinterpret cast operation"]
57538#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p64)"]
57539#[inline]
57540#[cfg(target_endian = "big")]
57541#[target_feature(enable = "neon,aes")]
57542#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57543#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57544#[cfg_attr(
57545 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57546 assert_instr(nop)
57547)]
57548#[cfg_attr(
57549 not(target_arch = "arm"),
57550 stable(feature = "neon_intrinsics", since = "1.59.0")
57551)]
57552#[cfg_attr(
57553 target_arch = "arm",
57554 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57555)]
57556pub fn vreinterpret_s16_p64(a: poly64x1_t) -> int16x4_t {
57557 unsafe {
57558 let ret_val: int16x4_t = transmute(a);
57559 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
57560 }
57561}
57562#[doc = "Vector reinterpret cast operation"]
57563#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p64)"]
57564#[inline]
57565#[cfg(target_endian = "little")]
57566#[target_feature(enable = "neon,aes")]
57567#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57568#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57569#[cfg_attr(
57570 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57571 assert_instr(nop)
57572)]
57573#[cfg_attr(
57574 not(target_arch = "arm"),
57575 stable(feature = "neon_intrinsics", since = "1.59.0")
57576)]
57577#[cfg_attr(
57578 target_arch = "arm",
57579 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57580)]
57581pub fn vreinterpret_s32_p64(a: poly64x1_t) -> int32x2_t {
57582 unsafe { transmute(a) }
57583}
57584#[doc = "Vector reinterpret cast operation"]
57585#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p64)"]
57586#[inline]
57587#[cfg(target_endian = "big")]
57588#[target_feature(enable = "neon,aes")]
57589#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57590#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57591#[cfg_attr(
57592 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57593 assert_instr(nop)
57594)]
57595#[cfg_attr(
57596 not(target_arch = "arm"),
57597 stable(feature = "neon_intrinsics", since = "1.59.0")
57598)]
57599#[cfg_attr(
57600 target_arch = "arm",
57601 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57602)]
57603pub fn vreinterpret_s32_p64(a: poly64x1_t) -> int32x2_t {
57604 unsafe {
57605 let ret_val: int32x2_t = transmute(a);
57606 simd_shuffle!(ret_val, ret_val, [1, 0])
57607 }
57608}
57609#[doc = "Vector reinterpret cast operation"]
57610#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p64)"]
57611#[inline]
57612#[cfg(target_endian = "little")]
57613#[target_feature(enable = "neon,aes")]
57614#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57615#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57616#[cfg_attr(
57617 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57618 assert_instr(nop)
57619)]
57620#[cfg_attr(
57621 not(target_arch = "arm"),
57622 stable(feature = "neon_intrinsics", since = "1.59.0")
57623)]
57624#[cfg_attr(
57625 target_arch = "arm",
57626 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57627)]
57628pub fn vreinterpret_u8_p64(a: poly64x1_t) -> uint8x8_t {
57629 unsafe { transmute(a) }
57630}
57631#[doc = "Vector reinterpret cast operation"]
57632#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p64)"]
57633#[inline]
57634#[cfg(target_endian = "big")]
57635#[target_feature(enable = "neon,aes")]
57636#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57637#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57638#[cfg_attr(
57639 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57640 assert_instr(nop)
57641)]
57642#[cfg_attr(
57643 not(target_arch = "arm"),
57644 stable(feature = "neon_intrinsics", since = "1.59.0")
57645)]
57646#[cfg_attr(
57647 target_arch = "arm",
57648 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57649)]
57650pub fn vreinterpret_u8_p64(a: poly64x1_t) -> uint8x8_t {
57651 unsafe {
57652 let ret_val: uint8x8_t = transmute(a);
57653 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
57654 }
57655}
57656#[doc = "Vector reinterpret cast operation"]
57657#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p64)"]
57658#[inline]
57659#[cfg(target_endian = "little")]
57660#[target_feature(enable = "neon,aes")]
57661#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57662#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57663#[cfg_attr(
57664 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57665 assert_instr(nop)
57666)]
57667#[cfg_attr(
57668 not(target_arch = "arm"),
57669 stable(feature = "neon_intrinsics", since = "1.59.0")
57670)]
57671#[cfg_attr(
57672 target_arch = "arm",
57673 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57674)]
57675pub fn vreinterpret_u16_p64(a: poly64x1_t) -> uint16x4_t {
57676 unsafe { transmute(a) }
57677}
57678#[doc = "Vector reinterpret cast operation"]
57679#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p64)"]
57680#[inline]
57681#[cfg(target_endian = "big")]
57682#[target_feature(enable = "neon,aes")]
57683#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57684#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57685#[cfg_attr(
57686 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57687 assert_instr(nop)
57688)]
57689#[cfg_attr(
57690 not(target_arch = "arm"),
57691 stable(feature = "neon_intrinsics", since = "1.59.0")
57692)]
57693#[cfg_attr(
57694 target_arch = "arm",
57695 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57696)]
57697pub fn vreinterpret_u16_p64(a: poly64x1_t) -> uint16x4_t {
57698 unsafe {
57699 let ret_val: uint16x4_t = transmute(a);
57700 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
57701 }
57702}
57703#[doc = "Vector reinterpret cast operation"]
57704#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p64)"]
57705#[inline]
57706#[cfg(target_endian = "little")]
57707#[target_feature(enable = "neon,aes")]
57708#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57709#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57710#[cfg_attr(
57711 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57712 assert_instr(nop)
57713)]
57714#[cfg_attr(
57715 not(target_arch = "arm"),
57716 stable(feature = "neon_intrinsics", since = "1.59.0")
57717)]
57718#[cfg_attr(
57719 target_arch = "arm",
57720 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57721)]
57722pub fn vreinterpret_u32_p64(a: poly64x1_t) -> uint32x2_t {
57723 unsafe { transmute(a) }
57724}
57725#[doc = "Vector reinterpret cast operation"]
57726#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p64)"]
57727#[inline]
57728#[cfg(target_endian = "big")]
57729#[target_feature(enable = "neon,aes")]
57730#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57731#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57732#[cfg_attr(
57733 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57734 assert_instr(nop)
57735)]
57736#[cfg_attr(
57737 not(target_arch = "arm"),
57738 stable(feature = "neon_intrinsics", since = "1.59.0")
57739)]
57740#[cfg_attr(
57741 target_arch = "arm",
57742 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57743)]
57744pub fn vreinterpret_u32_p64(a: poly64x1_t) -> uint32x2_t {
57745 unsafe {
57746 let ret_val: uint32x2_t = transmute(a);
57747 simd_shuffle!(ret_val, ret_val, [1, 0])
57748 }
57749}
57750#[doc = "Vector reinterpret cast operation"]
57751#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_p64)"]
57752#[inline]
57753#[cfg(target_endian = "little")]
57754#[target_feature(enable = "neon,aes")]
57755#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57756#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57757#[cfg_attr(
57758 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57759 assert_instr(nop)
57760)]
57761#[cfg_attr(
57762 not(target_arch = "arm"),
57763 stable(feature = "neon_intrinsics", since = "1.59.0")
57764)]
57765#[cfg_attr(
57766 target_arch = "arm",
57767 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57768)]
57769pub fn vreinterpret_p8_p64(a: poly64x1_t) -> poly8x8_t {
57770 unsafe { transmute(a) }
57771}
57772#[doc = "Vector reinterpret cast operation"]
57773#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_p64)"]
57774#[inline]
57775#[cfg(target_endian = "big")]
57776#[target_feature(enable = "neon,aes")]
57777#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57778#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57779#[cfg_attr(
57780 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57781 assert_instr(nop)
57782)]
57783#[cfg_attr(
57784 not(target_arch = "arm"),
57785 stable(feature = "neon_intrinsics", since = "1.59.0")
57786)]
57787#[cfg_attr(
57788 target_arch = "arm",
57789 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57790)]
57791pub fn vreinterpret_p8_p64(a: poly64x1_t) -> poly8x8_t {
57792 unsafe {
57793 let ret_val: poly8x8_t = transmute(a);
57794 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
57795 }
57796}
57797#[doc = "Vector reinterpret cast operation"]
57798#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_p64)"]
57799#[inline]
57800#[cfg(target_endian = "little")]
57801#[target_feature(enable = "neon,aes")]
57802#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57803#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57804#[cfg_attr(
57805 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57806 assert_instr(nop)
57807)]
57808#[cfg_attr(
57809 not(target_arch = "arm"),
57810 stable(feature = "neon_intrinsics", since = "1.59.0")
57811)]
57812#[cfg_attr(
57813 target_arch = "arm",
57814 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57815)]
57816pub fn vreinterpret_p16_p64(a: poly64x1_t) -> poly16x4_t {
57817 unsafe { transmute(a) }
57818}
57819#[doc = "Vector reinterpret cast operation"]
57820#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_p64)"]
57821#[inline]
57822#[cfg(target_endian = "big")]
57823#[target_feature(enable = "neon,aes")]
57824#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57825#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57826#[cfg_attr(
57827 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57828 assert_instr(nop)
57829)]
57830#[cfg_attr(
57831 not(target_arch = "arm"),
57832 stable(feature = "neon_intrinsics", since = "1.59.0")
57833)]
57834#[cfg_attr(
57835 target_arch = "arm",
57836 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57837)]
57838pub fn vreinterpret_p16_p64(a: poly64x1_t) -> poly16x4_t {
57839 unsafe {
57840 let ret_val: poly16x4_t = transmute(a);
57841 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
57842 }
57843}
57844#[doc = "Vector reinterpret cast operation"]
57845#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p64)"]
57846#[inline]
57847#[cfg(target_endian = "little")]
57848#[target_feature(enable = "neon,aes")]
57849#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57850#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57851#[cfg_attr(
57852 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57853 assert_instr(nop)
57854)]
57855#[cfg_attr(
57856 not(target_arch = "arm"),
57857 stable(feature = "neon_intrinsics", since = "1.59.0")
57858)]
57859#[cfg_attr(
57860 target_arch = "arm",
57861 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57862)]
57863pub fn vreinterpretq_p128_p64(a: poly64x2_t) -> p128 {
57864 unsafe { transmute(a) }
57865}
57866#[doc = "Vector reinterpret cast operation"]
57867#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p64)"]
57868#[inline]
57869#[cfg(target_endian = "big")]
57870#[target_feature(enable = "neon,aes")]
57871#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57872#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57873#[cfg_attr(
57874 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57875 assert_instr(nop)
57876)]
57877#[cfg_attr(
57878 not(target_arch = "arm"),
57879 stable(feature = "neon_intrinsics", since = "1.59.0")
57880)]
57881#[cfg_attr(
57882 target_arch = "arm",
57883 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57884)]
57885pub fn vreinterpretq_p128_p64(a: poly64x2_t) -> p128 {
57886 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
57887 unsafe { transmute(a) }
57888}
57889#[doc = "Vector reinterpret cast operation"]
57890#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p64)"]
57891#[inline]
57892#[cfg(target_endian = "little")]
57893#[target_feature(enable = "neon,aes")]
57894#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57895#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57896#[cfg_attr(
57897 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57898 assert_instr(nop)
57899)]
57900#[cfg_attr(
57901 not(target_arch = "arm"),
57902 stable(feature = "neon_intrinsics", since = "1.59.0")
57903)]
57904#[cfg_attr(
57905 target_arch = "arm",
57906 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57907)]
57908pub fn vreinterpretq_s8_p64(a: poly64x2_t) -> int8x16_t {
57909 unsafe { transmute(a) }
57910}
57911#[doc = "Vector reinterpret cast operation"]
57912#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p64)"]
57913#[inline]
57914#[cfg(target_endian = "big")]
57915#[target_feature(enable = "neon,aes")]
57916#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57917#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57918#[cfg_attr(
57919 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57920 assert_instr(nop)
57921)]
57922#[cfg_attr(
57923 not(target_arch = "arm"),
57924 stable(feature = "neon_intrinsics", since = "1.59.0")
57925)]
57926#[cfg_attr(
57927 target_arch = "arm",
57928 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57929)]
57930pub fn vreinterpretq_s8_p64(a: poly64x2_t) -> int8x16_t {
57931 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
57932 unsafe {
57933 let ret_val: int8x16_t = transmute(a);
57934 simd_shuffle!(
57935 ret_val,
57936 ret_val,
57937 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
57938 )
57939 }
57940}
57941#[doc = "Vector reinterpret cast operation"]
57942#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p64)"]
57943#[inline]
57944#[cfg(target_endian = "little")]
57945#[target_feature(enable = "neon,aes")]
57946#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57947#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57948#[cfg_attr(
57949 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57950 assert_instr(nop)
57951)]
57952#[cfg_attr(
57953 not(target_arch = "arm"),
57954 stable(feature = "neon_intrinsics", since = "1.59.0")
57955)]
57956#[cfg_attr(
57957 target_arch = "arm",
57958 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57959)]
57960pub fn vreinterpretq_s16_p64(a: poly64x2_t) -> int16x8_t {
57961 unsafe { transmute(a) }
57962}
57963#[doc = "Vector reinterpret cast operation"]
57964#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p64)"]
57965#[inline]
57966#[cfg(target_endian = "big")]
57967#[target_feature(enable = "neon,aes")]
57968#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57969#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57970#[cfg_attr(
57971 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57972 assert_instr(nop)
57973)]
57974#[cfg_attr(
57975 not(target_arch = "arm"),
57976 stable(feature = "neon_intrinsics", since = "1.59.0")
57977)]
57978#[cfg_attr(
57979 target_arch = "arm",
57980 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57981)]
57982pub fn vreinterpretq_s16_p64(a: poly64x2_t) -> int16x8_t {
57983 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
57984 unsafe {
57985 let ret_val: int16x8_t = transmute(a);
57986 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
57987 }
57988}
57989#[doc = "Vector reinterpret cast operation"]
57990#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p64)"]
57991#[inline]
57992#[cfg(target_endian = "little")]
57993#[target_feature(enable = "neon,aes")]
57994#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
57995#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
57996#[cfg_attr(
57997 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57998 assert_instr(nop)
57999)]
58000#[cfg_attr(
58001 not(target_arch = "arm"),
58002 stable(feature = "neon_intrinsics", since = "1.59.0")
58003)]
58004#[cfg_attr(
58005 target_arch = "arm",
58006 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58007)]
58008pub fn vreinterpretq_s32_p64(a: poly64x2_t) -> int32x4_t {
58009 unsafe { transmute(a) }
58010}
58011#[doc = "Vector reinterpret cast operation"]
58012#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p64)"]
58013#[inline]
58014#[cfg(target_endian = "big")]
58015#[target_feature(enable = "neon,aes")]
58016#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58017#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
58018#[cfg_attr(
58019 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58020 assert_instr(nop)
58021)]
58022#[cfg_attr(
58023 not(target_arch = "arm"),
58024 stable(feature = "neon_intrinsics", since = "1.59.0")
58025)]
58026#[cfg_attr(
58027 target_arch = "arm",
58028 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58029)]
58030pub fn vreinterpretq_s32_p64(a: poly64x2_t) -> int32x4_t {
58031 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
58032 unsafe {
58033 let ret_val: int32x4_t = transmute(a);
58034 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
58035 }
58036}
58037#[doc = "Vector reinterpret cast operation"]
58038#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p64)"]
58039#[inline]
58040#[cfg(target_endian = "little")]
58041#[target_feature(enable = "neon,aes")]
58042#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58043#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
58044#[cfg_attr(
58045 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58046 assert_instr(nop)
58047)]
58048#[cfg_attr(
58049 not(target_arch = "arm"),
58050 stable(feature = "neon_intrinsics", since = "1.59.0")
58051)]
58052#[cfg_attr(
58053 target_arch = "arm",
58054 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58055)]
58056pub fn vreinterpretq_u8_p64(a: poly64x2_t) -> uint8x16_t {
58057 unsafe { transmute(a) }
58058}
58059#[doc = "Vector reinterpret cast operation"]
58060#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p64)"]
58061#[inline]
58062#[cfg(target_endian = "big")]
58063#[target_feature(enable = "neon,aes")]
58064#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58065#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
58066#[cfg_attr(
58067 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58068 assert_instr(nop)
58069)]
58070#[cfg_attr(
58071 not(target_arch = "arm"),
58072 stable(feature = "neon_intrinsics", since = "1.59.0")
58073)]
58074#[cfg_attr(
58075 target_arch = "arm",
58076 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58077)]
58078pub fn vreinterpretq_u8_p64(a: poly64x2_t) -> uint8x16_t {
58079 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
58080 unsafe {
58081 let ret_val: uint8x16_t = transmute(a);
58082 simd_shuffle!(
58083 ret_val,
58084 ret_val,
58085 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
58086 )
58087 }
58088}
58089#[doc = "Vector reinterpret cast operation"]
58090#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p64)"]
58091#[inline]
58092#[cfg(target_endian = "little")]
58093#[target_feature(enable = "neon,aes")]
58094#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58095#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
58096#[cfg_attr(
58097 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58098 assert_instr(nop)
58099)]
58100#[cfg_attr(
58101 not(target_arch = "arm"),
58102 stable(feature = "neon_intrinsics", since = "1.59.0")
58103)]
58104#[cfg_attr(
58105 target_arch = "arm",
58106 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58107)]
58108pub fn vreinterpretq_u16_p64(a: poly64x2_t) -> uint16x8_t {
58109 unsafe { transmute(a) }
58110}
58111#[doc = "Vector reinterpret cast operation"]
58112#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p64)"]
58113#[inline]
58114#[cfg(target_endian = "big")]
58115#[target_feature(enable = "neon,aes")]
58116#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58117#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
58118#[cfg_attr(
58119 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58120 assert_instr(nop)
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 fn vreinterpretq_u16_p64(a: poly64x2_t) -> uint16x8_t {
58131 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
58132 unsafe {
58133 let ret_val: uint16x8_t = transmute(a);
58134 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
58135 }
58136}
58137#[doc = "Vector reinterpret cast operation"]
58138#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p64)"]
58139#[inline]
58140#[cfg(target_endian = "little")]
58141#[target_feature(enable = "neon,aes")]
58142#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58143#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
58144#[cfg_attr(
58145 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58146 assert_instr(nop)
58147)]
58148#[cfg_attr(
58149 not(target_arch = "arm"),
58150 stable(feature = "neon_intrinsics", since = "1.59.0")
58151)]
58152#[cfg_attr(
58153 target_arch = "arm",
58154 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58155)]
58156pub fn vreinterpretq_u32_p64(a: poly64x2_t) -> uint32x4_t {
58157 unsafe { transmute(a) }
58158}
58159#[doc = "Vector reinterpret cast operation"]
58160#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p64)"]
58161#[inline]
58162#[cfg(target_endian = "big")]
58163#[target_feature(enable = "neon,aes")]
58164#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58165#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
58166#[cfg_attr(
58167 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58168 assert_instr(nop)
58169)]
58170#[cfg_attr(
58171 not(target_arch = "arm"),
58172 stable(feature = "neon_intrinsics", since = "1.59.0")
58173)]
58174#[cfg_attr(
58175 target_arch = "arm",
58176 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58177)]
58178pub fn vreinterpretq_u32_p64(a: poly64x2_t) -> uint32x4_t {
58179 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
58180 unsafe {
58181 let ret_val: uint32x4_t = transmute(a);
58182 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
58183 }
58184}
58185#[doc = "Vector reinterpret cast operation"]
58186#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p64)"]
58187#[inline]
58188#[cfg(target_endian = "little")]
58189#[target_feature(enable = "neon,aes")]
58190#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58191#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
58192#[cfg_attr(
58193 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58194 assert_instr(nop)
58195)]
58196#[cfg_attr(
58197 not(target_arch = "arm"),
58198 stable(feature = "neon_intrinsics", since = "1.59.0")
58199)]
58200#[cfg_attr(
58201 target_arch = "arm",
58202 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58203)]
58204pub fn vreinterpretq_p8_p64(a: poly64x2_t) -> poly8x16_t {
58205 unsafe { transmute(a) }
58206}
58207#[doc = "Vector reinterpret cast operation"]
58208#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p64)"]
58209#[inline]
58210#[cfg(target_endian = "big")]
58211#[target_feature(enable = "neon,aes")]
58212#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58213#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
58214#[cfg_attr(
58215 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58216 assert_instr(nop)
58217)]
58218#[cfg_attr(
58219 not(target_arch = "arm"),
58220 stable(feature = "neon_intrinsics", since = "1.59.0")
58221)]
58222#[cfg_attr(
58223 target_arch = "arm",
58224 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58225)]
58226pub fn vreinterpretq_p8_p64(a: poly64x2_t) -> poly8x16_t {
58227 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
58228 unsafe {
58229 let ret_val: poly8x16_t = transmute(a);
58230 simd_shuffle!(
58231 ret_val,
58232 ret_val,
58233 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
58234 )
58235 }
58236}
58237#[doc = "Vector reinterpret cast operation"]
58238#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p64)"]
58239#[inline]
58240#[cfg(target_endian = "little")]
58241#[target_feature(enable = "neon,aes")]
58242#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58243#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
58244#[cfg_attr(
58245 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58246 assert_instr(nop)
58247)]
58248#[cfg_attr(
58249 not(target_arch = "arm"),
58250 stable(feature = "neon_intrinsics", since = "1.59.0")
58251)]
58252#[cfg_attr(
58253 target_arch = "arm",
58254 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58255)]
58256pub fn vreinterpretq_p16_p64(a: poly64x2_t) -> poly16x8_t {
58257 unsafe { transmute(a) }
58258}
58259#[doc = "Vector reinterpret cast operation"]
58260#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p64)"]
58261#[inline]
58262#[cfg(target_endian = "big")]
58263#[target_feature(enable = "neon,aes")]
58264#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58265#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
58266#[cfg_attr(
58267 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58268 assert_instr(nop)
58269)]
58270#[cfg_attr(
58271 not(target_arch = "arm"),
58272 stable(feature = "neon_intrinsics", since = "1.59.0")
58273)]
58274#[cfg_attr(
58275 target_arch = "arm",
58276 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58277)]
58278pub fn vreinterpretq_p16_p64(a: poly64x2_t) -> poly16x8_t {
58279 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
58280 unsafe {
58281 let ret_val: poly16x8_t = transmute(a);
58282 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
58283 }
58284}
58285#[doc = "Reversing vector elements (swap endianness)"]
58286#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16_p8)"]
58287#[inline]
58288#[target_feature(enable = "neon")]
58289#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58290#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
58291#[cfg_attr(
58292 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58293 assert_instr(rev16)
58294)]
58295#[cfg_attr(
58296 not(target_arch = "arm"),
58297 stable(feature = "neon_intrinsics", since = "1.59.0")
58298)]
58299#[cfg_attr(
58300 target_arch = "arm",
58301 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58302)]
58303pub fn vrev16_p8(a: poly8x8_t) -> poly8x8_t {
58304 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
58305}
58306#[doc = "Reversing vector elements (swap endianness)"]
58307#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16_s8)"]
58308#[inline]
58309#[target_feature(enable = "neon")]
58310#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58311#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
58312#[cfg_attr(
58313 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58314 assert_instr(rev16)
58315)]
58316#[cfg_attr(
58317 not(target_arch = "arm"),
58318 stable(feature = "neon_intrinsics", since = "1.59.0")
58319)]
58320#[cfg_attr(
58321 target_arch = "arm",
58322 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58323)]
58324pub fn vrev16_s8(a: int8x8_t) -> int8x8_t {
58325 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
58326}
58327#[doc = "Reversing vector elements (swap endianness)"]
58328#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16_u8)"]
58329#[inline]
58330#[target_feature(enable = "neon")]
58331#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58332#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
58333#[cfg_attr(
58334 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58335 assert_instr(rev16)
58336)]
58337#[cfg_attr(
58338 not(target_arch = "arm"),
58339 stable(feature = "neon_intrinsics", since = "1.59.0")
58340)]
58341#[cfg_attr(
58342 target_arch = "arm",
58343 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58344)]
58345pub fn vrev16_u8(a: uint8x8_t) -> uint8x8_t {
58346 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
58347}
58348#[doc = "Reversing vector elements (swap endianness)"]
58349#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16q_p8)"]
58350#[inline]
58351#[target_feature(enable = "neon")]
58352#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58353#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
58354#[cfg_attr(
58355 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58356 assert_instr(rev16)
58357)]
58358#[cfg_attr(
58359 not(target_arch = "arm"),
58360 stable(feature = "neon_intrinsics", since = "1.59.0")
58361)]
58362#[cfg_attr(
58363 target_arch = "arm",
58364 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58365)]
58366pub fn vrev16q_p8(a: poly8x16_t) -> poly8x16_t {
58367 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14]) }
58368}
58369#[doc = "Reversing vector elements (swap endianness)"]
58370#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16q_s8)"]
58371#[inline]
58372#[target_feature(enable = "neon")]
58373#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58374#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
58375#[cfg_attr(
58376 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58377 assert_instr(rev16)
58378)]
58379#[cfg_attr(
58380 not(target_arch = "arm"),
58381 stable(feature = "neon_intrinsics", since = "1.59.0")
58382)]
58383#[cfg_attr(
58384 target_arch = "arm",
58385 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58386)]
58387pub fn vrev16q_s8(a: int8x16_t) -> int8x16_t {
58388 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14]) }
58389}
58390#[doc = "Reversing vector elements (swap endianness)"]
58391#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16q_u8)"]
58392#[inline]
58393#[target_feature(enable = "neon")]
58394#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58395#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
58396#[cfg_attr(
58397 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58398 assert_instr(rev16)
58399)]
58400#[cfg_attr(
58401 not(target_arch = "arm"),
58402 stable(feature = "neon_intrinsics", since = "1.59.0")
58403)]
58404#[cfg_attr(
58405 target_arch = "arm",
58406 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58407)]
58408pub fn vrev16q_u8(a: uint8x16_t) -> uint8x16_t {
58409 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14]) }
58410}
58411#[doc = "Reversing vector elements (swap endianness)"]
58412#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_p16)"]
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("vrev32.16"))]
58417#[cfg_attr(
58418 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58419 assert_instr(rev32)
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 fn vrev32_p16(a: poly16x4_t) -> poly16x4_t {
58430 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
58431}
58432#[doc = "Reversing vector elements (swap endianness)"]
58433#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_p8)"]
58434#[inline]
58435#[target_feature(enable = "neon")]
58436#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58437#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
58438#[cfg_attr(
58439 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58440 assert_instr(rev32)
58441)]
58442#[cfg_attr(
58443 not(target_arch = "arm"),
58444 stable(feature = "neon_intrinsics", since = "1.59.0")
58445)]
58446#[cfg_attr(
58447 target_arch = "arm",
58448 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58449)]
58450pub fn vrev32_p8(a: poly8x8_t) -> poly8x8_t {
58451 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
58452}
58453#[doc = "Reversing vector elements (swap endianness)"]
58454#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_s16)"]
58455#[inline]
58456#[target_feature(enable = "neon")]
58457#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58458#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
58459#[cfg_attr(
58460 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58461 assert_instr(rev32)
58462)]
58463#[cfg_attr(
58464 not(target_arch = "arm"),
58465 stable(feature = "neon_intrinsics", since = "1.59.0")
58466)]
58467#[cfg_attr(
58468 target_arch = "arm",
58469 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58470)]
58471pub fn vrev32_s16(a: int16x4_t) -> int16x4_t {
58472 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
58473}
58474#[doc = "Reversing vector elements (swap endianness)"]
58475#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_s8)"]
58476#[inline]
58477#[target_feature(enable = "neon")]
58478#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58479#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
58480#[cfg_attr(
58481 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58482 assert_instr(rev32)
58483)]
58484#[cfg_attr(
58485 not(target_arch = "arm"),
58486 stable(feature = "neon_intrinsics", since = "1.59.0")
58487)]
58488#[cfg_attr(
58489 target_arch = "arm",
58490 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58491)]
58492pub fn vrev32_s8(a: int8x8_t) -> int8x8_t {
58493 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
58494}
58495#[doc = "Reversing vector elements (swap endianness)"]
58496#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_u16)"]
58497#[inline]
58498#[target_feature(enable = "neon")]
58499#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58500#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
58501#[cfg_attr(
58502 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58503 assert_instr(rev32)
58504)]
58505#[cfg_attr(
58506 not(target_arch = "arm"),
58507 stable(feature = "neon_intrinsics", since = "1.59.0")
58508)]
58509#[cfg_attr(
58510 target_arch = "arm",
58511 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58512)]
58513pub fn vrev32_u16(a: uint16x4_t) -> uint16x4_t {
58514 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
58515}
58516#[doc = "Reversing vector elements (swap endianness)"]
58517#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_u8)"]
58518#[inline]
58519#[target_feature(enable = "neon")]
58520#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58521#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
58522#[cfg_attr(
58523 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58524 assert_instr(rev32)
58525)]
58526#[cfg_attr(
58527 not(target_arch = "arm"),
58528 stable(feature = "neon_intrinsics", since = "1.59.0")
58529)]
58530#[cfg_attr(
58531 target_arch = "arm",
58532 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58533)]
58534pub fn vrev32_u8(a: uint8x8_t) -> uint8x8_t {
58535 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
58536}
58537#[doc = "Reversing vector elements (swap endianness)"]
58538#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_p16)"]
58539#[inline]
58540#[target_feature(enable = "neon")]
58541#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58542#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
58543#[cfg_attr(
58544 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58545 assert_instr(rev32)
58546)]
58547#[cfg_attr(
58548 not(target_arch = "arm"),
58549 stable(feature = "neon_intrinsics", since = "1.59.0")
58550)]
58551#[cfg_attr(
58552 target_arch = "arm",
58553 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58554)]
58555pub fn vrev32q_p16(a: poly16x8_t) -> poly16x8_t {
58556 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
58557}
58558#[doc = "Reversing vector elements (swap endianness)"]
58559#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_p8)"]
58560#[inline]
58561#[target_feature(enable = "neon")]
58562#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58563#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
58564#[cfg_attr(
58565 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58566 assert_instr(rev32)
58567)]
58568#[cfg_attr(
58569 not(target_arch = "arm"),
58570 stable(feature = "neon_intrinsics", since = "1.59.0")
58571)]
58572#[cfg_attr(
58573 target_arch = "arm",
58574 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58575)]
58576pub fn vrev32q_p8(a: poly8x16_t) -> poly8x16_t {
58577 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12]) }
58578}
58579#[doc = "Reversing vector elements (swap endianness)"]
58580#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_s16)"]
58581#[inline]
58582#[target_feature(enable = "neon")]
58583#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58584#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
58585#[cfg_attr(
58586 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58587 assert_instr(rev32)
58588)]
58589#[cfg_attr(
58590 not(target_arch = "arm"),
58591 stable(feature = "neon_intrinsics", since = "1.59.0")
58592)]
58593#[cfg_attr(
58594 target_arch = "arm",
58595 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58596)]
58597pub fn vrev32q_s16(a: int16x8_t) -> int16x8_t {
58598 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
58599}
58600#[doc = "Reversing vector elements (swap endianness)"]
58601#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_s8)"]
58602#[inline]
58603#[target_feature(enable = "neon")]
58604#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58605#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
58606#[cfg_attr(
58607 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58608 assert_instr(rev32)
58609)]
58610#[cfg_attr(
58611 not(target_arch = "arm"),
58612 stable(feature = "neon_intrinsics", since = "1.59.0")
58613)]
58614#[cfg_attr(
58615 target_arch = "arm",
58616 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58617)]
58618pub fn vrev32q_s8(a: int8x16_t) -> int8x16_t {
58619 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12]) }
58620}
58621#[doc = "Reversing vector elements (swap endianness)"]
58622#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_u16)"]
58623#[inline]
58624#[target_feature(enable = "neon")]
58625#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58626#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
58627#[cfg_attr(
58628 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58629 assert_instr(rev32)
58630)]
58631#[cfg_attr(
58632 not(target_arch = "arm"),
58633 stable(feature = "neon_intrinsics", since = "1.59.0")
58634)]
58635#[cfg_attr(
58636 target_arch = "arm",
58637 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58638)]
58639pub fn vrev32q_u16(a: uint16x8_t) -> uint16x8_t {
58640 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
58641}
58642#[doc = "Reversing vector elements (swap endianness)"]
58643#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_u8)"]
58644#[inline]
58645#[target_feature(enable = "neon")]
58646#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58647#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
58648#[cfg_attr(
58649 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58650 assert_instr(rev32)
58651)]
58652#[cfg_attr(
58653 not(target_arch = "arm"),
58654 stable(feature = "neon_intrinsics", since = "1.59.0")
58655)]
58656#[cfg_attr(
58657 target_arch = "arm",
58658 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58659)]
58660pub fn vrev32q_u8(a: uint8x16_t) -> uint8x16_t {
58661 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12]) }
58662}
58663#[doc = "Reversing vector elements (swap endianness)"]
58664#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_f32)"]
58665#[inline]
58666#[target_feature(enable = "neon")]
58667#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58668#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
58669#[cfg_attr(
58670 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58671 assert_instr(rev64)
58672)]
58673#[cfg_attr(
58674 not(target_arch = "arm"),
58675 stable(feature = "neon_intrinsics", since = "1.59.0")
58676)]
58677#[cfg_attr(
58678 target_arch = "arm",
58679 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58680)]
58681pub fn vrev64_f32(a: float32x2_t) -> float32x2_t {
58682 unsafe { simd_shuffle!(a, a, [1, 0]) }
58683}
58684#[doc = "Reversing vector elements (swap endianness)"]
58685#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_p16)"]
58686#[inline]
58687#[target_feature(enable = "neon")]
58688#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58689#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
58690#[cfg_attr(
58691 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58692 assert_instr(rev64)
58693)]
58694#[cfg_attr(
58695 not(target_arch = "arm"),
58696 stable(feature = "neon_intrinsics", since = "1.59.0")
58697)]
58698#[cfg_attr(
58699 target_arch = "arm",
58700 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58701)]
58702pub fn vrev64_p16(a: poly16x4_t) -> poly16x4_t {
58703 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) }
58704}
58705#[doc = "Reversing vector elements (swap endianness)"]
58706#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_p8)"]
58707#[inline]
58708#[target_feature(enable = "neon")]
58709#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58710#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
58711#[cfg_attr(
58712 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58713 assert_instr(rev64)
58714)]
58715#[cfg_attr(
58716 not(target_arch = "arm"),
58717 stable(feature = "neon_intrinsics", since = "1.59.0")
58718)]
58719#[cfg_attr(
58720 target_arch = "arm",
58721 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58722)]
58723pub fn vrev64_p8(a: poly8x8_t) -> poly8x8_t {
58724 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) }
58725}
58726#[doc = "Reversing vector elements (swap endianness)"]
58727#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_s16)"]
58728#[inline]
58729#[target_feature(enable = "neon")]
58730#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58731#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
58732#[cfg_attr(
58733 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58734 assert_instr(rev64)
58735)]
58736#[cfg_attr(
58737 not(target_arch = "arm"),
58738 stable(feature = "neon_intrinsics", since = "1.59.0")
58739)]
58740#[cfg_attr(
58741 target_arch = "arm",
58742 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58743)]
58744pub fn vrev64_s16(a: int16x4_t) -> int16x4_t {
58745 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) }
58746}
58747#[doc = "Reversing vector elements (swap endianness)"]
58748#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_s32)"]
58749#[inline]
58750#[target_feature(enable = "neon")]
58751#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58752#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
58753#[cfg_attr(
58754 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58755 assert_instr(rev64)
58756)]
58757#[cfg_attr(
58758 not(target_arch = "arm"),
58759 stable(feature = "neon_intrinsics", since = "1.59.0")
58760)]
58761#[cfg_attr(
58762 target_arch = "arm",
58763 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58764)]
58765pub fn vrev64_s32(a: int32x2_t) -> int32x2_t {
58766 unsafe { simd_shuffle!(a, a, [1, 0]) }
58767}
58768#[doc = "Reversing vector elements (swap endianness)"]
58769#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_s8)"]
58770#[inline]
58771#[target_feature(enable = "neon")]
58772#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58773#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
58774#[cfg_attr(
58775 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58776 assert_instr(rev64)
58777)]
58778#[cfg_attr(
58779 not(target_arch = "arm"),
58780 stable(feature = "neon_intrinsics", since = "1.59.0")
58781)]
58782#[cfg_attr(
58783 target_arch = "arm",
58784 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58785)]
58786pub fn vrev64_s8(a: int8x8_t) -> int8x8_t {
58787 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) }
58788}
58789#[doc = "Reversing vector elements (swap endianness)"]
58790#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_u16)"]
58791#[inline]
58792#[target_feature(enable = "neon")]
58793#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58794#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
58795#[cfg_attr(
58796 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58797 assert_instr(rev64)
58798)]
58799#[cfg_attr(
58800 not(target_arch = "arm"),
58801 stable(feature = "neon_intrinsics", since = "1.59.0")
58802)]
58803#[cfg_attr(
58804 target_arch = "arm",
58805 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58806)]
58807pub fn vrev64_u16(a: uint16x4_t) -> uint16x4_t {
58808 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) }
58809}
58810#[doc = "Reversing vector elements (swap endianness)"]
58811#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_u32)"]
58812#[inline]
58813#[target_feature(enable = "neon")]
58814#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58815#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
58816#[cfg_attr(
58817 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58818 assert_instr(rev64)
58819)]
58820#[cfg_attr(
58821 not(target_arch = "arm"),
58822 stable(feature = "neon_intrinsics", since = "1.59.0")
58823)]
58824#[cfg_attr(
58825 target_arch = "arm",
58826 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58827)]
58828pub fn vrev64_u32(a: uint32x2_t) -> uint32x2_t {
58829 unsafe { simd_shuffle!(a, a, [1, 0]) }
58830}
58831#[doc = "Reversing vector elements (swap endianness)"]
58832#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_u8)"]
58833#[inline]
58834#[target_feature(enable = "neon")]
58835#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58836#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
58837#[cfg_attr(
58838 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58839 assert_instr(rev64)
58840)]
58841#[cfg_attr(
58842 not(target_arch = "arm"),
58843 stable(feature = "neon_intrinsics", since = "1.59.0")
58844)]
58845#[cfg_attr(
58846 target_arch = "arm",
58847 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58848)]
58849pub fn vrev64_u8(a: uint8x8_t) -> uint8x8_t {
58850 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) }
58851}
58852#[doc = "Reversing vector elements (swap endianness)"]
58853#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_f32)"]
58854#[inline]
58855#[target_feature(enable = "neon")]
58856#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58857#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
58858#[cfg_attr(
58859 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58860 assert_instr(rev64)
58861)]
58862#[cfg_attr(
58863 not(target_arch = "arm"),
58864 stable(feature = "neon_intrinsics", since = "1.59.0")
58865)]
58866#[cfg_attr(
58867 target_arch = "arm",
58868 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58869)]
58870pub fn vrev64q_f32(a: float32x4_t) -> float32x4_t {
58871 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
58872}
58873#[doc = "Reversing vector elements (swap endianness)"]
58874#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_p16)"]
58875#[inline]
58876#[target_feature(enable = "neon")]
58877#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58878#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
58879#[cfg_attr(
58880 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58881 assert_instr(rev64)
58882)]
58883#[cfg_attr(
58884 not(target_arch = "arm"),
58885 stable(feature = "neon_intrinsics", since = "1.59.0")
58886)]
58887#[cfg_attr(
58888 target_arch = "arm",
58889 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58890)]
58891pub fn vrev64q_p16(a: poly16x8_t) -> poly16x8_t {
58892 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
58893}
58894#[doc = "Reversing vector elements (swap endianness)"]
58895#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_p8)"]
58896#[inline]
58897#[target_feature(enable = "neon")]
58898#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58899#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
58900#[cfg_attr(
58901 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58902 assert_instr(rev64)
58903)]
58904#[cfg_attr(
58905 not(target_arch = "arm"),
58906 stable(feature = "neon_intrinsics", since = "1.59.0")
58907)]
58908#[cfg_attr(
58909 target_arch = "arm",
58910 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58911)]
58912pub fn vrev64q_p8(a: poly8x16_t) -> poly8x16_t {
58913 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8]) }
58914}
58915#[doc = "Reversing vector elements (swap endianness)"]
58916#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_s16)"]
58917#[inline]
58918#[target_feature(enable = "neon")]
58919#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58920#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
58921#[cfg_attr(
58922 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58923 assert_instr(rev64)
58924)]
58925#[cfg_attr(
58926 not(target_arch = "arm"),
58927 stable(feature = "neon_intrinsics", since = "1.59.0")
58928)]
58929#[cfg_attr(
58930 target_arch = "arm",
58931 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58932)]
58933pub fn vrev64q_s16(a: int16x8_t) -> int16x8_t {
58934 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
58935}
58936#[doc = "Reversing vector elements (swap endianness)"]
58937#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_s32)"]
58938#[inline]
58939#[target_feature(enable = "neon")]
58940#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58941#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
58942#[cfg_attr(
58943 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58944 assert_instr(rev64)
58945)]
58946#[cfg_attr(
58947 not(target_arch = "arm"),
58948 stable(feature = "neon_intrinsics", since = "1.59.0")
58949)]
58950#[cfg_attr(
58951 target_arch = "arm",
58952 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58953)]
58954pub fn vrev64q_s32(a: int32x4_t) -> int32x4_t {
58955 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
58956}
58957#[doc = "Reversing vector elements (swap endianness)"]
58958#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_s8)"]
58959#[inline]
58960#[target_feature(enable = "neon")]
58961#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58962#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
58963#[cfg_attr(
58964 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58965 assert_instr(rev64)
58966)]
58967#[cfg_attr(
58968 not(target_arch = "arm"),
58969 stable(feature = "neon_intrinsics", since = "1.59.0")
58970)]
58971#[cfg_attr(
58972 target_arch = "arm",
58973 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58974)]
58975pub fn vrev64q_s8(a: int8x16_t) -> int8x16_t {
58976 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8]) }
58977}
58978#[doc = "Reversing vector elements (swap endianness)"]
58979#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_u16)"]
58980#[inline]
58981#[target_feature(enable = "neon")]
58982#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58983#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
58984#[cfg_attr(
58985 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58986 assert_instr(rev64)
58987)]
58988#[cfg_attr(
58989 not(target_arch = "arm"),
58990 stable(feature = "neon_intrinsics", since = "1.59.0")
58991)]
58992#[cfg_attr(
58993 target_arch = "arm",
58994 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58995)]
58996pub fn vrev64q_u16(a: uint16x8_t) -> uint16x8_t {
58997 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
58998}
58999#[doc = "Reversing vector elements (swap endianness)"]
59000#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_u32)"]
59001#[inline]
59002#[target_feature(enable = "neon")]
59003#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59004#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
59005#[cfg_attr(
59006 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59007 assert_instr(rev64)
59008)]
59009#[cfg_attr(
59010 not(target_arch = "arm"),
59011 stable(feature = "neon_intrinsics", since = "1.59.0")
59012)]
59013#[cfg_attr(
59014 target_arch = "arm",
59015 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59016)]
59017pub fn vrev64q_u32(a: uint32x4_t) -> uint32x4_t {
59018 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
59019}
59020#[doc = "Reversing vector elements (swap endianness)"]
59021#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_u8)"]
59022#[inline]
59023#[target_feature(enable = "neon")]
59024#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59025#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
59026#[cfg_attr(
59027 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59028 assert_instr(rev64)
59029)]
59030#[cfg_attr(
59031 not(target_arch = "arm"),
59032 stable(feature = "neon_intrinsics", since = "1.59.0")
59033)]
59034#[cfg_attr(
59035 target_arch = "arm",
59036 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59037)]
59038pub fn vrev64q_u8(a: uint8x16_t) -> uint8x16_t {
59039 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8]) }
59040}
59041#[doc = "Reverse elements in 64-bit doublewords"]
59042#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_f16)"]
59043#[inline]
59044#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59045#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrev64))]
59046#[cfg_attr(
59047 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59048 assert_instr(rev64)
59049)]
59050#[target_feature(enable = "neon,fp16")]
59051#[cfg_attr(
59052 not(target_arch = "arm"),
59053 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
59054)]
59055#[cfg_attr(
59056 target_arch = "arm",
59057 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59058)]
59059#[cfg(not(target_arch = "arm64ec"))]
59060pub fn vrev64_f16(a: float16x4_t) -> float16x4_t {
59061 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) }
59062}
59063#[doc = "Reverse elements in 64-bit doublewords"]
59064#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_f16)"]
59065#[inline]
59066#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59067#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrev64))]
59068#[cfg_attr(
59069 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59070 assert_instr(rev64)
59071)]
59072#[target_feature(enable = "neon,fp16")]
59073#[cfg_attr(
59074 not(target_arch = "arm"),
59075 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
59076)]
59077#[cfg_attr(
59078 target_arch = "arm",
59079 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59080)]
59081#[cfg(not(target_arch = "arm64ec"))]
59082pub fn vrev64q_f16(a: float16x8_t) -> float16x8_t {
59083 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
59084}
59085#[doc = "Rounding halving add"]
59086#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_s8)"]
59087#[inline]
59088#[target_feature(enable = "neon")]
59089#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59090#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s8"))]
59091#[cfg_attr(
59092 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59093 assert_instr(srhadd)
59094)]
59095#[cfg_attr(
59096 not(target_arch = "arm"),
59097 stable(feature = "neon_intrinsics", since = "1.59.0")
59098)]
59099#[cfg_attr(
59100 target_arch = "arm",
59101 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59102)]
59103pub fn vrhadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
59104 unsafe extern "unadjusted" {
59105 #[cfg_attr(
59106 any(target_arch = "aarch64", target_arch = "arm64ec"),
59107 link_name = "llvm.aarch64.neon.srhadd.v8i8"
59108 )]
59109 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v8i8")]
59110 fn _vrhadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
59111 }
59112 unsafe { _vrhadd_s8(a, b) }
59113}
59114#[doc = "Rounding halving add"]
59115#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_s8)"]
59116#[inline]
59117#[target_feature(enable = "neon")]
59118#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59119#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s8"))]
59120#[cfg_attr(
59121 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59122 assert_instr(srhadd)
59123)]
59124#[cfg_attr(
59125 not(target_arch = "arm"),
59126 stable(feature = "neon_intrinsics", since = "1.59.0")
59127)]
59128#[cfg_attr(
59129 target_arch = "arm",
59130 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59131)]
59132pub fn vrhaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
59133 unsafe extern "unadjusted" {
59134 #[cfg_attr(
59135 any(target_arch = "aarch64", target_arch = "arm64ec"),
59136 link_name = "llvm.aarch64.neon.srhadd.v16i8"
59137 )]
59138 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v16i8")]
59139 fn _vrhaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
59140 }
59141 unsafe { _vrhaddq_s8(a, b) }
59142}
59143#[doc = "Rounding halving add"]
59144#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_s16)"]
59145#[inline]
59146#[target_feature(enable = "neon")]
59147#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59148#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s16"))]
59149#[cfg_attr(
59150 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59151 assert_instr(srhadd)
59152)]
59153#[cfg_attr(
59154 not(target_arch = "arm"),
59155 stable(feature = "neon_intrinsics", since = "1.59.0")
59156)]
59157#[cfg_attr(
59158 target_arch = "arm",
59159 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59160)]
59161pub fn vrhadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
59162 unsafe extern "unadjusted" {
59163 #[cfg_attr(
59164 any(target_arch = "aarch64", target_arch = "arm64ec"),
59165 link_name = "llvm.aarch64.neon.srhadd.v4i16"
59166 )]
59167 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v4i16")]
59168 fn _vrhadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
59169 }
59170 unsafe { _vrhadd_s16(a, b) }
59171}
59172#[doc = "Rounding halving add"]
59173#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_s16)"]
59174#[inline]
59175#[target_feature(enable = "neon")]
59176#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59177#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s16"))]
59178#[cfg_attr(
59179 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59180 assert_instr(srhadd)
59181)]
59182#[cfg_attr(
59183 not(target_arch = "arm"),
59184 stable(feature = "neon_intrinsics", since = "1.59.0")
59185)]
59186#[cfg_attr(
59187 target_arch = "arm",
59188 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59189)]
59190pub fn vrhaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
59191 unsafe extern "unadjusted" {
59192 #[cfg_attr(
59193 any(target_arch = "aarch64", target_arch = "arm64ec"),
59194 link_name = "llvm.aarch64.neon.srhadd.v8i16"
59195 )]
59196 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v8i16")]
59197 fn _vrhaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
59198 }
59199 unsafe { _vrhaddq_s16(a, b) }
59200}
59201#[doc = "Rounding halving add"]
59202#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_s32)"]
59203#[inline]
59204#[target_feature(enable = "neon")]
59205#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59206#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s32"))]
59207#[cfg_attr(
59208 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59209 assert_instr(srhadd)
59210)]
59211#[cfg_attr(
59212 not(target_arch = "arm"),
59213 stable(feature = "neon_intrinsics", since = "1.59.0")
59214)]
59215#[cfg_attr(
59216 target_arch = "arm",
59217 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59218)]
59219pub fn vrhadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
59220 unsafe extern "unadjusted" {
59221 #[cfg_attr(
59222 any(target_arch = "aarch64", target_arch = "arm64ec"),
59223 link_name = "llvm.aarch64.neon.srhadd.v2i32"
59224 )]
59225 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v2i32")]
59226 fn _vrhadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
59227 }
59228 unsafe { _vrhadd_s32(a, b) }
59229}
59230#[doc = "Rounding halving add"]
59231#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_s32)"]
59232#[inline]
59233#[target_feature(enable = "neon")]
59234#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59235#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s32"))]
59236#[cfg_attr(
59237 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59238 assert_instr(srhadd)
59239)]
59240#[cfg_attr(
59241 not(target_arch = "arm"),
59242 stable(feature = "neon_intrinsics", since = "1.59.0")
59243)]
59244#[cfg_attr(
59245 target_arch = "arm",
59246 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59247)]
59248pub fn vrhaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
59249 unsafe extern "unadjusted" {
59250 #[cfg_attr(
59251 any(target_arch = "aarch64", target_arch = "arm64ec"),
59252 link_name = "llvm.aarch64.neon.srhadd.v4i32"
59253 )]
59254 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v4i32")]
59255 fn _vrhaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
59256 }
59257 unsafe { _vrhaddq_s32(a, b) }
59258}
59259#[doc = "Rounding halving add"]
59260#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_u8)"]
59261#[inline]
59262#[target_feature(enable = "neon")]
59263#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59264#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u8"))]
59265#[cfg_attr(
59266 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59267 assert_instr(urhadd)
59268)]
59269#[cfg_attr(
59270 not(target_arch = "arm"),
59271 stable(feature = "neon_intrinsics", since = "1.59.0")
59272)]
59273#[cfg_attr(
59274 target_arch = "arm",
59275 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59276)]
59277pub fn vrhadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
59278 unsafe extern "unadjusted" {
59279 #[cfg_attr(
59280 any(target_arch = "aarch64", target_arch = "arm64ec"),
59281 link_name = "llvm.aarch64.neon.urhadd.v8i8"
59282 )]
59283 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v8i8")]
59284 fn _vrhadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
59285 }
59286 unsafe { _vrhadd_u8(a, b) }
59287}
59288#[doc = "Rounding halving add"]
59289#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_u8)"]
59290#[inline]
59291#[target_feature(enable = "neon")]
59292#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59293#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u8"))]
59294#[cfg_attr(
59295 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59296 assert_instr(urhadd)
59297)]
59298#[cfg_attr(
59299 not(target_arch = "arm"),
59300 stable(feature = "neon_intrinsics", since = "1.59.0")
59301)]
59302#[cfg_attr(
59303 target_arch = "arm",
59304 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59305)]
59306pub fn vrhaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
59307 unsafe extern "unadjusted" {
59308 #[cfg_attr(
59309 any(target_arch = "aarch64", target_arch = "arm64ec"),
59310 link_name = "llvm.aarch64.neon.urhadd.v16i8"
59311 )]
59312 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v16i8")]
59313 fn _vrhaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
59314 }
59315 unsafe { _vrhaddq_u8(a, b) }
59316}
59317#[doc = "Rounding halving add"]
59318#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_u16)"]
59319#[inline]
59320#[target_feature(enable = "neon")]
59321#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59322#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u16"))]
59323#[cfg_attr(
59324 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59325 assert_instr(urhadd)
59326)]
59327#[cfg_attr(
59328 not(target_arch = "arm"),
59329 stable(feature = "neon_intrinsics", since = "1.59.0")
59330)]
59331#[cfg_attr(
59332 target_arch = "arm",
59333 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59334)]
59335pub fn vrhadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
59336 unsafe extern "unadjusted" {
59337 #[cfg_attr(
59338 any(target_arch = "aarch64", target_arch = "arm64ec"),
59339 link_name = "llvm.aarch64.neon.urhadd.v4i16"
59340 )]
59341 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v4i16")]
59342 fn _vrhadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
59343 }
59344 unsafe { _vrhadd_u16(a, b) }
59345}
59346#[doc = "Rounding halving add"]
59347#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_u16)"]
59348#[inline]
59349#[target_feature(enable = "neon")]
59350#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59351#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u16"))]
59352#[cfg_attr(
59353 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59354 assert_instr(urhadd)
59355)]
59356#[cfg_attr(
59357 not(target_arch = "arm"),
59358 stable(feature = "neon_intrinsics", since = "1.59.0")
59359)]
59360#[cfg_attr(
59361 target_arch = "arm",
59362 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59363)]
59364pub fn vrhaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
59365 unsafe extern "unadjusted" {
59366 #[cfg_attr(
59367 any(target_arch = "aarch64", target_arch = "arm64ec"),
59368 link_name = "llvm.aarch64.neon.urhadd.v8i16"
59369 )]
59370 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v8i16")]
59371 fn _vrhaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
59372 }
59373 unsafe { _vrhaddq_u16(a, b) }
59374}
59375#[doc = "Rounding halving add"]
59376#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_u32)"]
59377#[inline]
59378#[target_feature(enable = "neon")]
59379#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59380#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u32"))]
59381#[cfg_attr(
59382 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59383 assert_instr(urhadd)
59384)]
59385#[cfg_attr(
59386 not(target_arch = "arm"),
59387 stable(feature = "neon_intrinsics", since = "1.59.0")
59388)]
59389#[cfg_attr(
59390 target_arch = "arm",
59391 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59392)]
59393pub fn vrhadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
59394 unsafe extern "unadjusted" {
59395 #[cfg_attr(
59396 any(target_arch = "aarch64", target_arch = "arm64ec"),
59397 link_name = "llvm.aarch64.neon.urhadd.v2i32"
59398 )]
59399 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v2i32")]
59400 fn _vrhadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
59401 }
59402 unsafe { _vrhadd_u32(a, b) }
59403}
59404#[doc = "Rounding halving add"]
59405#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_u32)"]
59406#[inline]
59407#[target_feature(enable = "neon")]
59408#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59409#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u32"))]
59410#[cfg_attr(
59411 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59412 assert_instr(urhadd)
59413)]
59414#[cfg_attr(
59415 not(target_arch = "arm"),
59416 stable(feature = "neon_intrinsics", since = "1.59.0")
59417)]
59418#[cfg_attr(
59419 target_arch = "arm",
59420 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59421)]
59422pub fn vrhaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
59423 unsafe extern "unadjusted" {
59424 #[cfg_attr(
59425 any(target_arch = "aarch64", target_arch = "arm64ec"),
59426 link_name = "llvm.aarch64.neon.urhadd.v4i32"
59427 )]
59428 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v4i32")]
59429 fn _vrhaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
59430 }
59431 unsafe { _vrhaddq_u32(a, b) }
59432}
59433#[doc = "Floating-point round to integral, to nearest with ties to even"]
59434#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrndn_f16)"]
59435#[inline]
59436#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
59437#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrintn))]
59438#[cfg_attr(
59439 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59440 assert_instr(frintn)
59441)]
59442#[target_feature(enable = "neon,fp16")]
59443#[cfg_attr(
59444 not(target_arch = "arm"),
59445 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
59446)]
59447#[cfg_attr(
59448 target_arch = "arm",
59449 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59450)]
59451#[cfg(not(target_arch = "arm64ec"))]
59452pub fn vrndn_f16(a: float16x4_t) -> float16x4_t {
59453 unsafe extern "unadjusted" {
59454 #[cfg_attr(
59455 any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "arm"),
59456 link_name = "llvm.roundeven.v4f16"
59457 )]
59458 fn _vrndn_f16(a: float16x4_t) -> float16x4_t;
59459 }
59460 unsafe { _vrndn_f16(a) }
59461}
59462#[doc = "Floating-point round to integral, to nearest with ties to even"]
59463#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrndnq_f16)"]
59464#[inline]
59465#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
59466#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrintn))]
59467#[cfg_attr(
59468 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59469 assert_instr(frintn)
59470)]
59471#[target_feature(enable = "neon,fp16")]
59472#[cfg_attr(
59473 not(target_arch = "arm"),
59474 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
59475)]
59476#[cfg_attr(
59477 target_arch = "arm",
59478 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59479)]
59480#[cfg(not(target_arch = "arm64ec"))]
59481pub fn vrndnq_f16(a: float16x8_t) -> float16x8_t {
59482 unsafe extern "unadjusted" {
59483 #[cfg_attr(
59484 any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "arm"),
59485 link_name = "llvm.roundeven.v8f16"
59486 )]
59487 fn _vrndnq_f16(a: float16x8_t) -> float16x8_t;
59488 }
59489 unsafe { _vrndnq_f16(a) }
59490}
59491#[doc = "Floating-point round to integral, to nearest with ties to even"]
59492#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrndn_f32)"]
59493#[inline]
59494#[target_feature(enable = "neon")]
59495#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
59496#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrintn))]
59497#[cfg_attr(
59498 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59499 assert_instr(frintn)
59500)]
59501#[cfg_attr(
59502 not(target_arch = "arm"),
59503 stable(feature = "neon_intrinsics", since = "1.59.0")
59504)]
59505#[cfg_attr(
59506 target_arch = "arm",
59507 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59508)]
59509pub fn vrndn_f32(a: float32x2_t) -> float32x2_t {
59510 unsafe extern "unadjusted" {
59511 #[cfg_attr(
59512 any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "arm"),
59513 link_name = "llvm.roundeven.v2f32"
59514 )]
59515 fn _vrndn_f32(a: float32x2_t) -> float32x2_t;
59516 }
59517 unsafe { _vrndn_f32(a) }
59518}
59519#[doc = "Floating-point round to integral, to nearest with ties to even"]
59520#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrndnq_f32)"]
59521#[inline]
59522#[target_feature(enable = "neon")]
59523#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
59524#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrintn))]
59525#[cfg_attr(
59526 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59527 assert_instr(frintn)
59528)]
59529#[cfg_attr(
59530 not(target_arch = "arm"),
59531 stable(feature = "neon_intrinsics", since = "1.59.0")
59532)]
59533#[cfg_attr(
59534 target_arch = "arm",
59535 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59536)]
59537pub fn vrndnq_f32(a: float32x4_t) -> float32x4_t {
59538 unsafe extern "unadjusted" {
59539 #[cfg_attr(
59540 any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "arm"),
59541 link_name = "llvm.roundeven.v4f32"
59542 )]
59543 fn _vrndnq_f32(a: float32x4_t) -> float32x4_t;
59544 }
59545 unsafe { _vrndnq_f32(a) }
59546}
59547#[doc = "Signed rounding shift left"]
59548#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_s8)"]
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(vrshl))]
59553#[cfg_attr(
59554 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59555 assert_instr(srshl)
59556)]
59557#[cfg_attr(
59558 not(target_arch = "arm"),
59559 stable(feature = "neon_intrinsics", since = "1.59.0")
59560)]
59561#[cfg_attr(
59562 target_arch = "arm",
59563 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59564)]
59565pub fn vrshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
59566 unsafe extern "unadjusted" {
59567 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v8i8")]
59568 #[cfg_attr(
59569 any(target_arch = "aarch64", target_arch = "arm64ec"),
59570 link_name = "llvm.aarch64.neon.srshl.v8i8"
59571 )]
59572 fn _vrshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
59573 }
59574 unsafe { _vrshl_s8(a, b) }
59575}
59576#[doc = "Signed rounding shift left"]
59577#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_s8)"]
59578#[inline]
59579#[target_feature(enable = "neon")]
59580#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59581#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
59582#[cfg_attr(
59583 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59584 assert_instr(srshl)
59585)]
59586#[cfg_attr(
59587 not(target_arch = "arm"),
59588 stable(feature = "neon_intrinsics", since = "1.59.0")
59589)]
59590#[cfg_attr(
59591 target_arch = "arm",
59592 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59593)]
59594pub fn vrshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
59595 unsafe extern "unadjusted" {
59596 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v16i8")]
59597 #[cfg_attr(
59598 any(target_arch = "aarch64", target_arch = "arm64ec"),
59599 link_name = "llvm.aarch64.neon.srshl.v16i8"
59600 )]
59601 fn _vrshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
59602 }
59603 unsafe { _vrshlq_s8(a, b) }
59604}
59605#[doc = "Signed rounding shift left"]
59606#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_s16)"]
59607#[inline]
59608#[target_feature(enable = "neon")]
59609#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59610#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
59611#[cfg_attr(
59612 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59613 assert_instr(srshl)
59614)]
59615#[cfg_attr(
59616 not(target_arch = "arm"),
59617 stable(feature = "neon_intrinsics", since = "1.59.0")
59618)]
59619#[cfg_attr(
59620 target_arch = "arm",
59621 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59622)]
59623pub fn vrshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
59624 unsafe extern "unadjusted" {
59625 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v4i16")]
59626 #[cfg_attr(
59627 any(target_arch = "aarch64", target_arch = "arm64ec"),
59628 link_name = "llvm.aarch64.neon.srshl.v4i16"
59629 )]
59630 fn _vrshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
59631 }
59632 unsafe { _vrshl_s16(a, b) }
59633}
59634#[doc = "Signed rounding shift left"]
59635#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_s16)"]
59636#[inline]
59637#[target_feature(enable = "neon")]
59638#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59639#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
59640#[cfg_attr(
59641 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59642 assert_instr(srshl)
59643)]
59644#[cfg_attr(
59645 not(target_arch = "arm"),
59646 stable(feature = "neon_intrinsics", since = "1.59.0")
59647)]
59648#[cfg_attr(
59649 target_arch = "arm",
59650 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59651)]
59652pub fn vrshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
59653 unsafe extern "unadjusted" {
59654 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v8i16")]
59655 #[cfg_attr(
59656 any(target_arch = "aarch64", target_arch = "arm64ec"),
59657 link_name = "llvm.aarch64.neon.srshl.v8i16"
59658 )]
59659 fn _vrshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
59660 }
59661 unsafe { _vrshlq_s16(a, b) }
59662}
59663#[doc = "Signed rounding shift left"]
59664#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_s32)"]
59665#[inline]
59666#[target_feature(enable = "neon")]
59667#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59668#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
59669#[cfg_attr(
59670 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59671 assert_instr(srshl)
59672)]
59673#[cfg_attr(
59674 not(target_arch = "arm"),
59675 stable(feature = "neon_intrinsics", since = "1.59.0")
59676)]
59677#[cfg_attr(
59678 target_arch = "arm",
59679 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59680)]
59681pub fn vrshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
59682 unsafe extern "unadjusted" {
59683 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v2i32")]
59684 #[cfg_attr(
59685 any(target_arch = "aarch64", target_arch = "arm64ec"),
59686 link_name = "llvm.aarch64.neon.srshl.v2i32"
59687 )]
59688 fn _vrshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
59689 }
59690 unsafe { _vrshl_s32(a, b) }
59691}
59692#[doc = "Signed rounding shift left"]
59693#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_s32)"]
59694#[inline]
59695#[target_feature(enable = "neon")]
59696#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59697#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
59698#[cfg_attr(
59699 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59700 assert_instr(srshl)
59701)]
59702#[cfg_attr(
59703 not(target_arch = "arm"),
59704 stable(feature = "neon_intrinsics", since = "1.59.0")
59705)]
59706#[cfg_attr(
59707 target_arch = "arm",
59708 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59709)]
59710pub fn vrshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
59711 unsafe extern "unadjusted" {
59712 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v4i32")]
59713 #[cfg_attr(
59714 any(target_arch = "aarch64", target_arch = "arm64ec"),
59715 link_name = "llvm.aarch64.neon.srshl.v4i32"
59716 )]
59717 fn _vrshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
59718 }
59719 unsafe { _vrshlq_s32(a, b) }
59720}
59721#[doc = "Signed rounding shift left"]
59722#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_s64)"]
59723#[inline]
59724#[target_feature(enable = "neon")]
59725#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59726#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
59727#[cfg_attr(
59728 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59729 assert_instr(srshl)
59730)]
59731#[cfg_attr(
59732 not(target_arch = "arm"),
59733 stable(feature = "neon_intrinsics", since = "1.59.0")
59734)]
59735#[cfg_attr(
59736 target_arch = "arm",
59737 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59738)]
59739pub fn vrshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
59740 unsafe extern "unadjusted" {
59741 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v1i64")]
59742 #[cfg_attr(
59743 any(target_arch = "aarch64", target_arch = "arm64ec"),
59744 link_name = "llvm.aarch64.neon.srshl.v1i64"
59745 )]
59746 fn _vrshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t;
59747 }
59748 unsafe { _vrshl_s64(a, b) }
59749}
59750#[doc = "Signed rounding shift left"]
59751#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_s64)"]
59752#[inline]
59753#[target_feature(enable = "neon")]
59754#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59755#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
59756#[cfg_attr(
59757 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59758 assert_instr(srshl)
59759)]
59760#[cfg_attr(
59761 not(target_arch = "arm"),
59762 stable(feature = "neon_intrinsics", since = "1.59.0")
59763)]
59764#[cfg_attr(
59765 target_arch = "arm",
59766 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59767)]
59768pub fn vrshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
59769 unsafe extern "unadjusted" {
59770 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v2i64")]
59771 #[cfg_attr(
59772 any(target_arch = "aarch64", target_arch = "arm64ec"),
59773 link_name = "llvm.aarch64.neon.srshl.v2i64"
59774 )]
59775 fn _vrshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t;
59776 }
59777 unsafe { _vrshlq_s64(a, b) }
59778}
59779#[doc = "Unsigned rounding shift left"]
59780#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_u8)"]
59781#[inline]
59782#[target_feature(enable = "neon")]
59783#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59784#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
59785#[cfg_attr(
59786 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59787 assert_instr(urshl)
59788)]
59789#[cfg_attr(
59790 not(target_arch = "arm"),
59791 stable(feature = "neon_intrinsics", since = "1.59.0")
59792)]
59793#[cfg_attr(
59794 target_arch = "arm",
59795 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59796)]
59797pub fn vrshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t {
59798 unsafe extern "unadjusted" {
59799 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v8i8")]
59800 #[cfg_attr(
59801 any(target_arch = "aarch64", target_arch = "arm64ec"),
59802 link_name = "llvm.aarch64.neon.urshl.v8i8"
59803 )]
59804 fn _vrshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t;
59805 }
59806 unsafe { _vrshl_u8(a, b) }
59807}
59808#[doc = "Unsigned rounding shift left"]
59809#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_u8)"]
59810#[inline]
59811#[target_feature(enable = "neon")]
59812#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59813#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
59814#[cfg_attr(
59815 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59816 assert_instr(urshl)
59817)]
59818#[cfg_attr(
59819 not(target_arch = "arm"),
59820 stable(feature = "neon_intrinsics", since = "1.59.0")
59821)]
59822#[cfg_attr(
59823 target_arch = "arm",
59824 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59825)]
59826pub fn vrshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t {
59827 unsafe extern "unadjusted" {
59828 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v16i8")]
59829 #[cfg_attr(
59830 any(target_arch = "aarch64", target_arch = "arm64ec"),
59831 link_name = "llvm.aarch64.neon.urshl.v16i8"
59832 )]
59833 fn _vrshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t;
59834 }
59835 unsafe { _vrshlq_u8(a, b) }
59836}
59837#[doc = "Unsigned rounding shift left"]
59838#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_u16)"]
59839#[inline]
59840#[target_feature(enable = "neon")]
59841#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59842#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
59843#[cfg_attr(
59844 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59845 assert_instr(urshl)
59846)]
59847#[cfg_attr(
59848 not(target_arch = "arm"),
59849 stable(feature = "neon_intrinsics", since = "1.59.0")
59850)]
59851#[cfg_attr(
59852 target_arch = "arm",
59853 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59854)]
59855pub fn vrshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t {
59856 unsafe extern "unadjusted" {
59857 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v4i16")]
59858 #[cfg_attr(
59859 any(target_arch = "aarch64", target_arch = "arm64ec"),
59860 link_name = "llvm.aarch64.neon.urshl.v4i16"
59861 )]
59862 fn _vrshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t;
59863 }
59864 unsafe { _vrshl_u16(a, b) }
59865}
59866#[doc = "Unsigned rounding shift left"]
59867#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_u16)"]
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(vrshl))]
59872#[cfg_attr(
59873 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59874 assert_instr(urshl)
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 fn vrshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t {
59885 unsafe extern "unadjusted" {
59886 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v8i16")]
59887 #[cfg_attr(
59888 any(target_arch = "aarch64", target_arch = "arm64ec"),
59889 link_name = "llvm.aarch64.neon.urshl.v8i16"
59890 )]
59891 fn _vrshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t;
59892 }
59893 unsafe { _vrshlq_u16(a, b) }
59894}
59895#[doc = "Unsigned rounding shift left"]
59896#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_u32)"]
59897#[inline]
59898#[target_feature(enable = "neon")]
59899#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59900#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
59901#[cfg_attr(
59902 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59903 assert_instr(urshl)
59904)]
59905#[cfg_attr(
59906 not(target_arch = "arm"),
59907 stable(feature = "neon_intrinsics", since = "1.59.0")
59908)]
59909#[cfg_attr(
59910 target_arch = "arm",
59911 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59912)]
59913pub fn vrshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t {
59914 unsafe extern "unadjusted" {
59915 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v2i32")]
59916 #[cfg_attr(
59917 any(target_arch = "aarch64", target_arch = "arm64ec"),
59918 link_name = "llvm.aarch64.neon.urshl.v2i32"
59919 )]
59920 fn _vrshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t;
59921 }
59922 unsafe { _vrshl_u32(a, b) }
59923}
59924#[doc = "Unsigned rounding shift left"]
59925#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_u32)"]
59926#[inline]
59927#[target_feature(enable = "neon")]
59928#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59929#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
59930#[cfg_attr(
59931 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59932 assert_instr(urshl)
59933)]
59934#[cfg_attr(
59935 not(target_arch = "arm"),
59936 stable(feature = "neon_intrinsics", since = "1.59.0")
59937)]
59938#[cfg_attr(
59939 target_arch = "arm",
59940 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59941)]
59942pub fn vrshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t {
59943 unsafe extern "unadjusted" {
59944 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v4i32")]
59945 #[cfg_attr(
59946 any(target_arch = "aarch64", target_arch = "arm64ec"),
59947 link_name = "llvm.aarch64.neon.urshl.v4i32"
59948 )]
59949 fn _vrshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t;
59950 }
59951 unsafe { _vrshlq_u32(a, b) }
59952}
59953#[doc = "Unsigned rounding shift left"]
59954#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_u64)"]
59955#[inline]
59956#[target_feature(enable = "neon")]
59957#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59958#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
59959#[cfg_attr(
59960 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59961 assert_instr(urshl)
59962)]
59963#[cfg_attr(
59964 not(target_arch = "arm"),
59965 stable(feature = "neon_intrinsics", since = "1.59.0")
59966)]
59967#[cfg_attr(
59968 target_arch = "arm",
59969 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59970)]
59971pub fn vrshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t {
59972 unsafe extern "unadjusted" {
59973 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v1i64")]
59974 #[cfg_attr(
59975 any(target_arch = "aarch64", target_arch = "arm64ec"),
59976 link_name = "llvm.aarch64.neon.urshl.v1i64"
59977 )]
59978 fn _vrshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t;
59979 }
59980 unsafe { _vrshl_u64(a, b) }
59981}
59982#[doc = "Unsigned rounding shift left"]
59983#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_u64)"]
59984#[inline]
59985#[target_feature(enable = "neon")]
59986#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59987#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
59988#[cfg_attr(
59989 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59990 assert_instr(urshl)
59991)]
59992#[cfg_attr(
59993 not(target_arch = "arm"),
59994 stable(feature = "neon_intrinsics", since = "1.59.0")
59995)]
59996#[cfg_attr(
59997 target_arch = "arm",
59998 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59999)]
60000pub fn vrshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t {
60001 unsafe extern "unadjusted" {
60002 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v2i64")]
60003 #[cfg_attr(
60004 any(target_arch = "aarch64", target_arch = "arm64ec"),
60005 link_name = "llvm.aarch64.neon.urshl.v2i64"
60006 )]
60007 fn _vrshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t;
60008 }
60009 unsafe { _vrshlq_u64(a, b) }
60010}
60011#[doc = "Signed rounding shift right"]
60012#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_s8)"]
60013#[inline]
60014#[target_feature(enable = "neon")]
60015#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60016#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
60017#[cfg_attr(
60018 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60019 assert_instr(srshr, N = 2)
60020)]
60021#[rustc_legacy_const_generics(1)]
60022#[cfg_attr(
60023 not(target_arch = "arm"),
60024 stable(feature = "neon_intrinsics", since = "1.59.0")
60025)]
60026#[cfg_attr(
60027 target_arch = "arm",
60028 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60029)]
60030pub fn vrshr_n_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
60031 static_assert!(N >= 1 && N <= 8);
60032 vrshl_s8(a, vdup_n_s8(-N as _))
60033}
60034#[doc = "Signed rounding shift right"]
60035#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_s8)"]
60036#[inline]
60037#[target_feature(enable = "neon")]
60038#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60039#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
60040#[cfg_attr(
60041 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60042 assert_instr(srshr, N = 2)
60043)]
60044#[rustc_legacy_const_generics(1)]
60045#[cfg_attr(
60046 not(target_arch = "arm"),
60047 stable(feature = "neon_intrinsics", since = "1.59.0")
60048)]
60049#[cfg_attr(
60050 target_arch = "arm",
60051 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60052)]
60053pub fn vrshrq_n_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
60054 static_assert!(N >= 1 && N <= 8);
60055 vrshlq_s8(a, vdupq_n_s8(-N as _))
60056}
60057#[doc = "Signed rounding shift right"]
60058#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_s16)"]
60059#[inline]
60060#[target_feature(enable = "neon")]
60061#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60062#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
60063#[cfg_attr(
60064 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60065 assert_instr(srshr, N = 2)
60066)]
60067#[rustc_legacy_const_generics(1)]
60068#[cfg_attr(
60069 not(target_arch = "arm"),
60070 stable(feature = "neon_intrinsics", since = "1.59.0")
60071)]
60072#[cfg_attr(
60073 target_arch = "arm",
60074 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60075)]
60076pub fn vrshr_n_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
60077 static_assert!(N >= 1 && N <= 16);
60078 vrshl_s16(a, vdup_n_s16(-N as _))
60079}
60080#[doc = "Signed rounding shift right"]
60081#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_s16)"]
60082#[inline]
60083#[target_feature(enable = "neon")]
60084#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60085#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
60086#[cfg_attr(
60087 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60088 assert_instr(srshr, N = 2)
60089)]
60090#[rustc_legacy_const_generics(1)]
60091#[cfg_attr(
60092 not(target_arch = "arm"),
60093 stable(feature = "neon_intrinsics", since = "1.59.0")
60094)]
60095#[cfg_attr(
60096 target_arch = "arm",
60097 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60098)]
60099pub fn vrshrq_n_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
60100 static_assert!(N >= 1 && N <= 16);
60101 vrshlq_s16(a, vdupq_n_s16(-N as _))
60102}
60103#[doc = "Signed rounding shift right"]
60104#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_s32)"]
60105#[inline]
60106#[target_feature(enable = "neon")]
60107#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60108#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
60109#[cfg_attr(
60110 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60111 assert_instr(srshr, N = 2)
60112)]
60113#[rustc_legacy_const_generics(1)]
60114#[cfg_attr(
60115 not(target_arch = "arm"),
60116 stable(feature = "neon_intrinsics", since = "1.59.0")
60117)]
60118#[cfg_attr(
60119 target_arch = "arm",
60120 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60121)]
60122pub fn vrshr_n_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
60123 static_assert!(N >= 1 && N <= 32);
60124 vrshl_s32(a, vdup_n_s32(-N as _))
60125}
60126#[doc = "Signed rounding shift right"]
60127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_s32)"]
60128#[inline]
60129#[target_feature(enable = "neon")]
60130#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60131#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
60132#[cfg_attr(
60133 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60134 assert_instr(srshr, N = 2)
60135)]
60136#[rustc_legacy_const_generics(1)]
60137#[cfg_attr(
60138 not(target_arch = "arm"),
60139 stable(feature = "neon_intrinsics", since = "1.59.0")
60140)]
60141#[cfg_attr(
60142 target_arch = "arm",
60143 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60144)]
60145pub fn vrshrq_n_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
60146 static_assert!(N >= 1 && N <= 32);
60147 vrshlq_s32(a, vdupq_n_s32(-N as _))
60148}
60149#[doc = "Signed rounding shift right"]
60150#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_s64)"]
60151#[inline]
60152#[target_feature(enable = "neon")]
60153#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60154#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
60155#[cfg_attr(
60156 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60157 assert_instr(srshr, N = 2)
60158)]
60159#[rustc_legacy_const_generics(1)]
60160#[cfg_attr(
60161 not(target_arch = "arm"),
60162 stable(feature = "neon_intrinsics", since = "1.59.0")
60163)]
60164#[cfg_attr(
60165 target_arch = "arm",
60166 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60167)]
60168pub fn vrshr_n_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
60169 static_assert!(N >= 1 && N <= 64);
60170 vrshl_s64(a, vdup_n_s64(-N as _))
60171}
60172#[doc = "Signed rounding shift right"]
60173#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_s64)"]
60174#[inline]
60175#[target_feature(enable = "neon")]
60176#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60177#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
60178#[cfg_attr(
60179 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60180 assert_instr(srshr, N = 2)
60181)]
60182#[rustc_legacy_const_generics(1)]
60183#[cfg_attr(
60184 not(target_arch = "arm"),
60185 stable(feature = "neon_intrinsics", since = "1.59.0")
60186)]
60187#[cfg_attr(
60188 target_arch = "arm",
60189 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60190)]
60191pub fn vrshrq_n_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
60192 static_assert!(N >= 1 && N <= 64);
60193 vrshlq_s64(a, vdupq_n_s64(-N as _))
60194}
60195#[doc = "Unsigned rounding shift right"]
60196#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_u8)"]
60197#[inline]
60198#[target_feature(enable = "neon")]
60199#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60200#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
60201#[cfg_attr(
60202 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60203 assert_instr(urshr, N = 2)
60204)]
60205#[rustc_legacy_const_generics(1)]
60206#[cfg_attr(
60207 not(target_arch = "arm"),
60208 stable(feature = "neon_intrinsics", since = "1.59.0")
60209)]
60210#[cfg_attr(
60211 target_arch = "arm",
60212 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60213)]
60214pub fn vrshr_n_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
60215 static_assert!(N >= 1 && N <= 8);
60216 vrshl_u8(a, vdup_n_s8(-N as _))
60217}
60218#[doc = "Unsigned rounding shift right"]
60219#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_u8)"]
60220#[inline]
60221#[target_feature(enable = "neon")]
60222#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60223#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
60224#[cfg_attr(
60225 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60226 assert_instr(urshr, N = 2)
60227)]
60228#[rustc_legacy_const_generics(1)]
60229#[cfg_attr(
60230 not(target_arch = "arm"),
60231 stable(feature = "neon_intrinsics", since = "1.59.0")
60232)]
60233#[cfg_attr(
60234 target_arch = "arm",
60235 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60236)]
60237pub fn vrshrq_n_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
60238 static_assert!(N >= 1 && N <= 8);
60239 vrshlq_u8(a, vdupq_n_s8(-N as _))
60240}
60241#[doc = "Unsigned rounding shift right"]
60242#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_u16)"]
60243#[inline]
60244#[target_feature(enable = "neon")]
60245#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60246#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
60247#[cfg_attr(
60248 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60249 assert_instr(urshr, N = 2)
60250)]
60251#[rustc_legacy_const_generics(1)]
60252#[cfg_attr(
60253 not(target_arch = "arm"),
60254 stable(feature = "neon_intrinsics", since = "1.59.0")
60255)]
60256#[cfg_attr(
60257 target_arch = "arm",
60258 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60259)]
60260pub fn vrshr_n_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
60261 static_assert!(N >= 1 && N <= 16);
60262 vrshl_u16(a, vdup_n_s16(-N as _))
60263}
60264#[doc = "Unsigned rounding shift right"]
60265#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_u16)"]
60266#[inline]
60267#[target_feature(enable = "neon")]
60268#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60269#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
60270#[cfg_attr(
60271 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60272 assert_instr(urshr, N = 2)
60273)]
60274#[rustc_legacy_const_generics(1)]
60275#[cfg_attr(
60276 not(target_arch = "arm"),
60277 stable(feature = "neon_intrinsics", since = "1.59.0")
60278)]
60279#[cfg_attr(
60280 target_arch = "arm",
60281 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60282)]
60283pub fn vrshrq_n_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
60284 static_assert!(N >= 1 && N <= 16);
60285 vrshlq_u16(a, vdupq_n_s16(-N as _))
60286}
60287#[doc = "Unsigned rounding shift right"]
60288#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_u32)"]
60289#[inline]
60290#[target_feature(enable = "neon")]
60291#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60292#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
60293#[cfg_attr(
60294 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60295 assert_instr(urshr, N = 2)
60296)]
60297#[rustc_legacy_const_generics(1)]
60298#[cfg_attr(
60299 not(target_arch = "arm"),
60300 stable(feature = "neon_intrinsics", since = "1.59.0")
60301)]
60302#[cfg_attr(
60303 target_arch = "arm",
60304 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60305)]
60306pub fn vrshr_n_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
60307 static_assert!(N >= 1 && N <= 32);
60308 vrshl_u32(a, vdup_n_s32(-N as _))
60309}
60310#[doc = "Unsigned rounding shift right"]
60311#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_u32)"]
60312#[inline]
60313#[target_feature(enable = "neon")]
60314#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60315#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
60316#[cfg_attr(
60317 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60318 assert_instr(urshr, N = 2)
60319)]
60320#[rustc_legacy_const_generics(1)]
60321#[cfg_attr(
60322 not(target_arch = "arm"),
60323 stable(feature = "neon_intrinsics", since = "1.59.0")
60324)]
60325#[cfg_attr(
60326 target_arch = "arm",
60327 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60328)]
60329pub fn vrshrq_n_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
60330 static_assert!(N >= 1 && N <= 32);
60331 vrshlq_u32(a, vdupq_n_s32(-N as _))
60332}
60333#[doc = "Unsigned rounding shift right"]
60334#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_u64)"]
60335#[inline]
60336#[target_feature(enable = "neon")]
60337#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60338#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
60339#[cfg_attr(
60340 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60341 assert_instr(urshr, N = 2)
60342)]
60343#[rustc_legacy_const_generics(1)]
60344#[cfg_attr(
60345 not(target_arch = "arm"),
60346 stable(feature = "neon_intrinsics", since = "1.59.0")
60347)]
60348#[cfg_attr(
60349 target_arch = "arm",
60350 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60351)]
60352pub fn vrshr_n_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
60353 static_assert!(N >= 1 && N <= 64);
60354 vrshl_u64(a, vdup_n_s64(-N as _))
60355}
60356#[doc = "Unsigned rounding shift right"]
60357#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_u64)"]
60358#[inline]
60359#[target_feature(enable = "neon")]
60360#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60361#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
60362#[cfg_attr(
60363 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60364 assert_instr(urshr, N = 2)
60365)]
60366#[rustc_legacy_const_generics(1)]
60367#[cfg_attr(
60368 not(target_arch = "arm"),
60369 stable(feature = "neon_intrinsics", since = "1.59.0")
60370)]
60371#[cfg_attr(
60372 target_arch = "arm",
60373 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60374)]
60375pub fn vrshrq_n_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
60376 static_assert!(N >= 1 && N <= 64);
60377 vrshlq_u64(a, vdupq_n_s64(-N as _))
60378}
60379#[doc = "Rounding shift right narrow"]
60380#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s16)"]
60381#[inline]
60382#[cfg(target_arch = "arm")]
60383#[target_feature(enable = "neon,v7")]
60384#[cfg_attr(test, assert_instr(vrshrn, N = 2))]
60385#[rustc_legacy_const_generics(1)]
60386#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60387pub fn vrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
60388 static_assert!(N >= 1 && N <= 8);
60389 unsafe extern "unadjusted" {
60390 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v8i8")]
60391 fn _vrshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;
60392 }
60393 unsafe { _vrshrn_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
60394}
60395#[doc = "Rounding shift right narrow"]
60396#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s32)"]
60397#[inline]
60398#[cfg(target_arch = "arm")]
60399#[target_feature(enable = "neon,v7")]
60400#[cfg_attr(test, assert_instr(vrshrn, N = 2))]
60401#[rustc_legacy_const_generics(1)]
60402#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60403pub fn vrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
60404 static_assert!(N >= 1 && N <= 16);
60405 unsafe extern "unadjusted" {
60406 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v4i16")]
60407 fn _vrshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;
60408 }
60409 unsafe { _vrshrn_n_s32(a, const { int32x4_t([-N; 4]) }) }
60410}
60411#[doc = "Rounding shift right narrow"]
60412#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s64)"]
60413#[inline]
60414#[cfg(target_arch = "arm")]
60415#[target_feature(enable = "neon,v7")]
60416#[cfg_attr(test, assert_instr(vrshrn, N = 2))]
60417#[rustc_legacy_const_generics(1)]
60418#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60419pub fn vrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
60420 static_assert!(N >= 1 && N <= 32);
60421 unsafe extern "unadjusted" {
60422 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v2i32")]
60423 fn _vrshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;
60424 }
60425 unsafe { _vrshrn_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
60426}
60427#[doc = "Rounding shift right narrow"]
60428#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s16)"]
60429#[inline]
60430#[target_feature(enable = "neon")]
60431#[cfg(not(target_arch = "arm"))]
60432#[cfg_attr(test, assert_instr(rshrn, N = 2))]
60433#[rustc_legacy_const_generics(1)]
60434#[stable(feature = "neon_intrinsics", since = "1.59.0")]
60435pub fn vrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
60436 static_assert!(N >= 1 && N <= 8);
60437 unsafe extern "unadjusted" {
60438 #[cfg_attr(
60439 any(target_arch = "aarch64", target_arch = "arm64ec"),
60440 link_name = "llvm.aarch64.neon.rshrn.v8i8"
60441 )]
60442 fn _vrshrn_n_s16(a: int16x8_t, n: i32) -> int8x8_t;
60443 }
60444 unsafe { _vrshrn_n_s16(a, N) }
60445}
60446#[doc = "Rounding shift right narrow"]
60447#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s32)"]
60448#[inline]
60449#[target_feature(enable = "neon")]
60450#[cfg(not(target_arch = "arm"))]
60451#[cfg_attr(test, assert_instr(rshrn, N = 2))]
60452#[rustc_legacy_const_generics(1)]
60453#[stable(feature = "neon_intrinsics", since = "1.59.0")]
60454pub fn vrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
60455 static_assert!(N >= 1 && N <= 16);
60456 unsafe extern "unadjusted" {
60457 #[cfg_attr(
60458 any(target_arch = "aarch64", target_arch = "arm64ec"),
60459 link_name = "llvm.aarch64.neon.rshrn.v4i16"
60460 )]
60461 fn _vrshrn_n_s32(a: int32x4_t, n: i32) -> int16x4_t;
60462 }
60463 unsafe { _vrshrn_n_s32(a, N) }
60464}
60465#[doc = "Rounding shift right narrow"]
60466#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s64)"]
60467#[inline]
60468#[target_feature(enable = "neon")]
60469#[cfg(not(target_arch = "arm"))]
60470#[cfg_attr(test, assert_instr(rshrn, N = 2))]
60471#[rustc_legacy_const_generics(1)]
60472#[stable(feature = "neon_intrinsics", since = "1.59.0")]
60473pub fn vrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
60474 static_assert!(N >= 1 && N <= 32);
60475 unsafe extern "unadjusted" {
60476 #[cfg_attr(
60477 any(target_arch = "aarch64", target_arch = "arm64ec"),
60478 link_name = "llvm.aarch64.neon.rshrn.v2i32"
60479 )]
60480 fn _vrshrn_n_s64(a: int64x2_t, n: i32) -> int32x2_t;
60481 }
60482 unsafe { _vrshrn_n_s64(a, N) }
60483}
60484#[doc = "Rounding shift right narrow"]
60485#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_u16)"]
60486#[inline]
60487#[target_feature(enable = "neon")]
60488#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60489#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshrn, N = 2))]
60490#[cfg_attr(
60491 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60492 assert_instr(rshrn, N = 2)
60493)]
60494#[rustc_legacy_const_generics(1)]
60495#[cfg_attr(
60496 not(target_arch = "arm"),
60497 stable(feature = "neon_intrinsics", since = "1.59.0")
60498)]
60499#[cfg_attr(
60500 target_arch = "arm",
60501 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60502)]
60503pub fn vrshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
60504 static_assert!(N >= 1 && N <= 8);
60505 unsafe { transmute(vrshrn_n_s16::<N>(transmute(a))) }
60506}
60507#[doc = "Rounding shift right narrow"]
60508#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_u32)"]
60509#[inline]
60510#[target_feature(enable = "neon")]
60511#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60512#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshrn, N = 2))]
60513#[cfg_attr(
60514 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60515 assert_instr(rshrn, N = 2)
60516)]
60517#[rustc_legacy_const_generics(1)]
60518#[cfg_attr(
60519 not(target_arch = "arm"),
60520 stable(feature = "neon_intrinsics", since = "1.59.0")
60521)]
60522#[cfg_attr(
60523 target_arch = "arm",
60524 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60525)]
60526pub fn vrshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
60527 static_assert!(N >= 1 && N <= 16);
60528 unsafe { transmute(vrshrn_n_s32::<N>(transmute(a))) }
60529}
60530#[doc = "Rounding shift right narrow"]
60531#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_u64)"]
60532#[inline]
60533#[target_feature(enable = "neon")]
60534#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60535#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshrn, N = 2))]
60536#[cfg_attr(
60537 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60538 assert_instr(rshrn, N = 2)
60539)]
60540#[rustc_legacy_const_generics(1)]
60541#[cfg_attr(
60542 not(target_arch = "arm"),
60543 stable(feature = "neon_intrinsics", since = "1.59.0")
60544)]
60545#[cfg_attr(
60546 target_arch = "arm",
60547 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60548)]
60549pub fn vrshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
60550 static_assert!(N >= 1 && N <= 32);
60551 unsafe { transmute(vrshrn_n_s64::<N>(transmute(a))) }
60552}
60553#[doc = "Reciprocal square-root estimate."]
60554#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrte_f16)"]
60555#[inline]
60556#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
60557#[target_feature(enable = "neon,fp16")]
60558#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
60559#[cfg_attr(
60560 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60561 assert_instr(frsqrte)
60562)]
60563#[cfg_attr(
60564 not(target_arch = "arm"),
60565 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
60566)]
60567#[cfg_attr(
60568 target_arch = "arm",
60569 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60570)]
60571#[cfg(not(target_arch = "arm64ec"))]
60572pub fn vrsqrte_f16(a: float16x4_t) -> float16x4_t {
60573 unsafe extern "unadjusted" {
60574 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v4f16")]
60575 #[cfg_attr(
60576 any(target_arch = "aarch64", target_arch = "arm64ec"),
60577 link_name = "llvm.aarch64.neon.frsqrte.v4f16"
60578 )]
60579 fn _vrsqrte_f16(a: float16x4_t) -> float16x4_t;
60580 }
60581 unsafe { _vrsqrte_f16(a) }
60582}
60583#[doc = "Reciprocal square-root estimate."]
60584#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrteq_f16)"]
60585#[inline]
60586#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
60587#[target_feature(enable = "neon,fp16")]
60588#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
60589#[cfg_attr(
60590 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60591 assert_instr(frsqrte)
60592)]
60593#[cfg_attr(
60594 not(target_arch = "arm"),
60595 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
60596)]
60597#[cfg_attr(
60598 target_arch = "arm",
60599 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60600)]
60601#[cfg(not(target_arch = "arm64ec"))]
60602pub fn vrsqrteq_f16(a: float16x8_t) -> float16x8_t {
60603 unsafe extern "unadjusted" {
60604 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v8f16")]
60605 #[cfg_attr(
60606 any(target_arch = "aarch64", target_arch = "arm64ec"),
60607 link_name = "llvm.aarch64.neon.frsqrte.v8f16"
60608 )]
60609 fn _vrsqrteq_f16(a: float16x8_t) -> float16x8_t;
60610 }
60611 unsafe { _vrsqrteq_f16(a) }
60612}
60613#[doc = "Reciprocal square-root estimate."]
60614#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrte_f32)"]
60615#[inline]
60616#[target_feature(enable = "neon")]
60617#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60618#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
60619#[cfg_attr(
60620 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60621 assert_instr(frsqrte)
60622)]
60623#[cfg_attr(
60624 not(target_arch = "arm"),
60625 stable(feature = "neon_intrinsics", since = "1.59.0")
60626)]
60627#[cfg_attr(
60628 target_arch = "arm",
60629 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60630)]
60631pub fn vrsqrte_f32(a: float32x2_t) -> float32x2_t {
60632 unsafe extern "unadjusted" {
60633 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v2f32")]
60634 #[cfg_attr(
60635 any(target_arch = "aarch64", target_arch = "arm64ec"),
60636 link_name = "llvm.aarch64.neon.frsqrte.v2f32"
60637 )]
60638 fn _vrsqrte_f32(a: float32x2_t) -> float32x2_t;
60639 }
60640 unsafe { _vrsqrte_f32(a) }
60641}
60642#[doc = "Reciprocal square-root estimate."]
60643#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrteq_f32)"]
60644#[inline]
60645#[target_feature(enable = "neon")]
60646#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60647#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
60648#[cfg_attr(
60649 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60650 assert_instr(frsqrte)
60651)]
60652#[cfg_attr(
60653 not(target_arch = "arm"),
60654 stable(feature = "neon_intrinsics", since = "1.59.0")
60655)]
60656#[cfg_attr(
60657 target_arch = "arm",
60658 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60659)]
60660pub fn vrsqrteq_f32(a: float32x4_t) -> float32x4_t {
60661 unsafe extern "unadjusted" {
60662 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v4f32")]
60663 #[cfg_attr(
60664 any(target_arch = "aarch64", target_arch = "arm64ec"),
60665 link_name = "llvm.aarch64.neon.frsqrte.v4f32"
60666 )]
60667 fn _vrsqrteq_f32(a: float32x4_t) -> float32x4_t;
60668 }
60669 unsafe { _vrsqrteq_f32(a) }
60670}
60671#[doc = "Unsigned reciprocal square root estimate"]
60672#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrte_u32)"]
60673#[inline]
60674#[target_feature(enable = "neon")]
60675#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60676#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
60677#[cfg_attr(
60678 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60679 assert_instr(ursqrte)
60680)]
60681#[cfg_attr(
60682 not(target_arch = "arm"),
60683 stable(feature = "neon_intrinsics", since = "1.59.0")
60684)]
60685#[cfg_attr(
60686 target_arch = "arm",
60687 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60688)]
60689pub fn vrsqrte_u32(a: uint32x2_t) -> uint32x2_t {
60690 unsafe extern "unadjusted" {
60691 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v2i32")]
60692 #[cfg_attr(
60693 any(target_arch = "aarch64", target_arch = "arm64ec"),
60694 link_name = "llvm.aarch64.neon.ursqrte.v2i32"
60695 )]
60696 fn _vrsqrte_u32(a: uint32x2_t) -> uint32x2_t;
60697 }
60698 unsafe { _vrsqrte_u32(a) }
60699}
60700#[doc = "Unsigned reciprocal square root estimate"]
60701#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrteq_u32)"]
60702#[inline]
60703#[target_feature(enable = "neon")]
60704#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60705#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
60706#[cfg_attr(
60707 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60708 assert_instr(ursqrte)
60709)]
60710#[cfg_attr(
60711 not(target_arch = "arm"),
60712 stable(feature = "neon_intrinsics", since = "1.59.0")
60713)]
60714#[cfg_attr(
60715 target_arch = "arm",
60716 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60717)]
60718pub fn vrsqrteq_u32(a: uint32x4_t) -> uint32x4_t {
60719 unsafe extern "unadjusted" {
60720 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v4i32")]
60721 #[cfg_attr(
60722 any(target_arch = "aarch64", target_arch = "arm64ec"),
60723 link_name = "llvm.aarch64.neon.ursqrte.v4i32"
60724 )]
60725 fn _vrsqrteq_u32(a: uint32x4_t) -> uint32x4_t;
60726 }
60727 unsafe { _vrsqrteq_u32(a) }
60728}
60729#[doc = "Floating-point reciprocal square root step"]
60730#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrts_f16)"]
60731#[inline]
60732#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
60733#[target_feature(enable = "neon,fp16")]
60734#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrts))]
60735#[cfg_attr(
60736 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60737 assert_instr(frsqrts)
60738)]
60739#[cfg_attr(
60740 not(target_arch = "arm"),
60741 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
60742)]
60743#[cfg_attr(
60744 target_arch = "arm",
60745 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60746)]
60747#[cfg(not(target_arch = "arm64ec"))]
60748pub fn vrsqrts_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
60749 unsafe extern "unadjusted" {
60750 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrts.v4f16")]
60751 #[cfg_attr(
60752 any(target_arch = "aarch64", target_arch = "arm64ec"),
60753 link_name = "llvm.aarch64.neon.frsqrts.v4f16"
60754 )]
60755 fn _vrsqrts_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
60756 }
60757 unsafe { _vrsqrts_f16(a, b) }
60758}
60759#[doc = "Floating-point reciprocal square root step"]
60760#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrtsq_f16)"]
60761#[inline]
60762#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
60763#[target_feature(enable = "neon,fp16")]
60764#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrts))]
60765#[cfg_attr(
60766 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60767 assert_instr(frsqrts)
60768)]
60769#[cfg_attr(
60770 not(target_arch = "arm"),
60771 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
60772)]
60773#[cfg_attr(
60774 target_arch = "arm",
60775 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60776)]
60777#[cfg(not(target_arch = "arm64ec"))]
60778pub fn vrsqrtsq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
60779 unsafe extern "unadjusted" {
60780 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrts.v8f16")]
60781 #[cfg_attr(
60782 any(target_arch = "aarch64", target_arch = "arm64ec"),
60783 link_name = "llvm.aarch64.neon.frsqrts.v8f16"
60784 )]
60785 fn _vrsqrtsq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
60786 }
60787 unsafe { _vrsqrtsq_f16(a, b) }
60788}
60789#[doc = "Floating-point reciprocal square root step"]
60790#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrts_f32)"]
60791#[inline]
60792#[target_feature(enable = "neon")]
60793#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60794#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrts))]
60795#[cfg_attr(
60796 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60797 assert_instr(frsqrts)
60798)]
60799#[cfg_attr(
60800 not(target_arch = "arm"),
60801 stable(feature = "neon_intrinsics", since = "1.59.0")
60802)]
60803#[cfg_attr(
60804 target_arch = "arm",
60805 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60806)]
60807pub fn vrsqrts_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
60808 unsafe extern "unadjusted" {
60809 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrts.v2f32")]
60810 #[cfg_attr(
60811 any(target_arch = "aarch64", target_arch = "arm64ec"),
60812 link_name = "llvm.aarch64.neon.frsqrts.v2f32"
60813 )]
60814 fn _vrsqrts_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
60815 }
60816 unsafe { _vrsqrts_f32(a, b) }
60817}
60818#[doc = "Floating-point reciprocal square root step"]
60819#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrtsq_f32)"]
60820#[inline]
60821#[target_feature(enable = "neon")]
60822#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60823#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrts))]
60824#[cfg_attr(
60825 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60826 assert_instr(frsqrts)
60827)]
60828#[cfg_attr(
60829 not(target_arch = "arm"),
60830 stable(feature = "neon_intrinsics", since = "1.59.0")
60831)]
60832#[cfg_attr(
60833 target_arch = "arm",
60834 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60835)]
60836pub fn vrsqrtsq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
60837 unsafe extern "unadjusted" {
60838 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrts.v4f32")]
60839 #[cfg_attr(
60840 any(target_arch = "aarch64", target_arch = "arm64ec"),
60841 link_name = "llvm.aarch64.neon.frsqrts.v4f32"
60842 )]
60843 fn _vrsqrtsq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
60844 }
60845 unsafe { _vrsqrtsq_f32(a, b) }
60846}
60847#[doc = "Signed rounding shift right and accumulate"]
60848#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_s8)"]
60849#[inline]
60850#[target_feature(enable = "neon")]
60851#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60852#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
60853#[cfg_attr(
60854 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60855 assert_instr(srsra, N = 2)
60856)]
60857#[rustc_legacy_const_generics(2)]
60858#[cfg_attr(
60859 not(target_arch = "arm"),
60860 stable(feature = "neon_intrinsics", since = "1.59.0")
60861)]
60862#[cfg_attr(
60863 target_arch = "arm",
60864 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60865)]
60866pub fn vrsra_n_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
60867 static_assert!(N >= 1 && N <= 8);
60868 unsafe { simd_add(a, vrshr_n_s8::<N>(b)) }
60869}
60870#[doc = "Signed rounding shift right and accumulate"]
60871#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_s8)"]
60872#[inline]
60873#[target_feature(enable = "neon")]
60874#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60875#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
60876#[cfg_attr(
60877 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60878 assert_instr(srsra, N = 2)
60879)]
60880#[rustc_legacy_const_generics(2)]
60881#[cfg_attr(
60882 not(target_arch = "arm"),
60883 stable(feature = "neon_intrinsics", since = "1.59.0")
60884)]
60885#[cfg_attr(
60886 target_arch = "arm",
60887 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60888)]
60889pub fn vrsraq_n_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
60890 static_assert!(N >= 1 && N <= 8);
60891 unsafe { simd_add(a, vrshrq_n_s8::<N>(b)) }
60892}
60893#[doc = "Signed rounding shift right and accumulate"]
60894#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_s16)"]
60895#[inline]
60896#[target_feature(enable = "neon")]
60897#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60898#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
60899#[cfg_attr(
60900 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60901 assert_instr(srsra, N = 2)
60902)]
60903#[rustc_legacy_const_generics(2)]
60904#[cfg_attr(
60905 not(target_arch = "arm"),
60906 stable(feature = "neon_intrinsics", since = "1.59.0")
60907)]
60908#[cfg_attr(
60909 target_arch = "arm",
60910 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60911)]
60912pub fn vrsra_n_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
60913 static_assert!(N >= 1 && N <= 16);
60914 unsafe { simd_add(a, vrshr_n_s16::<N>(b)) }
60915}
60916#[doc = "Signed rounding shift right and accumulate"]
60917#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_s16)"]
60918#[inline]
60919#[target_feature(enable = "neon")]
60920#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60921#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
60922#[cfg_attr(
60923 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60924 assert_instr(srsra, N = 2)
60925)]
60926#[rustc_legacy_const_generics(2)]
60927#[cfg_attr(
60928 not(target_arch = "arm"),
60929 stable(feature = "neon_intrinsics", since = "1.59.0")
60930)]
60931#[cfg_attr(
60932 target_arch = "arm",
60933 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60934)]
60935pub fn vrsraq_n_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
60936 static_assert!(N >= 1 && N <= 16);
60937 unsafe { simd_add(a, vrshrq_n_s16::<N>(b)) }
60938}
60939#[doc = "Signed rounding shift right and accumulate"]
60940#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_s32)"]
60941#[inline]
60942#[target_feature(enable = "neon")]
60943#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60944#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
60945#[cfg_attr(
60946 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60947 assert_instr(srsra, N = 2)
60948)]
60949#[rustc_legacy_const_generics(2)]
60950#[cfg_attr(
60951 not(target_arch = "arm"),
60952 stable(feature = "neon_intrinsics", since = "1.59.0")
60953)]
60954#[cfg_attr(
60955 target_arch = "arm",
60956 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60957)]
60958pub fn vrsra_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
60959 static_assert!(N >= 1 && N <= 32);
60960 unsafe { simd_add(a, vrshr_n_s32::<N>(b)) }
60961}
60962#[doc = "Signed rounding shift right and accumulate"]
60963#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_s32)"]
60964#[inline]
60965#[target_feature(enable = "neon")]
60966#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60967#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
60968#[cfg_attr(
60969 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60970 assert_instr(srsra, N = 2)
60971)]
60972#[rustc_legacy_const_generics(2)]
60973#[cfg_attr(
60974 not(target_arch = "arm"),
60975 stable(feature = "neon_intrinsics", since = "1.59.0")
60976)]
60977#[cfg_attr(
60978 target_arch = "arm",
60979 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60980)]
60981pub fn vrsraq_n_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
60982 static_assert!(N >= 1 && N <= 32);
60983 unsafe { simd_add(a, vrshrq_n_s32::<N>(b)) }
60984}
60985#[doc = "Signed rounding shift right and accumulate"]
60986#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_s64)"]
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(vrsra, N = 2))]
60991#[cfg_attr(
60992 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60993 assert_instr(srsra, N = 2)
60994)]
60995#[rustc_legacy_const_generics(2)]
60996#[cfg_attr(
60997 not(target_arch = "arm"),
60998 stable(feature = "neon_intrinsics", since = "1.59.0")
60999)]
61000#[cfg_attr(
61001 target_arch = "arm",
61002 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61003)]
61004pub fn vrsra_n_s64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
61005 static_assert!(N >= 1 && N <= 64);
61006 unsafe { simd_add(a, vrshr_n_s64::<N>(b)) }
61007}
61008#[doc = "Signed rounding shift right and accumulate"]
61009#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_s64)"]
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(vrsra, N = 2))]
61014#[cfg_attr(
61015 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61016 assert_instr(srsra, N = 2)
61017)]
61018#[rustc_legacy_const_generics(2)]
61019#[cfg_attr(
61020 not(target_arch = "arm"),
61021 stable(feature = "neon_intrinsics", since = "1.59.0")
61022)]
61023#[cfg_attr(
61024 target_arch = "arm",
61025 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61026)]
61027pub fn vrsraq_n_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
61028 static_assert!(N >= 1 && N <= 64);
61029 unsafe { simd_add(a, vrshrq_n_s64::<N>(b)) }
61030}
61031#[doc = "Unsigned rounding shift right and accumulate"]
61032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_u8)"]
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(vrsra, N = 2))]
61037#[cfg_attr(
61038 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61039 assert_instr(ursra, N = 2)
61040)]
61041#[rustc_legacy_const_generics(2)]
61042#[cfg_attr(
61043 not(target_arch = "arm"),
61044 stable(feature = "neon_intrinsics", since = "1.59.0")
61045)]
61046#[cfg_attr(
61047 target_arch = "arm",
61048 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61049)]
61050pub fn vrsra_n_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
61051 static_assert!(N >= 1 && N <= 8);
61052 unsafe { simd_add(a, vrshr_n_u8::<N>(b)) }
61053}
61054#[doc = "Unsigned rounding shift right and accumulate"]
61055#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_u8)"]
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(vrsra, N = 2))]
61060#[cfg_attr(
61061 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61062 assert_instr(ursra, N = 2)
61063)]
61064#[rustc_legacy_const_generics(2)]
61065#[cfg_attr(
61066 not(target_arch = "arm"),
61067 stable(feature = "neon_intrinsics", since = "1.59.0")
61068)]
61069#[cfg_attr(
61070 target_arch = "arm",
61071 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61072)]
61073pub fn vrsraq_n_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
61074 static_assert!(N >= 1 && N <= 8);
61075 unsafe { simd_add(a, vrshrq_n_u8::<N>(b)) }
61076}
61077#[doc = "Unsigned rounding shift right and accumulate"]
61078#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_u16)"]
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(vrsra, N = 2))]
61083#[cfg_attr(
61084 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61085 assert_instr(ursra, N = 2)
61086)]
61087#[rustc_legacy_const_generics(2)]
61088#[cfg_attr(
61089 not(target_arch = "arm"),
61090 stable(feature = "neon_intrinsics", since = "1.59.0")
61091)]
61092#[cfg_attr(
61093 target_arch = "arm",
61094 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61095)]
61096pub fn vrsra_n_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
61097 static_assert!(N >= 1 && N <= 16);
61098 unsafe { simd_add(a, vrshr_n_u16::<N>(b)) }
61099}
61100#[doc = "Unsigned rounding shift right and accumulate"]
61101#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_u16)"]
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(vrsra, N = 2))]
61106#[cfg_attr(
61107 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61108 assert_instr(ursra, N = 2)
61109)]
61110#[rustc_legacy_const_generics(2)]
61111#[cfg_attr(
61112 not(target_arch = "arm"),
61113 stable(feature = "neon_intrinsics", since = "1.59.0")
61114)]
61115#[cfg_attr(
61116 target_arch = "arm",
61117 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61118)]
61119pub fn vrsraq_n_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
61120 static_assert!(N >= 1 && N <= 16);
61121 unsafe { simd_add(a, vrshrq_n_u16::<N>(b)) }
61122}
61123#[doc = "Unsigned rounding shift right and accumulate"]
61124#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_u32)"]
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(vrsra, N = 2))]
61129#[cfg_attr(
61130 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61131 assert_instr(ursra, N = 2)
61132)]
61133#[rustc_legacy_const_generics(2)]
61134#[cfg_attr(
61135 not(target_arch = "arm"),
61136 stable(feature = "neon_intrinsics", since = "1.59.0")
61137)]
61138#[cfg_attr(
61139 target_arch = "arm",
61140 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61141)]
61142pub fn vrsra_n_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
61143 static_assert!(N >= 1 && N <= 32);
61144 unsafe { simd_add(a, vrshr_n_u32::<N>(b)) }
61145}
61146#[doc = "Unsigned rounding shift right and accumulate"]
61147#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_u32)"]
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(vrsra, N = 2))]
61152#[cfg_attr(
61153 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61154 assert_instr(ursra, N = 2)
61155)]
61156#[rustc_legacy_const_generics(2)]
61157#[cfg_attr(
61158 not(target_arch = "arm"),
61159 stable(feature = "neon_intrinsics", since = "1.59.0")
61160)]
61161#[cfg_attr(
61162 target_arch = "arm",
61163 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61164)]
61165pub fn vrsraq_n_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
61166 static_assert!(N >= 1 && N <= 32);
61167 unsafe { simd_add(a, vrshrq_n_u32::<N>(b)) }
61168}
61169#[doc = "Unsigned rounding shift right and accumulate"]
61170#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_u64)"]
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(vrsra, N = 2))]
61175#[cfg_attr(
61176 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61177 assert_instr(ursra, N = 2)
61178)]
61179#[rustc_legacy_const_generics(2)]
61180#[cfg_attr(
61181 not(target_arch = "arm"),
61182 stable(feature = "neon_intrinsics", since = "1.59.0")
61183)]
61184#[cfg_attr(
61185 target_arch = "arm",
61186 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61187)]
61188pub fn vrsra_n_u64<const N: i32>(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
61189 static_assert!(N >= 1 && N <= 64);
61190 unsafe { simd_add(a, vrshr_n_u64::<N>(b)) }
61191}
61192#[doc = "Unsigned rounding shift right and accumulate"]
61193#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_u64)"]
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(vrsra, N = 2))]
61198#[cfg_attr(
61199 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61200 assert_instr(ursra, N = 2)
61201)]
61202#[rustc_legacy_const_generics(2)]
61203#[cfg_attr(
61204 not(target_arch = "arm"),
61205 stable(feature = "neon_intrinsics", since = "1.59.0")
61206)]
61207#[cfg_attr(
61208 target_arch = "arm",
61209 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61210)]
61211pub fn vrsraq_n_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
61212 static_assert!(N >= 1 && N <= 64);
61213 unsafe { simd_add(a, vrshrq_n_u64::<N>(b)) }
61214}
61215#[doc = "Rounding subtract returning high narrow"]
61216#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_s16)"]
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(vrsubhn))]
61221#[cfg_attr(
61222 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61223 assert_instr(rsubhn)
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 fn vrsubhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t {
61234 unsafe extern "unadjusted" {
61235 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsubhn.v8i8")]
61236 #[cfg_attr(
61237 any(target_arch = "aarch64", target_arch = "arm64ec"),
61238 link_name = "llvm.aarch64.neon.rsubhn.v8i8"
61239 )]
61240 fn _vrsubhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t;
61241 }
61242 unsafe { _vrsubhn_s16(a, b) }
61243}
61244#[doc = "Rounding subtract returning high narrow"]
61245#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_s32)"]
61246#[inline]
61247#[target_feature(enable = "neon")]
61248#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61249#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
61250#[cfg_attr(
61251 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61252 assert_instr(rsubhn)
61253)]
61254#[cfg_attr(
61255 not(target_arch = "arm"),
61256 stable(feature = "neon_intrinsics", since = "1.59.0")
61257)]
61258#[cfg_attr(
61259 target_arch = "arm",
61260 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61261)]
61262pub fn vrsubhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t {
61263 unsafe extern "unadjusted" {
61264 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsubhn.v4i16")]
61265 #[cfg_attr(
61266 any(target_arch = "aarch64", target_arch = "arm64ec"),
61267 link_name = "llvm.aarch64.neon.rsubhn.v4i16"
61268 )]
61269 fn _vrsubhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t;
61270 }
61271 unsafe { _vrsubhn_s32(a, b) }
61272}
61273#[doc = "Rounding subtract returning high narrow"]
61274#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_s64)"]
61275#[inline]
61276#[target_feature(enable = "neon")]
61277#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61278#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
61279#[cfg_attr(
61280 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61281 assert_instr(rsubhn)
61282)]
61283#[cfg_attr(
61284 not(target_arch = "arm"),
61285 stable(feature = "neon_intrinsics", since = "1.59.0")
61286)]
61287#[cfg_attr(
61288 target_arch = "arm",
61289 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61290)]
61291pub fn vrsubhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t {
61292 unsafe extern "unadjusted" {
61293 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsubhn.v2i32")]
61294 #[cfg_attr(
61295 any(target_arch = "aarch64", target_arch = "arm64ec"),
61296 link_name = "llvm.aarch64.neon.rsubhn.v2i32"
61297 )]
61298 fn _vrsubhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t;
61299 }
61300 unsafe { _vrsubhn_s64(a, b) }
61301}
61302#[doc = "Rounding subtract returning high narrow"]
61303#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u16)"]
61304#[inline]
61305#[cfg(target_endian = "little")]
61306#[target_feature(enable = "neon")]
61307#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61308#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
61309#[cfg_attr(
61310 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61311 assert_instr(rsubhn)
61312)]
61313#[cfg_attr(
61314 not(target_arch = "arm"),
61315 stable(feature = "neon_intrinsics", since = "1.59.0")
61316)]
61317#[cfg_attr(
61318 target_arch = "arm",
61319 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61320)]
61321pub fn vrsubhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
61322 unsafe { transmute(vrsubhn_s16(transmute(a), transmute(b))) }
61323}
61324#[doc = "Rounding subtract returning high narrow"]
61325#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u16)"]
61326#[inline]
61327#[cfg(target_endian = "big")]
61328#[target_feature(enable = "neon")]
61329#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61330#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
61331#[cfg_attr(
61332 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61333 assert_instr(rsubhn)
61334)]
61335#[cfg_attr(
61336 not(target_arch = "arm"),
61337 stable(feature = "neon_intrinsics", since = "1.59.0")
61338)]
61339#[cfg_attr(
61340 target_arch = "arm",
61341 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61342)]
61343pub fn vrsubhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
61344 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
61345 let b: uint16x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
61346 unsafe {
61347 let ret_val: uint8x8_t = transmute(vrsubhn_s16(transmute(a), transmute(b)));
61348 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
61349 }
61350}
61351#[doc = "Rounding subtract returning high narrow"]
61352#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u32)"]
61353#[inline]
61354#[cfg(target_endian = "little")]
61355#[target_feature(enable = "neon")]
61356#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61357#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
61358#[cfg_attr(
61359 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61360 assert_instr(rsubhn)
61361)]
61362#[cfg_attr(
61363 not(target_arch = "arm"),
61364 stable(feature = "neon_intrinsics", since = "1.59.0")
61365)]
61366#[cfg_attr(
61367 target_arch = "arm",
61368 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61369)]
61370pub fn vrsubhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
61371 unsafe { transmute(vrsubhn_s32(transmute(a), transmute(b))) }
61372}
61373#[doc = "Rounding subtract returning high narrow"]
61374#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u32)"]
61375#[inline]
61376#[cfg(target_endian = "big")]
61377#[target_feature(enable = "neon")]
61378#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61379#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
61380#[cfg_attr(
61381 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61382 assert_instr(rsubhn)
61383)]
61384#[cfg_attr(
61385 not(target_arch = "arm"),
61386 stable(feature = "neon_intrinsics", since = "1.59.0")
61387)]
61388#[cfg_attr(
61389 target_arch = "arm",
61390 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61391)]
61392pub fn vrsubhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
61393 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
61394 let b: uint32x4_t = unsafe { simd_shuffle!(b, b, [3, 2, 1, 0]) };
61395 unsafe {
61396 let ret_val: uint16x4_t = transmute(vrsubhn_s32(transmute(a), transmute(b)));
61397 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
61398 }
61399}
61400#[doc = "Rounding subtract returning high narrow"]
61401#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u64)"]
61402#[inline]
61403#[cfg(target_endian = "little")]
61404#[target_feature(enable = "neon")]
61405#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61406#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
61407#[cfg_attr(
61408 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61409 assert_instr(rsubhn)
61410)]
61411#[cfg_attr(
61412 not(target_arch = "arm"),
61413 stable(feature = "neon_intrinsics", since = "1.59.0")
61414)]
61415#[cfg_attr(
61416 target_arch = "arm",
61417 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61418)]
61419pub fn vrsubhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
61420 unsafe { transmute(vrsubhn_s64(transmute(a), transmute(b))) }
61421}
61422#[doc = "Rounding subtract returning high narrow"]
61423#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u64)"]
61424#[inline]
61425#[cfg(target_endian = "big")]
61426#[target_feature(enable = "neon")]
61427#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61428#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
61429#[cfg_attr(
61430 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61431 assert_instr(rsubhn)
61432)]
61433#[cfg_attr(
61434 not(target_arch = "arm"),
61435 stable(feature = "neon_intrinsics", since = "1.59.0")
61436)]
61437#[cfg_attr(
61438 target_arch = "arm",
61439 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61440)]
61441pub fn vrsubhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
61442 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
61443 let b: uint64x2_t = unsafe { simd_shuffle!(b, b, [1, 0]) };
61444 unsafe {
61445 let ret_val: uint32x2_t = transmute(vrsubhn_s64(transmute(a), transmute(b)));
61446 simd_shuffle!(ret_val, ret_val, [1, 0])
61447 }
61448}
61449#[doc = "Insert vector element from another vector element"]
61450#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_f16)"]
61451#[inline]
61452#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
61453#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61454#[cfg_attr(
61455 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61456 assert_instr(nop, LANE = 0)
61457)]
61458#[rustc_legacy_const_generics(2)]
61459#[target_feature(enable = "neon,fp16")]
61460#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
61461#[cfg(not(target_arch = "arm64ec"))]
61462pub fn vset_lane_f16<const LANE: i32>(a: f16, b: float16x4_t) -> float16x4_t {
61463 static_assert_uimm_bits!(LANE, 2);
61464 unsafe { simd_insert!(b, LANE as u32, a) }
61465}
61466#[doc = "Insert vector element from another vector element"]
61467#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_f16)"]
61468#[inline]
61469#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
61470#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61471#[cfg_attr(
61472 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61473 assert_instr(nop, LANE = 0)
61474)]
61475#[rustc_legacy_const_generics(2)]
61476#[target_feature(enable = "neon,fp16")]
61477#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
61478#[cfg(not(target_arch = "arm64ec"))]
61479pub fn vsetq_lane_f16<const LANE: i32>(a: f16, b: float16x8_t) -> float16x8_t {
61480 static_assert_uimm_bits!(LANE, 3);
61481 unsafe { simd_insert!(b, LANE as u32, a) }
61482}
61483#[doc = "Insert vector element from another vector element"]
61484#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_f32)"]
61485#[inline]
61486#[target_feature(enable = "neon")]
61487#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61488#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61489#[cfg_attr(
61490 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61491 assert_instr(nop, LANE = 0)
61492)]
61493#[rustc_legacy_const_generics(2)]
61494#[cfg_attr(
61495 not(target_arch = "arm"),
61496 stable(feature = "neon_intrinsics", since = "1.59.0")
61497)]
61498#[cfg_attr(
61499 target_arch = "arm",
61500 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61501)]
61502pub fn vset_lane_f32<const LANE: i32>(a: f32, b: float32x2_t) -> float32x2_t {
61503 static_assert_uimm_bits!(LANE, 1);
61504 unsafe { simd_insert!(b, LANE as u32, a) }
61505}
61506#[doc = "Insert vector element from another vector element"]
61507#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_f32)"]
61508#[inline]
61509#[target_feature(enable = "neon")]
61510#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61511#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61512#[cfg_attr(
61513 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61514 assert_instr(nop, LANE = 0)
61515)]
61516#[rustc_legacy_const_generics(2)]
61517#[cfg_attr(
61518 not(target_arch = "arm"),
61519 stable(feature = "neon_intrinsics", since = "1.59.0")
61520)]
61521#[cfg_attr(
61522 target_arch = "arm",
61523 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61524)]
61525pub fn vsetq_lane_f32<const LANE: i32>(a: f32, b: float32x4_t) -> float32x4_t {
61526 static_assert_uimm_bits!(LANE, 2);
61527 unsafe { simd_insert!(b, LANE as u32, a) }
61528}
61529#[doc = "Insert vector element from another vector element"]
61530#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_s8)"]
61531#[inline]
61532#[target_feature(enable = "neon")]
61533#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61534#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61535#[cfg_attr(
61536 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61537 assert_instr(nop, LANE = 0)
61538)]
61539#[rustc_legacy_const_generics(2)]
61540#[cfg_attr(
61541 not(target_arch = "arm"),
61542 stable(feature = "neon_intrinsics", since = "1.59.0")
61543)]
61544#[cfg_attr(
61545 target_arch = "arm",
61546 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61547)]
61548pub fn vset_lane_s8<const LANE: i32>(a: i8, b: int8x8_t) -> int8x8_t {
61549 static_assert_uimm_bits!(LANE, 3);
61550 unsafe { simd_insert!(b, LANE as u32, a) }
61551}
61552#[doc = "Insert vector element from another vector element"]
61553#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_s8)"]
61554#[inline]
61555#[target_feature(enable = "neon")]
61556#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61557#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61558#[cfg_attr(
61559 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61560 assert_instr(nop, LANE = 0)
61561)]
61562#[rustc_legacy_const_generics(2)]
61563#[cfg_attr(
61564 not(target_arch = "arm"),
61565 stable(feature = "neon_intrinsics", since = "1.59.0")
61566)]
61567#[cfg_attr(
61568 target_arch = "arm",
61569 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61570)]
61571pub fn vsetq_lane_s8<const LANE: i32>(a: i8, b: int8x16_t) -> int8x16_t {
61572 static_assert_uimm_bits!(LANE, 4);
61573 unsafe { simd_insert!(b, LANE as u32, a) }
61574}
61575#[doc = "Insert vector element from another vector element"]
61576#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_s16)"]
61577#[inline]
61578#[target_feature(enable = "neon")]
61579#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61580#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61581#[cfg_attr(
61582 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61583 assert_instr(nop, LANE = 0)
61584)]
61585#[rustc_legacy_const_generics(2)]
61586#[cfg_attr(
61587 not(target_arch = "arm"),
61588 stable(feature = "neon_intrinsics", since = "1.59.0")
61589)]
61590#[cfg_attr(
61591 target_arch = "arm",
61592 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61593)]
61594pub fn vset_lane_s16<const LANE: i32>(a: i16, b: int16x4_t) -> int16x4_t {
61595 static_assert_uimm_bits!(LANE, 2);
61596 unsafe { simd_insert!(b, LANE as u32, a) }
61597}
61598#[doc = "Insert vector element from another vector element"]
61599#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_s16)"]
61600#[inline]
61601#[target_feature(enable = "neon")]
61602#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61603#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61604#[cfg_attr(
61605 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61606 assert_instr(nop, LANE = 0)
61607)]
61608#[rustc_legacy_const_generics(2)]
61609#[cfg_attr(
61610 not(target_arch = "arm"),
61611 stable(feature = "neon_intrinsics", since = "1.59.0")
61612)]
61613#[cfg_attr(
61614 target_arch = "arm",
61615 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61616)]
61617pub fn vsetq_lane_s16<const LANE: i32>(a: i16, b: int16x8_t) -> int16x8_t {
61618 static_assert_uimm_bits!(LANE, 3);
61619 unsafe { simd_insert!(b, LANE as u32, a) }
61620}
61621#[doc = "Insert vector element from another vector element"]
61622#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_s32)"]
61623#[inline]
61624#[target_feature(enable = "neon")]
61625#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61626#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61627#[cfg_attr(
61628 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61629 assert_instr(nop, LANE = 0)
61630)]
61631#[rustc_legacy_const_generics(2)]
61632#[cfg_attr(
61633 not(target_arch = "arm"),
61634 stable(feature = "neon_intrinsics", since = "1.59.0")
61635)]
61636#[cfg_attr(
61637 target_arch = "arm",
61638 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61639)]
61640pub fn vset_lane_s32<const LANE: i32>(a: i32, b: int32x2_t) -> int32x2_t {
61641 static_assert_uimm_bits!(LANE, 1);
61642 unsafe { simd_insert!(b, LANE as u32, a) }
61643}
61644#[doc = "Insert vector element from another vector element"]
61645#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_s32)"]
61646#[inline]
61647#[target_feature(enable = "neon")]
61648#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61649#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61650#[cfg_attr(
61651 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61652 assert_instr(nop, LANE = 0)
61653)]
61654#[rustc_legacy_const_generics(2)]
61655#[cfg_attr(
61656 not(target_arch = "arm"),
61657 stable(feature = "neon_intrinsics", since = "1.59.0")
61658)]
61659#[cfg_attr(
61660 target_arch = "arm",
61661 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61662)]
61663pub fn vsetq_lane_s32<const LANE: i32>(a: i32, b: int32x4_t) -> int32x4_t {
61664 static_assert_uimm_bits!(LANE, 2);
61665 unsafe { simd_insert!(b, LANE as u32, a) }
61666}
61667#[doc = "Insert vector element from another vector element"]
61668#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_s64)"]
61669#[inline]
61670#[target_feature(enable = "neon")]
61671#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61672#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61673#[cfg_attr(
61674 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61675 assert_instr(nop, LANE = 0)
61676)]
61677#[rustc_legacy_const_generics(2)]
61678#[cfg_attr(
61679 not(target_arch = "arm"),
61680 stable(feature = "neon_intrinsics", since = "1.59.0")
61681)]
61682#[cfg_attr(
61683 target_arch = "arm",
61684 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61685)]
61686pub fn vsetq_lane_s64<const LANE: i32>(a: i64, b: int64x2_t) -> int64x2_t {
61687 static_assert_uimm_bits!(LANE, 1);
61688 unsafe { simd_insert!(b, LANE as u32, a) }
61689}
61690#[doc = "Insert vector element from another vector element"]
61691#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_u8)"]
61692#[inline]
61693#[target_feature(enable = "neon")]
61694#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61695#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61696#[cfg_attr(
61697 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61698 assert_instr(nop, LANE = 0)
61699)]
61700#[rustc_legacy_const_generics(2)]
61701#[cfg_attr(
61702 not(target_arch = "arm"),
61703 stable(feature = "neon_intrinsics", since = "1.59.0")
61704)]
61705#[cfg_attr(
61706 target_arch = "arm",
61707 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61708)]
61709pub fn vset_lane_u8<const LANE: i32>(a: u8, b: uint8x8_t) -> uint8x8_t {
61710 static_assert_uimm_bits!(LANE, 3);
61711 unsafe { simd_insert!(b, LANE as u32, a) }
61712}
61713#[doc = "Insert vector element from another vector element"]
61714#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_u8)"]
61715#[inline]
61716#[target_feature(enable = "neon")]
61717#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61718#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61719#[cfg_attr(
61720 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61721 assert_instr(nop, LANE = 0)
61722)]
61723#[rustc_legacy_const_generics(2)]
61724#[cfg_attr(
61725 not(target_arch = "arm"),
61726 stable(feature = "neon_intrinsics", since = "1.59.0")
61727)]
61728#[cfg_attr(
61729 target_arch = "arm",
61730 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61731)]
61732pub fn vsetq_lane_u8<const LANE: i32>(a: u8, b: uint8x16_t) -> uint8x16_t {
61733 static_assert_uimm_bits!(LANE, 4);
61734 unsafe { simd_insert!(b, LANE as u32, a) }
61735}
61736#[doc = "Insert vector element from another vector element"]
61737#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_u16)"]
61738#[inline]
61739#[target_feature(enable = "neon")]
61740#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61741#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61742#[cfg_attr(
61743 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61744 assert_instr(nop, LANE = 0)
61745)]
61746#[rustc_legacy_const_generics(2)]
61747#[cfg_attr(
61748 not(target_arch = "arm"),
61749 stable(feature = "neon_intrinsics", since = "1.59.0")
61750)]
61751#[cfg_attr(
61752 target_arch = "arm",
61753 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61754)]
61755pub fn vset_lane_u16<const LANE: i32>(a: u16, b: uint16x4_t) -> uint16x4_t {
61756 static_assert_uimm_bits!(LANE, 2);
61757 unsafe { simd_insert!(b, LANE as u32, a) }
61758}
61759#[doc = "Insert vector element from another vector element"]
61760#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_u16)"]
61761#[inline]
61762#[target_feature(enable = "neon")]
61763#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61764#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61765#[cfg_attr(
61766 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61767 assert_instr(nop, LANE = 0)
61768)]
61769#[rustc_legacy_const_generics(2)]
61770#[cfg_attr(
61771 not(target_arch = "arm"),
61772 stable(feature = "neon_intrinsics", since = "1.59.0")
61773)]
61774#[cfg_attr(
61775 target_arch = "arm",
61776 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61777)]
61778pub fn vsetq_lane_u16<const LANE: i32>(a: u16, b: uint16x8_t) -> uint16x8_t {
61779 static_assert_uimm_bits!(LANE, 3);
61780 unsafe { simd_insert!(b, LANE as u32, a) }
61781}
61782#[doc = "Insert vector element from another vector element"]
61783#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_u32)"]
61784#[inline]
61785#[target_feature(enable = "neon")]
61786#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61787#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61788#[cfg_attr(
61789 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61790 assert_instr(nop, LANE = 0)
61791)]
61792#[rustc_legacy_const_generics(2)]
61793#[cfg_attr(
61794 not(target_arch = "arm"),
61795 stable(feature = "neon_intrinsics", since = "1.59.0")
61796)]
61797#[cfg_attr(
61798 target_arch = "arm",
61799 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61800)]
61801pub fn vset_lane_u32<const LANE: i32>(a: u32, b: uint32x2_t) -> uint32x2_t {
61802 static_assert_uimm_bits!(LANE, 1);
61803 unsafe { simd_insert!(b, LANE as u32, a) }
61804}
61805#[doc = "Insert vector element from another vector element"]
61806#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_u32)"]
61807#[inline]
61808#[target_feature(enable = "neon")]
61809#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61810#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61811#[cfg_attr(
61812 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61813 assert_instr(nop, LANE = 0)
61814)]
61815#[rustc_legacy_const_generics(2)]
61816#[cfg_attr(
61817 not(target_arch = "arm"),
61818 stable(feature = "neon_intrinsics", since = "1.59.0")
61819)]
61820#[cfg_attr(
61821 target_arch = "arm",
61822 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61823)]
61824pub fn vsetq_lane_u32<const LANE: i32>(a: u32, b: uint32x4_t) -> uint32x4_t {
61825 static_assert_uimm_bits!(LANE, 2);
61826 unsafe { simd_insert!(b, LANE as u32, a) }
61827}
61828#[doc = "Insert vector element from another vector element"]
61829#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_u64)"]
61830#[inline]
61831#[target_feature(enable = "neon")]
61832#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61833#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61834#[cfg_attr(
61835 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61836 assert_instr(nop, LANE = 0)
61837)]
61838#[rustc_legacy_const_generics(2)]
61839#[cfg_attr(
61840 not(target_arch = "arm"),
61841 stable(feature = "neon_intrinsics", since = "1.59.0")
61842)]
61843#[cfg_attr(
61844 target_arch = "arm",
61845 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61846)]
61847pub fn vsetq_lane_u64<const LANE: i32>(a: u64, b: uint64x2_t) -> uint64x2_t {
61848 static_assert_uimm_bits!(LANE, 1);
61849 unsafe { simd_insert!(b, LANE as u32, a) }
61850}
61851#[doc = "Insert vector element from another vector element"]
61852#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_p8)"]
61853#[inline]
61854#[target_feature(enable = "neon")]
61855#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61856#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61857#[cfg_attr(
61858 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61859 assert_instr(nop, LANE = 0)
61860)]
61861#[rustc_legacy_const_generics(2)]
61862#[cfg_attr(
61863 not(target_arch = "arm"),
61864 stable(feature = "neon_intrinsics", since = "1.59.0")
61865)]
61866#[cfg_attr(
61867 target_arch = "arm",
61868 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61869)]
61870pub fn vset_lane_p8<const LANE: i32>(a: p8, b: poly8x8_t) -> poly8x8_t {
61871 static_assert_uimm_bits!(LANE, 3);
61872 unsafe { simd_insert!(b, LANE as u32, a) }
61873}
61874#[doc = "Insert vector element from another vector element"]
61875#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_p8)"]
61876#[inline]
61877#[target_feature(enable = "neon")]
61878#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61879#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61880#[cfg_attr(
61881 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61882 assert_instr(nop, LANE = 0)
61883)]
61884#[rustc_legacy_const_generics(2)]
61885#[cfg_attr(
61886 not(target_arch = "arm"),
61887 stable(feature = "neon_intrinsics", since = "1.59.0")
61888)]
61889#[cfg_attr(
61890 target_arch = "arm",
61891 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61892)]
61893pub fn vsetq_lane_p8<const LANE: i32>(a: p8, b: poly8x16_t) -> poly8x16_t {
61894 static_assert_uimm_bits!(LANE, 4);
61895 unsafe { simd_insert!(b, LANE as u32, a) }
61896}
61897#[doc = "Insert vector element from another vector element"]
61898#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_p16)"]
61899#[inline]
61900#[target_feature(enable = "neon")]
61901#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61902#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61903#[cfg_attr(
61904 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61905 assert_instr(nop, LANE = 0)
61906)]
61907#[rustc_legacy_const_generics(2)]
61908#[cfg_attr(
61909 not(target_arch = "arm"),
61910 stable(feature = "neon_intrinsics", since = "1.59.0")
61911)]
61912#[cfg_attr(
61913 target_arch = "arm",
61914 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61915)]
61916pub fn vset_lane_p16<const LANE: i32>(a: p16, b: poly16x4_t) -> poly16x4_t {
61917 static_assert_uimm_bits!(LANE, 2);
61918 unsafe { simd_insert!(b, LANE as u32, a) }
61919}
61920#[doc = "Insert vector element from another vector element"]
61921#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_p16)"]
61922#[inline]
61923#[target_feature(enable = "neon")]
61924#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61925#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61926#[cfg_attr(
61927 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61928 assert_instr(nop, LANE = 0)
61929)]
61930#[rustc_legacy_const_generics(2)]
61931#[cfg_attr(
61932 not(target_arch = "arm"),
61933 stable(feature = "neon_intrinsics", since = "1.59.0")
61934)]
61935#[cfg_attr(
61936 target_arch = "arm",
61937 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61938)]
61939pub fn vsetq_lane_p16<const LANE: i32>(a: p16, b: poly16x8_t) -> poly16x8_t {
61940 static_assert_uimm_bits!(LANE, 3);
61941 unsafe { simd_insert!(b, LANE as u32, a) }
61942}
61943#[doc = "Insert vector element from another vector element"]
61944#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_p64)"]
61945#[inline]
61946#[target_feature(enable = "neon,aes")]
61947#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
61948#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61949#[cfg_attr(
61950 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61951 assert_instr(nop, LANE = 0)
61952)]
61953#[rustc_legacy_const_generics(2)]
61954#[cfg_attr(
61955 not(target_arch = "arm"),
61956 stable(feature = "neon_intrinsics", since = "1.59.0")
61957)]
61958#[cfg_attr(
61959 target_arch = "arm",
61960 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61961)]
61962pub fn vset_lane_p64<const LANE: i32>(a: p64, b: poly64x1_t) -> poly64x1_t {
61963 static_assert!(LANE == 0);
61964 unsafe { simd_insert!(b, LANE as u32, a) }
61965}
61966#[doc = "Insert vector element from another vector element"]
61967#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_s64)"]
61968#[inline]
61969#[target_feature(enable = "neon")]
61970#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61971#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61972#[cfg_attr(
61973 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61974 assert_instr(nop, LANE = 0)
61975)]
61976#[rustc_legacy_const_generics(2)]
61977#[cfg_attr(
61978 not(target_arch = "arm"),
61979 stable(feature = "neon_intrinsics", since = "1.59.0")
61980)]
61981#[cfg_attr(
61982 target_arch = "arm",
61983 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61984)]
61985pub fn vset_lane_s64<const LANE: i32>(a: i64, b: int64x1_t) -> int64x1_t {
61986 static_assert!(LANE == 0);
61987 unsafe { simd_insert!(b, LANE as u32, a) }
61988}
61989#[doc = "Insert vector element from another vector element"]
61990#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_u64)"]
61991#[inline]
61992#[target_feature(enable = "neon")]
61993#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61994#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
61995#[cfg_attr(
61996 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61997 assert_instr(nop, LANE = 0)
61998)]
61999#[rustc_legacy_const_generics(2)]
62000#[cfg_attr(
62001 not(target_arch = "arm"),
62002 stable(feature = "neon_intrinsics", since = "1.59.0")
62003)]
62004#[cfg_attr(
62005 target_arch = "arm",
62006 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62007)]
62008pub fn vset_lane_u64<const LANE: i32>(a: u64, b: uint64x1_t) -> uint64x1_t {
62009 static_assert!(LANE == 0);
62010 unsafe { simd_insert!(b, LANE as u32, a) }
62011}
62012#[doc = "Insert vector element from another vector element"]
62013#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_p64)"]
62014#[inline]
62015#[target_feature(enable = "neon,aes")]
62016#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
62017#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
62018#[cfg_attr(
62019 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62020 assert_instr(nop, LANE = 0)
62021)]
62022#[rustc_legacy_const_generics(2)]
62023#[cfg_attr(
62024 not(target_arch = "arm"),
62025 stable(feature = "neon_intrinsics", since = "1.59.0")
62026)]
62027#[cfg_attr(
62028 target_arch = "arm",
62029 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62030)]
62031pub fn vsetq_lane_p64<const LANE: i32>(a: p64, b: poly64x2_t) -> poly64x2_t {
62032 static_assert_uimm_bits!(LANE, 1);
62033 unsafe { simd_insert!(b, LANE as u32, a) }
62034}
62035#[doc = "SHA1 hash update accelerator, choose."]
62036#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1cq_u32)"]
62037#[inline]
62038#[target_feature(enable = "sha2")]
62039#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
62040#[cfg_attr(test, assert_instr(sha1c))]
62041#[cfg_attr(
62042 target_arch = "arm",
62043 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62044)]
62045#[cfg_attr(
62046 not(target_arch = "arm"),
62047 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
62048)]
62049pub fn vsha1cq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t {
62050 unsafe extern "unadjusted" {
62051 #[cfg_attr(
62052 any(target_arch = "aarch64", target_arch = "arm64ec"),
62053 link_name = "llvm.aarch64.crypto.sha1c"
62054 )]
62055 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1c")]
62056 fn _vsha1cq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t;
62057 }
62058 unsafe { _vsha1cq_u32(hash_abcd, hash_e, wk) }
62059}
62060#[doc = "SHA1 fixed rotate."]
62061#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1h_u32)"]
62062#[inline]
62063#[target_feature(enable = "sha2")]
62064#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
62065#[cfg_attr(test, assert_instr(sha1h))]
62066#[cfg_attr(
62067 target_arch = "arm",
62068 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62069)]
62070#[cfg_attr(
62071 not(target_arch = "arm"),
62072 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
62073)]
62074pub fn vsha1h_u32(hash_e: u32) -> u32 {
62075 unsafe extern "unadjusted" {
62076 #[cfg_attr(
62077 any(target_arch = "aarch64", target_arch = "arm64ec"),
62078 link_name = "llvm.aarch64.crypto.sha1h"
62079 )]
62080 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1h")]
62081 fn _vsha1h_u32(hash_e: u32) -> u32;
62082 }
62083 unsafe { _vsha1h_u32(hash_e) }
62084}
62085#[doc = "SHA1 hash update accelerator, majority"]
62086#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1mq_u32)"]
62087#[inline]
62088#[target_feature(enable = "sha2")]
62089#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
62090#[cfg_attr(test, assert_instr(sha1m))]
62091#[cfg_attr(
62092 target_arch = "arm",
62093 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62094)]
62095#[cfg_attr(
62096 not(target_arch = "arm"),
62097 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
62098)]
62099pub fn vsha1mq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t {
62100 unsafe extern "unadjusted" {
62101 #[cfg_attr(
62102 any(target_arch = "aarch64", target_arch = "arm64ec"),
62103 link_name = "llvm.aarch64.crypto.sha1m"
62104 )]
62105 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1m")]
62106 fn _vsha1mq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t;
62107 }
62108 unsafe { _vsha1mq_u32(hash_abcd, hash_e, wk) }
62109}
62110#[doc = "SHA1 hash update accelerator, parity"]
62111#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1pq_u32)"]
62112#[inline]
62113#[target_feature(enable = "sha2")]
62114#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
62115#[cfg_attr(test, assert_instr(sha1p))]
62116#[cfg_attr(
62117 target_arch = "arm",
62118 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62119)]
62120#[cfg_attr(
62121 not(target_arch = "arm"),
62122 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
62123)]
62124pub fn vsha1pq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t {
62125 unsafe extern "unadjusted" {
62126 #[cfg_attr(
62127 any(target_arch = "aarch64", target_arch = "arm64ec"),
62128 link_name = "llvm.aarch64.crypto.sha1p"
62129 )]
62130 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1p")]
62131 fn _vsha1pq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t;
62132 }
62133 unsafe { _vsha1pq_u32(hash_abcd, hash_e, wk) }
62134}
62135#[doc = "SHA1 schedule update accelerator, first part."]
62136#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1su0q_u32)"]
62137#[inline]
62138#[target_feature(enable = "sha2")]
62139#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
62140#[cfg_attr(test, assert_instr(sha1su0))]
62141#[cfg_attr(
62142 target_arch = "arm",
62143 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62144)]
62145#[cfg_attr(
62146 not(target_arch = "arm"),
62147 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
62148)]
62149pub fn vsha1su0q_u32(w0_3: uint32x4_t, w4_7: uint32x4_t, w8_11: uint32x4_t) -> uint32x4_t {
62150 unsafe extern "unadjusted" {
62151 #[cfg_attr(
62152 any(target_arch = "aarch64", target_arch = "arm64ec"),
62153 link_name = "llvm.aarch64.crypto.sha1su0"
62154 )]
62155 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1su0")]
62156 fn _vsha1su0q_u32(w0_3: uint32x4_t, w4_7: uint32x4_t, w8_11: uint32x4_t) -> uint32x4_t;
62157 }
62158 unsafe { _vsha1su0q_u32(w0_3, w4_7, w8_11) }
62159}
62160#[doc = "SHA1 schedule update accelerator, second part."]
62161#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1su1q_u32)"]
62162#[inline]
62163#[target_feature(enable = "sha2")]
62164#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
62165#[cfg_attr(test, assert_instr(sha1su1))]
62166#[cfg_attr(
62167 target_arch = "arm",
62168 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62169)]
62170#[cfg_attr(
62171 not(target_arch = "arm"),
62172 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
62173)]
62174pub fn vsha1su1q_u32(tw0_3: uint32x4_t, w12_15: uint32x4_t) -> uint32x4_t {
62175 unsafe extern "unadjusted" {
62176 #[cfg_attr(
62177 any(target_arch = "aarch64", target_arch = "arm64ec"),
62178 link_name = "llvm.aarch64.crypto.sha1su1"
62179 )]
62180 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1su1")]
62181 fn _vsha1su1q_u32(tw0_3: uint32x4_t, w12_15: uint32x4_t) -> uint32x4_t;
62182 }
62183 unsafe { _vsha1su1q_u32(tw0_3, w12_15) }
62184}
62185#[doc = "SHA1 schedule update accelerator, upper part."]
62186#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha256h2q_u32)"]
62187#[inline]
62188#[target_feature(enable = "sha2")]
62189#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
62190#[cfg_attr(test, assert_instr(sha256h2))]
62191#[cfg_attr(
62192 target_arch = "arm",
62193 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62194)]
62195#[cfg_attr(
62196 not(target_arch = "arm"),
62197 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
62198)]
62199pub fn vsha256h2q_u32(hash_abcd: uint32x4_t, hash_efgh: uint32x4_t, wk: uint32x4_t) -> uint32x4_t {
62200 unsafe extern "unadjusted" {
62201 #[cfg_attr(
62202 any(target_arch = "aarch64", target_arch = "arm64ec"),
62203 link_name = "llvm.aarch64.crypto.sha256h2"
62204 )]
62205 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha256h2")]
62206 fn _vsha256h2q_u32(
62207 hash_abcd: uint32x4_t,
62208 hash_efgh: uint32x4_t,
62209 wk: uint32x4_t,
62210 ) -> uint32x4_t;
62211 }
62212 unsafe { _vsha256h2q_u32(hash_abcd, hash_efgh, wk) }
62213}
62214#[doc = "SHA1 schedule update accelerator, first part."]
62215#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha256hq_u32)"]
62216#[inline]
62217#[target_feature(enable = "sha2")]
62218#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
62219#[cfg_attr(test, assert_instr(sha256h))]
62220#[cfg_attr(
62221 target_arch = "arm",
62222 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62223)]
62224#[cfg_attr(
62225 not(target_arch = "arm"),
62226 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
62227)]
62228pub fn vsha256hq_u32(hash_abcd: uint32x4_t, hash_efgh: uint32x4_t, wk: uint32x4_t) -> uint32x4_t {
62229 unsafe extern "unadjusted" {
62230 #[cfg_attr(
62231 any(target_arch = "aarch64", target_arch = "arm64ec"),
62232 link_name = "llvm.aarch64.crypto.sha256h"
62233 )]
62234 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha256h")]
62235 fn _vsha256hq_u32(
62236 hash_abcd: uint32x4_t,
62237 hash_efgh: uint32x4_t,
62238 wk: uint32x4_t,
62239 ) -> uint32x4_t;
62240 }
62241 unsafe { _vsha256hq_u32(hash_abcd, hash_efgh, wk) }
62242}
62243#[doc = "SHA256 schedule update accelerator, first part."]
62244#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha256su0q_u32)"]
62245#[inline]
62246#[target_feature(enable = "sha2")]
62247#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
62248#[cfg_attr(test, assert_instr(sha256su0))]
62249#[cfg_attr(
62250 target_arch = "arm",
62251 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62252)]
62253#[cfg_attr(
62254 not(target_arch = "arm"),
62255 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
62256)]
62257pub fn vsha256su0q_u32(w0_3: uint32x4_t, w4_7: uint32x4_t) -> uint32x4_t {
62258 unsafe extern "unadjusted" {
62259 #[cfg_attr(
62260 any(target_arch = "aarch64", target_arch = "arm64ec"),
62261 link_name = "llvm.aarch64.crypto.sha256su0"
62262 )]
62263 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha256su0")]
62264 fn _vsha256su0q_u32(w0_3: uint32x4_t, w4_7: uint32x4_t) -> uint32x4_t;
62265 }
62266 unsafe { _vsha256su0q_u32(w0_3, w4_7) }
62267}
62268#[doc = "SHA256 schedule update accelerator, second part."]
62269#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha256su1q_u32)"]
62270#[inline]
62271#[target_feature(enable = "sha2")]
62272#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
62273#[cfg_attr(test, assert_instr(sha256su1))]
62274#[cfg_attr(
62275 target_arch = "arm",
62276 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62277)]
62278#[cfg_attr(
62279 not(target_arch = "arm"),
62280 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
62281)]
62282pub fn vsha256su1q_u32(tw0_3: uint32x4_t, w8_11: uint32x4_t, w12_15: uint32x4_t) -> uint32x4_t {
62283 unsafe extern "unadjusted" {
62284 #[cfg_attr(
62285 any(target_arch = "aarch64", target_arch = "arm64ec"),
62286 link_name = "llvm.aarch64.crypto.sha256su1"
62287 )]
62288 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha256su1")]
62289 fn _vsha256su1q_u32(tw0_3: uint32x4_t, w8_11: uint32x4_t, w12_15: uint32x4_t)
62290 -> uint32x4_t;
62291 }
62292 unsafe { _vsha256su1q_u32(tw0_3, w8_11, w12_15) }
62293}
62294#[inline]
62295#[target_feature(enable = "neon")]
62296#[cfg(target_arch = "arm")]
62297#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62298#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62299#[rustc_legacy_const_generics(2)]
62300fn vshiftlins_v16i8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
62301 unsafe extern "unadjusted" {
62302 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v16i8")]
62303 fn _vshiftlins_v16i8(a: int8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t;
62304 }
62305 unsafe { _vshiftlins_v16i8(a, b, const { int8x16_t([N as i8; 16]) }) }
62306}
62307#[inline]
62308#[target_feature(enable = "neon")]
62309#[cfg(target_arch = "arm")]
62310#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62311#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62312#[rustc_legacy_const_generics(2)]
62313fn vshiftlins_v1i64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
62314 unsafe extern "unadjusted" {
62315 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v1i64")]
62316 fn _vshiftlins_v1i64(a: int64x1_t, b: int64x1_t, c: int64x1_t) -> int64x1_t;
62317 }
62318 unsafe { _vshiftlins_v1i64(a, b, const { int64x1_t([N as i64; 1]) }) }
62319}
62320#[inline]
62321#[target_feature(enable = "neon")]
62322#[cfg(target_arch = "arm")]
62323#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62324#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62325#[rustc_legacy_const_generics(2)]
62326fn vshiftlins_v2i32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
62327 unsafe extern "unadjusted" {
62328 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v2i32")]
62329 fn _vshiftlins_v2i32(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t;
62330 }
62331 unsafe { _vshiftlins_v2i32(a, b, const { int32x2_t([N; 2]) }) }
62332}
62333#[inline]
62334#[target_feature(enable = "neon")]
62335#[cfg(target_arch = "arm")]
62336#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62337#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62338#[rustc_legacy_const_generics(2)]
62339fn vshiftlins_v2i64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
62340 unsafe extern "unadjusted" {
62341 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v2i64")]
62342 fn _vshiftlins_v2i64(a: int64x2_t, b: int64x2_t, c: int64x2_t) -> int64x2_t;
62343 }
62344 unsafe { _vshiftlins_v2i64(a, b, const { int64x2_t([N as i64; 2]) }) }
62345}
62346#[inline]
62347#[target_feature(enable = "neon")]
62348#[cfg(target_arch = "arm")]
62349#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62350#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62351#[rustc_legacy_const_generics(2)]
62352fn vshiftlins_v4i16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
62353 unsafe extern "unadjusted" {
62354 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v4i16")]
62355 fn _vshiftlins_v4i16(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t;
62356 }
62357 unsafe { _vshiftlins_v4i16(a, b, const { int16x4_t([N as i16; 4]) }) }
62358}
62359#[inline]
62360#[target_feature(enable = "neon")]
62361#[cfg(target_arch = "arm")]
62362#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62363#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62364#[rustc_legacy_const_generics(2)]
62365fn vshiftlins_v4i32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
62366 unsafe extern "unadjusted" {
62367 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v4i32")]
62368 fn _vshiftlins_v4i32(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t;
62369 }
62370 unsafe { _vshiftlins_v4i32(a, b, const { int32x4_t([N; 4]) }) }
62371}
62372#[inline]
62373#[target_feature(enable = "neon")]
62374#[cfg(target_arch = "arm")]
62375#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62376#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62377#[rustc_legacy_const_generics(2)]
62378fn vshiftlins_v8i16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
62379 unsafe extern "unadjusted" {
62380 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v8i16")]
62381 fn _vshiftlins_v8i16(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t;
62382 }
62383 unsafe { _vshiftlins_v8i16(a, b, const { int16x8_t([N as i16; 8]) }) }
62384}
62385#[inline]
62386#[target_feature(enable = "neon")]
62387#[cfg(target_arch = "arm")]
62388#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62389#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62390#[rustc_legacy_const_generics(2)]
62391fn vshiftlins_v8i8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
62392 unsafe extern "unadjusted" {
62393 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v8i8")]
62394 fn _vshiftlins_v8i8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t;
62395 }
62396 unsafe { _vshiftlins_v8i8(a, b, const { int8x8_t([N as i8; 8]) }) }
62397}
62398#[doc = "Shift Right and Insert (immediate)"]
62399#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v16i8)"]
62400#[inline]
62401#[target_feature(enable = "neon")]
62402#[cfg(target_arch = "arm")]
62403#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62404#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62405#[rustc_legacy_const_generics(2)]
62406fn vshiftrins_v16i8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
62407 unsafe extern "unadjusted" {
62408 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v16i8")]
62409 fn _vshiftrins_v16i8(a: int8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t;
62410 }
62411 unsafe { _vshiftrins_v16i8(a, b, const { int8x16_t([-N as i8; 16]) }) }
62412}
62413#[doc = "Shift Right and Insert (immediate)"]
62414#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v1i64)"]
62415#[inline]
62416#[target_feature(enable = "neon")]
62417#[cfg(target_arch = "arm")]
62418#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62419#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62420#[rustc_legacy_const_generics(2)]
62421fn vshiftrins_v1i64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
62422 unsafe extern "unadjusted" {
62423 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v1i64")]
62424 fn _vshiftrins_v1i64(a: int64x1_t, b: int64x1_t, c: int64x1_t) -> int64x1_t;
62425 }
62426 unsafe { _vshiftrins_v1i64(a, b, const { int64x1_t([-N as i64; 1]) }) }
62427}
62428#[doc = "Shift Right and Insert (immediate)"]
62429#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v2i32)"]
62430#[inline]
62431#[target_feature(enable = "neon")]
62432#[cfg(target_arch = "arm")]
62433#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62434#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62435#[rustc_legacy_const_generics(2)]
62436fn vshiftrins_v2i32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
62437 unsafe extern "unadjusted" {
62438 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v2i32")]
62439 fn _vshiftrins_v2i32(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t;
62440 }
62441 unsafe { _vshiftrins_v2i32(a, b, const { int32x2_t([-N; 2]) }) }
62442}
62443#[doc = "Shift Right and Insert (immediate)"]
62444#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v2i64)"]
62445#[inline]
62446#[target_feature(enable = "neon")]
62447#[cfg(target_arch = "arm")]
62448#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62449#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62450#[rustc_legacy_const_generics(2)]
62451fn vshiftrins_v2i64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
62452 unsafe extern "unadjusted" {
62453 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v2i64")]
62454 fn _vshiftrins_v2i64(a: int64x2_t, b: int64x2_t, c: int64x2_t) -> int64x2_t;
62455 }
62456 unsafe { _vshiftrins_v2i64(a, b, const { int64x2_t([-N as i64; 2]) }) }
62457}
62458#[doc = "Shift Right and Insert (immediate)"]
62459#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v4i16)"]
62460#[inline]
62461#[target_feature(enable = "neon")]
62462#[cfg(target_arch = "arm")]
62463#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62464#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62465#[rustc_legacy_const_generics(2)]
62466fn vshiftrins_v4i16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
62467 unsafe extern "unadjusted" {
62468 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v4i16")]
62469 fn _vshiftrins_v4i16(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t;
62470 }
62471 unsafe { _vshiftrins_v4i16(a, b, const { int16x4_t([-N as i16; 4]) }) }
62472}
62473#[doc = "Shift Right and Insert (immediate)"]
62474#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v4i32)"]
62475#[inline]
62476#[target_feature(enable = "neon")]
62477#[cfg(target_arch = "arm")]
62478#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62479#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62480#[rustc_legacy_const_generics(2)]
62481fn vshiftrins_v4i32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
62482 unsafe extern "unadjusted" {
62483 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v4i32")]
62484 fn _vshiftrins_v4i32(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t;
62485 }
62486 unsafe { _vshiftrins_v4i32(a, b, const { int32x4_t([-N; 4]) }) }
62487}
62488#[doc = "Shift Right and Insert (immediate)"]
62489#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v8i16)"]
62490#[inline]
62491#[target_feature(enable = "neon")]
62492#[cfg(target_arch = "arm")]
62493#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62494#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62495#[rustc_legacy_const_generics(2)]
62496fn vshiftrins_v8i16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
62497 unsafe extern "unadjusted" {
62498 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v8i16")]
62499 fn _vshiftrins_v8i16(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t;
62500 }
62501 unsafe { _vshiftrins_v8i16(a, b, const { int16x8_t([-N as i16; 8]) }) }
62502}
62503#[doc = "Shift Right and Insert (immediate)"]
62504#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v8i8)"]
62505#[inline]
62506#[target_feature(enable = "neon")]
62507#[cfg(target_arch = "arm")]
62508#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62509#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62510#[rustc_legacy_const_generics(2)]
62511fn vshiftrins_v8i8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
62512 unsafe extern "unadjusted" {
62513 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v8i8")]
62514 fn _vshiftrins_v8i8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t;
62515 }
62516 unsafe { _vshiftrins_v8i8(a, b, const { int8x8_t([-N as i8; 8]) }) }
62517}
62518#[doc = "Shift left"]
62519#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_s8)"]
62520#[inline]
62521#[target_feature(enable = "neon")]
62522#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62523#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
62524#[cfg_attr(
62525 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62526 assert_instr(shl, N = 2)
62527)]
62528#[rustc_legacy_const_generics(1)]
62529#[cfg_attr(
62530 not(target_arch = "arm"),
62531 stable(feature = "neon_intrinsics", since = "1.59.0")
62532)]
62533#[cfg_attr(
62534 target_arch = "arm",
62535 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62536)]
62537pub fn vshl_n_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
62538 static_assert_uimm_bits!(N, 3);
62539 unsafe { simd_shl(a, vdup_n_s8(N as _)) }
62540}
62541#[doc = "Shift left"]
62542#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_s8)"]
62543#[inline]
62544#[target_feature(enable = "neon")]
62545#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62546#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
62547#[cfg_attr(
62548 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62549 assert_instr(shl, N = 2)
62550)]
62551#[rustc_legacy_const_generics(1)]
62552#[cfg_attr(
62553 not(target_arch = "arm"),
62554 stable(feature = "neon_intrinsics", since = "1.59.0")
62555)]
62556#[cfg_attr(
62557 target_arch = "arm",
62558 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62559)]
62560pub fn vshlq_n_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
62561 static_assert_uimm_bits!(N, 3);
62562 unsafe { simd_shl(a, vdupq_n_s8(N as _)) }
62563}
62564#[doc = "Shift left"]
62565#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_s16)"]
62566#[inline]
62567#[target_feature(enable = "neon")]
62568#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62569#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
62570#[cfg_attr(
62571 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62572 assert_instr(shl, N = 2)
62573)]
62574#[rustc_legacy_const_generics(1)]
62575#[cfg_attr(
62576 not(target_arch = "arm"),
62577 stable(feature = "neon_intrinsics", since = "1.59.0")
62578)]
62579#[cfg_attr(
62580 target_arch = "arm",
62581 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62582)]
62583pub fn vshl_n_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
62584 static_assert_uimm_bits!(N, 4);
62585 unsafe { simd_shl(a, vdup_n_s16(N as _)) }
62586}
62587#[doc = "Shift left"]
62588#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_s16)"]
62589#[inline]
62590#[target_feature(enable = "neon")]
62591#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62592#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
62593#[cfg_attr(
62594 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62595 assert_instr(shl, N = 2)
62596)]
62597#[rustc_legacy_const_generics(1)]
62598#[cfg_attr(
62599 not(target_arch = "arm"),
62600 stable(feature = "neon_intrinsics", since = "1.59.0")
62601)]
62602#[cfg_attr(
62603 target_arch = "arm",
62604 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62605)]
62606pub fn vshlq_n_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
62607 static_assert_uimm_bits!(N, 4);
62608 unsafe { simd_shl(a, vdupq_n_s16(N as _)) }
62609}
62610#[doc = "Shift left"]
62611#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_s32)"]
62612#[inline]
62613#[target_feature(enable = "neon")]
62614#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62615#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
62616#[cfg_attr(
62617 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62618 assert_instr(shl, N = 2)
62619)]
62620#[rustc_legacy_const_generics(1)]
62621#[cfg_attr(
62622 not(target_arch = "arm"),
62623 stable(feature = "neon_intrinsics", since = "1.59.0")
62624)]
62625#[cfg_attr(
62626 target_arch = "arm",
62627 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62628)]
62629pub fn vshl_n_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
62630 static_assert_uimm_bits!(N, 5);
62631 unsafe { simd_shl(a, vdup_n_s32(N as _)) }
62632}
62633#[doc = "Shift left"]
62634#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_s32)"]
62635#[inline]
62636#[target_feature(enable = "neon")]
62637#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62638#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
62639#[cfg_attr(
62640 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62641 assert_instr(shl, N = 2)
62642)]
62643#[rustc_legacy_const_generics(1)]
62644#[cfg_attr(
62645 not(target_arch = "arm"),
62646 stable(feature = "neon_intrinsics", since = "1.59.0")
62647)]
62648#[cfg_attr(
62649 target_arch = "arm",
62650 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62651)]
62652pub fn vshlq_n_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
62653 static_assert_uimm_bits!(N, 5);
62654 unsafe { simd_shl(a, vdupq_n_s32(N as _)) }
62655}
62656#[doc = "Shift left"]
62657#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_s64)"]
62658#[inline]
62659#[target_feature(enable = "neon")]
62660#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62661#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
62662#[cfg_attr(
62663 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62664 assert_instr(shl, N = 2)
62665)]
62666#[rustc_legacy_const_generics(1)]
62667#[cfg_attr(
62668 not(target_arch = "arm"),
62669 stable(feature = "neon_intrinsics", since = "1.59.0")
62670)]
62671#[cfg_attr(
62672 target_arch = "arm",
62673 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62674)]
62675pub fn vshl_n_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
62676 static_assert_uimm_bits!(N, 6);
62677 unsafe { simd_shl(a, vdup_n_s64(N as _)) }
62678}
62679#[doc = "Shift left"]
62680#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_s64)"]
62681#[inline]
62682#[target_feature(enable = "neon")]
62683#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62684#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
62685#[cfg_attr(
62686 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62687 assert_instr(shl, N = 2)
62688)]
62689#[rustc_legacy_const_generics(1)]
62690#[cfg_attr(
62691 not(target_arch = "arm"),
62692 stable(feature = "neon_intrinsics", since = "1.59.0")
62693)]
62694#[cfg_attr(
62695 target_arch = "arm",
62696 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62697)]
62698pub fn vshlq_n_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
62699 static_assert_uimm_bits!(N, 6);
62700 unsafe { simd_shl(a, vdupq_n_s64(N as _)) }
62701}
62702#[doc = "Shift left"]
62703#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_u8)"]
62704#[inline]
62705#[target_feature(enable = "neon")]
62706#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62707#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
62708#[cfg_attr(
62709 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62710 assert_instr(shl, N = 2)
62711)]
62712#[rustc_legacy_const_generics(1)]
62713#[cfg_attr(
62714 not(target_arch = "arm"),
62715 stable(feature = "neon_intrinsics", since = "1.59.0")
62716)]
62717#[cfg_attr(
62718 target_arch = "arm",
62719 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62720)]
62721pub fn vshl_n_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
62722 static_assert_uimm_bits!(N, 3);
62723 unsafe { simd_shl(a, vdup_n_u8(N as _)) }
62724}
62725#[doc = "Shift left"]
62726#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_u8)"]
62727#[inline]
62728#[target_feature(enable = "neon")]
62729#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62730#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
62731#[cfg_attr(
62732 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62733 assert_instr(shl, N = 2)
62734)]
62735#[rustc_legacy_const_generics(1)]
62736#[cfg_attr(
62737 not(target_arch = "arm"),
62738 stable(feature = "neon_intrinsics", since = "1.59.0")
62739)]
62740#[cfg_attr(
62741 target_arch = "arm",
62742 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62743)]
62744pub fn vshlq_n_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
62745 static_assert_uimm_bits!(N, 3);
62746 unsafe { simd_shl(a, vdupq_n_u8(N as _)) }
62747}
62748#[doc = "Shift left"]
62749#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_u16)"]
62750#[inline]
62751#[target_feature(enable = "neon")]
62752#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62753#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
62754#[cfg_attr(
62755 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62756 assert_instr(shl, N = 2)
62757)]
62758#[rustc_legacy_const_generics(1)]
62759#[cfg_attr(
62760 not(target_arch = "arm"),
62761 stable(feature = "neon_intrinsics", since = "1.59.0")
62762)]
62763#[cfg_attr(
62764 target_arch = "arm",
62765 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62766)]
62767pub fn vshl_n_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
62768 static_assert_uimm_bits!(N, 4);
62769 unsafe { simd_shl(a, vdup_n_u16(N as _)) }
62770}
62771#[doc = "Shift left"]
62772#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_u16)"]
62773#[inline]
62774#[target_feature(enable = "neon")]
62775#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62776#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
62777#[cfg_attr(
62778 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62779 assert_instr(shl, N = 2)
62780)]
62781#[rustc_legacy_const_generics(1)]
62782#[cfg_attr(
62783 not(target_arch = "arm"),
62784 stable(feature = "neon_intrinsics", since = "1.59.0")
62785)]
62786#[cfg_attr(
62787 target_arch = "arm",
62788 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62789)]
62790pub fn vshlq_n_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
62791 static_assert_uimm_bits!(N, 4);
62792 unsafe { simd_shl(a, vdupq_n_u16(N as _)) }
62793}
62794#[doc = "Shift left"]
62795#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_u32)"]
62796#[inline]
62797#[target_feature(enable = "neon")]
62798#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62799#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
62800#[cfg_attr(
62801 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62802 assert_instr(shl, N = 2)
62803)]
62804#[rustc_legacy_const_generics(1)]
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 vshl_n_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
62814 static_assert_uimm_bits!(N, 5);
62815 unsafe { simd_shl(a, vdup_n_u32(N as _)) }
62816}
62817#[doc = "Shift left"]
62818#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_u32)"]
62819#[inline]
62820#[target_feature(enable = "neon")]
62821#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62822#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
62823#[cfg_attr(
62824 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62825 assert_instr(shl, N = 2)
62826)]
62827#[rustc_legacy_const_generics(1)]
62828#[cfg_attr(
62829 not(target_arch = "arm"),
62830 stable(feature = "neon_intrinsics", since = "1.59.0")
62831)]
62832#[cfg_attr(
62833 target_arch = "arm",
62834 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62835)]
62836pub fn vshlq_n_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
62837 static_assert_uimm_bits!(N, 5);
62838 unsafe { simd_shl(a, vdupq_n_u32(N as _)) }
62839}
62840#[doc = "Shift left"]
62841#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_u64)"]
62842#[inline]
62843#[target_feature(enable = "neon")]
62844#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62845#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
62846#[cfg_attr(
62847 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62848 assert_instr(shl, N = 2)
62849)]
62850#[rustc_legacy_const_generics(1)]
62851#[cfg_attr(
62852 not(target_arch = "arm"),
62853 stable(feature = "neon_intrinsics", since = "1.59.0")
62854)]
62855#[cfg_attr(
62856 target_arch = "arm",
62857 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62858)]
62859pub fn vshl_n_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
62860 static_assert_uimm_bits!(N, 6);
62861 unsafe { simd_shl(a, vdup_n_u64(N as _)) }
62862}
62863#[doc = "Shift left"]
62864#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_u64)"]
62865#[inline]
62866#[target_feature(enable = "neon")]
62867#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62868#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
62869#[cfg_attr(
62870 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62871 assert_instr(shl, N = 2)
62872)]
62873#[rustc_legacy_const_generics(1)]
62874#[cfg_attr(
62875 not(target_arch = "arm"),
62876 stable(feature = "neon_intrinsics", since = "1.59.0")
62877)]
62878#[cfg_attr(
62879 target_arch = "arm",
62880 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62881)]
62882pub fn vshlq_n_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
62883 static_assert_uimm_bits!(N, 6);
62884 unsafe { simd_shl(a, vdupq_n_u64(N as _)) }
62885}
62886#[doc = "Signed Shift left"]
62887#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_s8)"]
62888#[inline]
62889#[target_feature(enable = "neon")]
62890#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62891#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
62892#[cfg_attr(
62893 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62894 assert_instr(sshl)
62895)]
62896#[cfg_attr(
62897 not(target_arch = "arm"),
62898 stable(feature = "neon_intrinsics", since = "1.59.0")
62899)]
62900#[cfg_attr(
62901 target_arch = "arm",
62902 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62903)]
62904pub fn vshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
62905 unsafe extern "unadjusted" {
62906 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v8i8")]
62907 #[cfg_attr(
62908 any(target_arch = "aarch64", target_arch = "arm64ec"),
62909 link_name = "llvm.aarch64.neon.sshl.v8i8"
62910 )]
62911 fn _vshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
62912 }
62913 unsafe { _vshl_s8(a, b) }
62914}
62915#[doc = "Signed Shift left"]
62916#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_s8)"]
62917#[inline]
62918#[target_feature(enable = "neon")]
62919#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62920#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
62921#[cfg_attr(
62922 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62923 assert_instr(sshl)
62924)]
62925#[cfg_attr(
62926 not(target_arch = "arm"),
62927 stable(feature = "neon_intrinsics", since = "1.59.0")
62928)]
62929#[cfg_attr(
62930 target_arch = "arm",
62931 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62932)]
62933pub fn vshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
62934 unsafe extern "unadjusted" {
62935 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v16i8")]
62936 #[cfg_attr(
62937 any(target_arch = "aarch64", target_arch = "arm64ec"),
62938 link_name = "llvm.aarch64.neon.sshl.v16i8"
62939 )]
62940 fn _vshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
62941 }
62942 unsafe { _vshlq_s8(a, b) }
62943}
62944#[doc = "Signed Shift left"]
62945#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_s16)"]
62946#[inline]
62947#[target_feature(enable = "neon")]
62948#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62949#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
62950#[cfg_attr(
62951 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62952 assert_instr(sshl)
62953)]
62954#[cfg_attr(
62955 not(target_arch = "arm"),
62956 stable(feature = "neon_intrinsics", since = "1.59.0")
62957)]
62958#[cfg_attr(
62959 target_arch = "arm",
62960 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62961)]
62962pub fn vshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
62963 unsafe extern "unadjusted" {
62964 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v4i16")]
62965 #[cfg_attr(
62966 any(target_arch = "aarch64", target_arch = "arm64ec"),
62967 link_name = "llvm.aarch64.neon.sshl.v4i16"
62968 )]
62969 fn _vshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
62970 }
62971 unsafe { _vshl_s16(a, b) }
62972}
62973#[doc = "Signed Shift left"]
62974#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_s16)"]
62975#[inline]
62976#[target_feature(enable = "neon")]
62977#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62978#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
62979#[cfg_attr(
62980 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62981 assert_instr(sshl)
62982)]
62983#[cfg_attr(
62984 not(target_arch = "arm"),
62985 stable(feature = "neon_intrinsics", since = "1.59.0")
62986)]
62987#[cfg_attr(
62988 target_arch = "arm",
62989 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62990)]
62991pub fn vshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
62992 unsafe extern "unadjusted" {
62993 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v8i16")]
62994 #[cfg_attr(
62995 any(target_arch = "aarch64", target_arch = "arm64ec"),
62996 link_name = "llvm.aarch64.neon.sshl.v8i16"
62997 )]
62998 fn _vshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
62999 }
63000 unsafe { _vshlq_s16(a, b) }
63001}
63002#[doc = "Signed Shift left"]
63003#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_s32)"]
63004#[inline]
63005#[target_feature(enable = "neon")]
63006#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63007#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
63008#[cfg_attr(
63009 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63010 assert_instr(sshl)
63011)]
63012#[cfg_attr(
63013 not(target_arch = "arm"),
63014 stable(feature = "neon_intrinsics", since = "1.59.0")
63015)]
63016#[cfg_attr(
63017 target_arch = "arm",
63018 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63019)]
63020pub fn vshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
63021 unsafe extern "unadjusted" {
63022 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v2i32")]
63023 #[cfg_attr(
63024 any(target_arch = "aarch64", target_arch = "arm64ec"),
63025 link_name = "llvm.aarch64.neon.sshl.v2i32"
63026 )]
63027 fn _vshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
63028 }
63029 unsafe { _vshl_s32(a, b) }
63030}
63031#[doc = "Signed Shift left"]
63032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_s32)"]
63033#[inline]
63034#[target_feature(enable = "neon")]
63035#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63036#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
63037#[cfg_attr(
63038 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63039 assert_instr(sshl)
63040)]
63041#[cfg_attr(
63042 not(target_arch = "arm"),
63043 stable(feature = "neon_intrinsics", since = "1.59.0")
63044)]
63045#[cfg_attr(
63046 target_arch = "arm",
63047 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63048)]
63049pub fn vshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
63050 unsafe extern "unadjusted" {
63051 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v4i32")]
63052 #[cfg_attr(
63053 any(target_arch = "aarch64", target_arch = "arm64ec"),
63054 link_name = "llvm.aarch64.neon.sshl.v4i32"
63055 )]
63056 fn _vshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
63057 }
63058 unsafe { _vshlq_s32(a, b) }
63059}
63060#[doc = "Signed Shift left"]
63061#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_s64)"]
63062#[inline]
63063#[target_feature(enable = "neon")]
63064#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63065#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
63066#[cfg_attr(
63067 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63068 assert_instr(sshl)
63069)]
63070#[cfg_attr(
63071 not(target_arch = "arm"),
63072 stable(feature = "neon_intrinsics", since = "1.59.0")
63073)]
63074#[cfg_attr(
63075 target_arch = "arm",
63076 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63077)]
63078pub fn vshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
63079 unsafe extern "unadjusted" {
63080 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v1i64")]
63081 #[cfg_attr(
63082 any(target_arch = "aarch64", target_arch = "arm64ec"),
63083 link_name = "llvm.aarch64.neon.sshl.v1i64"
63084 )]
63085 fn _vshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t;
63086 }
63087 unsafe { _vshl_s64(a, b) }
63088}
63089#[doc = "Signed Shift left"]
63090#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_s64)"]
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(vshl))]
63095#[cfg_attr(
63096 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63097 assert_instr(sshl)
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 vshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
63108 unsafe extern "unadjusted" {
63109 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v2i64")]
63110 #[cfg_attr(
63111 any(target_arch = "aarch64", target_arch = "arm64ec"),
63112 link_name = "llvm.aarch64.neon.sshl.v2i64"
63113 )]
63114 fn _vshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t;
63115 }
63116 unsafe { _vshlq_s64(a, b) }
63117}
63118#[doc = "Unsigned Shift left"]
63119#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_u8)"]
63120#[inline]
63121#[target_feature(enable = "neon")]
63122#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63123#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
63124#[cfg_attr(
63125 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63126 assert_instr(ushl)
63127)]
63128#[cfg_attr(
63129 not(target_arch = "arm"),
63130 stable(feature = "neon_intrinsics", since = "1.59.0")
63131)]
63132#[cfg_attr(
63133 target_arch = "arm",
63134 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63135)]
63136pub fn vshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t {
63137 unsafe extern "unadjusted" {
63138 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v8i8")]
63139 #[cfg_attr(
63140 any(target_arch = "aarch64", target_arch = "arm64ec"),
63141 link_name = "llvm.aarch64.neon.ushl.v8i8"
63142 )]
63143 fn _vshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t;
63144 }
63145 unsafe { _vshl_u8(a, b) }
63146}
63147#[doc = "Unsigned Shift left"]
63148#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_u8)"]
63149#[inline]
63150#[target_feature(enable = "neon")]
63151#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63152#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
63153#[cfg_attr(
63154 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63155 assert_instr(ushl)
63156)]
63157#[cfg_attr(
63158 not(target_arch = "arm"),
63159 stable(feature = "neon_intrinsics", since = "1.59.0")
63160)]
63161#[cfg_attr(
63162 target_arch = "arm",
63163 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63164)]
63165pub fn vshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t {
63166 unsafe extern "unadjusted" {
63167 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v16i8")]
63168 #[cfg_attr(
63169 any(target_arch = "aarch64", target_arch = "arm64ec"),
63170 link_name = "llvm.aarch64.neon.ushl.v16i8"
63171 )]
63172 fn _vshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t;
63173 }
63174 unsafe { _vshlq_u8(a, b) }
63175}
63176#[doc = "Unsigned Shift left"]
63177#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_u16)"]
63178#[inline]
63179#[target_feature(enable = "neon")]
63180#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63181#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
63182#[cfg_attr(
63183 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63184 assert_instr(ushl)
63185)]
63186#[cfg_attr(
63187 not(target_arch = "arm"),
63188 stable(feature = "neon_intrinsics", since = "1.59.0")
63189)]
63190#[cfg_attr(
63191 target_arch = "arm",
63192 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63193)]
63194pub fn vshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t {
63195 unsafe extern "unadjusted" {
63196 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v4i16")]
63197 #[cfg_attr(
63198 any(target_arch = "aarch64", target_arch = "arm64ec"),
63199 link_name = "llvm.aarch64.neon.ushl.v4i16"
63200 )]
63201 fn _vshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t;
63202 }
63203 unsafe { _vshl_u16(a, b) }
63204}
63205#[doc = "Unsigned Shift left"]
63206#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_u16)"]
63207#[inline]
63208#[target_feature(enable = "neon")]
63209#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63210#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
63211#[cfg_attr(
63212 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63213 assert_instr(ushl)
63214)]
63215#[cfg_attr(
63216 not(target_arch = "arm"),
63217 stable(feature = "neon_intrinsics", since = "1.59.0")
63218)]
63219#[cfg_attr(
63220 target_arch = "arm",
63221 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63222)]
63223pub fn vshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t {
63224 unsafe extern "unadjusted" {
63225 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v8i16")]
63226 #[cfg_attr(
63227 any(target_arch = "aarch64", target_arch = "arm64ec"),
63228 link_name = "llvm.aarch64.neon.ushl.v8i16"
63229 )]
63230 fn _vshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t;
63231 }
63232 unsafe { _vshlq_u16(a, b) }
63233}
63234#[doc = "Unsigned Shift left"]
63235#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_u32)"]
63236#[inline]
63237#[target_feature(enable = "neon")]
63238#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63239#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
63240#[cfg_attr(
63241 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63242 assert_instr(ushl)
63243)]
63244#[cfg_attr(
63245 not(target_arch = "arm"),
63246 stable(feature = "neon_intrinsics", since = "1.59.0")
63247)]
63248#[cfg_attr(
63249 target_arch = "arm",
63250 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63251)]
63252pub fn vshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t {
63253 unsafe extern "unadjusted" {
63254 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v2i32")]
63255 #[cfg_attr(
63256 any(target_arch = "aarch64", target_arch = "arm64ec"),
63257 link_name = "llvm.aarch64.neon.ushl.v2i32"
63258 )]
63259 fn _vshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t;
63260 }
63261 unsafe { _vshl_u32(a, b) }
63262}
63263#[doc = "Unsigned Shift left"]
63264#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_u32)"]
63265#[inline]
63266#[target_feature(enable = "neon")]
63267#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63268#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
63269#[cfg_attr(
63270 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63271 assert_instr(ushl)
63272)]
63273#[cfg_attr(
63274 not(target_arch = "arm"),
63275 stable(feature = "neon_intrinsics", since = "1.59.0")
63276)]
63277#[cfg_attr(
63278 target_arch = "arm",
63279 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63280)]
63281pub fn vshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t {
63282 unsafe extern "unadjusted" {
63283 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v4i32")]
63284 #[cfg_attr(
63285 any(target_arch = "aarch64", target_arch = "arm64ec"),
63286 link_name = "llvm.aarch64.neon.ushl.v4i32"
63287 )]
63288 fn _vshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t;
63289 }
63290 unsafe { _vshlq_u32(a, b) }
63291}
63292#[doc = "Unsigned Shift left"]
63293#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_u64)"]
63294#[inline]
63295#[target_feature(enable = "neon")]
63296#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63297#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
63298#[cfg_attr(
63299 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63300 assert_instr(ushl)
63301)]
63302#[cfg_attr(
63303 not(target_arch = "arm"),
63304 stable(feature = "neon_intrinsics", since = "1.59.0")
63305)]
63306#[cfg_attr(
63307 target_arch = "arm",
63308 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63309)]
63310pub fn vshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t {
63311 unsafe extern "unadjusted" {
63312 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v1i64")]
63313 #[cfg_attr(
63314 any(target_arch = "aarch64", target_arch = "arm64ec"),
63315 link_name = "llvm.aarch64.neon.ushl.v1i64"
63316 )]
63317 fn _vshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t;
63318 }
63319 unsafe { _vshl_u64(a, b) }
63320}
63321#[doc = "Unsigned Shift left"]
63322#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_u64)"]
63323#[inline]
63324#[target_feature(enable = "neon")]
63325#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63326#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
63327#[cfg_attr(
63328 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63329 assert_instr(ushl)
63330)]
63331#[cfg_attr(
63332 not(target_arch = "arm"),
63333 stable(feature = "neon_intrinsics", since = "1.59.0")
63334)]
63335#[cfg_attr(
63336 target_arch = "arm",
63337 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63338)]
63339pub fn vshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t {
63340 unsafe extern "unadjusted" {
63341 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v2i64")]
63342 #[cfg_attr(
63343 any(target_arch = "aarch64", target_arch = "arm64ec"),
63344 link_name = "llvm.aarch64.neon.ushl.v2i64"
63345 )]
63346 fn _vshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t;
63347 }
63348 unsafe { _vshlq_u64(a, b) }
63349}
63350#[doc = "Signed shift left long"]
63351#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_s16)"]
63352#[inline]
63353#[target_feature(enable = "neon")]
63354#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63355#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.s16", N = 2))]
63356#[cfg_attr(
63357 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63358 assert_instr(sshll, N = 2)
63359)]
63360#[rustc_legacy_const_generics(1)]
63361#[cfg_attr(
63362 not(target_arch = "arm"),
63363 stable(feature = "neon_intrinsics", since = "1.59.0")
63364)]
63365#[cfg_attr(
63366 target_arch = "arm",
63367 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63368)]
63369pub fn vshll_n_s16<const N: i32>(a: int16x4_t) -> int32x4_t {
63370 static_assert!(N >= 0 && N <= 16);
63371 unsafe { simd_shl(simd_cast(a), vdupq_n_s32(N as _)) }
63372}
63373#[doc = "Signed shift left long"]
63374#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_s32)"]
63375#[inline]
63376#[target_feature(enable = "neon")]
63377#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63378#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.s32", N = 2))]
63379#[cfg_attr(
63380 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63381 assert_instr(sshll, N = 2)
63382)]
63383#[rustc_legacy_const_generics(1)]
63384#[cfg_attr(
63385 not(target_arch = "arm"),
63386 stable(feature = "neon_intrinsics", since = "1.59.0")
63387)]
63388#[cfg_attr(
63389 target_arch = "arm",
63390 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63391)]
63392pub fn vshll_n_s32<const N: i32>(a: int32x2_t) -> int64x2_t {
63393 static_assert!(N >= 0 && N <= 32);
63394 unsafe { simd_shl(simd_cast(a), vdupq_n_s64(N as _)) }
63395}
63396#[doc = "Signed shift left long"]
63397#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_s8)"]
63398#[inline]
63399#[target_feature(enable = "neon")]
63400#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63401#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.s8", N = 2))]
63402#[cfg_attr(
63403 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63404 assert_instr(sshll, N = 2)
63405)]
63406#[rustc_legacy_const_generics(1)]
63407#[cfg_attr(
63408 not(target_arch = "arm"),
63409 stable(feature = "neon_intrinsics", since = "1.59.0")
63410)]
63411#[cfg_attr(
63412 target_arch = "arm",
63413 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63414)]
63415pub fn vshll_n_s8<const N: i32>(a: int8x8_t) -> int16x8_t {
63416 static_assert!(N >= 0 && N <= 8);
63417 unsafe { simd_shl(simd_cast(a), vdupq_n_s16(N as _)) }
63418}
63419#[doc = "Signed shift left long"]
63420#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_u16)"]
63421#[inline]
63422#[target_feature(enable = "neon")]
63423#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63424#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.u16", N = 2))]
63425#[cfg_attr(
63426 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63427 assert_instr(ushll, N = 2)
63428)]
63429#[rustc_legacy_const_generics(1)]
63430#[cfg_attr(
63431 not(target_arch = "arm"),
63432 stable(feature = "neon_intrinsics", since = "1.59.0")
63433)]
63434#[cfg_attr(
63435 target_arch = "arm",
63436 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63437)]
63438pub fn vshll_n_u16<const N: i32>(a: uint16x4_t) -> uint32x4_t {
63439 static_assert!(N >= 0 && N <= 16);
63440 unsafe { simd_shl(simd_cast(a), vdupq_n_u32(N as _)) }
63441}
63442#[doc = "Signed shift left long"]
63443#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_u32)"]
63444#[inline]
63445#[target_feature(enable = "neon")]
63446#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63447#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.u32", N = 2))]
63448#[cfg_attr(
63449 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63450 assert_instr(ushll, N = 2)
63451)]
63452#[rustc_legacy_const_generics(1)]
63453#[cfg_attr(
63454 not(target_arch = "arm"),
63455 stable(feature = "neon_intrinsics", since = "1.59.0")
63456)]
63457#[cfg_attr(
63458 target_arch = "arm",
63459 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63460)]
63461pub fn vshll_n_u32<const N: i32>(a: uint32x2_t) -> uint64x2_t {
63462 static_assert!(N >= 0 && N <= 32);
63463 unsafe { simd_shl(simd_cast(a), vdupq_n_u64(N as _)) }
63464}
63465#[doc = "Signed shift left long"]
63466#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_u8)"]
63467#[inline]
63468#[target_feature(enable = "neon")]
63469#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63470#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.u8", N = 2))]
63471#[cfg_attr(
63472 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63473 assert_instr(ushll, N = 2)
63474)]
63475#[rustc_legacy_const_generics(1)]
63476#[cfg_attr(
63477 not(target_arch = "arm"),
63478 stable(feature = "neon_intrinsics", since = "1.59.0")
63479)]
63480#[cfg_attr(
63481 target_arch = "arm",
63482 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63483)]
63484pub fn vshll_n_u8<const N: i32>(a: uint8x8_t) -> uint16x8_t {
63485 static_assert!(N >= 0 && N <= 8);
63486 unsafe { simd_shl(simd_cast(a), vdupq_n_u16(N as _)) }
63487}
63488#[doc = "Shift right"]
63489#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_s8)"]
63490#[inline]
63491#[target_feature(enable = "neon")]
63492#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63493#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s8", N = 2))]
63494#[cfg_attr(
63495 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63496 assert_instr(sshr, N = 2)
63497)]
63498#[rustc_legacy_const_generics(1)]
63499#[cfg_attr(
63500 not(target_arch = "arm"),
63501 stable(feature = "neon_intrinsics", since = "1.59.0")
63502)]
63503#[cfg_attr(
63504 target_arch = "arm",
63505 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63506)]
63507pub fn vshr_n_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
63508 static_assert!(N >= 1 && N <= 8);
63509 let n: i32 = if N == 8 { 7 } else { N };
63510 unsafe { simd_shr(a, vdup_n_s8(n as _)) }
63511}
63512#[doc = "Shift right"]
63513#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_s8)"]
63514#[inline]
63515#[target_feature(enable = "neon")]
63516#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63517#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s8", N = 2))]
63518#[cfg_attr(
63519 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63520 assert_instr(sshr, N = 2)
63521)]
63522#[rustc_legacy_const_generics(1)]
63523#[cfg_attr(
63524 not(target_arch = "arm"),
63525 stable(feature = "neon_intrinsics", since = "1.59.0")
63526)]
63527#[cfg_attr(
63528 target_arch = "arm",
63529 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63530)]
63531pub fn vshrq_n_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
63532 static_assert!(N >= 1 && N <= 8);
63533 let n: i32 = if N == 8 { 7 } else { N };
63534 unsafe { simd_shr(a, vdupq_n_s8(n as _)) }
63535}
63536#[doc = "Shift right"]
63537#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_s16)"]
63538#[inline]
63539#[target_feature(enable = "neon")]
63540#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63541#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s16", N = 2))]
63542#[cfg_attr(
63543 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63544 assert_instr(sshr, N = 2)
63545)]
63546#[rustc_legacy_const_generics(1)]
63547#[cfg_attr(
63548 not(target_arch = "arm"),
63549 stable(feature = "neon_intrinsics", since = "1.59.0")
63550)]
63551#[cfg_attr(
63552 target_arch = "arm",
63553 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63554)]
63555pub fn vshr_n_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
63556 static_assert!(N >= 1 && N <= 16);
63557 let n: i32 = if N == 16 { 15 } else { N };
63558 unsafe { simd_shr(a, vdup_n_s16(n as _)) }
63559}
63560#[doc = "Shift right"]
63561#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_s16)"]
63562#[inline]
63563#[target_feature(enable = "neon")]
63564#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63565#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s16", N = 2))]
63566#[cfg_attr(
63567 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63568 assert_instr(sshr, N = 2)
63569)]
63570#[rustc_legacy_const_generics(1)]
63571#[cfg_attr(
63572 not(target_arch = "arm"),
63573 stable(feature = "neon_intrinsics", since = "1.59.0")
63574)]
63575#[cfg_attr(
63576 target_arch = "arm",
63577 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63578)]
63579pub fn vshrq_n_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
63580 static_assert!(N >= 1 && N <= 16);
63581 let n: i32 = if N == 16 { 15 } else { N };
63582 unsafe { simd_shr(a, vdupq_n_s16(n as _)) }
63583}
63584#[doc = "Shift right"]
63585#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_s32)"]
63586#[inline]
63587#[target_feature(enable = "neon")]
63588#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63589#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s32", N = 2))]
63590#[cfg_attr(
63591 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63592 assert_instr(sshr, N = 2)
63593)]
63594#[rustc_legacy_const_generics(1)]
63595#[cfg_attr(
63596 not(target_arch = "arm"),
63597 stable(feature = "neon_intrinsics", since = "1.59.0")
63598)]
63599#[cfg_attr(
63600 target_arch = "arm",
63601 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63602)]
63603pub fn vshr_n_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
63604 static_assert!(N >= 1 && N <= 32);
63605 let n: i32 = if N == 32 { 31 } else { N };
63606 unsafe { simd_shr(a, vdup_n_s32(n as _)) }
63607}
63608#[doc = "Shift right"]
63609#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_s32)"]
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("vshr.s32", N = 2))]
63614#[cfg_attr(
63615 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63616 assert_instr(sshr, N = 2)
63617)]
63618#[rustc_legacy_const_generics(1)]
63619#[cfg_attr(
63620 not(target_arch = "arm"),
63621 stable(feature = "neon_intrinsics", since = "1.59.0")
63622)]
63623#[cfg_attr(
63624 target_arch = "arm",
63625 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63626)]
63627pub fn vshrq_n_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
63628 static_assert!(N >= 1 && N <= 32);
63629 let n: i32 = if N == 32 { 31 } else { N };
63630 unsafe { simd_shr(a, vdupq_n_s32(n as _)) }
63631}
63632#[doc = "Shift right"]
63633#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_s64)"]
63634#[inline]
63635#[target_feature(enable = "neon")]
63636#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63637#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s64", N = 2))]
63638#[cfg_attr(
63639 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63640 assert_instr(sshr, N = 2)
63641)]
63642#[rustc_legacy_const_generics(1)]
63643#[cfg_attr(
63644 not(target_arch = "arm"),
63645 stable(feature = "neon_intrinsics", since = "1.59.0")
63646)]
63647#[cfg_attr(
63648 target_arch = "arm",
63649 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63650)]
63651pub fn vshr_n_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
63652 static_assert!(N >= 1 && N <= 64);
63653 let n: i32 = if N == 64 { 63 } else { N };
63654 unsafe { simd_shr(a, vdup_n_s64(n as _)) }
63655}
63656#[doc = "Shift right"]
63657#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_s64)"]
63658#[inline]
63659#[target_feature(enable = "neon")]
63660#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63661#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s64", N = 2))]
63662#[cfg_attr(
63663 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63664 assert_instr(sshr, N = 2)
63665)]
63666#[rustc_legacy_const_generics(1)]
63667#[cfg_attr(
63668 not(target_arch = "arm"),
63669 stable(feature = "neon_intrinsics", since = "1.59.0")
63670)]
63671#[cfg_attr(
63672 target_arch = "arm",
63673 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63674)]
63675pub fn vshrq_n_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
63676 static_assert!(N >= 1 && N <= 64);
63677 let n: i32 = if N == 64 { 63 } else { N };
63678 unsafe { simd_shr(a, vdupq_n_s64(n as _)) }
63679}
63680#[doc = "Shift right"]
63681#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_u8)"]
63682#[inline]
63683#[target_feature(enable = "neon")]
63684#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63685#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u8", N = 2))]
63686#[cfg_attr(
63687 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63688 assert_instr(ushr, N = 2)
63689)]
63690#[rustc_legacy_const_generics(1)]
63691#[cfg_attr(
63692 not(target_arch = "arm"),
63693 stable(feature = "neon_intrinsics", since = "1.59.0")
63694)]
63695#[cfg_attr(
63696 target_arch = "arm",
63697 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63698)]
63699pub fn vshr_n_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
63700 static_assert!(N >= 1 && N <= 8);
63701 let n: i32 = if N == 8 {
63702 return vdup_n_u8(0);
63703 } else {
63704 N
63705 };
63706 unsafe { simd_shr(a, vdup_n_u8(n as _)) }
63707}
63708#[doc = "Shift right"]
63709#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_u8)"]
63710#[inline]
63711#[target_feature(enable = "neon")]
63712#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63713#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u8", N = 2))]
63714#[cfg_attr(
63715 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63716 assert_instr(ushr, N = 2)
63717)]
63718#[rustc_legacy_const_generics(1)]
63719#[cfg_attr(
63720 not(target_arch = "arm"),
63721 stable(feature = "neon_intrinsics", since = "1.59.0")
63722)]
63723#[cfg_attr(
63724 target_arch = "arm",
63725 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63726)]
63727pub fn vshrq_n_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
63728 static_assert!(N >= 1 && N <= 8);
63729 let n: i32 = if N == 8 {
63730 return vdupq_n_u8(0);
63731 } else {
63732 N
63733 };
63734 unsafe { simd_shr(a, vdupq_n_u8(n as _)) }
63735}
63736#[doc = "Shift right"]
63737#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_u16)"]
63738#[inline]
63739#[target_feature(enable = "neon")]
63740#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63741#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u16", N = 2))]
63742#[cfg_attr(
63743 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63744 assert_instr(ushr, N = 2)
63745)]
63746#[rustc_legacy_const_generics(1)]
63747#[cfg_attr(
63748 not(target_arch = "arm"),
63749 stable(feature = "neon_intrinsics", since = "1.59.0")
63750)]
63751#[cfg_attr(
63752 target_arch = "arm",
63753 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63754)]
63755pub fn vshr_n_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
63756 static_assert!(N >= 1 && N <= 16);
63757 let n: i32 = if N == 16 {
63758 return vdup_n_u16(0);
63759 } else {
63760 N
63761 };
63762 unsafe { simd_shr(a, vdup_n_u16(n as _)) }
63763}
63764#[doc = "Shift right"]
63765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_u16)"]
63766#[inline]
63767#[target_feature(enable = "neon")]
63768#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63769#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u16", N = 2))]
63770#[cfg_attr(
63771 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63772 assert_instr(ushr, N = 2)
63773)]
63774#[rustc_legacy_const_generics(1)]
63775#[cfg_attr(
63776 not(target_arch = "arm"),
63777 stable(feature = "neon_intrinsics", since = "1.59.0")
63778)]
63779#[cfg_attr(
63780 target_arch = "arm",
63781 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63782)]
63783pub fn vshrq_n_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
63784 static_assert!(N >= 1 && N <= 16);
63785 let n: i32 = if N == 16 {
63786 return vdupq_n_u16(0);
63787 } else {
63788 N
63789 };
63790 unsafe { simd_shr(a, vdupq_n_u16(n as _)) }
63791}
63792#[doc = "Shift right"]
63793#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_u32)"]
63794#[inline]
63795#[target_feature(enable = "neon")]
63796#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63797#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u32", N = 2))]
63798#[cfg_attr(
63799 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63800 assert_instr(ushr, N = 2)
63801)]
63802#[rustc_legacy_const_generics(1)]
63803#[cfg_attr(
63804 not(target_arch = "arm"),
63805 stable(feature = "neon_intrinsics", since = "1.59.0")
63806)]
63807#[cfg_attr(
63808 target_arch = "arm",
63809 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63810)]
63811pub fn vshr_n_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
63812 static_assert!(N >= 1 && N <= 32);
63813 let n: i32 = if N == 32 {
63814 return vdup_n_u32(0);
63815 } else {
63816 N
63817 };
63818 unsafe { simd_shr(a, vdup_n_u32(n as _)) }
63819}
63820#[doc = "Shift right"]
63821#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_u32)"]
63822#[inline]
63823#[target_feature(enable = "neon")]
63824#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63825#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u32", N = 2))]
63826#[cfg_attr(
63827 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63828 assert_instr(ushr, N = 2)
63829)]
63830#[rustc_legacy_const_generics(1)]
63831#[cfg_attr(
63832 not(target_arch = "arm"),
63833 stable(feature = "neon_intrinsics", since = "1.59.0")
63834)]
63835#[cfg_attr(
63836 target_arch = "arm",
63837 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63838)]
63839pub fn vshrq_n_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
63840 static_assert!(N >= 1 && N <= 32);
63841 let n: i32 = if N == 32 {
63842 return vdupq_n_u32(0);
63843 } else {
63844 N
63845 };
63846 unsafe { simd_shr(a, vdupq_n_u32(n as _)) }
63847}
63848#[doc = "Shift right"]
63849#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_u64)"]
63850#[inline]
63851#[target_feature(enable = "neon")]
63852#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63853#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u64", N = 2))]
63854#[cfg_attr(
63855 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63856 assert_instr(ushr, N = 2)
63857)]
63858#[rustc_legacy_const_generics(1)]
63859#[cfg_attr(
63860 not(target_arch = "arm"),
63861 stable(feature = "neon_intrinsics", since = "1.59.0")
63862)]
63863#[cfg_attr(
63864 target_arch = "arm",
63865 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63866)]
63867pub fn vshr_n_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
63868 static_assert!(N >= 1 && N <= 64);
63869 let n: i32 = if N == 64 {
63870 return vdup_n_u64(0);
63871 } else {
63872 N
63873 };
63874 unsafe { simd_shr(a, vdup_n_u64(n as _)) }
63875}
63876#[doc = "Shift right"]
63877#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_u64)"]
63878#[inline]
63879#[target_feature(enable = "neon")]
63880#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63881#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u64", N = 2))]
63882#[cfg_attr(
63883 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63884 assert_instr(ushr, N = 2)
63885)]
63886#[rustc_legacy_const_generics(1)]
63887#[cfg_attr(
63888 not(target_arch = "arm"),
63889 stable(feature = "neon_intrinsics", since = "1.59.0")
63890)]
63891#[cfg_attr(
63892 target_arch = "arm",
63893 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63894)]
63895pub fn vshrq_n_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
63896 static_assert!(N >= 1 && N <= 64);
63897 let n: i32 = if N == 64 {
63898 return vdupq_n_u64(0);
63899 } else {
63900 N
63901 };
63902 unsafe { simd_shr(a, vdupq_n_u64(n as _)) }
63903}
63904#[doc = "Shift right narrow"]
63905#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_s16)"]
63906#[inline]
63907#[target_feature(enable = "neon")]
63908#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63909#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i16", N = 2))]
63910#[cfg_attr(
63911 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63912 assert_instr(shrn, N = 2)
63913)]
63914#[rustc_legacy_const_generics(1)]
63915#[cfg_attr(
63916 not(target_arch = "arm"),
63917 stable(feature = "neon_intrinsics", since = "1.59.0")
63918)]
63919#[cfg_attr(
63920 target_arch = "arm",
63921 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63922)]
63923pub fn vshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
63924 static_assert!(N >= 1 && N <= 8);
63925 unsafe { simd_cast(simd_shr(a, vdupq_n_s16(N as _))) }
63926}
63927#[doc = "Shift right narrow"]
63928#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_s32)"]
63929#[inline]
63930#[target_feature(enable = "neon")]
63931#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63932#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i32", N = 2))]
63933#[cfg_attr(
63934 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63935 assert_instr(shrn, N = 2)
63936)]
63937#[rustc_legacy_const_generics(1)]
63938#[cfg_attr(
63939 not(target_arch = "arm"),
63940 stable(feature = "neon_intrinsics", since = "1.59.0")
63941)]
63942#[cfg_attr(
63943 target_arch = "arm",
63944 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63945)]
63946pub fn vshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
63947 static_assert!(N >= 1 && N <= 16);
63948 unsafe { simd_cast(simd_shr(a, vdupq_n_s32(N as _))) }
63949}
63950#[doc = "Shift right narrow"]
63951#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_s64)"]
63952#[inline]
63953#[target_feature(enable = "neon")]
63954#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63955#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i64", N = 2))]
63956#[cfg_attr(
63957 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63958 assert_instr(shrn, N = 2)
63959)]
63960#[rustc_legacy_const_generics(1)]
63961#[cfg_attr(
63962 not(target_arch = "arm"),
63963 stable(feature = "neon_intrinsics", since = "1.59.0")
63964)]
63965#[cfg_attr(
63966 target_arch = "arm",
63967 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63968)]
63969pub fn vshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
63970 static_assert!(N >= 1 && N <= 32);
63971 unsafe { simd_cast(simd_shr(a, vdupq_n_s64(N as _))) }
63972}
63973#[doc = "Shift right narrow"]
63974#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_u16)"]
63975#[inline]
63976#[target_feature(enable = "neon")]
63977#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63978#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i16", N = 2))]
63979#[cfg_attr(
63980 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63981 assert_instr(shrn, N = 2)
63982)]
63983#[rustc_legacy_const_generics(1)]
63984#[cfg_attr(
63985 not(target_arch = "arm"),
63986 stable(feature = "neon_intrinsics", since = "1.59.0")
63987)]
63988#[cfg_attr(
63989 target_arch = "arm",
63990 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63991)]
63992pub fn vshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
63993 static_assert!(N >= 1 && N <= 8);
63994 unsafe { simd_cast(simd_shr(a, vdupq_n_u16(N as _))) }
63995}
63996#[doc = "Shift right narrow"]
63997#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_u32)"]
63998#[inline]
63999#[target_feature(enable = "neon")]
64000#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64001#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i32", N = 2))]
64002#[cfg_attr(
64003 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64004 assert_instr(shrn, N = 2)
64005)]
64006#[rustc_legacy_const_generics(1)]
64007#[cfg_attr(
64008 not(target_arch = "arm"),
64009 stable(feature = "neon_intrinsics", since = "1.59.0")
64010)]
64011#[cfg_attr(
64012 target_arch = "arm",
64013 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64014)]
64015pub fn vshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
64016 static_assert!(N >= 1 && N <= 16);
64017 unsafe { simd_cast(simd_shr(a, vdupq_n_u32(N as _))) }
64018}
64019#[doc = "Shift right narrow"]
64020#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_u64)"]
64021#[inline]
64022#[target_feature(enable = "neon")]
64023#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64024#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i64", N = 2))]
64025#[cfg_attr(
64026 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64027 assert_instr(shrn, N = 2)
64028)]
64029#[rustc_legacy_const_generics(1)]
64030#[cfg_attr(
64031 not(target_arch = "arm"),
64032 stable(feature = "neon_intrinsics", since = "1.59.0")
64033)]
64034#[cfg_attr(
64035 target_arch = "arm",
64036 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64037)]
64038pub fn vshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
64039 static_assert!(N >= 1 && N <= 32);
64040 unsafe { simd_cast(simd_shr(a, vdupq_n_u64(N as _))) }
64041}
64042#[doc = "Shift Left and Insert (immediate)"]
64043#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_s8)"]
64044#[inline]
64045#[cfg(target_arch = "arm")]
64046#[target_feature(enable = "neon,v7")]
64047#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64048#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
64049#[rustc_legacy_const_generics(2)]
64050pub fn vsli_n_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
64051 static_assert_uimm_bits!(N, 3);
64052 vshiftlins_v8i8::<N>(a, b)
64053}
64054#[doc = "Shift Left and Insert (immediate)"]
64055#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_s8)"]
64056#[inline]
64057#[cfg(target_arch = "arm")]
64058#[target_feature(enable = "neon,v7")]
64059#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64060#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
64061#[rustc_legacy_const_generics(2)]
64062pub fn vsliq_n_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
64063 static_assert_uimm_bits!(N, 3);
64064 vshiftlins_v16i8::<N>(a, b)
64065}
64066#[doc = "Shift Left and Insert (immediate)"]
64067#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_s16)"]
64068#[inline]
64069#[cfg(target_arch = "arm")]
64070#[target_feature(enable = "neon,v7")]
64071#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64072#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
64073#[rustc_legacy_const_generics(2)]
64074pub fn vsli_n_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
64075 static_assert_uimm_bits!(N, 4);
64076 vshiftlins_v4i16::<N>(a, b)
64077}
64078#[doc = "Shift Left and Insert (immediate)"]
64079#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_s16)"]
64080#[inline]
64081#[cfg(target_arch = "arm")]
64082#[target_feature(enable = "neon,v7")]
64083#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64084#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
64085#[rustc_legacy_const_generics(2)]
64086pub fn vsliq_n_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
64087 static_assert_uimm_bits!(N, 4);
64088 vshiftlins_v8i16::<N>(a, b)
64089}
64090#[doc = "Shift Left and Insert (immediate)"]
64091#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_s32)"]
64092#[inline]
64093#[cfg(target_arch = "arm")]
64094#[target_feature(enable = "neon,v7")]
64095#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64096#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.32", N = 1))]
64097#[rustc_legacy_const_generics(2)]
64098pub fn vsli_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
64099 static_assert!(N >= 0 && N <= 31);
64100 vshiftlins_v2i32::<N>(a, b)
64101}
64102#[doc = "Shift Left and Insert (immediate)"]
64103#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_s32)"]
64104#[inline]
64105#[cfg(target_arch = "arm")]
64106#[target_feature(enable = "neon,v7")]
64107#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64108#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.32", N = 1))]
64109#[rustc_legacy_const_generics(2)]
64110pub fn vsliq_n_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
64111 static_assert!(N >= 0 && N <= 31);
64112 vshiftlins_v4i32::<N>(a, b)
64113}
64114#[doc = "Shift Left and Insert (immediate)"]
64115#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_s64)"]
64116#[inline]
64117#[cfg(target_arch = "arm")]
64118#[target_feature(enable = "neon,v7")]
64119#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64120#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.64", N = 1))]
64121#[rustc_legacy_const_generics(2)]
64122pub fn vsli_n_s64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
64123 static_assert!(N >= 0 && N <= 63);
64124 vshiftlins_v1i64::<N>(a, b)
64125}
64126#[doc = "Shift Left and Insert (immediate)"]
64127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_s64)"]
64128#[inline]
64129#[cfg(target_arch = "arm")]
64130#[target_feature(enable = "neon,v7")]
64131#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64132#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.64", N = 1))]
64133#[rustc_legacy_const_generics(2)]
64134pub fn vsliq_n_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
64135 static_assert!(N >= 0 && N <= 63);
64136 vshiftlins_v2i64::<N>(a, b)
64137}
64138#[doc = "Shift Left and Insert (immediate)"]
64139#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_u8)"]
64140#[inline]
64141#[cfg(target_arch = "arm")]
64142#[target_feature(enable = "neon,v7")]
64143#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64144#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
64145#[rustc_legacy_const_generics(2)]
64146pub fn vsli_n_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
64147 static_assert_uimm_bits!(N, 3);
64148 unsafe { transmute(vshiftlins_v8i8::<N>(transmute(a), transmute(b))) }
64149}
64150#[doc = "Shift Left and Insert (immediate)"]
64151#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_u8)"]
64152#[inline]
64153#[cfg(target_arch = "arm")]
64154#[target_feature(enable = "neon,v7")]
64155#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64156#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
64157#[rustc_legacy_const_generics(2)]
64158pub fn vsliq_n_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
64159 static_assert_uimm_bits!(N, 3);
64160 unsafe { transmute(vshiftlins_v16i8::<N>(transmute(a), transmute(b))) }
64161}
64162#[doc = "Shift Left and Insert (immediate)"]
64163#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_u16)"]
64164#[inline]
64165#[cfg(target_arch = "arm")]
64166#[target_feature(enable = "neon,v7")]
64167#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64168#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
64169#[rustc_legacy_const_generics(2)]
64170pub fn vsli_n_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
64171 static_assert_uimm_bits!(N, 4);
64172 unsafe { transmute(vshiftlins_v4i16::<N>(transmute(a), transmute(b))) }
64173}
64174#[doc = "Shift Left and Insert (immediate)"]
64175#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_u16)"]
64176#[inline]
64177#[cfg(target_arch = "arm")]
64178#[target_feature(enable = "neon,v7")]
64179#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64180#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
64181#[rustc_legacy_const_generics(2)]
64182pub fn vsliq_n_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
64183 static_assert_uimm_bits!(N, 4);
64184 unsafe { transmute(vshiftlins_v8i16::<N>(transmute(a), transmute(b))) }
64185}
64186#[doc = "Shift Left and Insert (immediate)"]
64187#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_u32)"]
64188#[inline]
64189#[cfg(target_arch = "arm")]
64190#[target_feature(enable = "neon,v7")]
64191#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64192#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.32", N = 1))]
64193#[rustc_legacy_const_generics(2)]
64194pub fn vsli_n_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
64195 static_assert!(N >= 0 && N <= 31);
64196 unsafe { transmute(vshiftlins_v2i32::<N>(transmute(a), transmute(b))) }
64197}
64198#[doc = "Shift Left and Insert (immediate)"]
64199#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_u32)"]
64200#[inline]
64201#[cfg(target_arch = "arm")]
64202#[target_feature(enable = "neon,v7")]
64203#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64204#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.32", N = 1))]
64205#[rustc_legacy_const_generics(2)]
64206pub fn vsliq_n_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
64207 static_assert!(N >= 0 && N <= 31);
64208 unsafe { transmute(vshiftlins_v4i32::<N>(transmute(a), transmute(b))) }
64209}
64210#[doc = "Shift Left and Insert (immediate)"]
64211#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_u64)"]
64212#[inline]
64213#[cfg(target_arch = "arm")]
64214#[target_feature(enable = "neon,v7")]
64215#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64216#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.64", N = 1))]
64217#[rustc_legacy_const_generics(2)]
64218pub fn vsli_n_u64<const N: i32>(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
64219 static_assert!(N >= 0 && N <= 63);
64220 unsafe { transmute(vshiftlins_v1i64::<N>(transmute(a), transmute(b))) }
64221}
64222#[doc = "Shift Left and Insert (immediate)"]
64223#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_u64)"]
64224#[inline]
64225#[cfg(target_arch = "arm")]
64226#[target_feature(enable = "neon,v7")]
64227#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64228#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.64", N = 1))]
64229#[rustc_legacy_const_generics(2)]
64230pub fn vsliq_n_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
64231 static_assert!(N >= 0 && N <= 63);
64232 unsafe { transmute(vshiftlins_v2i64::<N>(transmute(a), transmute(b))) }
64233}
64234#[doc = "Shift Left and Insert (immediate)"]
64235#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_p8)"]
64236#[inline]
64237#[cfg(target_arch = "arm")]
64238#[target_feature(enable = "neon,v7")]
64239#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64240#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
64241#[rustc_legacy_const_generics(2)]
64242pub fn vsli_n_p8<const N: i32>(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t {
64243 static_assert_uimm_bits!(N, 3);
64244 unsafe { transmute(vshiftlins_v8i8::<N>(transmute(a), transmute(b))) }
64245}
64246#[doc = "Shift Left and Insert (immediate)"]
64247#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_p8)"]
64248#[inline]
64249#[cfg(target_arch = "arm")]
64250#[target_feature(enable = "neon,v7")]
64251#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64252#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
64253#[rustc_legacy_const_generics(2)]
64254pub fn vsliq_n_p8<const N: i32>(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t {
64255 static_assert_uimm_bits!(N, 3);
64256 unsafe { transmute(vshiftlins_v16i8::<N>(transmute(a), transmute(b))) }
64257}
64258#[doc = "Shift Left and Insert (immediate)"]
64259#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_p16)"]
64260#[inline]
64261#[cfg(target_arch = "arm")]
64262#[target_feature(enable = "neon,v7")]
64263#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64264#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
64265#[rustc_legacy_const_generics(2)]
64266pub fn vsli_n_p16<const N: i32>(a: poly16x4_t, b: poly16x4_t) -> poly16x4_t {
64267 static_assert_uimm_bits!(N, 4);
64268 unsafe { transmute(vshiftlins_v4i16::<N>(transmute(a), transmute(b))) }
64269}
64270#[doc = "Shift Left and Insert (immediate)"]
64271#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_p16)"]
64272#[inline]
64273#[cfg(target_arch = "arm")]
64274#[target_feature(enable = "neon,v7")]
64275#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64276#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
64277#[rustc_legacy_const_generics(2)]
64278pub fn vsliq_n_p16<const N: i32>(a: poly16x8_t, b: poly16x8_t) -> poly16x8_t {
64279 static_assert_uimm_bits!(N, 4);
64280 unsafe { transmute(vshiftlins_v8i16::<N>(transmute(a), transmute(b))) }
64281}
64282#[doc = "Signed shift right and accumulate"]
64283#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_s8)"]
64284#[inline]
64285#[target_feature(enable = "neon")]
64286#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64287#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
64288#[cfg_attr(
64289 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64290 assert_instr(ssra, N = 2)
64291)]
64292#[rustc_legacy_const_generics(2)]
64293#[cfg_attr(
64294 not(target_arch = "arm"),
64295 stable(feature = "neon_intrinsics", since = "1.59.0")
64296)]
64297#[cfg_attr(
64298 target_arch = "arm",
64299 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64300)]
64301pub fn vsra_n_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
64302 static_assert!(N >= 1 && N <= 8);
64303 unsafe { simd_add(a, vshr_n_s8::<N>(b)) }
64304}
64305#[doc = "Signed shift right and accumulate"]
64306#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_s8)"]
64307#[inline]
64308#[target_feature(enable = "neon")]
64309#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64310#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
64311#[cfg_attr(
64312 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64313 assert_instr(ssra, N = 2)
64314)]
64315#[rustc_legacy_const_generics(2)]
64316#[cfg_attr(
64317 not(target_arch = "arm"),
64318 stable(feature = "neon_intrinsics", since = "1.59.0")
64319)]
64320#[cfg_attr(
64321 target_arch = "arm",
64322 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64323)]
64324pub fn vsraq_n_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
64325 static_assert!(N >= 1 && N <= 8);
64326 unsafe { simd_add(a, vshrq_n_s8::<N>(b)) }
64327}
64328#[doc = "Signed shift right and accumulate"]
64329#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_s16)"]
64330#[inline]
64331#[target_feature(enable = "neon")]
64332#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64333#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
64334#[cfg_attr(
64335 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64336 assert_instr(ssra, N = 2)
64337)]
64338#[rustc_legacy_const_generics(2)]
64339#[cfg_attr(
64340 not(target_arch = "arm"),
64341 stable(feature = "neon_intrinsics", since = "1.59.0")
64342)]
64343#[cfg_attr(
64344 target_arch = "arm",
64345 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64346)]
64347pub fn vsra_n_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
64348 static_assert!(N >= 1 && N <= 16);
64349 unsafe { simd_add(a, vshr_n_s16::<N>(b)) }
64350}
64351#[doc = "Signed shift right and accumulate"]
64352#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_s16)"]
64353#[inline]
64354#[target_feature(enable = "neon")]
64355#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64356#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
64357#[cfg_attr(
64358 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64359 assert_instr(ssra, N = 2)
64360)]
64361#[rustc_legacy_const_generics(2)]
64362#[cfg_attr(
64363 not(target_arch = "arm"),
64364 stable(feature = "neon_intrinsics", since = "1.59.0")
64365)]
64366#[cfg_attr(
64367 target_arch = "arm",
64368 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64369)]
64370pub fn vsraq_n_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
64371 static_assert!(N >= 1 && N <= 16);
64372 unsafe { simd_add(a, vshrq_n_s16::<N>(b)) }
64373}
64374#[doc = "Signed shift right and accumulate"]
64375#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_s32)"]
64376#[inline]
64377#[target_feature(enable = "neon")]
64378#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64379#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
64380#[cfg_attr(
64381 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64382 assert_instr(ssra, N = 2)
64383)]
64384#[rustc_legacy_const_generics(2)]
64385#[cfg_attr(
64386 not(target_arch = "arm"),
64387 stable(feature = "neon_intrinsics", since = "1.59.0")
64388)]
64389#[cfg_attr(
64390 target_arch = "arm",
64391 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64392)]
64393pub fn vsra_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
64394 static_assert!(N >= 1 && N <= 32);
64395 unsafe { simd_add(a, vshr_n_s32::<N>(b)) }
64396}
64397#[doc = "Signed shift right and accumulate"]
64398#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_s32)"]
64399#[inline]
64400#[target_feature(enable = "neon")]
64401#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64402#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
64403#[cfg_attr(
64404 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64405 assert_instr(ssra, N = 2)
64406)]
64407#[rustc_legacy_const_generics(2)]
64408#[cfg_attr(
64409 not(target_arch = "arm"),
64410 stable(feature = "neon_intrinsics", since = "1.59.0")
64411)]
64412#[cfg_attr(
64413 target_arch = "arm",
64414 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64415)]
64416pub fn vsraq_n_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
64417 static_assert!(N >= 1 && N <= 32);
64418 unsafe { simd_add(a, vshrq_n_s32::<N>(b)) }
64419}
64420#[doc = "Signed shift right and accumulate"]
64421#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_s64)"]
64422#[inline]
64423#[target_feature(enable = "neon")]
64424#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64425#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
64426#[cfg_attr(
64427 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64428 assert_instr(ssra, N = 2)
64429)]
64430#[rustc_legacy_const_generics(2)]
64431#[cfg_attr(
64432 not(target_arch = "arm"),
64433 stable(feature = "neon_intrinsics", since = "1.59.0")
64434)]
64435#[cfg_attr(
64436 target_arch = "arm",
64437 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64438)]
64439pub fn vsra_n_s64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
64440 static_assert!(N >= 1 && N <= 64);
64441 unsafe { simd_add(a, vshr_n_s64::<N>(b)) }
64442}
64443#[doc = "Signed shift right and accumulate"]
64444#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_s64)"]
64445#[inline]
64446#[target_feature(enable = "neon")]
64447#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64448#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
64449#[cfg_attr(
64450 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64451 assert_instr(ssra, N = 2)
64452)]
64453#[rustc_legacy_const_generics(2)]
64454#[cfg_attr(
64455 not(target_arch = "arm"),
64456 stable(feature = "neon_intrinsics", since = "1.59.0")
64457)]
64458#[cfg_attr(
64459 target_arch = "arm",
64460 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64461)]
64462pub fn vsraq_n_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
64463 static_assert!(N >= 1 && N <= 64);
64464 unsafe { simd_add(a, vshrq_n_s64::<N>(b)) }
64465}
64466#[doc = "Unsigned shift right and accumulate"]
64467#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_u8)"]
64468#[inline]
64469#[target_feature(enable = "neon")]
64470#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64471#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
64472#[cfg_attr(
64473 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64474 assert_instr(usra, N = 2)
64475)]
64476#[rustc_legacy_const_generics(2)]
64477#[cfg_attr(
64478 not(target_arch = "arm"),
64479 stable(feature = "neon_intrinsics", since = "1.59.0")
64480)]
64481#[cfg_attr(
64482 target_arch = "arm",
64483 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64484)]
64485pub fn vsra_n_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
64486 static_assert!(N >= 1 && N <= 8);
64487 unsafe { simd_add(a, vshr_n_u8::<N>(b)) }
64488}
64489#[doc = "Unsigned shift right and accumulate"]
64490#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_u8)"]
64491#[inline]
64492#[target_feature(enable = "neon")]
64493#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64494#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
64495#[cfg_attr(
64496 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64497 assert_instr(usra, N = 2)
64498)]
64499#[rustc_legacy_const_generics(2)]
64500#[cfg_attr(
64501 not(target_arch = "arm"),
64502 stable(feature = "neon_intrinsics", since = "1.59.0")
64503)]
64504#[cfg_attr(
64505 target_arch = "arm",
64506 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64507)]
64508pub fn vsraq_n_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
64509 static_assert!(N >= 1 && N <= 8);
64510 unsafe { simd_add(a, vshrq_n_u8::<N>(b)) }
64511}
64512#[doc = "Unsigned shift right and accumulate"]
64513#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_u16)"]
64514#[inline]
64515#[target_feature(enable = "neon")]
64516#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64517#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
64518#[cfg_attr(
64519 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64520 assert_instr(usra, N = 2)
64521)]
64522#[rustc_legacy_const_generics(2)]
64523#[cfg_attr(
64524 not(target_arch = "arm"),
64525 stable(feature = "neon_intrinsics", since = "1.59.0")
64526)]
64527#[cfg_attr(
64528 target_arch = "arm",
64529 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64530)]
64531pub fn vsra_n_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
64532 static_assert!(N >= 1 && N <= 16);
64533 unsafe { simd_add(a, vshr_n_u16::<N>(b)) }
64534}
64535#[doc = "Unsigned shift right and accumulate"]
64536#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_u16)"]
64537#[inline]
64538#[target_feature(enable = "neon")]
64539#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64540#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
64541#[cfg_attr(
64542 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64543 assert_instr(usra, N = 2)
64544)]
64545#[rustc_legacy_const_generics(2)]
64546#[cfg_attr(
64547 not(target_arch = "arm"),
64548 stable(feature = "neon_intrinsics", since = "1.59.0")
64549)]
64550#[cfg_attr(
64551 target_arch = "arm",
64552 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64553)]
64554pub fn vsraq_n_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
64555 static_assert!(N >= 1 && N <= 16);
64556 unsafe { simd_add(a, vshrq_n_u16::<N>(b)) }
64557}
64558#[doc = "Unsigned shift right and accumulate"]
64559#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_u32)"]
64560#[inline]
64561#[target_feature(enable = "neon")]
64562#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64563#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
64564#[cfg_attr(
64565 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64566 assert_instr(usra, N = 2)
64567)]
64568#[rustc_legacy_const_generics(2)]
64569#[cfg_attr(
64570 not(target_arch = "arm"),
64571 stable(feature = "neon_intrinsics", since = "1.59.0")
64572)]
64573#[cfg_attr(
64574 target_arch = "arm",
64575 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64576)]
64577pub fn vsra_n_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
64578 static_assert!(N >= 1 && N <= 32);
64579 unsafe { simd_add(a, vshr_n_u32::<N>(b)) }
64580}
64581#[doc = "Unsigned shift right and accumulate"]
64582#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_u32)"]
64583#[inline]
64584#[target_feature(enable = "neon")]
64585#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64586#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
64587#[cfg_attr(
64588 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64589 assert_instr(usra, N = 2)
64590)]
64591#[rustc_legacy_const_generics(2)]
64592#[cfg_attr(
64593 not(target_arch = "arm"),
64594 stable(feature = "neon_intrinsics", since = "1.59.0")
64595)]
64596#[cfg_attr(
64597 target_arch = "arm",
64598 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64599)]
64600pub fn vsraq_n_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
64601 static_assert!(N >= 1 && N <= 32);
64602 unsafe { simd_add(a, vshrq_n_u32::<N>(b)) }
64603}
64604#[doc = "Unsigned shift right and accumulate"]
64605#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_u64)"]
64606#[inline]
64607#[target_feature(enable = "neon")]
64608#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64609#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
64610#[cfg_attr(
64611 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64612 assert_instr(usra, N = 2)
64613)]
64614#[rustc_legacy_const_generics(2)]
64615#[cfg_attr(
64616 not(target_arch = "arm"),
64617 stable(feature = "neon_intrinsics", since = "1.59.0")
64618)]
64619#[cfg_attr(
64620 target_arch = "arm",
64621 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64622)]
64623pub fn vsra_n_u64<const N: i32>(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
64624 static_assert!(N >= 1 && N <= 64);
64625 unsafe { simd_add(a, vshr_n_u64::<N>(b)) }
64626}
64627#[doc = "Unsigned shift right and accumulate"]
64628#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_u64)"]
64629#[inline]
64630#[target_feature(enable = "neon")]
64631#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64632#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
64633#[cfg_attr(
64634 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64635 assert_instr(usra, N = 2)
64636)]
64637#[rustc_legacy_const_generics(2)]
64638#[cfg_attr(
64639 not(target_arch = "arm"),
64640 stable(feature = "neon_intrinsics", since = "1.59.0")
64641)]
64642#[cfg_attr(
64643 target_arch = "arm",
64644 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64645)]
64646pub fn vsraq_n_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
64647 static_assert!(N >= 1 && N <= 64);
64648 unsafe { simd_add(a, vshrq_n_u64::<N>(b)) }
64649}
64650#[doc = "Shift Right and Insert (immediate)"]
64651#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_s8)"]
64652#[inline]
64653#[target_feature(enable = "neon,v7")]
64654#[cfg(target_arch = "arm")]
64655#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64656#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
64657#[rustc_legacy_const_generics(2)]
64658pub fn vsri_n_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
64659 static_assert!(1 <= N && N <= 8);
64660 vshiftrins_v8i8::<N>(a, b)
64661}
64662#[doc = "Shift Right and Insert (immediate)"]
64663#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_s8)"]
64664#[inline]
64665#[target_feature(enable = "neon,v7")]
64666#[cfg(target_arch = "arm")]
64667#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64668#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
64669#[rustc_legacy_const_generics(2)]
64670pub fn vsriq_n_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
64671 static_assert!(1 <= N && N <= 8);
64672 vshiftrins_v16i8::<N>(a, b)
64673}
64674#[doc = "Shift Right and Insert (immediate)"]
64675#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_s16)"]
64676#[inline]
64677#[target_feature(enable = "neon,v7")]
64678#[cfg(target_arch = "arm")]
64679#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64680#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
64681#[rustc_legacy_const_generics(2)]
64682pub fn vsri_n_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
64683 static_assert!(1 <= N && N <= 16);
64684 vshiftrins_v4i16::<N>(a, b)
64685}
64686#[doc = "Shift Right and Insert (immediate)"]
64687#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_s16)"]
64688#[inline]
64689#[target_feature(enable = "neon,v7")]
64690#[cfg(target_arch = "arm")]
64691#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64692#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
64693#[rustc_legacy_const_generics(2)]
64694pub fn vsriq_n_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
64695 static_assert!(1 <= N && N <= 16);
64696 vshiftrins_v8i16::<N>(a, b)
64697}
64698#[doc = "Shift Right and Insert (immediate)"]
64699#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_s32)"]
64700#[inline]
64701#[target_feature(enable = "neon,v7")]
64702#[cfg(target_arch = "arm")]
64703#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64704#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.32", N = 1))]
64705#[rustc_legacy_const_generics(2)]
64706pub fn vsri_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
64707 static_assert!(1 <= N && N <= 32);
64708 vshiftrins_v2i32::<N>(a, b)
64709}
64710#[doc = "Shift Right and Insert (immediate)"]
64711#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_s32)"]
64712#[inline]
64713#[target_feature(enable = "neon,v7")]
64714#[cfg(target_arch = "arm")]
64715#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64716#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.32", N = 1))]
64717#[rustc_legacy_const_generics(2)]
64718pub fn vsriq_n_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
64719 static_assert!(1 <= N && N <= 32);
64720 vshiftrins_v4i32::<N>(a, b)
64721}
64722#[doc = "Shift Right and Insert (immediate)"]
64723#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_s64)"]
64724#[inline]
64725#[target_feature(enable = "neon,v7")]
64726#[cfg(target_arch = "arm")]
64727#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64728#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.64", N = 1))]
64729#[rustc_legacy_const_generics(2)]
64730pub fn vsri_n_s64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
64731 static_assert!(1 <= N && N <= 64);
64732 vshiftrins_v1i64::<N>(a, b)
64733}
64734#[doc = "Shift Right and Insert (immediate)"]
64735#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_s64)"]
64736#[inline]
64737#[target_feature(enable = "neon,v7")]
64738#[cfg(target_arch = "arm")]
64739#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64740#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.64", N = 1))]
64741#[rustc_legacy_const_generics(2)]
64742pub fn vsriq_n_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
64743 static_assert!(1 <= N && N <= 64);
64744 vshiftrins_v2i64::<N>(a, b)
64745}
64746#[doc = "Shift Right and Insert (immediate)"]
64747#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_u8)"]
64748#[inline]
64749#[cfg(target_arch = "arm")]
64750#[target_feature(enable = "neon,v7")]
64751#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64752#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
64753#[rustc_legacy_const_generics(2)]
64754pub fn vsri_n_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
64755 static_assert!(1 <= N && N <= 8);
64756 unsafe { transmute(vshiftrins_v8i8::<N>(transmute(a), transmute(b))) }
64757}
64758#[doc = "Shift Right and Insert (immediate)"]
64759#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_u8)"]
64760#[inline]
64761#[cfg(target_arch = "arm")]
64762#[target_feature(enable = "neon,v7")]
64763#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64764#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
64765#[rustc_legacy_const_generics(2)]
64766pub fn vsriq_n_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
64767 static_assert!(1 <= N && N <= 8);
64768 unsafe { transmute(vshiftrins_v16i8::<N>(transmute(a), transmute(b))) }
64769}
64770#[doc = "Shift Right and Insert (immediate)"]
64771#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_u16)"]
64772#[inline]
64773#[cfg(target_arch = "arm")]
64774#[target_feature(enable = "neon,v7")]
64775#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64776#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
64777#[rustc_legacy_const_generics(2)]
64778pub fn vsri_n_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
64779 static_assert!(1 <= N && N <= 16);
64780 unsafe { transmute(vshiftrins_v4i16::<N>(transmute(a), transmute(b))) }
64781}
64782#[doc = "Shift Right and Insert (immediate)"]
64783#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_u16)"]
64784#[inline]
64785#[cfg(target_arch = "arm")]
64786#[target_feature(enable = "neon,v7")]
64787#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64788#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
64789#[rustc_legacy_const_generics(2)]
64790pub fn vsriq_n_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
64791 static_assert!(1 <= N && N <= 16);
64792 unsafe { transmute(vshiftrins_v8i16::<N>(transmute(a), transmute(b))) }
64793}
64794#[doc = "Shift Right and Insert (immediate)"]
64795#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_u32)"]
64796#[inline]
64797#[cfg(target_arch = "arm")]
64798#[target_feature(enable = "neon,v7")]
64799#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64800#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.32", N = 1))]
64801#[rustc_legacy_const_generics(2)]
64802pub fn vsri_n_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
64803 static_assert!(1 <= N && N <= 32);
64804 unsafe { transmute(vshiftrins_v2i32::<N>(transmute(a), transmute(b))) }
64805}
64806#[doc = "Shift Right and Insert (immediate)"]
64807#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_u32)"]
64808#[inline]
64809#[cfg(target_arch = "arm")]
64810#[target_feature(enable = "neon,v7")]
64811#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64812#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.32", N = 1))]
64813#[rustc_legacy_const_generics(2)]
64814pub fn vsriq_n_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
64815 static_assert!(1 <= N && N <= 32);
64816 unsafe { transmute(vshiftrins_v4i32::<N>(transmute(a), transmute(b))) }
64817}
64818#[doc = "Shift Right and Insert (immediate)"]
64819#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_u64)"]
64820#[inline]
64821#[cfg(target_arch = "arm")]
64822#[target_feature(enable = "neon,v7")]
64823#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64824#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.64", N = 1))]
64825#[rustc_legacy_const_generics(2)]
64826pub fn vsri_n_u64<const N: i32>(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
64827 static_assert!(1 <= N && N <= 64);
64828 unsafe { transmute(vshiftrins_v1i64::<N>(transmute(a), transmute(b))) }
64829}
64830#[doc = "Shift Right and Insert (immediate)"]
64831#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_u64)"]
64832#[inline]
64833#[cfg(target_arch = "arm")]
64834#[target_feature(enable = "neon,v7")]
64835#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64836#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.64", N = 1))]
64837#[rustc_legacy_const_generics(2)]
64838pub fn vsriq_n_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
64839 static_assert!(1 <= N && N <= 64);
64840 unsafe { transmute(vshiftrins_v2i64::<N>(transmute(a), transmute(b))) }
64841}
64842#[doc = "Shift Right and Insert (immediate)"]
64843#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_p8)"]
64844#[inline]
64845#[cfg(target_arch = "arm")]
64846#[target_feature(enable = "neon,v7")]
64847#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64848#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
64849#[rustc_legacy_const_generics(2)]
64850pub fn vsri_n_p8<const N: i32>(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t {
64851 static_assert!(1 <= N && N <= 8);
64852 unsafe { transmute(vshiftrins_v8i8::<N>(transmute(a), transmute(b))) }
64853}
64854#[doc = "Shift Right and Insert (immediate)"]
64855#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_p8)"]
64856#[inline]
64857#[cfg(target_arch = "arm")]
64858#[target_feature(enable = "neon,v7")]
64859#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64860#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
64861#[rustc_legacy_const_generics(2)]
64862pub fn vsriq_n_p8<const N: i32>(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t {
64863 static_assert!(1 <= N && N <= 8);
64864 unsafe { transmute(vshiftrins_v16i8::<N>(transmute(a), transmute(b))) }
64865}
64866#[doc = "Shift Right and Insert (immediate)"]
64867#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_p16)"]
64868#[inline]
64869#[cfg(target_arch = "arm")]
64870#[target_feature(enable = "neon,v7")]
64871#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64872#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
64873#[rustc_legacy_const_generics(2)]
64874pub fn vsri_n_p16<const N: i32>(a: poly16x4_t, b: poly16x4_t) -> poly16x4_t {
64875 static_assert!(1 <= N && N <= 16);
64876 unsafe { transmute(vshiftrins_v4i16::<N>(transmute(a), transmute(b))) }
64877}
64878#[doc = "Shift Right and Insert (immediate)"]
64879#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_p16)"]
64880#[inline]
64881#[cfg(target_arch = "arm")]
64882#[target_feature(enable = "neon,v7")]
64883#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64884#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
64885#[rustc_legacy_const_generics(2)]
64886pub fn vsriq_n_p16<const N: i32>(a: poly16x8_t, b: poly16x8_t) -> poly16x8_t {
64887 static_assert!(1 <= N && N <= 16);
64888 unsafe { transmute(vshiftrins_v8i16::<N>(transmute(a), transmute(b))) }
64889}
64890#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
64891#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16)"]
64892#[doc = "## Safety"]
64893#[doc = " * Neon instrinsic unsafe"]
64894#[inline]
64895#[cfg(target_arch = "arm")]
64896#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64897#[target_feature(enable = "neon,fp16")]
64898#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
64899#[cfg(not(target_arch = "arm64ec"))]
64900#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
64901pub unsafe fn vst1_f16(ptr: *mut f16, a: float16x4_t) {
64902 vst1_v4f16(
64903 ptr as *const i8,
64904 transmute(a),
64905 crate::mem::align_of::<f16>() as i32,
64906 )
64907}
64908#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
64909#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16)"]
64910#[doc = "## Safety"]
64911#[doc = " * Neon instrinsic unsafe"]
64912#[inline]
64913#[cfg(target_arch = "arm")]
64914#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64915#[target_feature(enable = "neon,fp16")]
64916#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
64917#[cfg(not(target_arch = "arm64ec"))]
64918#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
64919pub unsafe fn vst1q_f16(ptr: *mut f16, a: float16x8_t) {
64920 vst1q_v8f16(
64921 ptr as *const i8,
64922 transmute(a),
64923 crate::mem::align_of::<f16>() as i32,
64924 )
64925}
64926#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64927#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x2)"]
64928#[doc = "## Safety"]
64929#[doc = " * Neon instrinsic unsafe"]
64930#[inline]
64931#[cfg(target_arch = "arm")]
64932#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64933#[cfg_attr(test, assert_instr(vst1))]
64934#[target_feature(enable = "neon,fp16")]
64935#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
64936#[cfg(not(target_arch = "arm64ec"))]
64937pub unsafe fn vst1_f16_x2(a: *mut f16, b: float16x4x2_t) {
64938 unsafe extern "unadjusted" {
64939 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.p0.v4f16")]
64940 fn _vst1_f16_x2(ptr: *mut f16, a: float16x4_t, b: float16x4_t);
64941 }
64942 _vst1_f16_x2(a, b.0, b.1)
64943}
64944#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64945#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x2)"]
64946#[doc = "## Safety"]
64947#[doc = " * Neon instrinsic unsafe"]
64948#[inline]
64949#[cfg(target_arch = "arm")]
64950#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64951#[cfg_attr(test, assert_instr(vst1))]
64952#[target_feature(enable = "neon,fp16")]
64953#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
64954#[cfg(not(target_arch = "arm64ec"))]
64955pub unsafe fn vst1q_f16_x2(a: *mut f16, b: float16x8x2_t) {
64956 unsafe extern "unadjusted" {
64957 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.p0.v8f16")]
64958 fn _vst1q_f16_x2(ptr: *mut f16, a: float16x8_t, b: float16x8_t);
64959 }
64960 _vst1q_f16_x2(a, b.0, b.1)
64961}
64962#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64963#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x2)"]
64964#[doc = "## Safety"]
64965#[doc = " * Neon instrinsic unsafe"]
64966#[inline]
64967#[cfg(not(target_arch = "arm"))]
64968#[cfg_attr(test, assert_instr(st1))]
64969#[target_feature(enable = "neon,fp16")]
64970#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
64971#[cfg(not(target_arch = "arm64ec"))]
64972pub unsafe fn vst1_f16_x2(a: *mut f16, b: float16x4x2_t) {
64973 unsafe extern "unadjusted" {
64974 #[cfg_attr(
64975 any(target_arch = "aarch64", target_arch = "arm64ec"),
64976 link_name = "llvm.aarch64.neon.st1x2.v4f16.p0"
64977 )]
64978 fn _vst1_f16_x2(a: float16x4_t, b: float16x4_t, ptr: *mut f16);
64979 }
64980 _vst1_f16_x2(b.0, b.1, a)
64981}
64982#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64983#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x2)"]
64984#[doc = "## Safety"]
64985#[doc = " * Neon instrinsic unsafe"]
64986#[inline]
64987#[cfg(not(target_arch = "arm"))]
64988#[cfg_attr(test, assert_instr(st1))]
64989#[target_feature(enable = "neon,fp16")]
64990#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
64991#[cfg(not(target_arch = "arm64ec"))]
64992pub unsafe fn vst1q_f16_x2(a: *mut f16, b: float16x8x2_t) {
64993 unsafe extern "unadjusted" {
64994 #[cfg_attr(
64995 any(target_arch = "aarch64", target_arch = "arm64ec"),
64996 link_name = "llvm.aarch64.neon.st1x2.v8f16.p0"
64997 )]
64998 fn _vst1q_f16_x2(a: float16x8_t, b: float16x8_t, ptr: *mut f16);
64999 }
65000 _vst1q_f16_x2(b.0, b.1, a)
65001}
65002#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65003#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x3)"]
65004#[doc = "## Safety"]
65005#[doc = " * Neon instrinsic unsafe"]
65006#[inline]
65007#[cfg(target_arch = "arm")]
65008#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65009#[cfg_attr(test, assert_instr(vst1))]
65010#[target_feature(enable = "neon,fp16")]
65011#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65012#[cfg(not(target_arch = "arm64ec"))]
65013pub unsafe fn vst1_f16_x3(a: *mut f16, b: float16x4x3_t) {
65014 unsafe extern "unadjusted" {
65015 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v4f16")]
65016 fn _vst1_f16_x3(ptr: *mut f16, a: float16x4_t, b: float16x4_t, c: float16x4_t);
65017 }
65018 _vst1_f16_x3(a, b.0, b.1, b.2)
65019}
65020#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65021#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x3)"]
65022#[doc = "## Safety"]
65023#[doc = " * Neon instrinsic unsafe"]
65024#[inline]
65025#[cfg(target_arch = "arm")]
65026#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65027#[cfg_attr(test, assert_instr(vst1))]
65028#[target_feature(enable = "neon,fp16")]
65029#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65030#[cfg(not(target_arch = "arm64ec"))]
65031pub unsafe fn vst1q_f16_x3(a: *mut f16, b: float16x8x3_t) {
65032 unsafe extern "unadjusted" {
65033 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v8f16")]
65034 fn _vst1q_f16_x3(ptr: *mut f16, a: float16x8_t, b: float16x8_t, c: float16x8_t);
65035 }
65036 _vst1q_f16_x3(a, b.0, b.1, b.2)
65037}
65038#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65039#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x3)"]
65040#[doc = "## Safety"]
65041#[doc = " * Neon instrinsic unsafe"]
65042#[inline]
65043#[cfg(not(target_arch = "arm"))]
65044#[cfg_attr(test, assert_instr(st1))]
65045#[target_feature(enable = "neon,fp16")]
65046#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65047#[cfg(not(target_arch = "arm64ec"))]
65048pub unsafe fn vst1_f16_x3(a: *mut f16, b: float16x4x3_t) {
65049 unsafe extern "unadjusted" {
65050 #[cfg_attr(
65051 any(target_arch = "aarch64", target_arch = "arm64ec"),
65052 link_name = "llvm.aarch64.neon.st1x3.v4f16.p0"
65053 )]
65054 fn _vst1_f16_x3(a: float16x4_t, b: float16x4_t, c: float16x4_t, ptr: *mut f16);
65055 }
65056 _vst1_f16_x3(b.0, b.1, b.2, a)
65057}
65058#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65059#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x3)"]
65060#[doc = "## Safety"]
65061#[doc = " * Neon instrinsic unsafe"]
65062#[inline]
65063#[cfg(not(target_arch = "arm"))]
65064#[cfg_attr(test, assert_instr(st1))]
65065#[target_feature(enable = "neon,fp16")]
65066#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65067#[cfg(not(target_arch = "arm64ec"))]
65068pub unsafe fn vst1q_f16_x3(a: *mut f16, b: float16x8x3_t) {
65069 unsafe extern "unadjusted" {
65070 #[cfg_attr(
65071 any(target_arch = "aarch64", target_arch = "arm64ec"),
65072 link_name = "llvm.aarch64.neon.st1x3.v8f16.p0"
65073 )]
65074 fn _vst1q_f16_x3(a: float16x8_t, b: float16x8_t, c: float16x8_t, ptr: *mut f16);
65075 }
65076 _vst1q_f16_x3(b.0, b.1, b.2, a)
65077}
65078#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65079#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x4)"]
65080#[doc = "## Safety"]
65081#[doc = " * Neon instrinsic unsafe"]
65082#[inline]
65083#[target_feature(enable = "neon")]
65084#[cfg(target_arch = "arm")]
65085#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65086#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
65087#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65088#[cfg(not(target_arch = "arm64ec"))]
65089#[cfg_attr(test, assert_instr(vst1))]
65090pub unsafe fn vst1_f16_x4(a: *mut f16, b: float16x4x4_t) {
65091 unsafe extern "unadjusted" {
65092 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v4f16")]
65093 fn _vst1_f16_x4(
65094 ptr: *mut f16,
65095 a: float16x4_t,
65096 b: float16x4_t,
65097 c: float16x4_t,
65098 d: float16x4_t,
65099 );
65100 }
65101 _vst1_f16_x4(a, b.0, b.1, b.2, b.3)
65102}
65103#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65104#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x4)"]
65105#[doc = "## Safety"]
65106#[doc = " * Neon instrinsic unsafe"]
65107#[inline]
65108#[target_feature(enable = "neon")]
65109#[cfg(target_arch = "arm")]
65110#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65111#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
65112#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65113#[cfg(not(target_arch = "arm64ec"))]
65114#[cfg_attr(test, assert_instr(vst1))]
65115pub unsafe fn vst1q_f16_x4(a: *mut f16, b: float16x8x4_t) {
65116 unsafe extern "unadjusted" {
65117 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v8f16")]
65118 fn _vst1q_f16_x4(
65119 ptr: *mut f16,
65120 a: float16x8_t,
65121 b: float16x8_t,
65122 c: float16x8_t,
65123 d: float16x8_t,
65124 );
65125 }
65126 _vst1q_f16_x4(a, b.0, b.1, b.2, b.3)
65127}
65128#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65129#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x4)"]
65130#[doc = "## Safety"]
65131#[doc = " * Neon instrinsic unsafe"]
65132#[inline]
65133#[cfg(not(target_arch = "arm"))]
65134#[cfg_attr(test, assert_instr(st1))]
65135#[target_feature(enable = "neon,fp16")]
65136#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65137#[cfg(not(target_arch = "arm64ec"))]
65138pub unsafe fn vst1_f16_x4(a: *mut f16, b: float16x4x4_t) {
65139 unsafe extern "unadjusted" {
65140 #[cfg_attr(
65141 any(target_arch = "aarch64", target_arch = "arm64ec"),
65142 link_name = "llvm.aarch64.neon.st1x4.v4f16.p0"
65143 )]
65144 fn _vst1_f16_x4(
65145 a: float16x4_t,
65146 b: float16x4_t,
65147 c: float16x4_t,
65148 d: float16x4_t,
65149 ptr: *mut f16,
65150 );
65151 }
65152 _vst1_f16_x4(b.0, b.1, b.2, b.3, a)
65153}
65154#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65155#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x4)"]
65156#[doc = "## Safety"]
65157#[doc = " * Neon instrinsic unsafe"]
65158#[inline]
65159#[cfg(not(target_arch = "arm"))]
65160#[cfg_attr(test, assert_instr(st1))]
65161#[target_feature(enable = "neon,fp16")]
65162#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65163#[cfg(not(target_arch = "arm64ec"))]
65164pub unsafe fn vst1q_f16_x4(a: *mut f16, b: float16x8x4_t) {
65165 unsafe extern "unadjusted" {
65166 #[cfg_attr(
65167 any(target_arch = "aarch64", target_arch = "arm64ec"),
65168 link_name = "llvm.aarch64.neon.st1x4.v8f16.p0"
65169 )]
65170 fn _vst1q_f16_x4(
65171 a: float16x8_t,
65172 b: float16x8_t,
65173 c: float16x8_t,
65174 d: float16x8_t,
65175 ptr: *mut f16,
65176 );
65177 }
65178 _vst1q_f16_x4(b.0, b.1, b.2, b.3, a)
65179}
65180#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65181#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32)"]
65182#[doc = "## Safety"]
65183#[doc = " * Neon instrinsic unsafe"]
65184#[inline]
65185#[target_feature(enable = "neon")]
65186#[cfg(target_arch = "arm")]
65187#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65188#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65189#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
65190pub unsafe fn vst1_f32(ptr: *mut f32, a: float32x2_t) {
65191 const ALIGN: i32 = crate::mem::align_of::<f32>() as i32;
65192 vst1_v2f32::<ALIGN>(ptr as *const i8, transmute(a))
65193}
65194#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65195#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32)"]
65196#[doc = "## Safety"]
65197#[doc = " * Neon instrinsic unsafe"]
65198#[inline]
65199#[target_feature(enable = "neon")]
65200#[cfg(target_arch = "arm")]
65201#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65202#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65203#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
65204pub unsafe fn vst1q_f32(ptr: *mut f32, a: float32x4_t) {
65205 const ALIGN: i32 = crate::mem::align_of::<f32>() as i32;
65206 vst1q_v4f32::<ALIGN>(ptr as *const i8, transmute(a))
65207}
65208#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65209#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8)"]
65210#[doc = "## Safety"]
65211#[doc = " * Neon instrinsic unsafe"]
65212#[inline]
65213#[target_feature(enable = "neon")]
65214#[cfg(target_arch = "arm")]
65215#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65216#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65217#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
65218pub unsafe fn vst1_s8(ptr: *mut i8, a: int8x8_t) {
65219 const ALIGN: i32 = crate::mem::align_of::<i8>() as i32;
65220 vst1_v8i8::<ALIGN>(ptr as *const i8, a)
65221}
65222#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65223#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8)"]
65224#[doc = "## Safety"]
65225#[doc = " * Neon instrinsic unsafe"]
65226#[inline]
65227#[target_feature(enable = "neon")]
65228#[cfg(target_arch = "arm")]
65229#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65230#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65231#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
65232pub unsafe fn vst1q_s8(ptr: *mut i8, a: int8x16_t) {
65233 const ALIGN: i32 = crate::mem::align_of::<i8>() as i32;
65234 vst1q_v16i8::<ALIGN>(ptr as *const i8, a)
65235}
65236#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65237#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16)"]
65238#[doc = "## Safety"]
65239#[doc = " * Neon instrinsic unsafe"]
65240#[inline]
65241#[target_feature(enable = "neon")]
65242#[cfg(target_arch = "arm")]
65243#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65244#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65245#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
65246pub unsafe fn vst1_s16(ptr: *mut i16, a: int16x4_t) {
65247 const ALIGN: i32 = crate::mem::align_of::<i16>() as i32;
65248 vst1_v4i16::<ALIGN>(ptr as *const i8, a)
65249}
65250#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65251#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16)"]
65252#[doc = "## Safety"]
65253#[doc = " * Neon instrinsic unsafe"]
65254#[inline]
65255#[target_feature(enable = "neon")]
65256#[cfg(target_arch = "arm")]
65257#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65258#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65259#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
65260pub unsafe fn vst1q_s16(ptr: *mut i16, a: int16x8_t) {
65261 const ALIGN: i32 = crate::mem::align_of::<i16>() as i32;
65262 vst1q_v8i16::<ALIGN>(ptr as *const i8, a)
65263}
65264#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65265#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32)"]
65266#[doc = "## Safety"]
65267#[doc = " * Neon instrinsic unsafe"]
65268#[inline]
65269#[target_feature(enable = "neon")]
65270#[cfg(target_arch = "arm")]
65271#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65272#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65273#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
65274pub unsafe fn vst1_s32(ptr: *mut i32, a: int32x2_t) {
65275 const ALIGN: i32 = crate::mem::align_of::<i32>() as i32;
65276 vst1_v2i32::<ALIGN>(ptr as *const i8, a)
65277}
65278#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65279#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32)"]
65280#[doc = "## Safety"]
65281#[doc = " * Neon instrinsic unsafe"]
65282#[inline]
65283#[target_feature(enable = "neon")]
65284#[cfg(target_arch = "arm")]
65285#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65286#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65287#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
65288pub unsafe fn vst1q_s32(ptr: *mut i32, a: int32x4_t) {
65289 const ALIGN: i32 = crate::mem::align_of::<i32>() as i32;
65290 vst1q_v4i32::<ALIGN>(ptr as *const i8, a)
65291}
65292#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65293#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64)"]
65294#[doc = "## Safety"]
65295#[doc = " * Neon instrinsic unsafe"]
65296#[inline]
65297#[target_feature(enable = "neon")]
65298#[cfg(target_arch = "arm")]
65299#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65300#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65301#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
65302pub unsafe fn vst1_s64(ptr: *mut i64, a: int64x1_t) {
65303 const ALIGN: i32 = crate::mem::align_of::<i64>() as i32;
65304 vst1_v1i64::<ALIGN>(ptr as *const i8, a)
65305}
65306#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65307#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64)"]
65308#[doc = "## Safety"]
65309#[doc = " * Neon instrinsic unsafe"]
65310#[inline]
65311#[target_feature(enable = "neon")]
65312#[cfg(target_arch = "arm")]
65313#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65314#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65315#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
65316pub unsafe fn vst1q_s64(ptr: *mut i64, a: int64x2_t) {
65317 const ALIGN: i32 = crate::mem::align_of::<i64>() as i32;
65318 vst1q_v2i64::<ALIGN>(ptr as *const i8, a)
65319}
65320#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65321#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u8)"]
65322#[doc = "## Safety"]
65323#[doc = " * Neon instrinsic unsafe"]
65324#[inline]
65325#[target_feature(enable = "neon")]
65326#[cfg(target_arch = "arm")]
65327#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65328#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65329#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
65330pub unsafe fn vst1_u8(ptr: *mut u8, a: uint8x8_t) {
65331 const ALIGN: i32 = crate::mem::align_of::<u8>() as i32;
65332 vst1_v8i8::<ALIGN>(ptr as *const i8, transmute(a))
65333}
65334#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65335#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u8)"]
65336#[doc = "## Safety"]
65337#[doc = " * Neon instrinsic unsafe"]
65338#[inline]
65339#[target_feature(enable = "neon")]
65340#[cfg(target_arch = "arm")]
65341#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65342#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65343#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
65344pub unsafe fn vst1q_u8(ptr: *mut u8, a: uint8x16_t) {
65345 const ALIGN: i32 = crate::mem::align_of::<u8>() as i32;
65346 vst1q_v16i8::<ALIGN>(ptr as *const i8, transmute(a))
65347}
65348#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65349#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u16)"]
65350#[doc = "## Safety"]
65351#[doc = " * Neon instrinsic unsafe"]
65352#[inline]
65353#[target_feature(enable = "neon")]
65354#[cfg(target_arch = "arm")]
65355#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65356#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65357#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
65358pub unsafe fn vst1_u16(ptr: *mut u16, a: uint16x4_t) {
65359 const ALIGN: i32 = crate::mem::align_of::<u16>() as i32;
65360 vst1_v4i16::<ALIGN>(ptr as *const i8, transmute(a))
65361}
65362#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65363#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u16)"]
65364#[doc = "## Safety"]
65365#[doc = " * Neon instrinsic unsafe"]
65366#[inline]
65367#[target_feature(enable = "neon")]
65368#[cfg(target_arch = "arm")]
65369#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65370#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65371#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
65372pub unsafe fn vst1q_u16(ptr: *mut u16, a: uint16x8_t) {
65373 const ALIGN: i32 = crate::mem::align_of::<u16>() as i32;
65374 vst1q_v8i16::<ALIGN>(ptr as *const i8, transmute(a))
65375}
65376#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65377#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u32)"]
65378#[doc = "## Safety"]
65379#[doc = " * Neon instrinsic unsafe"]
65380#[inline]
65381#[target_feature(enable = "neon")]
65382#[cfg(target_arch = "arm")]
65383#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65384#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65385#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
65386pub unsafe fn vst1_u32(ptr: *mut u32, a: uint32x2_t) {
65387 const ALIGN: i32 = crate::mem::align_of::<u32>() as i32;
65388 vst1_v2i32::<ALIGN>(ptr as *const i8, transmute(a))
65389}
65390#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65391#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u32)"]
65392#[doc = "## Safety"]
65393#[doc = " * Neon instrinsic unsafe"]
65394#[inline]
65395#[target_feature(enable = "neon")]
65396#[cfg(target_arch = "arm")]
65397#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65398#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65399#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
65400pub unsafe fn vst1q_u32(ptr: *mut u32, a: uint32x4_t) {
65401 const ALIGN: i32 = crate::mem::align_of::<u32>() as i32;
65402 vst1q_v4i32::<ALIGN>(ptr as *const i8, transmute(a))
65403}
65404#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65405#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u64)"]
65406#[doc = "## Safety"]
65407#[doc = " * Neon instrinsic unsafe"]
65408#[inline]
65409#[target_feature(enable = "neon")]
65410#[cfg(target_arch = "arm")]
65411#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65412#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65413#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
65414pub unsafe fn vst1_u64(ptr: *mut u64, a: uint64x1_t) {
65415 const ALIGN: i32 = crate::mem::align_of::<u64>() as i32;
65416 vst1_v1i64::<ALIGN>(ptr as *const i8, transmute(a))
65417}
65418#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65419#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u64)"]
65420#[doc = "## Safety"]
65421#[doc = " * Neon instrinsic unsafe"]
65422#[inline]
65423#[target_feature(enable = "neon")]
65424#[cfg(target_arch = "arm")]
65425#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65426#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65427#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
65428pub unsafe fn vst1q_u64(ptr: *mut u64, a: uint64x2_t) {
65429 const ALIGN: i32 = crate::mem::align_of::<u64>() as i32;
65430 vst1q_v2i64::<ALIGN>(ptr as *const i8, transmute(a))
65431}
65432#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65433#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p8)"]
65434#[doc = "## Safety"]
65435#[doc = " * Neon instrinsic unsafe"]
65436#[inline]
65437#[target_feature(enable = "neon")]
65438#[cfg(target_arch = "arm")]
65439#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65440#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65441#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
65442pub unsafe fn vst1_p8(ptr: *mut p8, a: poly8x8_t) {
65443 const ALIGN: i32 = crate::mem::align_of::<p8>() as i32;
65444 vst1_v8i8::<ALIGN>(ptr as *const i8, transmute(a))
65445}
65446#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65447#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p8)"]
65448#[doc = "## Safety"]
65449#[doc = " * Neon instrinsic unsafe"]
65450#[inline]
65451#[target_feature(enable = "neon")]
65452#[cfg(target_arch = "arm")]
65453#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65454#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65455#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
65456pub unsafe fn vst1q_p8(ptr: *mut p8, a: poly8x16_t) {
65457 const ALIGN: i32 = crate::mem::align_of::<p8>() as i32;
65458 vst1q_v16i8::<ALIGN>(ptr as *const i8, transmute(a))
65459}
65460#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65461#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p16)"]
65462#[doc = "## Safety"]
65463#[doc = " * Neon instrinsic unsafe"]
65464#[inline]
65465#[target_feature(enable = "neon")]
65466#[cfg(target_arch = "arm")]
65467#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65468#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65469#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
65470pub unsafe fn vst1_p16(ptr: *mut p16, a: poly16x4_t) {
65471 const ALIGN: i32 = crate::mem::align_of::<p16>() as i32;
65472 vst1_v4i16::<ALIGN>(ptr as *const i8, transmute(a))
65473}
65474#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65475#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p16)"]
65476#[doc = "## Safety"]
65477#[doc = " * Neon instrinsic unsafe"]
65478#[inline]
65479#[target_feature(enable = "neon")]
65480#[cfg(target_arch = "arm")]
65481#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65482#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65483#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
65484pub unsafe fn vst1q_p16(ptr: *mut p16, a: poly16x8_t) {
65485 const ALIGN: i32 = crate::mem::align_of::<p16>() as i32;
65486 vst1q_v8i16::<ALIGN>(ptr as *const i8, transmute(a))
65487}
65488#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65489#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p64)"]
65490#[doc = "## Safety"]
65491#[doc = " * Neon instrinsic unsafe"]
65492#[inline]
65493#[target_feature(enable = "neon")]
65494#[cfg(target_arch = "arm")]
65495#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65496#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65497#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
65498pub unsafe fn vst1_p64(ptr: *mut p64, a: poly64x1_t) {
65499 const ALIGN: i32 = crate::mem::align_of::<p64>() as i32;
65500 vst1_v1i64::<ALIGN>(ptr as *const i8, transmute(a))
65501}
65502#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65503#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p64)"]
65504#[doc = "## Safety"]
65505#[doc = " * Neon instrinsic unsafe"]
65506#[inline]
65507#[target_feature(enable = "neon")]
65508#[cfg(target_arch = "arm")]
65509#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65510#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65511#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
65512pub unsafe fn vst1q_p64(ptr: *mut p64, a: poly64x2_t) {
65513 const ALIGN: i32 = crate::mem::align_of::<p64>() as i32;
65514 vst1q_v2i64::<ALIGN>(ptr as *const i8, transmute(a))
65515}
65516#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65517#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x2)"]
65518#[doc = "## Safety"]
65519#[doc = " * Neon instrinsic unsafe"]
65520#[inline]
65521#[cfg(target_arch = "arm")]
65522#[target_feature(enable = "neon,v7")]
65523#[cfg_attr(test, assert_instr(vst1))]
65524#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65525pub unsafe fn vst1_f32_x2(a: *mut f32, b: float32x2x2_t) {
65526 unsafe extern "unadjusted" {
65527 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v2f32.p0")]
65528 fn _vst1_f32_x2(ptr: *mut f32, a: float32x2_t, b: float32x2_t);
65529 }
65530 _vst1_f32_x2(a, b.0, b.1)
65531}
65532#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65533#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x2)"]
65534#[doc = "## Safety"]
65535#[doc = " * Neon instrinsic unsafe"]
65536#[inline]
65537#[cfg(target_arch = "arm")]
65538#[target_feature(enable = "neon,v7")]
65539#[cfg_attr(test, assert_instr(vst1))]
65540#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65541pub unsafe fn vst1q_f32_x2(a: *mut f32, b: float32x4x2_t) {
65542 unsafe extern "unadjusted" {
65543 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v4f32.p0")]
65544 fn _vst1q_f32_x2(ptr: *mut f32, a: float32x4_t, b: float32x4_t);
65545 }
65546 _vst1q_f32_x2(a, b.0, b.1)
65547}
65548#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65549#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x2)"]
65550#[doc = "## Safety"]
65551#[doc = " * Neon instrinsic unsafe"]
65552#[inline]
65553#[target_feature(enable = "neon")]
65554#[cfg(not(target_arch = "arm"))]
65555#[cfg_attr(test, assert_instr(st1))]
65556#[stable(feature = "neon_intrinsics", since = "1.59.0")]
65557pub unsafe fn vst1_f32_x2(a: *mut f32, b: float32x2x2_t) {
65558 unsafe extern "unadjusted" {
65559 #[cfg_attr(
65560 any(target_arch = "aarch64", target_arch = "arm64ec"),
65561 link_name = "llvm.aarch64.neon.st1x2.v2f32.p0"
65562 )]
65563 fn _vst1_f32_x2(a: float32x2_t, b: float32x2_t, ptr: *mut f32);
65564 }
65565 _vst1_f32_x2(b.0, b.1, a)
65566}
65567#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65568#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x2)"]
65569#[doc = "## Safety"]
65570#[doc = " * Neon instrinsic unsafe"]
65571#[inline]
65572#[target_feature(enable = "neon")]
65573#[cfg(not(target_arch = "arm"))]
65574#[cfg_attr(test, assert_instr(st1))]
65575#[stable(feature = "neon_intrinsics", since = "1.59.0")]
65576pub unsafe fn vst1q_f32_x2(a: *mut f32, b: float32x4x2_t) {
65577 unsafe extern "unadjusted" {
65578 #[cfg_attr(
65579 any(target_arch = "aarch64", target_arch = "arm64ec"),
65580 link_name = "llvm.aarch64.neon.st1x2.v4f32.p0"
65581 )]
65582 fn _vst1q_f32_x2(a: float32x4_t, b: float32x4_t, ptr: *mut f32);
65583 }
65584 _vst1q_f32_x2(b.0, b.1, a)
65585}
65586#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65587#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x3)"]
65588#[doc = "## Safety"]
65589#[doc = " * Neon instrinsic unsafe"]
65590#[inline]
65591#[target_feature(enable = "neon")]
65592#[cfg(not(target_arch = "arm"))]
65593#[cfg_attr(test, assert_instr(st1))]
65594#[stable(feature = "neon_intrinsics", since = "1.59.0")]
65595pub unsafe fn vst1_f32_x3(a: *mut f32, b: float32x2x3_t) {
65596 unsafe extern "unadjusted" {
65597 #[cfg_attr(
65598 any(target_arch = "aarch64", target_arch = "arm64ec"),
65599 link_name = "llvm.aarch64.neon.st1x3.v2f32.p0"
65600 )]
65601 fn _vst1_f32_x3(a: float32x2_t, b: float32x2_t, c: float32x2_t, ptr: *mut f32);
65602 }
65603 _vst1_f32_x3(b.0, b.1, b.2, a)
65604}
65605#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65606#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x3)"]
65607#[doc = "## Safety"]
65608#[doc = " * Neon instrinsic unsafe"]
65609#[inline]
65610#[target_feature(enable = "neon")]
65611#[cfg(not(target_arch = "arm"))]
65612#[cfg_attr(test, assert_instr(st1))]
65613#[stable(feature = "neon_intrinsics", since = "1.59.0")]
65614pub unsafe fn vst1q_f32_x3(a: *mut f32, b: float32x4x3_t) {
65615 unsafe extern "unadjusted" {
65616 #[cfg_attr(
65617 any(target_arch = "aarch64", target_arch = "arm64ec"),
65618 link_name = "llvm.aarch64.neon.st1x3.v4f32.p0"
65619 )]
65620 fn _vst1q_f32_x3(a: float32x4_t, b: float32x4_t, c: float32x4_t, ptr: *mut f32);
65621 }
65622 _vst1q_f32_x3(b.0, b.1, b.2, a)
65623}
65624#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65625#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x4)"]
65626#[doc = "## Safety"]
65627#[doc = " * Neon instrinsic unsafe"]
65628#[inline]
65629#[cfg(target_arch = "arm")]
65630#[target_feature(enable = "neon,v7")]
65631#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65632#[cfg_attr(test, assert_instr(vst1))]
65633pub unsafe fn vst1_f32_x4(a: *mut f32, b: float32x2x4_t) {
65634 unsafe extern "unadjusted" {
65635 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v2f32.p0")]
65636 fn _vst1_f32_x4(
65637 ptr: *mut f32,
65638 a: float32x2_t,
65639 b: float32x2_t,
65640 c: float32x2_t,
65641 d: float32x2_t,
65642 );
65643 }
65644 _vst1_f32_x4(a, b.0, b.1, b.2, b.3)
65645}
65646#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65647#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x4)"]
65648#[doc = "## Safety"]
65649#[doc = " * Neon instrinsic unsafe"]
65650#[inline]
65651#[cfg(target_arch = "arm")]
65652#[target_feature(enable = "neon,v7")]
65653#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65654#[cfg_attr(test, assert_instr(vst1))]
65655pub unsafe fn vst1q_f32_x4(a: *mut f32, b: float32x4x4_t) {
65656 unsafe extern "unadjusted" {
65657 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v4f32.p0")]
65658 fn _vst1q_f32_x4(
65659 ptr: *mut f32,
65660 a: float32x4_t,
65661 b: float32x4_t,
65662 c: float32x4_t,
65663 d: float32x4_t,
65664 );
65665 }
65666 _vst1q_f32_x4(a, b.0, b.1, b.2, b.3)
65667}
65668#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65669#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x4)"]
65670#[doc = "## Safety"]
65671#[doc = " * Neon instrinsic unsafe"]
65672#[inline]
65673#[target_feature(enable = "neon")]
65674#[cfg(not(target_arch = "arm"))]
65675#[cfg_attr(test, assert_instr(st1))]
65676#[stable(feature = "neon_intrinsics", since = "1.59.0")]
65677pub unsafe fn vst1_f32_x4(a: *mut f32, b: float32x2x4_t) {
65678 unsafe extern "unadjusted" {
65679 #[cfg_attr(
65680 any(target_arch = "aarch64", target_arch = "arm64ec"),
65681 link_name = "llvm.aarch64.neon.st1x4.v2f32.p0"
65682 )]
65683 fn _vst1_f32_x4(
65684 a: float32x2_t,
65685 b: float32x2_t,
65686 c: float32x2_t,
65687 d: float32x2_t,
65688 ptr: *mut f32,
65689 );
65690 }
65691 _vst1_f32_x4(b.0, b.1, b.2, b.3, a)
65692}
65693#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65694#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x4)"]
65695#[doc = "## Safety"]
65696#[doc = " * Neon instrinsic unsafe"]
65697#[inline]
65698#[target_feature(enable = "neon")]
65699#[cfg(not(target_arch = "arm"))]
65700#[cfg_attr(test, assert_instr(st1))]
65701#[stable(feature = "neon_intrinsics", since = "1.59.0")]
65702pub unsafe fn vst1q_f32_x4(a: *mut f32, b: float32x4x4_t) {
65703 unsafe extern "unadjusted" {
65704 #[cfg_attr(
65705 any(target_arch = "aarch64", target_arch = "arm64ec"),
65706 link_name = "llvm.aarch64.neon.st1x4.v4f32.p0"
65707 )]
65708 fn _vst1q_f32_x4(
65709 a: float32x4_t,
65710 b: float32x4_t,
65711 c: float32x4_t,
65712 d: float32x4_t,
65713 ptr: *mut f32,
65714 );
65715 }
65716 _vst1q_f32_x4(b.0, b.1, b.2, b.3, a)
65717}
65718#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
65719#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_f16)"]
65720#[doc = "## Safety"]
65721#[doc = " * Neon instrinsic unsafe"]
65722#[inline]
65723#[target_feature(enable = "neon")]
65724#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65725#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
65726#[cfg_attr(
65727 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65728 assert_instr(nop, LANE = 0)
65729)]
65730#[rustc_legacy_const_generics(2)]
65731#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
65732#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65733#[cfg(not(target_arch = "arm64ec"))]
65734pub unsafe fn vst1_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4_t) {
65735 static_assert_uimm_bits!(LANE, 2);
65736 *a = simd_extract!(b, LANE as u32);
65737}
65738#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
65739#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_f16)"]
65740#[doc = "## Safety"]
65741#[doc = " * Neon instrinsic unsafe"]
65742#[inline]
65743#[target_feature(enable = "neon")]
65744#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65745#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
65746#[cfg_attr(
65747 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65748 assert_instr(nop, LANE = 0)
65749)]
65750#[rustc_legacy_const_generics(2)]
65751#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
65752#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65753#[cfg(not(target_arch = "arm64ec"))]
65754pub unsafe fn vst1q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8_t) {
65755 static_assert_uimm_bits!(LANE, 3);
65756 *a = simd_extract!(b, LANE as u32);
65757}
65758#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
65759#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_f32)"]
65760#[doc = "## Safety"]
65761#[doc = " * Neon instrinsic unsafe"]
65762#[inline]
65763#[target_feature(enable = "neon")]
65764#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65765#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
65766#[cfg_attr(
65767 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65768 assert_instr(nop, LANE = 0)
65769)]
65770#[rustc_legacy_const_generics(2)]
65771#[cfg_attr(
65772 not(target_arch = "arm"),
65773 stable(feature = "neon_intrinsics", since = "1.59.0")
65774)]
65775#[cfg_attr(
65776 target_arch = "arm",
65777 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65778)]
65779pub unsafe fn vst1_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2_t) {
65780 static_assert_uimm_bits!(LANE, 1);
65781 *a = simd_extract!(b, LANE as u32);
65782}
65783#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
65784#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_f32)"]
65785#[doc = "## Safety"]
65786#[doc = " * Neon instrinsic unsafe"]
65787#[inline]
65788#[target_feature(enable = "neon")]
65789#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65790#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
65791#[cfg_attr(
65792 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65793 assert_instr(nop, LANE = 0)
65794)]
65795#[rustc_legacy_const_generics(2)]
65796#[cfg_attr(
65797 not(target_arch = "arm"),
65798 stable(feature = "neon_intrinsics", since = "1.59.0")
65799)]
65800#[cfg_attr(
65801 target_arch = "arm",
65802 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65803)]
65804pub unsafe fn vst1q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4_t) {
65805 static_assert_uimm_bits!(LANE, 2);
65806 *a = simd_extract!(b, LANE as u32);
65807}
65808#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
65809#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_s8)"]
65810#[doc = "## Safety"]
65811#[doc = " * Neon instrinsic unsafe"]
65812#[inline]
65813#[target_feature(enable = "neon")]
65814#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65815#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
65816#[cfg_attr(
65817 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65818 assert_instr(nop, LANE = 0)
65819)]
65820#[rustc_legacy_const_generics(2)]
65821#[cfg_attr(
65822 not(target_arch = "arm"),
65823 stable(feature = "neon_intrinsics", since = "1.59.0")
65824)]
65825#[cfg_attr(
65826 target_arch = "arm",
65827 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65828)]
65829pub unsafe fn vst1_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8_t) {
65830 static_assert_uimm_bits!(LANE, 3);
65831 *a = simd_extract!(b, LANE as u32);
65832}
65833#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
65834#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_s8)"]
65835#[doc = "## Safety"]
65836#[doc = " * Neon instrinsic unsafe"]
65837#[inline]
65838#[target_feature(enable = "neon")]
65839#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65840#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
65841#[cfg_attr(
65842 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65843 assert_instr(nop, LANE = 0)
65844)]
65845#[rustc_legacy_const_generics(2)]
65846#[cfg_attr(
65847 not(target_arch = "arm"),
65848 stable(feature = "neon_intrinsics", since = "1.59.0")
65849)]
65850#[cfg_attr(
65851 target_arch = "arm",
65852 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65853)]
65854pub unsafe fn vst1q_lane_s8<const LANE: i32>(a: *mut i8, b: int8x16_t) {
65855 static_assert_uimm_bits!(LANE, 4);
65856 *a = simd_extract!(b, LANE as u32);
65857}
65858#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
65859#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_s16)"]
65860#[doc = "## Safety"]
65861#[doc = " * Neon instrinsic unsafe"]
65862#[inline]
65863#[target_feature(enable = "neon")]
65864#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65865#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
65866#[cfg_attr(
65867 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65868 assert_instr(nop, LANE = 0)
65869)]
65870#[rustc_legacy_const_generics(2)]
65871#[cfg_attr(
65872 not(target_arch = "arm"),
65873 stable(feature = "neon_intrinsics", since = "1.59.0")
65874)]
65875#[cfg_attr(
65876 target_arch = "arm",
65877 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65878)]
65879pub unsafe fn vst1_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4_t) {
65880 static_assert_uimm_bits!(LANE, 2);
65881 *a = simd_extract!(b, LANE as u32);
65882}
65883#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
65884#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_s16)"]
65885#[doc = "## Safety"]
65886#[doc = " * Neon instrinsic unsafe"]
65887#[inline]
65888#[target_feature(enable = "neon")]
65889#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65890#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
65891#[cfg_attr(
65892 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65893 assert_instr(nop, LANE = 0)
65894)]
65895#[rustc_legacy_const_generics(2)]
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 unsafe fn vst1q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8_t) {
65905 static_assert_uimm_bits!(LANE, 3);
65906 *a = simd_extract!(b, LANE as u32);
65907}
65908#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
65909#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_s32)"]
65910#[doc = "## Safety"]
65911#[doc = " * Neon instrinsic unsafe"]
65912#[inline]
65913#[target_feature(enable = "neon")]
65914#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65915#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
65916#[cfg_attr(
65917 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65918 assert_instr(nop, LANE = 0)
65919)]
65920#[rustc_legacy_const_generics(2)]
65921#[cfg_attr(
65922 not(target_arch = "arm"),
65923 stable(feature = "neon_intrinsics", since = "1.59.0")
65924)]
65925#[cfg_attr(
65926 target_arch = "arm",
65927 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65928)]
65929pub unsafe fn vst1_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2_t) {
65930 static_assert_uimm_bits!(LANE, 1);
65931 *a = simd_extract!(b, LANE as u32);
65932}
65933#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
65934#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_s32)"]
65935#[doc = "## Safety"]
65936#[doc = " * Neon instrinsic unsafe"]
65937#[inline]
65938#[target_feature(enable = "neon")]
65939#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65940#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
65941#[cfg_attr(
65942 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65943 assert_instr(nop, LANE = 0)
65944)]
65945#[rustc_legacy_const_generics(2)]
65946#[cfg_attr(
65947 not(target_arch = "arm"),
65948 stable(feature = "neon_intrinsics", since = "1.59.0")
65949)]
65950#[cfg_attr(
65951 target_arch = "arm",
65952 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65953)]
65954pub unsafe fn vst1q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4_t) {
65955 static_assert_uimm_bits!(LANE, 2);
65956 *a = simd_extract!(b, LANE as u32);
65957}
65958#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
65959#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_s64)"]
65960#[doc = "## Safety"]
65961#[doc = " * Neon instrinsic unsafe"]
65962#[inline]
65963#[target_feature(enable = "neon")]
65964#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65965#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
65966#[cfg_attr(
65967 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65968 assert_instr(nop, LANE = 0)
65969)]
65970#[rustc_legacy_const_generics(2)]
65971#[cfg_attr(
65972 not(target_arch = "arm"),
65973 stable(feature = "neon_intrinsics", since = "1.59.0")
65974)]
65975#[cfg_attr(
65976 target_arch = "arm",
65977 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65978)]
65979pub unsafe fn vst1q_lane_s64<const LANE: i32>(a: *mut i64, b: int64x2_t) {
65980 static_assert_uimm_bits!(LANE, 1);
65981 *a = simd_extract!(b, LANE as u32);
65982}
65983#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
65984#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_u8)"]
65985#[doc = "## Safety"]
65986#[doc = " * Neon instrinsic unsafe"]
65987#[inline]
65988#[target_feature(enable = "neon")]
65989#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65990#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
65991#[cfg_attr(
65992 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65993 assert_instr(nop, LANE = 0)
65994)]
65995#[rustc_legacy_const_generics(2)]
65996#[cfg_attr(
65997 not(target_arch = "arm"),
65998 stable(feature = "neon_intrinsics", since = "1.59.0")
65999)]
66000#[cfg_attr(
66001 target_arch = "arm",
66002 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66003)]
66004pub unsafe fn vst1_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x8_t) {
66005 static_assert_uimm_bits!(LANE, 3);
66006 *a = simd_extract!(b, LANE as u32);
66007}
66008#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66009#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_u8)"]
66010#[doc = "## Safety"]
66011#[doc = " * Neon instrinsic unsafe"]
66012#[inline]
66013#[target_feature(enable = "neon")]
66014#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66015#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
66016#[cfg_attr(
66017 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66018 assert_instr(nop, LANE = 0)
66019)]
66020#[rustc_legacy_const_generics(2)]
66021#[cfg_attr(
66022 not(target_arch = "arm"),
66023 stable(feature = "neon_intrinsics", since = "1.59.0")
66024)]
66025#[cfg_attr(
66026 target_arch = "arm",
66027 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66028)]
66029pub unsafe fn vst1q_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x16_t) {
66030 static_assert_uimm_bits!(LANE, 4);
66031 *a = simd_extract!(b, LANE as u32);
66032}
66033#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66034#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_u16)"]
66035#[doc = "## Safety"]
66036#[doc = " * Neon instrinsic unsafe"]
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(nop, LANE = 0))]
66041#[cfg_attr(
66042 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66043 assert_instr(nop, LANE = 0)
66044)]
66045#[rustc_legacy_const_generics(2)]
66046#[cfg_attr(
66047 not(target_arch = "arm"),
66048 stable(feature = "neon_intrinsics", since = "1.59.0")
66049)]
66050#[cfg_attr(
66051 target_arch = "arm",
66052 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66053)]
66054pub unsafe fn vst1_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x4_t) {
66055 static_assert_uimm_bits!(LANE, 2);
66056 *a = simd_extract!(b, LANE as u32);
66057}
66058#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66059#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_u16)"]
66060#[doc = "## Safety"]
66061#[doc = " * Neon instrinsic unsafe"]
66062#[inline]
66063#[target_feature(enable = "neon")]
66064#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66065#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
66066#[cfg_attr(
66067 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66068 assert_instr(nop, LANE = 0)
66069)]
66070#[rustc_legacy_const_generics(2)]
66071#[cfg_attr(
66072 not(target_arch = "arm"),
66073 stable(feature = "neon_intrinsics", since = "1.59.0")
66074)]
66075#[cfg_attr(
66076 target_arch = "arm",
66077 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66078)]
66079pub unsafe fn vst1q_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x8_t) {
66080 static_assert_uimm_bits!(LANE, 3);
66081 *a = simd_extract!(b, LANE as u32);
66082}
66083#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66084#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_u32)"]
66085#[doc = "## Safety"]
66086#[doc = " * Neon instrinsic unsafe"]
66087#[inline]
66088#[target_feature(enable = "neon")]
66089#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66090#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
66091#[cfg_attr(
66092 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66093 assert_instr(nop, LANE = 0)
66094)]
66095#[rustc_legacy_const_generics(2)]
66096#[cfg_attr(
66097 not(target_arch = "arm"),
66098 stable(feature = "neon_intrinsics", since = "1.59.0")
66099)]
66100#[cfg_attr(
66101 target_arch = "arm",
66102 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66103)]
66104pub unsafe fn vst1_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x2_t) {
66105 static_assert_uimm_bits!(LANE, 1);
66106 *a = simd_extract!(b, LANE as u32);
66107}
66108#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66109#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_u32)"]
66110#[doc = "## Safety"]
66111#[doc = " * Neon instrinsic unsafe"]
66112#[inline]
66113#[target_feature(enable = "neon")]
66114#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66115#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
66116#[cfg_attr(
66117 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66118 assert_instr(nop, LANE = 0)
66119)]
66120#[rustc_legacy_const_generics(2)]
66121#[cfg_attr(
66122 not(target_arch = "arm"),
66123 stable(feature = "neon_intrinsics", since = "1.59.0")
66124)]
66125#[cfg_attr(
66126 target_arch = "arm",
66127 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66128)]
66129pub unsafe fn vst1q_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x4_t) {
66130 static_assert_uimm_bits!(LANE, 2);
66131 *a = simd_extract!(b, LANE as u32);
66132}
66133#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66134#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_u64)"]
66135#[doc = "## Safety"]
66136#[doc = " * Neon instrinsic unsafe"]
66137#[inline]
66138#[target_feature(enable = "neon")]
66139#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66140#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
66141#[cfg_attr(
66142 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66143 assert_instr(nop, LANE = 0)
66144)]
66145#[rustc_legacy_const_generics(2)]
66146#[cfg_attr(
66147 not(target_arch = "arm"),
66148 stable(feature = "neon_intrinsics", since = "1.59.0")
66149)]
66150#[cfg_attr(
66151 target_arch = "arm",
66152 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66153)]
66154pub unsafe fn vst1q_lane_u64<const LANE: i32>(a: *mut u64, b: uint64x2_t) {
66155 static_assert_uimm_bits!(LANE, 1);
66156 *a = simd_extract!(b, LANE as u32);
66157}
66158#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66159#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_p8)"]
66160#[doc = "## Safety"]
66161#[doc = " * Neon instrinsic unsafe"]
66162#[inline]
66163#[target_feature(enable = "neon")]
66164#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66165#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
66166#[cfg_attr(
66167 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66168 assert_instr(nop, LANE = 0)
66169)]
66170#[rustc_legacy_const_generics(2)]
66171#[cfg_attr(
66172 not(target_arch = "arm"),
66173 stable(feature = "neon_intrinsics", since = "1.59.0")
66174)]
66175#[cfg_attr(
66176 target_arch = "arm",
66177 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66178)]
66179pub unsafe fn vst1_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x8_t) {
66180 static_assert_uimm_bits!(LANE, 3);
66181 *a = simd_extract!(b, LANE as u32);
66182}
66183#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66184#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_p8)"]
66185#[doc = "## Safety"]
66186#[doc = " * Neon instrinsic unsafe"]
66187#[inline]
66188#[target_feature(enable = "neon")]
66189#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66190#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
66191#[cfg_attr(
66192 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66193 assert_instr(nop, LANE = 0)
66194)]
66195#[rustc_legacy_const_generics(2)]
66196#[cfg_attr(
66197 not(target_arch = "arm"),
66198 stable(feature = "neon_intrinsics", since = "1.59.0")
66199)]
66200#[cfg_attr(
66201 target_arch = "arm",
66202 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66203)]
66204pub unsafe fn vst1q_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x16_t) {
66205 static_assert_uimm_bits!(LANE, 4);
66206 *a = simd_extract!(b, LANE as u32);
66207}
66208#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66209#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_p16)"]
66210#[doc = "## Safety"]
66211#[doc = " * Neon instrinsic unsafe"]
66212#[inline]
66213#[target_feature(enable = "neon")]
66214#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66215#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
66216#[cfg_attr(
66217 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66218 assert_instr(nop, LANE = 0)
66219)]
66220#[rustc_legacy_const_generics(2)]
66221#[cfg_attr(
66222 not(target_arch = "arm"),
66223 stable(feature = "neon_intrinsics", since = "1.59.0")
66224)]
66225#[cfg_attr(
66226 target_arch = "arm",
66227 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66228)]
66229pub unsafe fn vst1_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x4_t) {
66230 static_assert_uimm_bits!(LANE, 2);
66231 *a = simd_extract!(b, LANE as u32);
66232}
66233#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66234#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_p16)"]
66235#[doc = "## Safety"]
66236#[doc = " * Neon instrinsic unsafe"]
66237#[inline]
66238#[target_feature(enable = "neon")]
66239#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66240#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
66241#[cfg_attr(
66242 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66243 assert_instr(nop, LANE = 0)
66244)]
66245#[rustc_legacy_const_generics(2)]
66246#[cfg_attr(
66247 not(target_arch = "arm"),
66248 stable(feature = "neon_intrinsics", since = "1.59.0")
66249)]
66250#[cfg_attr(
66251 target_arch = "arm",
66252 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66253)]
66254pub unsafe fn vst1q_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x8_t) {
66255 static_assert_uimm_bits!(LANE, 3);
66256 *a = simd_extract!(b, LANE as u32);
66257}
66258#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66259#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_p64)"]
66260#[doc = "## Safety"]
66261#[doc = " * Neon instrinsic unsafe"]
66262#[inline]
66263#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
66264#[target_feature(enable = "neon,aes")]
66265#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
66266#[cfg_attr(
66267 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66268 assert_instr(nop, LANE = 0)
66269)]
66270#[rustc_legacy_const_generics(2)]
66271#[cfg_attr(
66272 not(target_arch = "arm"),
66273 stable(feature = "neon_intrinsics", since = "1.59.0")
66274)]
66275#[cfg_attr(
66276 target_arch = "arm",
66277 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66278)]
66279pub unsafe fn vst1_lane_p64<const LANE: i32>(a: *mut p64, b: poly64x1_t) {
66280 static_assert!(LANE == 0);
66281 *a = simd_extract!(b, LANE as u32);
66282}
66283#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66284#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_s64)"]
66285#[doc = "## Safety"]
66286#[doc = " * Neon instrinsic unsafe"]
66287#[inline]
66288#[target_feature(enable = "neon")]
66289#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66290#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
66291#[cfg_attr(
66292 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66293 assert_instr(nop, LANE = 0)
66294)]
66295#[rustc_legacy_const_generics(2)]
66296#[cfg_attr(
66297 not(target_arch = "arm"),
66298 stable(feature = "neon_intrinsics", since = "1.59.0")
66299)]
66300#[cfg_attr(
66301 target_arch = "arm",
66302 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66303)]
66304pub unsafe fn vst1_lane_s64<const LANE: i32>(a: *mut i64, b: int64x1_t) {
66305 static_assert!(LANE == 0);
66306 *a = simd_extract!(b, LANE as u32);
66307}
66308#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66309#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_u64)"]
66310#[doc = "## Safety"]
66311#[doc = " * Neon instrinsic unsafe"]
66312#[inline]
66313#[target_feature(enable = "neon")]
66314#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66315#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
66316#[cfg_attr(
66317 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66318 assert_instr(nop, LANE = 0)
66319)]
66320#[rustc_legacy_const_generics(2)]
66321#[cfg_attr(
66322 not(target_arch = "arm"),
66323 stable(feature = "neon_intrinsics", since = "1.59.0")
66324)]
66325#[cfg_attr(
66326 target_arch = "arm",
66327 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66328)]
66329pub unsafe fn vst1_lane_u64<const LANE: i32>(a: *mut u64, b: uint64x1_t) {
66330 static_assert!(LANE == 0);
66331 *a = simd_extract!(b, LANE as u32);
66332}
66333#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
66334#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p64_x2)"]
66335#[doc = "## Safety"]
66336#[doc = " * Neon instrinsic unsafe"]
66337#[inline]
66338#[target_feature(enable = "neon,aes")]
66339#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
66340#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
66341#[cfg_attr(
66342 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66343 assert_instr(st1)
66344)]
66345#[cfg_attr(
66346 not(target_arch = "arm"),
66347 stable(feature = "neon_intrinsics", since = "1.59.0")
66348)]
66349#[cfg_attr(
66350 target_arch = "arm",
66351 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66352)]
66353pub unsafe fn vst1_p64_x2(a: *mut p64, b: poly64x1x2_t) {
66354 vst1_s64_x2(transmute(a), transmute(b))
66355}
66356#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
66357#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p64_x3)"]
66358#[doc = "## Safety"]
66359#[doc = " * Neon instrinsic unsafe"]
66360#[inline]
66361#[target_feature(enable = "neon,aes")]
66362#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
66363#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
66364#[cfg_attr(
66365 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66366 assert_instr(st1)
66367)]
66368#[cfg_attr(
66369 not(target_arch = "arm"),
66370 stable(feature = "neon_intrinsics", since = "1.59.0")
66371)]
66372#[cfg_attr(
66373 target_arch = "arm",
66374 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66375)]
66376pub unsafe fn vst1_p64_x3(a: *mut p64, b: poly64x1x3_t) {
66377 vst1_s64_x3(transmute(a), transmute(b))
66378}
66379#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
66380#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p64_x4)"]
66381#[doc = "## Safety"]
66382#[doc = " * Neon instrinsic unsafe"]
66383#[inline]
66384#[target_feature(enable = "neon,aes")]
66385#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
66386#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
66387#[cfg_attr(
66388 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66389 assert_instr(st1)
66390)]
66391#[cfg_attr(
66392 not(target_arch = "arm"),
66393 stable(feature = "neon_intrinsics", since = "1.59.0")
66394)]
66395#[cfg_attr(
66396 target_arch = "arm",
66397 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66398)]
66399pub unsafe fn vst1_p64_x4(a: *mut p64, b: poly64x1x4_t) {
66400 vst1_s64_x4(transmute(a), transmute(b))
66401}
66402#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
66403#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p64_x2)"]
66404#[doc = "## Safety"]
66405#[doc = " * Neon instrinsic unsafe"]
66406#[inline]
66407#[target_feature(enable = "neon,aes")]
66408#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
66409#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
66410#[cfg_attr(
66411 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66412 assert_instr(st1)
66413)]
66414#[cfg_attr(
66415 not(target_arch = "arm"),
66416 stable(feature = "neon_intrinsics", since = "1.59.0")
66417)]
66418#[cfg_attr(
66419 target_arch = "arm",
66420 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66421)]
66422pub unsafe fn vst1q_p64_x2(a: *mut p64, b: poly64x2x2_t) {
66423 vst1q_s64_x2(transmute(a), transmute(b))
66424}
66425#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
66426#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p64_x3)"]
66427#[doc = "## Safety"]
66428#[doc = " * Neon instrinsic unsafe"]
66429#[inline]
66430#[target_feature(enable = "neon,aes")]
66431#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
66432#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
66433#[cfg_attr(
66434 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66435 assert_instr(st1)
66436)]
66437#[cfg_attr(
66438 not(target_arch = "arm"),
66439 stable(feature = "neon_intrinsics", since = "1.59.0")
66440)]
66441#[cfg_attr(
66442 target_arch = "arm",
66443 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66444)]
66445pub unsafe fn vst1q_p64_x3(a: *mut p64, b: poly64x2x3_t) {
66446 vst1q_s64_x3(transmute(a), transmute(b))
66447}
66448#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
66449#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p64_x4)"]
66450#[doc = "## Safety"]
66451#[doc = " * Neon instrinsic unsafe"]
66452#[inline]
66453#[target_feature(enable = "neon,aes")]
66454#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
66455#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
66456#[cfg_attr(
66457 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66458 assert_instr(st1)
66459)]
66460#[cfg_attr(
66461 not(target_arch = "arm"),
66462 stable(feature = "neon_intrinsics", since = "1.59.0")
66463)]
66464#[cfg_attr(
66465 target_arch = "arm",
66466 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66467)]
66468pub unsafe fn vst1q_p64_x4(a: *mut p64, b: poly64x2x4_t) {
66469 vst1q_s64_x4(transmute(a), transmute(b))
66470}
66471#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66472#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x2)"]
66473#[doc = "## Safety"]
66474#[doc = " * Neon instrinsic unsafe"]
66475#[inline]
66476#[target_feature(enable = "neon")]
66477#[cfg(not(target_arch = "arm"))]
66478#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66479#[cfg_attr(test, assert_instr(st1))]
66480pub unsafe fn vst1_s8_x2(a: *mut i8, b: int8x8x2_t) {
66481 unsafe extern "unadjusted" {
66482 #[cfg_attr(
66483 any(target_arch = "aarch64", target_arch = "arm64ec"),
66484 link_name = "llvm.aarch64.neon.st1x2.v8i8.p0"
66485 )]
66486 fn _vst1_s8_x2(a: int8x8_t, b: int8x8_t, ptr: *mut i8);
66487 }
66488 _vst1_s8_x2(b.0, b.1, a)
66489}
66490#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66491#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x2)"]
66492#[doc = "## Safety"]
66493#[doc = " * Neon instrinsic unsafe"]
66494#[inline]
66495#[target_feature(enable = "neon")]
66496#[cfg(not(target_arch = "arm"))]
66497#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66498#[cfg_attr(test, assert_instr(st1))]
66499pub unsafe fn vst1q_s8_x2(a: *mut i8, b: int8x16x2_t) {
66500 unsafe extern "unadjusted" {
66501 #[cfg_attr(
66502 any(target_arch = "aarch64", target_arch = "arm64ec"),
66503 link_name = "llvm.aarch64.neon.st1x2.v16i8.p0"
66504 )]
66505 fn _vst1q_s8_x2(a: int8x16_t, b: int8x16_t, ptr: *mut i8);
66506 }
66507 _vst1q_s8_x2(b.0, b.1, a)
66508}
66509#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66510#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x2)"]
66511#[doc = "## Safety"]
66512#[doc = " * Neon instrinsic unsafe"]
66513#[inline]
66514#[target_feature(enable = "neon")]
66515#[cfg(not(target_arch = "arm"))]
66516#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66517#[cfg_attr(test, assert_instr(st1))]
66518pub unsafe fn vst1_s16_x2(a: *mut i16, b: int16x4x2_t) {
66519 unsafe extern "unadjusted" {
66520 #[cfg_attr(
66521 any(target_arch = "aarch64", target_arch = "arm64ec"),
66522 link_name = "llvm.aarch64.neon.st1x2.v4i16.p0"
66523 )]
66524 fn _vst1_s16_x2(a: int16x4_t, b: int16x4_t, ptr: *mut i16);
66525 }
66526 _vst1_s16_x2(b.0, b.1, a)
66527}
66528#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66529#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x2)"]
66530#[doc = "## Safety"]
66531#[doc = " * Neon instrinsic unsafe"]
66532#[inline]
66533#[target_feature(enable = "neon")]
66534#[cfg(not(target_arch = "arm"))]
66535#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66536#[cfg_attr(test, assert_instr(st1))]
66537pub unsafe fn vst1q_s16_x2(a: *mut i16, b: int16x8x2_t) {
66538 unsafe extern "unadjusted" {
66539 #[cfg_attr(
66540 any(target_arch = "aarch64", target_arch = "arm64ec"),
66541 link_name = "llvm.aarch64.neon.st1x2.v8i16.p0"
66542 )]
66543 fn _vst1q_s16_x2(a: int16x8_t, b: int16x8_t, ptr: *mut i16);
66544 }
66545 _vst1q_s16_x2(b.0, b.1, a)
66546}
66547#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66548#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x2)"]
66549#[doc = "## Safety"]
66550#[doc = " * Neon instrinsic unsafe"]
66551#[inline]
66552#[target_feature(enable = "neon")]
66553#[cfg(not(target_arch = "arm"))]
66554#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66555#[cfg_attr(test, assert_instr(st1))]
66556pub unsafe fn vst1_s32_x2(a: *mut i32, b: int32x2x2_t) {
66557 unsafe extern "unadjusted" {
66558 #[cfg_attr(
66559 any(target_arch = "aarch64", target_arch = "arm64ec"),
66560 link_name = "llvm.aarch64.neon.st1x2.v2i32.p0"
66561 )]
66562 fn _vst1_s32_x2(a: int32x2_t, b: int32x2_t, ptr: *mut i32);
66563 }
66564 _vst1_s32_x2(b.0, b.1, a)
66565}
66566#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66567#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x2)"]
66568#[doc = "## Safety"]
66569#[doc = " * Neon instrinsic unsafe"]
66570#[inline]
66571#[target_feature(enable = "neon")]
66572#[cfg(not(target_arch = "arm"))]
66573#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66574#[cfg_attr(test, assert_instr(st1))]
66575pub unsafe fn vst1q_s32_x2(a: *mut i32, b: int32x4x2_t) {
66576 unsafe extern "unadjusted" {
66577 #[cfg_attr(
66578 any(target_arch = "aarch64", target_arch = "arm64ec"),
66579 link_name = "llvm.aarch64.neon.st1x2.v4i32.p0"
66580 )]
66581 fn _vst1q_s32_x2(a: int32x4_t, b: int32x4_t, ptr: *mut i32);
66582 }
66583 _vst1q_s32_x2(b.0, b.1, a)
66584}
66585#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66586#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x2)"]
66587#[doc = "## Safety"]
66588#[doc = " * Neon instrinsic unsafe"]
66589#[inline]
66590#[target_feature(enable = "neon")]
66591#[cfg(not(target_arch = "arm"))]
66592#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66593#[cfg_attr(test, assert_instr(st1))]
66594pub unsafe fn vst1_s64_x2(a: *mut i64, b: int64x1x2_t) {
66595 unsafe extern "unadjusted" {
66596 #[cfg_attr(
66597 any(target_arch = "aarch64", target_arch = "arm64ec"),
66598 link_name = "llvm.aarch64.neon.st1x2.v1i64.p0"
66599 )]
66600 fn _vst1_s64_x2(a: int64x1_t, b: int64x1_t, ptr: *mut i64);
66601 }
66602 _vst1_s64_x2(b.0, b.1, a)
66603}
66604#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66605#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x2)"]
66606#[doc = "## Safety"]
66607#[doc = " * Neon instrinsic unsafe"]
66608#[inline]
66609#[target_feature(enable = "neon")]
66610#[cfg(not(target_arch = "arm"))]
66611#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66612#[cfg_attr(test, assert_instr(st1))]
66613pub unsafe fn vst1q_s64_x2(a: *mut i64, b: int64x2x2_t) {
66614 unsafe extern "unadjusted" {
66615 #[cfg_attr(
66616 any(target_arch = "aarch64", target_arch = "arm64ec"),
66617 link_name = "llvm.aarch64.neon.st1x2.v2i64.p0"
66618 )]
66619 fn _vst1q_s64_x2(a: int64x2_t, b: int64x2_t, ptr: *mut i64);
66620 }
66621 _vst1q_s64_x2(b.0, b.1, a)
66622}
66623#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66624#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x2)"]
66625#[doc = "## Safety"]
66626#[doc = " * Neon instrinsic unsafe"]
66627#[inline]
66628#[target_feature(enable = "neon,v7")]
66629#[cfg(target_arch = "arm")]
66630#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66631#[cfg_attr(test, assert_instr(vst1))]
66632pub unsafe fn vst1_s8_x2(a: *mut i8, b: int8x8x2_t) {
66633 unsafe extern "unadjusted" {
66634 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v8i8.p0")]
66635 fn _vst1_s8_x2(ptr: *mut i8, a: int8x8_t, b: int8x8_t);
66636 }
66637 _vst1_s8_x2(a, b.0, b.1)
66638}
66639#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66640#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x2)"]
66641#[doc = "## Safety"]
66642#[doc = " * Neon instrinsic unsafe"]
66643#[inline]
66644#[target_feature(enable = "neon,v7")]
66645#[cfg(target_arch = "arm")]
66646#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66647#[cfg_attr(test, assert_instr(vst1))]
66648pub unsafe fn vst1q_s8_x2(a: *mut i8, b: int8x16x2_t) {
66649 unsafe extern "unadjusted" {
66650 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v16i8.p0")]
66651 fn _vst1q_s8_x2(ptr: *mut i8, a: int8x16_t, b: int8x16_t);
66652 }
66653 _vst1q_s8_x2(a, b.0, b.1)
66654}
66655#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66656#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x2)"]
66657#[doc = "## Safety"]
66658#[doc = " * Neon instrinsic unsafe"]
66659#[inline]
66660#[target_feature(enable = "neon,v7")]
66661#[cfg(target_arch = "arm")]
66662#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66663#[cfg_attr(test, assert_instr(vst1))]
66664pub unsafe fn vst1_s16_x2(a: *mut i16, b: int16x4x2_t) {
66665 unsafe extern "unadjusted" {
66666 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v4i16.p0")]
66667 fn _vst1_s16_x2(ptr: *mut i16, a: int16x4_t, b: int16x4_t);
66668 }
66669 _vst1_s16_x2(a, b.0, b.1)
66670}
66671#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66672#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x2)"]
66673#[doc = "## Safety"]
66674#[doc = " * Neon instrinsic unsafe"]
66675#[inline]
66676#[target_feature(enable = "neon,v7")]
66677#[cfg(target_arch = "arm")]
66678#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66679#[cfg_attr(test, assert_instr(vst1))]
66680pub unsafe fn vst1q_s16_x2(a: *mut i16, b: int16x8x2_t) {
66681 unsafe extern "unadjusted" {
66682 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v8i16.p0")]
66683 fn _vst1q_s16_x2(ptr: *mut i16, a: int16x8_t, b: int16x8_t);
66684 }
66685 _vst1q_s16_x2(a, b.0, b.1)
66686}
66687#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66688#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x2)"]
66689#[doc = "## Safety"]
66690#[doc = " * Neon instrinsic unsafe"]
66691#[inline]
66692#[target_feature(enable = "neon,v7")]
66693#[cfg(target_arch = "arm")]
66694#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66695#[cfg_attr(test, assert_instr(vst1))]
66696pub unsafe fn vst1_s32_x2(a: *mut i32, b: int32x2x2_t) {
66697 unsafe extern "unadjusted" {
66698 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v2i32.p0")]
66699 fn _vst1_s32_x2(ptr: *mut i32, a: int32x2_t, b: int32x2_t);
66700 }
66701 _vst1_s32_x2(a, b.0, b.1)
66702}
66703#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66704#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x2)"]
66705#[doc = "## Safety"]
66706#[doc = " * Neon instrinsic unsafe"]
66707#[inline]
66708#[target_feature(enable = "neon,v7")]
66709#[cfg(target_arch = "arm")]
66710#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66711#[cfg_attr(test, assert_instr(vst1))]
66712pub unsafe fn vst1q_s32_x2(a: *mut i32, b: int32x4x2_t) {
66713 unsafe extern "unadjusted" {
66714 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v4i32.p0")]
66715 fn _vst1q_s32_x2(ptr: *mut i32, a: int32x4_t, b: int32x4_t);
66716 }
66717 _vst1q_s32_x2(a, b.0, b.1)
66718}
66719#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66720#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x2)"]
66721#[doc = "## Safety"]
66722#[doc = " * Neon instrinsic unsafe"]
66723#[inline]
66724#[target_feature(enable = "neon,v7")]
66725#[cfg(target_arch = "arm")]
66726#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66727#[cfg_attr(test, assert_instr(vst1))]
66728pub unsafe fn vst1_s64_x2(a: *mut i64, b: int64x1x2_t) {
66729 unsafe extern "unadjusted" {
66730 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v1i64.p0")]
66731 fn _vst1_s64_x2(ptr: *mut i64, a: int64x1_t, b: int64x1_t);
66732 }
66733 _vst1_s64_x2(a, b.0, b.1)
66734}
66735#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66736#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x2)"]
66737#[doc = "## Safety"]
66738#[doc = " * Neon instrinsic unsafe"]
66739#[inline]
66740#[target_feature(enable = "neon,v7")]
66741#[cfg(target_arch = "arm")]
66742#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66743#[cfg_attr(test, assert_instr(vst1))]
66744pub unsafe fn vst1q_s64_x2(a: *mut i64, b: int64x2x2_t) {
66745 unsafe extern "unadjusted" {
66746 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v2i64.p0")]
66747 fn _vst1q_s64_x2(ptr: *mut i64, a: int64x2_t, b: int64x2_t);
66748 }
66749 _vst1q_s64_x2(a, b.0, b.1)
66750}
66751#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66752#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x3)"]
66753#[doc = "## Safety"]
66754#[doc = " * Neon instrinsic unsafe"]
66755#[inline]
66756#[target_feature(enable = "neon")]
66757#[cfg(not(target_arch = "arm"))]
66758#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66759#[cfg_attr(test, assert_instr(st1))]
66760pub unsafe fn vst1_s8_x3(a: *mut i8, b: int8x8x3_t) {
66761 unsafe extern "unadjusted" {
66762 #[cfg_attr(
66763 any(target_arch = "aarch64", target_arch = "arm64ec"),
66764 link_name = "llvm.aarch64.neon.st1x3.v8i8.p0"
66765 )]
66766 fn _vst1_s8_x3(a: int8x8_t, b: int8x8_t, c: int8x8_t, ptr: *mut i8);
66767 }
66768 _vst1_s8_x3(b.0, b.1, b.2, a)
66769}
66770#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66771#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x3)"]
66772#[doc = "## Safety"]
66773#[doc = " * Neon instrinsic unsafe"]
66774#[inline]
66775#[target_feature(enable = "neon")]
66776#[cfg(not(target_arch = "arm"))]
66777#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66778#[cfg_attr(test, assert_instr(st1))]
66779pub unsafe fn vst1q_s8_x3(a: *mut i8, b: int8x16x3_t) {
66780 unsafe extern "unadjusted" {
66781 #[cfg_attr(
66782 any(target_arch = "aarch64", target_arch = "arm64ec"),
66783 link_name = "llvm.aarch64.neon.st1x3.v16i8.p0"
66784 )]
66785 fn _vst1q_s8_x3(a: int8x16_t, b: int8x16_t, c: int8x16_t, ptr: *mut i8);
66786 }
66787 _vst1q_s8_x3(b.0, b.1, b.2, a)
66788}
66789#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66790#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x3)"]
66791#[doc = "## Safety"]
66792#[doc = " * Neon instrinsic unsafe"]
66793#[inline]
66794#[target_feature(enable = "neon")]
66795#[cfg(not(target_arch = "arm"))]
66796#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66797#[cfg_attr(test, assert_instr(st1))]
66798pub unsafe fn vst1_s16_x3(a: *mut i16, b: int16x4x3_t) {
66799 unsafe extern "unadjusted" {
66800 #[cfg_attr(
66801 any(target_arch = "aarch64", target_arch = "arm64ec"),
66802 link_name = "llvm.aarch64.neon.st1x3.v4i16.p0"
66803 )]
66804 fn _vst1_s16_x3(a: int16x4_t, b: int16x4_t, c: int16x4_t, ptr: *mut i16);
66805 }
66806 _vst1_s16_x3(b.0, b.1, b.2, a)
66807}
66808#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66809#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x3)"]
66810#[doc = "## Safety"]
66811#[doc = " * Neon instrinsic unsafe"]
66812#[inline]
66813#[target_feature(enable = "neon")]
66814#[cfg(not(target_arch = "arm"))]
66815#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66816#[cfg_attr(test, assert_instr(st1))]
66817pub unsafe fn vst1q_s16_x3(a: *mut i16, b: int16x8x3_t) {
66818 unsafe extern "unadjusted" {
66819 #[cfg_attr(
66820 any(target_arch = "aarch64", target_arch = "arm64ec"),
66821 link_name = "llvm.aarch64.neon.st1x3.v8i16.p0"
66822 )]
66823 fn _vst1q_s16_x3(a: int16x8_t, b: int16x8_t, c: int16x8_t, ptr: *mut i16);
66824 }
66825 _vst1q_s16_x3(b.0, b.1, b.2, a)
66826}
66827#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66828#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x3)"]
66829#[doc = "## Safety"]
66830#[doc = " * Neon instrinsic unsafe"]
66831#[inline]
66832#[target_feature(enable = "neon")]
66833#[cfg(not(target_arch = "arm"))]
66834#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66835#[cfg_attr(test, assert_instr(st1))]
66836pub unsafe fn vst1_s32_x3(a: *mut i32, b: int32x2x3_t) {
66837 unsafe extern "unadjusted" {
66838 #[cfg_attr(
66839 any(target_arch = "aarch64", target_arch = "arm64ec"),
66840 link_name = "llvm.aarch64.neon.st1x3.v2i32.p0"
66841 )]
66842 fn _vst1_s32_x3(a: int32x2_t, b: int32x2_t, c: int32x2_t, ptr: *mut i32);
66843 }
66844 _vst1_s32_x3(b.0, b.1, b.2, a)
66845}
66846#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66847#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x3)"]
66848#[doc = "## Safety"]
66849#[doc = " * Neon instrinsic unsafe"]
66850#[inline]
66851#[target_feature(enable = "neon")]
66852#[cfg(not(target_arch = "arm"))]
66853#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66854#[cfg_attr(test, assert_instr(st1))]
66855pub unsafe fn vst1q_s32_x3(a: *mut i32, b: int32x4x3_t) {
66856 unsafe extern "unadjusted" {
66857 #[cfg_attr(
66858 any(target_arch = "aarch64", target_arch = "arm64ec"),
66859 link_name = "llvm.aarch64.neon.st1x3.v4i32.p0"
66860 )]
66861 fn _vst1q_s32_x3(a: int32x4_t, b: int32x4_t, c: int32x4_t, ptr: *mut i32);
66862 }
66863 _vst1q_s32_x3(b.0, b.1, b.2, a)
66864}
66865#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66866#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x3)"]
66867#[doc = "## Safety"]
66868#[doc = " * Neon instrinsic unsafe"]
66869#[inline]
66870#[target_feature(enable = "neon")]
66871#[cfg(not(target_arch = "arm"))]
66872#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66873#[cfg_attr(test, assert_instr(st1))]
66874pub unsafe fn vst1_s64_x3(a: *mut i64, b: int64x1x3_t) {
66875 unsafe extern "unadjusted" {
66876 #[cfg_attr(
66877 any(target_arch = "aarch64", target_arch = "arm64ec"),
66878 link_name = "llvm.aarch64.neon.st1x3.v1i64.p0"
66879 )]
66880 fn _vst1_s64_x3(a: int64x1_t, b: int64x1_t, c: int64x1_t, ptr: *mut i64);
66881 }
66882 _vst1_s64_x3(b.0, b.1, b.2, a)
66883}
66884#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66885#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x3)"]
66886#[doc = "## Safety"]
66887#[doc = " * Neon instrinsic unsafe"]
66888#[inline]
66889#[target_feature(enable = "neon")]
66890#[cfg(not(target_arch = "arm"))]
66891#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66892#[cfg_attr(test, assert_instr(st1))]
66893pub unsafe fn vst1q_s64_x3(a: *mut i64, b: int64x2x3_t) {
66894 unsafe extern "unadjusted" {
66895 #[cfg_attr(
66896 any(target_arch = "aarch64", target_arch = "arm64ec"),
66897 link_name = "llvm.aarch64.neon.st1x3.v2i64.p0"
66898 )]
66899 fn _vst1q_s64_x3(a: int64x2_t, b: int64x2_t, c: int64x2_t, ptr: *mut i64);
66900 }
66901 _vst1q_s64_x3(b.0, b.1, b.2, a)
66902}
66903#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66904#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x3)"]
66905#[doc = "## Safety"]
66906#[doc = " * Neon instrinsic unsafe"]
66907#[inline]
66908#[target_feature(enable = "neon,v7")]
66909#[cfg(target_arch = "arm")]
66910#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66911#[cfg_attr(test, assert_instr(vst1))]
66912pub unsafe fn vst1_s8_x3(a: *mut i8, b: int8x8x3_t) {
66913 unsafe extern "unadjusted" {
66914 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v8i8.p0")]
66915 fn _vst1_s8_x3(ptr: *mut i8, a: int8x8_t, b: int8x8_t, c: int8x8_t);
66916 }
66917 _vst1_s8_x3(a, b.0, b.1, b.2)
66918}
66919#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66920#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x3)"]
66921#[doc = "## Safety"]
66922#[doc = " * Neon instrinsic unsafe"]
66923#[inline]
66924#[target_feature(enable = "neon,v7")]
66925#[cfg(target_arch = "arm")]
66926#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66927#[cfg_attr(test, assert_instr(vst1))]
66928pub unsafe fn vst1q_s8_x3(a: *mut i8, b: int8x16x3_t) {
66929 unsafe extern "unadjusted" {
66930 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v16i8.p0")]
66931 fn _vst1q_s8_x3(ptr: *mut i8, a: int8x16_t, b: int8x16_t, c: int8x16_t);
66932 }
66933 _vst1q_s8_x3(a, b.0, b.1, b.2)
66934}
66935#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66936#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x3)"]
66937#[doc = "## Safety"]
66938#[doc = " * Neon instrinsic unsafe"]
66939#[inline]
66940#[target_feature(enable = "neon,v7")]
66941#[cfg(target_arch = "arm")]
66942#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66943#[cfg_attr(test, assert_instr(vst1))]
66944pub unsafe fn vst1_s16_x3(a: *mut i16, b: int16x4x3_t) {
66945 unsafe extern "unadjusted" {
66946 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v4i16.p0")]
66947 fn _vst1_s16_x3(ptr: *mut i16, a: int16x4_t, b: int16x4_t, c: int16x4_t);
66948 }
66949 _vst1_s16_x3(a, b.0, b.1, b.2)
66950}
66951#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66952#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x3)"]
66953#[doc = "## Safety"]
66954#[doc = " * Neon instrinsic unsafe"]
66955#[inline]
66956#[target_feature(enable = "neon,v7")]
66957#[cfg(target_arch = "arm")]
66958#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66959#[cfg_attr(test, assert_instr(vst1))]
66960pub unsafe fn vst1q_s16_x3(a: *mut i16, b: int16x8x3_t) {
66961 unsafe extern "unadjusted" {
66962 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v8i16.p0")]
66963 fn _vst1q_s16_x3(ptr: *mut i16, a: int16x8_t, b: int16x8_t, c: int16x8_t);
66964 }
66965 _vst1q_s16_x3(a, b.0, b.1, b.2)
66966}
66967#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66968#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x3)"]
66969#[doc = "## Safety"]
66970#[doc = " * Neon instrinsic unsafe"]
66971#[inline]
66972#[target_feature(enable = "neon,v7")]
66973#[cfg(target_arch = "arm")]
66974#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66975#[cfg_attr(test, assert_instr(vst1))]
66976pub unsafe fn vst1_s32_x3(a: *mut i32, b: int32x2x3_t) {
66977 unsafe extern "unadjusted" {
66978 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v2i32.p0")]
66979 fn _vst1_s32_x3(ptr: *mut i32, a: int32x2_t, b: int32x2_t, c: int32x2_t);
66980 }
66981 _vst1_s32_x3(a, b.0, b.1, b.2)
66982}
66983#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
66984#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x3)"]
66985#[doc = "## Safety"]
66986#[doc = " * Neon instrinsic unsafe"]
66987#[inline]
66988#[target_feature(enable = "neon,v7")]
66989#[cfg(target_arch = "arm")]
66990#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66991#[cfg_attr(test, assert_instr(vst1))]
66992pub unsafe fn vst1q_s32_x3(a: *mut i32, b: int32x4x3_t) {
66993 unsafe extern "unadjusted" {
66994 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v4i32.p0")]
66995 fn _vst1q_s32_x3(ptr: *mut i32, a: int32x4_t, b: int32x4_t, c: int32x4_t);
66996 }
66997 _vst1q_s32_x3(a, b.0, b.1, b.2)
66998}
66999#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
67000#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x3)"]
67001#[doc = "## Safety"]
67002#[doc = " * Neon instrinsic unsafe"]
67003#[inline]
67004#[target_feature(enable = "neon,v7")]
67005#[cfg(target_arch = "arm")]
67006#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67007#[cfg_attr(test, assert_instr(vst1))]
67008pub unsafe fn vst1_s64_x3(a: *mut i64, b: int64x1x3_t) {
67009 unsafe extern "unadjusted" {
67010 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v1i64.p0")]
67011 fn _vst1_s64_x3(ptr: *mut i64, a: int64x1_t, b: int64x1_t, c: int64x1_t);
67012 }
67013 _vst1_s64_x3(a, b.0, b.1, b.2)
67014}
67015#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
67016#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x3)"]
67017#[doc = "## Safety"]
67018#[doc = " * Neon instrinsic unsafe"]
67019#[inline]
67020#[target_feature(enable = "neon,v7")]
67021#[cfg(target_arch = "arm")]
67022#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67023#[cfg_attr(test, assert_instr(vst1))]
67024pub unsafe fn vst1q_s64_x3(a: *mut i64, b: int64x2x3_t) {
67025 unsafe extern "unadjusted" {
67026 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v2i64.p0")]
67027 fn _vst1q_s64_x3(ptr: *mut i64, a: int64x2_t, b: int64x2_t, c: int64x2_t);
67028 }
67029 _vst1q_s64_x3(a, b.0, b.1, b.2)
67030}
67031#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
67032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x4)"]
67033#[doc = "## Safety"]
67034#[doc = " * Neon instrinsic unsafe"]
67035#[inline]
67036#[target_feature(enable = "neon")]
67037#[cfg(not(target_arch = "arm"))]
67038#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67039#[cfg_attr(test, assert_instr(st1))]
67040pub unsafe fn vst1_s8_x4(a: *mut i8, b: int8x8x4_t) {
67041 unsafe extern "unadjusted" {
67042 #[cfg_attr(
67043 any(target_arch = "aarch64", target_arch = "arm64ec"),
67044 link_name = "llvm.aarch64.neon.st1x4.v8i8.p0"
67045 )]
67046 fn _vst1_s8_x4(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, ptr: *mut i8);
67047 }
67048 _vst1_s8_x4(b.0, b.1, b.2, b.3, a)
67049}
67050#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
67051#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x4)"]
67052#[doc = "## Safety"]
67053#[doc = " * Neon instrinsic unsafe"]
67054#[inline]
67055#[target_feature(enable = "neon")]
67056#[cfg(not(target_arch = "arm"))]
67057#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67058#[cfg_attr(test, assert_instr(st1))]
67059pub unsafe fn vst1q_s8_x4(a: *mut i8, b: int8x16x4_t) {
67060 unsafe extern "unadjusted" {
67061 #[cfg_attr(
67062 any(target_arch = "aarch64", target_arch = "arm64ec"),
67063 link_name = "llvm.aarch64.neon.st1x4.v16i8.p0"
67064 )]
67065 fn _vst1q_s8_x4(a: int8x16_t, b: int8x16_t, c: int8x16_t, d: int8x16_t, ptr: *mut i8);
67066 }
67067 _vst1q_s8_x4(b.0, b.1, b.2, b.3, a)
67068}
67069#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
67070#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x4)"]
67071#[doc = "## Safety"]
67072#[doc = " * Neon instrinsic unsafe"]
67073#[inline]
67074#[target_feature(enable = "neon")]
67075#[cfg(not(target_arch = "arm"))]
67076#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67077#[cfg_attr(test, assert_instr(st1))]
67078pub unsafe fn vst1_s16_x4(a: *mut i16, b: int16x4x4_t) {
67079 unsafe extern "unadjusted" {
67080 #[cfg_attr(
67081 any(target_arch = "aarch64", target_arch = "arm64ec"),
67082 link_name = "llvm.aarch64.neon.st1x4.v4i16.p0"
67083 )]
67084 fn _vst1_s16_x4(a: int16x4_t, b: int16x4_t, c: int16x4_t, d: int16x4_t, ptr: *mut i16);
67085 }
67086 _vst1_s16_x4(b.0, b.1, b.2, b.3, a)
67087}
67088#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
67089#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x4)"]
67090#[doc = "## Safety"]
67091#[doc = " * Neon instrinsic unsafe"]
67092#[inline]
67093#[target_feature(enable = "neon")]
67094#[cfg(not(target_arch = "arm"))]
67095#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67096#[cfg_attr(test, assert_instr(st1))]
67097pub unsafe fn vst1q_s16_x4(a: *mut i16, b: int16x8x4_t) {
67098 unsafe extern "unadjusted" {
67099 #[cfg_attr(
67100 any(target_arch = "aarch64", target_arch = "arm64ec"),
67101 link_name = "llvm.aarch64.neon.st1x4.v8i16.p0"
67102 )]
67103 fn _vst1q_s16_x4(a: int16x8_t, b: int16x8_t, c: int16x8_t, d: int16x8_t, ptr: *mut i16);
67104 }
67105 _vst1q_s16_x4(b.0, b.1, b.2, b.3, a)
67106}
67107#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
67108#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x4)"]
67109#[doc = "## Safety"]
67110#[doc = " * Neon instrinsic unsafe"]
67111#[inline]
67112#[target_feature(enable = "neon")]
67113#[cfg(not(target_arch = "arm"))]
67114#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67115#[cfg_attr(test, assert_instr(st1))]
67116pub unsafe fn vst1_s32_x4(a: *mut i32, b: int32x2x4_t) {
67117 unsafe extern "unadjusted" {
67118 #[cfg_attr(
67119 any(target_arch = "aarch64", target_arch = "arm64ec"),
67120 link_name = "llvm.aarch64.neon.st1x4.v2i32.p0"
67121 )]
67122 fn _vst1_s32_x4(a: int32x2_t, b: int32x2_t, c: int32x2_t, d: int32x2_t, ptr: *mut i32);
67123 }
67124 _vst1_s32_x4(b.0, b.1, b.2, b.3, a)
67125}
67126#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
67127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x4)"]
67128#[doc = "## Safety"]
67129#[doc = " * Neon instrinsic unsafe"]
67130#[inline]
67131#[target_feature(enable = "neon")]
67132#[cfg(not(target_arch = "arm"))]
67133#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67134#[cfg_attr(test, assert_instr(st1))]
67135pub unsafe fn vst1q_s32_x4(a: *mut i32, b: int32x4x4_t) {
67136 unsafe extern "unadjusted" {
67137 #[cfg_attr(
67138 any(target_arch = "aarch64", target_arch = "arm64ec"),
67139 link_name = "llvm.aarch64.neon.st1x4.v4i32.p0"
67140 )]
67141 fn _vst1q_s32_x4(a: int32x4_t, b: int32x4_t, c: int32x4_t, d: int32x4_t, ptr: *mut i32);
67142 }
67143 _vst1q_s32_x4(b.0, b.1, b.2, b.3, a)
67144}
67145#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
67146#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x4)"]
67147#[doc = "## Safety"]
67148#[doc = " * Neon instrinsic unsafe"]
67149#[inline]
67150#[target_feature(enable = "neon")]
67151#[cfg(not(target_arch = "arm"))]
67152#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67153#[cfg_attr(test, assert_instr(st1))]
67154pub unsafe fn vst1_s64_x4(a: *mut i64, b: int64x1x4_t) {
67155 unsafe extern "unadjusted" {
67156 #[cfg_attr(
67157 any(target_arch = "aarch64", target_arch = "arm64ec"),
67158 link_name = "llvm.aarch64.neon.st1x4.v1i64.p0"
67159 )]
67160 fn _vst1_s64_x4(a: int64x1_t, b: int64x1_t, c: int64x1_t, d: int64x1_t, ptr: *mut i64);
67161 }
67162 _vst1_s64_x4(b.0, b.1, b.2, b.3, a)
67163}
67164#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
67165#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x4)"]
67166#[doc = "## Safety"]
67167#[doc = " * Neon instrinsic unsafe"]
67168#[inline]
67169#[target_feature(enable = "neon")]
67170#[cfg(not(target_arch = "arm"))]
67171#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67172#[cfg_attr(test, assert_instr(st1))]
67173pub unsafe fn vst1q_s64_x4(a: *mut i64, b: int64x2x4_t) {
67174 unsafe extern "unadjusted" {
67175 #[cfg_attr(
67176 any(target_arch = "aarch64", target_arch = "arm64ec"),
67177 link_name = "llvm.aarch64.neon.st1x4.v2i64.p0"
67178 )]
67179 fn _vst1q_s64_x4(a: int64x2_t, b: int64x2_t, c: int64x2_t, d: int64x2_t, ptr: *mut i64);
67180 }
67181 _vst1q_s64_x4(b.0, b.1, b.2, b.3, a)
67182}
67183#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
67184#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x4)"]
67185#[doc = "## Safety"]
67186#[doc = " * Neon instrinsic unsafe"]
67187#[inline]
67188#[cfg(target_arch = "arm")]
67189#[target_feature(enable = "neon,v7")]
67190#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67191#[cfg_attr(test, assert_instr(vst1))]
67192pub unsafe fn vst1_s8_x4(a: *mut i8, b: int8x8x4_t) {
67193 unsafe extern "unadjusted" {
67194 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v8i8.p0")]
67195 fn _vst1_s8_x4(ptr: *mut i8, a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t);
67196 }
67197 _vst1_s8_x4(a, b.0, b.1, b.2, b.3)
67198}
67199#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
67200#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x4)"]
67201#[doc = "## Safety"]
67202#[doc = " * Neon instrinsic unsafe"]
67203#[inline]
67204#[cfg(target_arch = "arm")]
67205#[target_feature(enable = "neon,v7")]
67206#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67207#[cfg_attr(test, assert_instr(vst1))]
67208pub unsafe fn vst1q_s8_x4(a: *mut i8, b: int8x16x4_t) {
67209 unsafe extern "unadjusted" {
67210 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v16i8.p0")]
67211 fn _vst1q_s8_x4(ptr: *mut i8, a: int8x16_t, b: int8x16_t, c: int8x16_t, d: int8x16_t);
67212 }
67213 _vst1q_s8_x4(a, b.0, b.1, b.2, b.3)
67214}
67215#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
67216#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x4)"]
67217#[doc = "## Safety"]
67218#[doc = " * Neon instrinsic unsafe"]
67219#[inline]
67220#[cfg(target_arch = "arm")]
67221#[target_feature(enable = "neon,v7")]
67222#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67223#[cfg_attr(test, assert_instr(vst1))]
67224pub unsafe fn vst1_s16_x4(a: *mut i16, b: int16x4x4_t) {
67225 unsafe extern "unadjusted" {
67226 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v4i16.p0")]
67227 fn _vst1_s16_x4(ptr: *mut i16, a: int16x4_t, b: int16x4_t, c: int16x4_t, d: int16x4_t);
67228 }
67229 _vst1_s16_x4(a, b.0, b.1, b.2, b.3)
67230}
67231#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
67232#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x4)"]
67233#[doc = "## Safety"]
67234#[doc = " * Neon instrinsic unsafe"]
67235#[inline]
67236#[cfg(target_arch = "arm")]
67237#[target_feature(enable = "neon,v7")]
67238#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67239#[cfg_attr(test, assert_instr(vst1))]
67240pub unsafe fn vst1q_s16_x4(a: *mut i16, b: int16x8x4_t) {
67241 unsafe extern "unadjusted" {
67242 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v8i16.p0")]
67243 fn _vst1q_s16_x4(ptr: *mut i16, a: int16x8_t, b: int16x8_t, c: int16x8_t, d: int16x8_t);
67244 }
67245 _vst1q_s16_x4(a, b.0, b.1, b.2, b.3)
67246}
67247#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
67248#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x4)"]
67249#[doc = "## Safety"]
67250#[doc = " * Neon instrinsic unsafe"]
67251#[inline]
67252#[cfg(target_arch = "arm")]
67253#[target_feature(enable = "neon,v7")]
67254#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67255#[cfg_attr(test, assert_instr(vst1))]
67256pub unsafe fn vst1_s32_x4(a: *mut i32, b: int32x2x4_t) {
67257 unsafe extern "unadjusted" {
67258 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v2i32.p0")]
67259 fn _vst1_s32_x4(ptr: *mut i32, a: int32x2_t, b: int32x2_t, c: int32x2_t, d: int32x2_t);
67260 }
67261 _vst1_s32_x4(a, b.0, b.1, b.2, b.3)
67262}
67263#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
67264#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x4)"]
67265#[doc = "## Safety"]
67266#[doc = " * Neon instrinsic unsafe"]
67267#[inline]
67268#[cfg(target_arch = "arm")]
67269#[target_feature(enable = "neon,v7")]
67270#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67271#[cfg_attr(test, assert_instr(vst1))]
67272pub unsafe fn vst1q_s32_x4(a: *mut i32, b: int32x4x4_t) {
67273 unsafe extern "unadjusted" {
67274 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v4i32.p0")]
67275 fn _vst1q_s32_x4(ptr: *mut i32, a: int32x4_t, b: int32x4_t, c: int32x4_t, d: int32x4_t);
67276 }
67277 _vst1q_s32_x4(a, b.0, b.1, b.2, b.3)
67278}
67279#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
67280#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x4)"]
67281#[doc = "## Safety"]
67282#[doc = " * Neon instrinsic unsafe"]
67283#[inline]
67284#[cfg(target_arch = "arm")]
67285#[target_feature(enable = "neon,v7")]
67286#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67287#[cfg_attr(test, assert_instr(vst1))]
67288pub unsafe fn vst1_s64_x4(a: *mut i64, b: int64x1x4_t) {
67289 unsafe extern "unadjusted" {
67290 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v1i64.p0")]
67291 fn _vst1_s64_x4(ptr: *mut i64, a: int64x1_t, b: int64x1_t, c: int64x1_t, d: int64x1_t);
67292 }
67293 _vst1_s64_x4(a, b.0, b.1, b.2, b.3)
67294}
67295#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
67296#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x4)"]
67297#[doc = "## Safety"]
67298#[doc = " * Neon instrinsic unsafe"]
67299#[inline]
67300#[cfg(target_arch = "arm")]
67301#[target_feature(enable = "neon,v7")]
67302#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67303#[cfg_attr(test, assert_instr(vst1))]
67304pub unsafe fn vst1q_s64_x4(a: *mut i64, b: int64x2x4_t) {
67305 unsafe extern "unadjusted" {
67306 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v2i64.p0")]
67307 fn _vst1q_s64_x4(ptr: *mut i64, a: int64x2_t, b: int64x2_t, c: int64x2_t, d: int64x2_t);
67308 }
67309 _vst1q_s64_x4(a, b.0, b.1, b.2, b.3)
67310}
67311#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67312#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u8_x2)"]
67313#[doc = "## Safety"]
67314#[doc = " * Neon instrinsic unsafe"]
67315#[inline]
67316#[target_feature(enable = "neon")]
67317#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67318#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67319#[cfg_attr(
67320 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67321 assert_instr(st1)
67322)]
67323#[cfg_attr(
67324 not(target_arch = "arm"),
67325 stable(feature = "neon_intrinsics", since = "1.59.0")
67326)]
67327#[cfg_attr(
67328 target_arch = "arm",
67329 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67330)]
67331pub unsafe fn vst1_u8_x2(a: *mut u8, b: uint8x8x2_t) {
67332 vst1_s8_x2(transmute(a), transmute(b))
67333}
67334#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67335#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u8_x3)"]
67336#[doc = "## Safety"]
67337#[doc = " * Neon instrinsic unsafe"]
67338#[inline]
67339#[target_feature(enable = "neon")]
67340#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67341#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67342#[cfg_attr(
67343 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67344 assert_instr(st1)
67345)]
67346#[cfg_attr(
67347 not(target_arch = "arm"),
67348 stable(feature = "neon_intrinsics", since = "1.59.0")
67349)]
67350#[cfg_attr(
67351 target_arch = "arm",
67352 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67353)]
67354pub unsafe fn vst1_u8_x3(a: *mut u8, b: uint8x8x3_t) {
67355 vst1_s8_x3(transmute(a), transmute(b))
67356}
67357#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67358#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u8_x4)"]
67359#[doc = "## Safety"]
67360#[doc = " * Neon instrinsic unsafe"]
67361#[inline]
67362#[target_feature(enable = "neon")]
67363#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67364#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67365#[cfg_attr(
67366 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67367 assert_instr(st1)
67368)]
67369#[cfg_attr(
67370 not(target_arch = "arm"),
67371 stable(feature = "neon_intrinsics", since = "1.59.0")
67372)]
67373#[cfg_attr(
67374 target_arch = "arm",
67375 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67376)]
67377pub unsafe fn vst1_u8_x4(a: *mut u8, b: uint8x8x4_t) {
67378 vst1_s8_x4(transmute(a), transmute(b))
67379}
67380#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67381#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u8_x2)"]
67382#[doc = "## Safety"]
67383#[doc = " * Neon instrinsic unsafe"]
67384#[inline]
67385#[target_feature(enable = "neon")]
67386#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67387#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67388#[cfg_attr(
67389 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67390 assert_instr(st1)
67391)]
67392#[cfg_attr(
67393 not(target_arch = "arm"),
67394 stable(feature = "neon_intrinsics", since = "1.59.0")
67395)]
67396#[cfg_attr(
67397 target_arch = "arm",
67398 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67399)]
67400pub unsafe fn vst1q_u8_x2(a: *mut u8, b: uint8x16x2_t) {
67401 vst1q_s8_x2(transmute(a), transmute(b))
67402}
67403#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67404#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u8_x3)"]
67405#[doc = "## Safety"]
67406#[doc = " * Neon instrinsic unsafe"]
67407#[inline]
67408#[target_feature(enable = "neon")]
67409#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67410#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67411#[cfg_attr(
67412 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67413 assert_instr(st1)
67414)]
67415#[cfg_attr(
67416 not(target_arch = "arm"),
67417 stable(feature = "neon_intrinsics", since = "1.59.0")
67418)]
67419#[cfg_attr(
67420 target_arch = "arm",
67421 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67422)]
67423pub unsafe fn vst1q_u8_x3(a: *mut u8, b: uint8x16x3_t) {
67424 vst1q_s8_x3(transmute(a), transmute(b))
67425}
67426#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67427#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u8_x4)"]
67428#[doc = "## Safety"]
67429#[doc = " * Neon instrinsic unsafe"]
67430#[inline]
67431#[target_feature(enable = "neon")]
67432#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67433#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67434#[cfg_attr(
67435 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67436 assert_instr(st1)
67437)]
67438#[cfg_attr(
67439 not(target_arch = "arm"),
67440 stable(feature = "neon_intrinsics", since = "1.59.0")
67441)]
67442#[cfg_attr(
67443 target_arch = "arm",
67444 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67445)]
67446pub unsafe fn vst1q_u8_x4(a: *mut u8, b: uint8x16x4_t) {
67447 vst1q_s8_x4(transmute(a), transmute(b))
67448}
67449#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67450#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u16_x2)"]
67451#[doc = "## Safety"]
67452#[doc = " * Neon instrinsic unsafe"]
67453#[inline]
67454#[target_feature(enable = "neon")]
67455#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67456#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67457#[cfg_attr(
67458 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67459 assert_instr(st1)
67460)]
67461#[cfg_attr(
67462 not(target_arch = "arm"),
67463 stable(feature = "neon_intrinsics", since = "1.59.0")
67464)]
67465#[cfg_attr(
67466 target_arch = "arm",
67467 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67468)]
67469pub unsafe fn vst1_u16_x2(a: *mut u16, b: uint16x4x2_t) {
67470 vst1_s16_x2(transmute(a), transmute(b))
67471}
67472#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67473#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u16_x3)"]
67474#[doc = "## Safety"]
67475#[doc = " * Neon instrinsic unsafe"]
67476#[inline]
67477#[target_feature(enable = "neon")]
67478#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67479#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67480#[cfg_attr(
67481 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67482 assert_instr(st1)
67483)]
67484#[cfg_attr(
67485 not(target_arch = "arm"),
67486 stable(feature = "neon_intrinsics", since = "1.59.0")
67487)]
67488#[cfg_attr(
67489 target_arch = "arm",
67490 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67491)]
67492pub unsafe fn vst1_u16_x3(a: *mut u16, b: uint16x4x3_t) {
67493 vst1_s16_x3(transmute(a), transmute(b))
67494}
67495#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67496#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u16_x4)"]
67497#[doc = "## Safety"]
67498#[doc = " * Neon instrinsic unsafe"]
67499#[inline]
67500#[target_feature(enable = "neon")]
67501#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67502#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67503#[cfg_attr(
67504 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67505 assert_instr(st1)
67506)]
67507#[cfg_attr(
67508 not(target_arch = "arm"),
67509 stable(feature = "neon_intrinsics", since = "1.59.0")
67510)]
67511#[cfg_attr(
67512 target_arch = "arm",
67513 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67514)]
67515pub unsafe fn vst1_u16_x4(a: *mut u16, b: uint16x4x4_t) {
67516 vst1_s16_x4(transmute(a), transmute(b))
67517}
67518#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67519#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u16_x2)"]
67520#[doc = "## Safety"]
67521#[doc = " * Neon instrinsic unsafe"]
67522#[inline]
67523#[target_feature(enable = "neon")]
67524#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67525#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67526#[cfg_attr(
67527 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67528 assert_instr(st1)
67529)]
67530#[cfg_attr(
67531 not(target_arch = "arm"),
67532 stable(feature = "neon_intrinsics", since = "1.59.0")
67533)]
67534#[cfg_attr(
67535 target_arch = "arm",
67536 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67537)]
67538pub unsafe fn vst1q_u16_x2(a: *mut u16, b: uint16x8x2_t) {
67539 vst1q_s16_x2(transmute(a), transmute(b))
67540}
67541#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67542#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u16_x3)"]
67543#[doc = "## Safety"]
67544#[doc = " * Neon instrinsic unsafe"]
67545#[inline]
67546#[target_feature(enable = "neon")]
67547#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67548#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67549#[cfg_attr(
67550 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67551 assert_instr(st1)
67552)]
67553#[cfg_attr(
67554 not(target_arch = "arm"),
67555 stable(feature = "neon_intrinsics", since = "1.59.0")
67556)]
67557#[cfg_attr(
67558 target_arch = "arm",
67559 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67560)]
67561pub unsafe fn vst1q_u16_x3(a: *mut u16, b: uint16x8x3_t) {
67562 vst1q_s16_x3(transmute(a), transmute(b))
67563}
67564#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67565#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u16_x4)"]
67566#[doc = "## Safety"]
67567#[doc = " * Neon instrinsic unsafe"]
67568#[inline]
67569#[target_feature(enable = "neon")]
67570#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67571#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67572#[cfg_attr(
67573 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67574 assert_instr(st1)
67575)]
67576#[cfg_attr(
67577 not(target_arch = "arm"),
67578 stable(feature = "neon_intrinsics", since = "1.59.0")
67579)]
67580#[cfg_attr(
67581 target_arch = "arm",
67582 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67583)]
67584pub unsafe fn vst1q_u16_x4(a: *mut u16, b: uint16x8x4_t) {
67585 vst1q_s16_x4(transmute(a), transmute(b))
67586}
67587#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67588#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u32_x2)"]
67589#[doc = "## Safety"]
67590#[doc = " * Neon instrinsic unsafe"]
67591#[inline]
67592#[target_feature(enable = "neon")]
67593#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67594#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67595#[cfg_attr(
67596 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67597 assert_instr(st1)
67598)]
67599#[cfg_attr(
67600 not(target_arch = "arm"),
67601 stable(feature = "neon_intrinsics", since = "1.59.0")
67602)]
67603#[cfg_attr(
67604 target_arch = "arm",
67605 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67606)]
67607pub unsafe fn vst1_u32_x2(a: *mut u32, b: uint32x2x2_t) {
67608 vst1_s32_x2(transmute(a), transmute(b))
67609}
67610#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67611#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u32_x3)"]
67612#[doc = "## Safety"]
67613#[doc = " * Neon instrinsic unsafe"]
67614#[inline]
67615#[target_feature(enable = "neon")]
67616#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67617#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67618#[cfg_attr(
67619 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67620 assert_instr(st1)
67621)]
67622#[cfg_attr(
67623 not(target_arch = "arm"),
67624 stable(feature = "neon_intrinsics", since = "1.59.0")
67625)]
67626#[cfg_attr(
67627 target_arch = "arm",
67628 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67629)]
67630pub unsafe fn vst1_u32_x3(a: *mut u32, b: uint32x2x3_t) {
67631 vst1_s32_x3(transmute(a), transmute(b))
67632}
67633#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67634#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u32_x4)"]
67635#[doc = "## Safety"]
67636#[doc = " * Neon instrinsic unsafe"]
67637#[inline]
67638#[target_feature(enable = "neon")]
67639#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67640#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67641#[cfg_attr(
67642 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67643 assert_instr(st1)
67644)]
67645#[cfg_attr(
67646 not(target_arch = "arm"),
67647 stable(feature = "neon_intrinsics", since = "1.59.0")
67648)]
67649#[cfg_attr(
67650 target_arch = "arm",
67651 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67652)]
67653pub unsafe fn vst1_u32_x4(a: *mut u32, b: uint32x2x4_t) {
67654 vst1_s32_x4(transmute(a), transmute(b))
67655}
67656#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67657#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u32_x2)"]
67658#[doc = "## Safety"]
67659#[doc = " * Neon instrinsic unsafe"]
67660#[inline]
67661#[target_feature(enable = "neon")]
67662#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67663#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67664#[cfg_attr(
67665 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67666 assert_instr(st1)
67667)]
67668#[cfg_attr(
67669 not(target_arch = "arm"),
67670 stable(feature = "neon_intrinsics", since = "1.59.0")
67671)]
67672#[cfg_attr(
67673 target_arch = "arm",
67674 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67675)]
67676pub unsafe fn vst1q_u32_x2(a: *mut u32, b: uint32x4x2_t) {
67677 vst1q_s32_x2(transmute(a), transmute(b))
67678}
67679#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67680#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u32_x3)"]
67681#[doc = "## Safety"]
67682#[doc = " * Neon instrinsic unsafe"]
67683#[inline]
67684#[target_feature(enable = "neon")]
67685#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67686#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67687#[cfg_attr(
67688 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67689 assert_instr(st1)
67690)]
67691#[cfg_attr(
67692 not(target_arch = "arm"),
67693 stable(feature = "neon_intrinsics", since = "1.59.0")
67694)]
67695#[cfg_attr(
67696 target_arch = "arm",
67697 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67698)]
67699pub unsafe fn vst1q_u32_x3(a: *mut u32, b: uint32x4x3_t) {
67700 vst1q_s32_x3(transmute(a), transmute(b))
67701}
67702#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67703#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u32_x4)"]
67704#[doc = "## Safety"]
67705#[doc = " * Neon instrinsic unsafe"]
67706#[inline]
67707#[target_feature(enable = "neon")]
67708#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67709#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67710#[cfg_attr(
67711 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67712 assert_instr(st1)
67713)]
67714#[cfg_attr(
67715 not(target_arch = "arm"),
67716 stable(feature = "neon_intrinsics", since = "1.59.0")
67717)]
67718#[cfg_attr(
67719 target_arch = "arm",
67720 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67721)]
67722pub unsafe fn vst1q_u32_x4(a: *mut u32, b: uint32x4x4_t) {
67723 vst1q_s32_x4(transmute(a), transmute(b))
67724}
67725#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67726#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u64_x2)"]
67727#[doc = "## Safety"]
67728#[doc = " * Neon instrinsic unsafe"]
67729#[inline]
67730#[target_feature(enable = "neon")]
67731#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67732#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67733#[cfg_attr(
67734 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67735 assert_instr(st1)
67736)]
67737#[cfg_attr(
67738 not(target_arch = "arm"),
67739 stable(feature = "neon_intrinsics", since = "1.59.0")
67740)]
67741#[cfg_attr(
67742 target_arch = "arm",
67743 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67744)]
67745pub unsafe fn vst1_u64_x2(a: *mut u64, b: uint64x1x2_t) {
67746 vst1_s64_x2(transmute(a), transmute(b))
67747}
67748#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67749#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u64_x3)"]
67750#[doc = "## Safety"]
67751#[doc = " * Neon instrinsic unsafe"]
67752#[inline]
67753#[target_feature(enable = "neon")]
67754#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67755#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67756#[cfg_attr(
67757 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67758 assert_instr(st1)
67759)]
67760#[cfg_attr(
67761 not(target_arch = "arm"),
67762 stable(feature = "neon_intrinsics", since = "1.59.0")
67763)]
67764#[cfg_attr(
67765 target_arch = "arm",
67766 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67767)]
67768pub unsafe fn vst1_u64_x3(a: *mut u64, b: uint64x1x3_t) {
67769 vst1_s64_x3(transmute(a), transmute(b))
67770}
67771#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67772#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u64_x4)"]
67773#[doc = "## Safety"]
67774#[doc = " * Neon instrinsic unsafe"]
67775#[inline]
67776#[target_feature(enable = "neon")]
67777#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67778#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67779#[cfg_attr(
67780 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67781 assert_instr(st1)
67782)]
67783#[cfg_attr(
67784 not(target_arch = "arm"),
67785 stable(feature = "neon_intrinsics", since = "1.59.0")
67786)]
67787#[cfg_attr(
67788 target_arch = "arm",
67789 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67790)]
67791pub unsafe fn vst1_u64_x4(a: *mut u64, b: uint64x1x4_t) {
67792 vst1_s64_x4(transmute(a), transmute(b))
67793}
67794#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67795#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u64_x2)"]
67796#[doc = "## Safety"]
67797#[doc = " * Neon instrinsic unsafe"]
67798#[inline]
67799#[target_feature(enable = "neon")]
67800#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67801#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67802#[cfg_attr(
67803 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67804 assert_instr(st1)
67805)]
67806#[cfg_attr(
67807 not(target_arch = "arm"),
67808 stable(feature = "neon_intrinsics", since = "1.59.0")
67809)]
67810#[cfg_attr(
67811 target_arch = "arm",
67812 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67813)]
67814pub unsafe fn vst1q_u64_x2(a: *mut u64, b: uint64x2x2_t) {
67815 vst1q_s64_x2(transmute(a), transmute(b))
67816}
67817#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67818#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u64_x3)"]
67819#[doc = "## Safety"]
67820#[doc = " * Neon instrinsic unsafe"]
67821#[inline]
67822#[target_feature(enable = "neon")]
67823#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67824#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67825#[cfg_attr(
67826 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67827 assert_instr(st1)
67828)]
67829#[cfg_attr(
67830 not(target_arch = "arm"),
67831 stable(feature = "neon_intrinsics", since = "1.59.0")
67832)]
67833#[cfg_attr(
67834 target_arch = "arm",
67835 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67836)]
67837pub unsafe fn vst1q_u64_x3(a: *mut u64, b: uint64x2x3_t) {
67838 vst1q_s64_x3(transmute(a), transmute(b))
67839}
67840#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67841#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u64_x4)"]
67842#[doc = "## Safety"]
67843#[doc = " * Neon instrinsic unsafe"]
67844#[inline]
67845#[target_feature(enable = "neon")]
67846#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67847#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67848#[cfg_attr(
67849 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67850 assert_instr(st1)
67851)]
67852#[cfg_attr(
67853 not(target_arch = "arm"),
67854 stable(feature = "neon_intrinsics", since = "1.59.0")
67855)]
67856#[cfg_attr(
67857 target_arch = "arm",
67858 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67859)]
67860pub unsafe fn vst1q_u64_x4(a: *mut u64, b: uint64x2x4_t) {
67861 vst1q_s64_x4(transmute(a), transmute(b))
67862}
67863#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67864#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p8_x2)"]
67865#[doc = "## Safety"]
67866#[doc = " * Neon instrinsic unsafe"]
67867#[inline]
67868#[target_feature(enable = "neon")]
67869#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67870#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67871#[cfg_attr(
67872 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67873 assert_instr(st1)
67874)]
67875#[cfg_attr(
67876 not(target_arch = "arm"),
67877 stable(feature = "neon_intrinsics", since = "1.59.0")
67878)]
67879#[cfg_attr(
67880 target_arch = "arm",
67881 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67882)]
67883pub unsafe fn vst1_p8_x2(a: *mut p8, b: poly8x8x2_t) {
67884 vst1_s8_x2(transmute(a), transmute(b))
67885}
67886#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67887#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p8_x3)"]
67888#[doc = "## Safety"]
67889#[doc = " * Neon instrinsic unsafe"]
67890#[inline]
67891#[target_feature(enable = "neon")]
67892#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67893#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67894#[cfg_attr(
67895 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67896 assert_instr(st1)
67897)]
67898#[cfg_attr(
67899 not(target_arch = "arm"),
67900 stable(feature = "neon_intrinsics", since = "1.59.0")
67901)]
67902#[cfg_attr(
67903 target_arch = "arm",
67904 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67905)]
67906pub unsafe fn vst1_p8_x3(a: *mut p8, b: poly8x8x3_t) {
67907 vst1_s8_x3(transmute(a), transmute(b))
67908}
67909#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67910#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p8_x4)"]
67911#[doc = "## Safety"]
67912#[doc = " * Neon instrinsic unsafe"]
67913#[inline]
67914#[target_feature(enable = "neon")]
67915#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67916#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67917#[cfg_attr(
67918 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67919 assert_instr(st1)
67920)]
67921#[cfg_attr(
67922 not(target_arch = "arm"),
67923 stable(feature = "neon_intrinsics", since = "1.59.0")
67924)]
67925#[cfg_attr(
67926 target_arch = "arm",
67927 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67928)]
67929pub unsafe fn vst1_p8_x4(a: *mut p8, b: poly8x8x4_t) {
67930 vst1_s8_x4(transmute(a), transmute(b))
67931}
67932#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67933#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p8_x2)"]
67934#[doc = "## Safety"]
67935#[doc = " * Neon instrinsic unsafe"]
67936#[inline]
67937#[target_feature(enable = "neon")]
67938#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67939#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67940#[cfg_attr(
67941 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67942 assert_instr(st1)
67943)]
67944#[cfg_attr(
67945 not(target_arch = "arm"),
67946 stable(feature = "neon_intrinsics", since = "1.59.0")
67947)]
67948#[cfg_attr(
67949 target_arch = "arm",
67950 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67951)]
67952pub unsafe fn vst1q_p8_x2(a: *mut p8, b: poly8x16x2_t) {
67953 vst1q_s8_x2(transmute(a), transmute(b))
67954}
67955#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67956#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p8_x3)"]
67957#[doc = "## Safety"]
67958#[doc = " * Neon instrinsic unsafe"]
67959#[inline]
67960#[target_feature(enable = "neon")]
67961#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67962#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67963#[cfg_attr(
67964 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67965 assert_instr(st1)
67966)]
67967#[cfg_attr(
67968 not(target_arch = "arm"),
67969 stable(feature = "neon_intrinsics", since = "1.59.0")
67970)]
67971#[cfg_attr(
67972 target_arch = "arm",
67973 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67974)]
67975pub unsafe fn vst1q_p8_x3(a: *mut p8, b: poly8x16x3_t) {
67976 vst1q_s8_x3(transmute(a), transmute(b))
67977}
67978#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
67979#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p8_x4)"]
67980#[doc = "## Safety"]
67981#[doc = " * Neon instrinsic unsafe"]
67982#[inline]
67983#[target_feature(enable = "neon")]
67984#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67985#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
67986#[cfg_attr(
67987 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67988 assert_instr(st1)
67989)]
67990#[cfg_attr(
67991 not(target_arch = "arm"),
67992 stable(feature = "neon_intrinsics", since = "1.59.0")
67993)]
67994#[cfg_attr(
67995 target_arch = "arm",
67996 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67997)]
67998pub unsafe fn vst1q_p8_x4(a: *mut p8, b: poly8x16x4_t) {
67999 vst1q_s8_x4(transmute(a), transmute(b))
68000}
68001#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
68002#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p16_x2)"]
68003#[doc = "## Safety"]
68004#[doc = " * Neon instrinsic unsafe"]
68005#[inline]
68006#[target_feature(enable = "neon")]
68007#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68008#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
68009#[cfg_attr(
68010 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68011 assert_instr(st1)
68012)]
68013#[cfg_attr(
68014 not(target_arch = "arm"),
68015 stable(feature = "neon_intrinsics", since = "1.59.0")
68016)]
68017#[cfg_attr(
68018 target_arch = "arm",
68019 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68020)]
68021pub unsafe fn vst1_p16_x2(a: *mut p16, b: poly16x4x2_t) {
68022 vst1_s16_x2(transmute(a), transmute(b))
68023}
68024#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
68025#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p16_x3)"]
68026#[doc = "## Safety"]
68027#[doc = " * Neon instrinsic unsafe"]
68028#[inline]
68029#[target_feature(enable = "neon")]
68030#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68031#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
68032#[cfg_attr(
68033 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68034 assert_instr(st1)
68035)]
68036#[cfg_attr(
68037 not(target_arch = "arm"),
68038 stable(feature = "neon_intrinsics", since = "1.59.0")
68039)]
68040#[cfg_attr(
68041 target_arch = "arm",
68042 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68043)]
68044pub unsafe fn vst1_p16_x3(a: *mut p16, b: poly16x4x3_t) {
68045 vst1_s16_x3(transmute(a), transmute(b))
68046}
68047#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
68048#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p16_x4)"]
68049#[doc = "## Safety"]
68050#[doc = " * Neon instrinsic unsafe"]
68051#[inline]
68052#[target_feature(enable = "neon")]
68053#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68054#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
68055#[cfg_attr(
68056 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68057 assert_instr(st1)
68058)]
68059#[cfg_attr(
68060 not(target_arch = "arm"),
68061 stable(feature = "neon_intrinsics", since = "1.59.0")
68062)]
68063#[cfg_attr(
68064 target_arch = "arm",
68065 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68066)]
68067pub unsafe fn vst1_p16_x4(a: *mut p16, b: poly16x4x4_t) {
68068 vst1_s16_x4(transmute(a), transmute(b))
68069}
68070#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
68071#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p16_x2)"]
68072#[doc = "## Safety"]
68073#[doc = " * Neon instrinsic unsafe"]
68074#[inline]
68075#[target_feature(enable = "neon")]
68076#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68077#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
68078#[cfg_attr(
68079 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68080 assert_instr(st1)
68081)]
68082#[cfg_attr(
68083 not(target_arch = "arm"),
68084 stable(feature = "neon_intrinsics", since = "1.59.0")
68085)]
68086#[cfg_attr(
68087 target_arch = "arm",
68088 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68089)]
68090pub unsafe fn vst1q_p16_x2(a: *mut p16, b: poly16x8x2_t) {
68091 vst1q_s16_x2(transmute(a), transmute(b))
68092}
68093#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
68094#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p16_x3)"]
68095#[doc = "## Safety"]
68096#[doc = " * Neon instrinsic unsafe"]
68097#[inline]
68098#[target_feature(enable = "neon")]
68099#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68100#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
68101#[cfg_attr(
68102 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68103 assert_instr(st1)
68104)]
68105#[cfg_attr(
68106 not(target_arch = "arm"),
68107 stable(feature = "neon_intrinsics", since = "1.59.0")
68108)]
68109#[cfg_attr(
68110 target_arch = "arm",
68111 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68112)]
68113pub unsafe fn vst1q_p16_x3(a: *mut p16, b: poly16x8x3_t) {
68114 vst1q_s16_x3(transmute(a), transmute(b))
68115}
68116#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
68117#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p16_x4)"]
68118#[doc = "## Safety"]
68119#[doc = " * Neon instrinsic unsafe"]
68120#[inline]
68121#[target_feature(enable = "neon")]
68122#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68123#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
68124#[cfg_attr(
68125 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68126 assert_instr(st1)
68127)]
68128#[cfg_attr(
68129 not(target_arch = "arm"),
68130 stable(feature = "neon_intrinsics", since = "1.59.0")
68131)]
68132#[cfg_attr(
68133 target_arch = "arm",
68134 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68135)]
68136pub unsafe fn vst1q_p16_x4(a: *mut p16, b: poly16x8x4_t) {
68137 vst1q_s16_x4(transmute(a), transmute(b))
68138}
68139#[inline]
68140#[target_feature(enable = "neon")]
68141#[cfg(target_arch = "arm")]
68142#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68143#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68144#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64", ALIGN = 0))]
68145#[rustc_legacy_const_generics(2)]
68146unsafe fn vst1_v1i64<const ALIGN: i32>(addr: *const i8, val: int64x1_t) {
68147 unsafe extern "unadjusted" {
68148 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v1i64.p0")]
68149 fn _vst1_v1i64(addr: *const i8, val: int64x1_t, align: i32);
68150 }
68151 _vst1_v1i64(addr, val, ALIGN)
68152}
68153#[inline]
68154#[target_feature(enable = "neon")]
68155#[cfg(target_arch = "arm")]
68156#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68157#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68158#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32", ALIGN = 0))]
68159#[rustc_legacy_const_generics(2)]
68160unsafe fn vst1_v2f32<const ALIGN: i32>(addr: *const i8, val: float32x2_t) {
68161 unsafe extern "unadjusted" {
68162 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v2f32.p0")]
68163 fn _vst1_v2f32(addr: *const i8, val: float32x2_t, align: i32);
68164 }
68165 _vst1_v2f32(addr, val, ALIGN)
68166}
68167#[inline]
68168#[target_feature(enable = "neon")]
68169#[cfg(target_arch = "arm")]
68170#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68171#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68172#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32", ALIGN = 0))]
68173#[rustc_legacy_const_generics(2)]
68174unsafe fn vst1_v2i32<const ALIGN: i32>(addr: *const i8, val: int32x2_t) {
68175 unsafe extern "unadjusted" {
68176 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v2i32.p0")]
68177 fn _vst1_v2i32(addr: *const i8, val: int32x2_t, align: i32);
68178 }
68179 _vst1_v2i32(addr, val, ALIGN)
68180}
68181#[inline]
68182#[target_feature(enable = "neon")]
68183#[cfg(target_arch = "arm")]
68184#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68185#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68186#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16", ALIGN = 0))]
68187#[rustc_legacy_const_generics(2)]
68188unsafe fn vst1_v4i16<const ALIGN: i32>(addr: *const i8, val: int16x4_t) {
68189 unsafe extern "unadjusted" {
68190 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v4i16.p0")]
68191 fn _vst1_v4i16(addr: *const i8, val: int16x4_t, align: i32);
68192 }
68193 _vst1_v4i16(addr, val, ALIGN)
68194}
68195#[inline]
68196#[target_feature(enable = "neon")]
68197#[cfg(target_arch = "arm")]
68198#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68199#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68200#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8", ALIGN = 0))]
68201#[rustc_legacy_const_generics(2)]
68202unsafe fn vst1_v8i8<const ALIGN: i32>(addr: *const i8, val: int8x8_t) {
68203 unsafe extern "unadjusted" {
68204 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v8i8.p0")]
68205 fn _vst1_v8i8(addr: *const i8, val: int8x8_t, align: i32);
68206 }
68207 _vst1_v8i8(addr, val, ALIGN)
68208}
68209#[inline]
68210#[target_feature(enable = "neon")]
68211#[cfg(target_arch = "arm")]
68212#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68213#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68214#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8", ALIGN = 0))]
68215#[rustc_legacy_const_generics(2)]
68216unsafe fn vst1q_v16i8<const ALIGN: i32>(addr: *const i8, val: int8x16_t) {
68217 unsafe extern "unadjusted" {
68218 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v16i8.p0")]
68219 fn _vst1q_v16i8(addr: *const i8, val: int8x16_t, align: i32);
68220 }
68221 _vst1q_v16i8(addr, val, ALIGN)
68222}
68223#[inline]
68224#[target_feature(enable = "neon")]
68225#[cfg(target_arch = "arm")]
68226#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68227#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68228#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64", ALIGN = 0))]
68229#[rustc_legacy_const_generics(2)]
68230unsafe fn vst1q_v2i64<const ALIGN: i32>(addr: *const i8, val: int64x2_t) {
68231 unsafe extern "unadjusted" {
68232 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v2i64.p0")]
68233 fn _vst1q_v2i64(addr: *const i8, val: int64x2_t, align: i32);
68234 }
68235 _vst1q_v2i64(addr, val, ALIGN)
68236}
68237#[inline]
68238#[target_feature(enable = "neon")]
68239#[cfg(target_arch = "arm")]
68240#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68241#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68242#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32", ALIGN = 0))]
68243#[rustc_legacy_const_generics(2)]
68244unsafe fn vst1q_v4f32<const ALIGN: i32>(addr: *const i8, val: float32x4_t) {
68245 unsafe extern "unadjusted" {
68246 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v4f32.p0")]
68247 fn _vst1q_v4f32(addr: *const i8, val: float32x4_t, align: i32);
68248 }
68249 _vst1q_v4f32(addr, val, ALIGN)
68250}
68251#[inline]
68252#[target_feature(enable = "neon")]
68253#[cfg(target_arch = "arm")]
68254#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68255#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68256#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32", ALIGN = 0))]
68257#[rustc_legacy_const_generics(2)]
68258unsafe fn vst1q_v4i32<const ALIGN: i32>(addr: *const i8, val: int32x4_t) {
68259 unsafe extern "unadjusted" {
68260 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v4i32.p0")]
68261 fn _vst1q_v4i32(addr: *const i8, val: int32x4_t, align: i32);
68262 }
68263 _vst1q_v4i32(addr, val, ALIGN)
68264}
68265#[inline]
68266#[target_feature(enable = "neon")]
68267#[cfg(target_arch = "arm")]
68268#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68269#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68270#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16", ALIGN = 0))]
68271#[rustc_legacy_const_generics(2)]
68272unsafe fn vst1q_v8i16<const ALIGN: i32>(addr: *const i8, val: int16x8_t) {
68273 unsafe extern "unadjusted" {
68274 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v8i16.p0")]
68275 fn _vst1q_v8i16(addr: *const i8, val: int16x8_t, align: i32);
68276 }
68277 _vst1q_v8i16(addr, val, ALIGN)
68278}
68279#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
68280#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_v4f16)"]
68281#[doc = "## Safety"]
68282#[doc = " * Neon instrinsic unsafe"]
68283#[inline]
68284#[cfg(target_arch = "arm")]
68285#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68286#[target_feature(enable = "neon,fp16")]
68287#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68288#[cfg(not(target_arch = "arm64ec"))]
68289#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
68290unsafe fn vst1_v4f16(addr: *const i8, val: float16x4_t, align: i32) {
68291 unsafe extern "unadjusted" {
68292 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v4f16.p0")]
68293 fn _vst1_v4f16(addr: *const i8, val: float16x4_t, align: i32);
68294 }
68295 _vst1_v4f16(addr, val, align)
68296}
68297#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
68298#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_v8f16)"]
68299#[doc = "## Safety"]
68300#[doc = " * Neon instrinsic unsafe"]
68301#[inline]
68302#[cfg(target_arch = "arm")]
68303#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68304#[target_feature(enable = "neon,fp16")]
68305#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68306#[cfg(not(target_arch = "arm64ec"))]
68307#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
68308unsafe fn vst1q_v8f16(addr: *const i8, val: float16x8_t, align: i32) {
68309 unsafe extern "unadjusted" {
68310 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v8f16.p0")]
68311 fn _vst1q_v8f16(addr: *const i8, val: float16x8_t, align: i32);
68312 }
68313 _vst1q_v8f16(addr, val, align)
68314}
68315#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
68316#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_p64)"]
68317#[doc = "## Safety"]
68318#[doc = " * Neon instrinsic unsafe"]
68319#[inline]
68320#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
68321#[target_feature(enable = "neon,aes")]
68322#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
68323#[cfg_attr(
68324 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68325 assert_instr(nop, LANE = 0)
68326)]
68327#[rustc_legacy_const_generics(2)]
68328#[cfg_attr(
68329 not(target_arch = "arm"),
68330 stable(feature = "neon_intrinsics", since = "1.59.0")
68331)]
68332#[cfg_attr(
68333 target_arch = "arm",
68334 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68335)]
68336pub unsafe fn vst1q_lane_p64<const LANE: i32>(a: *mut p64, b: poly64x2_t) {
68337 static_assert_uimm_bits!(LANE, 1);
68338 *a = simd_extract!(b, LANE as u32);
68339}
68340#[doc = "Store multiple 2-element structures from two registers"]
68341#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_f16)"]
68342#[doc = "## Safety"]
68343#[doc = " * Neon instrinsic unsafe"]
68344#[inline]
68345#[target_feature(enable = "neon")]
68346#[cfg(not(target_arch = "arm"))]
68347#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68348#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68349#[cfg(not(target_arch = "arm64ec"))]
68350#[cfg_attr(test, assert_instr(st2))]
68351pub unsafe fn vst2_f16(a: *mut f16, b: float16x4x2_t) {
68352 unsafe extern "unadjusted" {
68353 #[cfg_attr(
68354 any(target_arch = "aarch64", target_arch = "arm64ec"),
68355 link_name = "llvm.aarch64.neon.st2.v4f16.p0"
68356 )]
68357 fn _vst2_f16(a: float16x4_t, b: float16x4_t, ptr: *mut i8);
68358 }
68359 _vst2_f16(b.0, b.1, a as _)
68360}
68361#[doc = "Store multiple 2-element structures from two registers"]
68362#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_f16)"]
68363#[doc = "## Safety"]
68364#[doc = " * Neon instrinsic unsafe"]
68365#[inline]
68366#[target_feature(enable = "neon")]
68367#[cfg(not(target_arch = "arm"))]
68368#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68369#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68370#[cfg(not(target_arch = "arm64ec"))]
68371#[cfg_attr(test, assert_instr(st2))]
68372pub unsafe fn vst2q_f16(a: *mut f16, b: float16x8x2_t) {
68373 unsafe extern "unadjusted" {
68374 #[cfg_attr(
68375 any(target_arch = "aarch64", target_arch = "arm64ec"),
68376 link_name = "llvm.aarch64.neon.st2.v8f16.p0"
68377 )]
68378 fn _vst2q_f16(a: float16x8_t, b: float16x8_t, ptr: *mut i8);
68379 }
68380 _vst2q_f16(b.0, b.1, a as _)
68381}
68382#[doc = "Store multiple 2-element structures from two registers"]
68383#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_f16)"]
68384#[doc = "## Safety"]
68385#[doc = " * Neon instrinsic unsafe"]
68386#[inline]
68387#[target_feature(enable = "neon")]
68388#[cfg(target_arch = "arm")]
68389#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68390#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68391#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68392#[cfg(not(target_arch = "arm64ec"))]
68393#[cfg_attr(test, assert_instr(vst2))]
68394pub unsafe fn vst2_f16(a: *mut f16, b: float16x4x2_t) {
68395 unsafe extern "unadjusted" {
68396 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.p0.v4f16")]
68397 fn _vst2_f16(ptr: *mut i8, a: float16x4_t, b: float16x4_t, size: i32);
68398 }
68399 _vst2_f16(a as _, b.0, b.1, 2)
68400}
68401#[doc = "Store multiple 2-element structures from two registers"]
68402#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_f16)"]
68403#[doc = "## Safety"]
68404#[doc = " * Neon instrinsic unsafe"]
68405#[inline]
68406#[target_feature(enable = "neon")]
68407#[cfg(target_arch = "arm")]
68408#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68409#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68410#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68411#[cfg(not(target_arch = "arm64ec"))]
68412#[cfg_attr(test, assert_instr(vst2))]
68413pub unsafe fn vst2q_f16(a: *mut f16, b: float16x8x2_t) {
68414 unsafe extern "unadjusted" {
68415 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.p0.v8f16")]
68416 fn _vst2q_f16(ptr: *mut i8, a: float16x8_t, b: float16x8_t, size: i32);
68417 }
68418 _vst2q_f16(a as _, b.0, b.1, 2)
68419}
68420#[doc = "Store multiple 2-element structures from two registers"]
68421#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_f32)"]
68422#[doc = "## Safety"]
68423#[doc = " * Neon instrinsic unsafe"]
68424#[inline]
68425#[target_feature(enable = "neon")]
68426#[cfg(not(target_arch = "arm"))]
68427#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68428#[cfg_attr(test, assert_instr(st2))]
68429pub unsafe fn vst2_f32(a: *mut f32, b: float32x2x2_t) {
68430 unsafe extern "unadjusted" {
68431 #[cfg_attr(
68432 any(target_arch = "aarch64", target_arch = "arm64ec"),
68433 link_name = "llvm.aarch64.neon.st2.v2f32.p0"
68434 )]
68435 fn _vst2_f32(a: float32x2_t, b: float32x2_t, ptr: *mut i8);
68436 }
68437 _vst2_f32(b.0, b.1, a as _)
68438}
68439#[doc = "Store multiple 2-element structures from two registers"]
68440#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_f32)"]
68441#[doc = "## Safety"]
68442#[doc = " * Neon instrinsic unsafe"]
68443#[inline]
68444#[target_feature(enable = "neon")]
68445#[cfg(not(target_arch = "arm"))]
68446#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68447#[cfg_attr(test, assert_instr(st2))]
68448pub unsafe fn vst2q_f32(a: *mut f32, b: float32x4x2_t) {
68449 unsafe extern "unadjusted" {
68450 #[cfg_attr(
68451 any(target_arch = "aarch64", target_arch = "arm64ec"),
68452 link_name = "llvm.aarch64.neon.st2.v4f32.p0"
68453 )]
68454 fn _vst2q_f32(a: float32x4_t, b: float32x4_t, ptr: *mut i8);
68455 }
68456 _vst2q_f32(b.0, b.1, a as _)
68457}
68458#[doc = "Store multiple 2-element structures from two registers"]
68459#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s8)"]
68460#[doc = "## Safety"]
68461#[doc = " * Neon instrinsic unsafe"]
68462#[inline]
68463#[target_feature(enable = "neon")]
68464#[cfg(not(target_arch = "arm"))]
68465#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68466#[cfg_attr(test, assert_instr(st2))]
68467pub unsafe fn vst2_s8(a: *mut i8, b: int8x8x2_t) {
68468 unsafe extern "unadjusted" {
68469 #[cfg_attr(
68470 any(target_arch = "aarch64", target_arch = "arm64ec"),
68471 link_name = "llvm.aarch64.neon.st2.v8i8.p0"
68472 )]
68473 fn _vst2_s8(a: int8x8_t, b: int8x8_t, ptr: *mut i8);
68474 }
68475 _vst2_s8(b.0, b.1, a as _)
68476}
68477#[doc = "Store multiple 2-element structures from two registers"]
68478#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s8)"]
68479#[doc = "## Safety"]
68480#[doc = " * Neon instrinsic unsafe"]
68481#[inline]
68482#[target_feature(enable = "neon")]
68483#[cfg(not(target_arch = "arm"))]
68484#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68485#[cfg_attr(test, assert_instr(st2))]
68486pub unsafe fn vst2q_s8(a: *mut i8, b: int8x16x2_t) {
68487 unsafe extern "unadjusted" {
68488 #[cfg_attr(
68489 any(target_arch = "aarch64", target_arch = "arm64ec"),
68490 link_name = "llvm.aarch64.neon.st2.v16i8.p0"
68491 )]
68492 fn _vst2q_s8(a: int8x16_t, b: int8x16_t, ptr: *mut i8);
68493 }
68494 _vst2q_s8(b.0, b.1, a as _)
68495}
68496#[doc = "Store multiple 2-element structures from two registers"]
68497#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s16)"]
68498#[doc = "## Safety"]
68499#[doc = " * Neon instrinsic unsafe"]
68500#[inline]
68501#[target_feature(enable = "neon")]
68502#[cfg(not(target_arch = "arm"))]
68503#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68504#[cfg_attr(test, assert_instr(st2))]
68505pub unsafe fn vst2_s16(a: *mut i16, b: int16x4x2_t) {
68506 unsafe extern "unadjusted" {
68507 #[cfg_attr(
68508 any(target_arch = "aarch64", target_arch = "arm64ec"),
68509 link_name = "llvm.aarch64.neon.st2.v4i16.p0"
68510 )]
68511 fn _vst2_s16(a: int16x4_t, b: int16x4_t, ptr: *mut i8);
68512 }
68513 _vst2_s16(b.0, b.1, a as _)
68514}
68515#[doc = "Store multiple 2-element structures from two registers"]
68516#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s16)"]
68517#[doc = "## Safety"]
68518#[doc = " * Neon instrinsic unsafe"]
68519#[inline]
68520#[target_feature(enable = "neon")]
68521#[cfg(not(target_arch = "arm"))]
68522#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68523#[cfg_attr(test, assert_instr(st2))]
68524pub unsafe fn vst2q_s16(a: *mut i16, b: int16x8x2_t) {
68525 unsafe extern "unadjusted" {
68526 #[cfg_attr(
68527 any(target_arch = "aarch64", target_arch = "arm64ec"),
68528 link_name = "llvm.aarch64.neon.st2.v8i16.p0"
68529 )]
68530 fn _vst2q_s16(a: int16x8_t, b: int16x8_t, ptr: *mut i8);
68531 }
68532 _vst2q_s16(b.0, b.1, a as _)
68533}
68534#[doc = "Store multiple 2-element structures from two registers"]
68535#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s32)"]
68536#[doc = "## Safety"]
68537#[doc = " * Neon instrinsic unsafe"]
68538#[inline]
68539#[target_feature(enable = "neon")]
68540#[cfg(not(target_arch = "arm"))]
68541#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68542#[cfg_attr(test, assert_instr(st2))]
68543pub unsafe fn vst2_s32(a: *mut i32, b: int32x2x2_t) {
68544 unsafe extern "unadjusted" {
68545 #[cfg_attr(
68546 any(target_arch = "aarch64", target_arch = "arm64ec"),
68547 link_name = "llvm.aarch64.neon.st2.v2i32.p0"
68548 )]
68549 fn _vst2_s32(a: int32x2_t, b: int32x2_t, ptr: *mut i8);
68550 }
68551 _vst2_s32(b.0, b.1, a as _)
68552}
68553#[doc = "Store multiple 2-element structures from two registers"]
68554#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s32)"]
68555#[doc = "## Safety"]
68556#[doc = " * Neon instrinsic unsafe"]
68557#[inline]
68558#[target_feature(enable = "neon")]
68559#[cfg(not(target_arch = "arm"))]
68560#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68561#[cfg_attr(test, assert_instr(st2))]
68562pub unsafe fn vst2q_s32(a: *mut i32, b: int32x4x2_t) {
68563 unsafe extern "unadjusted" {
68564 #[cfg_attr(
68565 any(target_arch = "aarch64", target_arch = "arm64ec"),
68566 link_name = "llvm.aarch64.neon.st2.v4i32.p0"
68567 )]
68568 fn _vst2q_s32(a: int32x4_t, b: int32x4_t, ptr: *mut i8);
68569 }
68570 _vst2q_s32(b.0, b.1, a as _)
68571}
68572#[doc = "Store multiple 2-element structures from two registers"]
68573#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_f32)"]
68574#[doc = "## Safety"]
68575#[doc = " * Neon instrinsic unsafe"]
68576#[inline]
68577#[cfg(target_arch = "arm")]
68578#[target_feature(enable = "neon,v7")]
68579#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68580#[cfg_attr(test, assert_instr(vst2))]
68581pub unsafe fn vst2_f32(a: *mut f32, b: float32x2x2_t) {
68582 unsafe extern "unadjusted" {
68583 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v2f32.p0")]
68584 fn _vst2_f32(ptr: *mut i8, a: float32x2_t, b: float32x2_t, size: i32);
68585 }
68586 _vst2_f32(a as _, b.0, b.1, 4)
68587}
68588#[doc = "Store multiple 2-element structures from two registers"]
68589#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_f32)"]
68590#[doc = "## Safety"]
68591#[doc = " * Neon instrinsic unsafe"]
68592#[inline]
68593#[cfg(target_arch = "arm")]
68594#[target_feature(enable = "neon,v7")]
68595#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68596#[cfg_attr(test, assert_instr(vst2))]
68597pub unsafe fn vst2q_f32(a: *mut f32, b: float32x4x2_t) {
68598 unsafe extern "unadjusted" {
68599 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v4f32.p0")]
68600 fn _vst2q_f32(ptr: *mut i8, a: float32x4_t, b: float32x4_t, size: i32);
68601 }
68602 _vst2q_f32(a as _, b.0, b.1, 4)
68603}
68604#[doc = "Store multiple 2-element structures from two registers"]
68605#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s8)"]
68606#[doc = "## Safety"]
68607#[doc = " * Neon instrinsic unsafe"]
68608#[inline]
68609#[cfg(target_arch = "arm")]
68610#[target_feature(enable = "neon,v7")]
68611#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68612#[cfg_attr(test, assert_instr(vst2))]
68613pub unsafe fn vst2_s8(a: *mut i8, b: int8x8x2_t) {
68614 unsafe extern "unadjusted" {
68615 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v8i8.p0")]
68616 fn _vst2_s8(ptr: *mut i8, a: int8x8_t, b: int8x8_t, size: i32);
68617 }
68618 _vst2_s8(a as _, b.0, b.1, 1)
68619}
68620#[doc = "Store multiple 2-element structures from two registers"]
68621#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s8)"]
68622#[doc = "## Safety"]
68623#[doc = " * Neon instrinsic unsafe"]
68624#[inline]
68625#[cfg(target_arch = "arm")]
68626#[target_feature(enable = "neon,v7")]
68627#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68628#[cfg_attr(test, assert_instr(vst2))]
68629pub unsafe fn vst2q_s8(a: *mut i8, b: int8x16x2_t) {
68630 unsafe extern "unadjusted" {
68631 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v16i8.p0")]
68632 fn _vst2q_s8(ptr: *mut i8, a: int8x16_t, b: int8x16_t, size: i32);
68633 }
68634 _vst2q_s8(a as _, b.0, b.1, 1)
68635}
68636#[doc = "Store multiple 2-element structures from two registers"]
68637#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s16)"]
68638#[doc = "## Safety"]
68639#[doc = " * Neon instrinsic unsafe"]
68640#[inline]
68641#[cfg(target_arch = "arm")]
68642#[target_feature(enable = "neon,v7")]
68643#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68644#[cfg_attr(test, assert_instr(vst2))]
68645pub unsafe fn vst2_s16(a: *mut i16, b: int16x4x2_t) {
68646 unsafe extern "unadjusted" {
68647 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v4i16.p0")]
68648 fn _vst2_s16(ptr: *mut i8, a: int16x4_t, b: int16x4_t, size: i32);
68649 }
68650 _vst2_s16(a as _, b.0, b.1, 2)
68651}
68652#[doc = "Store multiple 2-element structures from two registers"]
68653#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s16)"]
68654#[doc = "## Safety"]
68655#[doc = " * Neon instrinsic unsafe"]
68656#[inline]
68657#[cfg(target_arch = "arm")]
68658#[target_feature(enable = "neon,v7")]
68659#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68660#[cfg_attr(test, assert_instr(vst2))]
68661pub unsafe fn vst2q_s16(a: *mut i16, b: int16x8x2_t) {
68662 unsafe extern "unadjusted" {
68663 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v8i16.p0")]
68664 fn _vst2q_s16(ptr: *mut i8, a: int16x8_t, b: int16x8_t, size: i32);
68665 }
68666 _vst2q_s16(a as _, b.0, b.1, 2)
68667}
68668#[doc = "Store multiple 2-element structures from two registers"]
68669#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s32)"]
68670#[doc = "## Safety"]
68671#[doc = " * Neon instrinsic unsafe"]
68672#[inline]
68673#[cfg(target_arch = "arm")]
68674#[target_feature(enable = "neon,v7")]
68675#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68676#[cfg_attr(test, assert_instr(vst2))]
68677pub unsafe fn vst2_s32(a: *mut i32, b: int32x2x2_t) {
68678 unsafe extern "unadjusted" {
68679 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v2i32.p0")]
68680 fn _vst2_s32(ptr: *mut i8, a: int32x2_t, b: int32x2_t, size: i32);
68681 }
68682 _vst2_s32(a as _, b.0, b.1, 4)
68683}
68684#[doc = "Store multiple 2-element structures from two registers"]
68685#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s32)"]
68686#[doc = "## Safety"]
68687#[doc = " * Neon instrinsic unsafe"]
68688#[inline]
68689#[cfg(target_arch = "arm")]
68690#[target_feature(enable = "neon,v7")]
68691#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68692#[cfg_attr(test, assert_instr(vst2))]
68693pub unsafe fn vst2q_s32(a: *mut i32, b: int32x4x2_t) {
68694 unsafe extern "unadjusted" {
68695 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v4i32.p0")]
68696 fn _vst2q_s32(ptr: *mut i8, a: int32x4_t, b: int32x4_t, size: i32);
68697 }
68698 _vst2q_s32(a as _, b.0, b.1, 4)
68699}
68700#[doc = "Store multiple 2-element structures from two registers"]
68701#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_f16)"]
68702#[doc = "## Safety"]
68703#[doc = " * Neon instrinsic unsafe"]
68704#[inline]
68705#[target_feature(enable = "neon")]
68706#[cfg(not(target_arch = "arm"))]
68707#[rustc_legacy_const_generics(2)]
68708#[cfg_attr(test, assert_instr(st2, LANE = 0))]
68709#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68710#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68711#[cfg(not(target_arch = "arm64ec"))]
68712pub unsafe fn vst2_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x2_t) {
68713 static_assert_uimm_bits!(LANE, 2);
68714 unsafe extern "unadjusted" {
68715 #[cfg_attr(
68716 any(target_arch = "aarch64", target_arch = "arm64ec"),
68717 link_name = "llvm.aarch64.neon.st2lane.v4f16.p0"
68718 )]
68719 fn _vst2_lane_f16(a: float16x4_t, b: float16x4_t, n: i64, ptr: *mut i8);
68720 }
68721 _vst2_lane_f16(b.0, b.1, LANE as i64, a as _)
68722}
68723#[doc = "Store multiple 2-element structures from two registers"]
68724#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_f16)"]
68725#[doc = "## Safety"]
68726#[doc = " * Neon instrinsic unsafe"]
68727#[inline]
68728#[target_feature(enable = "neon")]
68729#[cfg(not(target_arch = "arm"))]
68730#[rustc_legacy_const_generics(2)]
68731#[cfg_attr(test, assert_instr(st2, LANE = 0))]
68732#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68733#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68734#[cfg(not(target_arch = "arm64ec"))]
68735pub unsafe fn vst2q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x2_t) {
68736 static_assert_uimm_bits!(LANE, 3);
68737 unsafe extern "unadjusted" {
68738 #[cfg_attr(
68739 any(target_arch = "aarch64", target_arch = "arm64ec"),
68740 link_name = "llvm.aarch64.neon.st2lane.v8f16.p0"
68741 )]
68742 fn _vst2q_lane_f16(a: float16x8_t, b: float16x8_t, n: i64, ptr: *mut i8);
68743 }
68744 _vst2q_lane_f16(b.0, b.1, LANE as i64, a as _)
68745}
68746#[doc = "Store multiple 2-element structures from two registers"]
68747#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_f16)"]
68748#[doc = "## Safety"]
68749#[doc = " * Neon instrinsic unsafe"]
68750#[inline]
68751#[target_feature(enable = "neon")]
68752#[cfg(target_arch = "arm")]
68753#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68754#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
68755#[rustc_legacy_const_generics(2)]
68756#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68757#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68758#[cfg(not(target_arch = "arm64ec"))]
68759pub unsafe fn vst2_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x2_t) {
68760 static_assert_uimm_bits!(LANE, 2);
68761 unsafe extern "unadjusted" {
68762 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.p0.v4f16")]
68763 fn _vst2_lane_f16(ptr: *mut i8, a: float16x4_t, b: float16x4_t, n: i32, size: i32);
68764 }
68765 _vst2_lane_f16(a as _, b.0, b.1, LANE, 2)
68766}
68767#[doc = "Store multiple 2-element structures from two registers"]
68768#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_f16)"]
68769#[doc = "## Safety"]
68770#[doc = " * Neon instrinsic unsafe"]
68771#[inline]
68772#[target_feature(enable = "neon")]
68773#[cfg(target_arch = "arm")]
68774#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68775#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
68776#[rustc_legacy_const_generics(2)]
68777#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68778#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68779#[cfg(not(target_arch = "arm64ec"))]
68780pub unsafe fn vst2q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x2_t) {
68781 static_assert_uimm_bits!(LANE, 1);
68782 unsafe extern "unadjusted" {
68783 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.p0.v8f16")]
68784 fn _vst2q_lane_f16(ptr: *mut i8, a: float16x8_t, b: float16x8_t, n: i32, size: i32);
68785 }
68786 _vst2q_lane_f16(a as _, b.0, b.1, LANE, 2)
68787}
68788#[doc = "Store multiple 2-element structures from two registers"]
68789#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_f32)"]
68790#[doc = "## Safety"]
68791#[doc = " * Neon instrinsic unsafe"]
68792#[inline]
68793#[target_feature(enable = "neon")]
68794#[cfg(not(target_arch = "arm"))]
68795#[rustc_legacy_const_generics(2)]
68796#[cfg_attr(test, assert_instr(st2, LANE = 0))]
68797#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68798pub unsafe fn vst2_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x2_t) {
68799 static_assert_uimm_bits!(LANE, 1);
68800 unsafe extern "unadjusted" {
68801 #[cfg_attr(
68802 any(target_arch = "aarch64", target_arch = "arm64ec"),
68803 link_name = "llvm.aarch64.neon.st2lane.v2f32.p0"
68804 )]
68805 fn _vst2_lane_f32(a: float32x2_t, b: float32x2_t, n: i64, ptr: *mut i8);
68806 }
68807 _vst2_lane_f32(b.0, b.1, LANE as i64, a as _)
68808}
68809#[doc = "Store multiple 2-element structures from two registers"]
68810#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_f32)"]
68811#[doc = "## Safety"]
68812#[doc = " * Neon instrinsic unsafe"]
68813#[inline]
68814#[target_feature(enable = "neon")]
68815#[cfg(not(target_arch = "arm"))]
68816#[rustc_legacy_const_generics(2)]
68817#[cfg_attr(test, assert_instr(st2, LANE = 0))]
68818#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68819pub unsafe fn vst2q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x2_t) {
68820 static_assert_uimm_bits!(LANE, 2);
68821 unsafe extern "unadjusted" {
68822 #[cfg_attr(
68823 any(target_arch = "aarch64", target_arch = "arm64ec"),
68824 link_name = "llvm.aarch64.neon.st2lane.v4f32.p0"
68825 )]
68826 fn _vst2q_lane_f32(a: float32x4_t, b: float32x4_t, n: i64, ptr: *mut i8);
68827 }
68828 _vst2q_lane_f32(b.0, b.1, LANE as i64, a as _)
68829}
68830#[doc = "Store multiple 2-element structures from two registers"]
68831#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s8)"]
68832#[doc = "## Safety"]
68833#[doc = " * Neon instrinsic unsafe"]
68834#[inline]
68835#[target_feature(enable = "neon")]
68836#[cfg(not(target_arch = "arm"))]
68837#[rustc_legacy_const_generics(2)]
68838#[cfg_attr(test, assert_instr(st2, LANE = 0))]
68839#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68840pub unsafe fn vst2_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x2_t) {
68841 static_assert_uimm_bits!(LANE, 3);
68842 unsafe extern "unadjusted" {
68843 #[cfg_attr(
68844 any(target_arch = "aarch64", target_arch = "arm64ec"),
68845 link_name = "llvm.aarch64.neon.st2lane.v8i8.p0"
68846 )]
68847 fn _vst2_lane_s8(a: int8x8_t, b: int8x8_t, n: i64, ptr: *mut i8);
68848 }
68849 _vst2_lane_s8(b.0, b.1, LANE as i64, a as _)
68850}
68851#[doc = "Store multiple 2-element structures from two registers"]
68852#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s16)"]
68853#[doc = "## Safety"]
68854#[doc = " * Neon instrinsic unsafe"]
68855#[inline]
68856#[target_feature(enable = "neon")]
68857#[cfg(not(target_arch = "arm"))]
68858#[rustc_legacy_const_generics(2)]
68859#[cfg_attr(test, assert_instr(st2, LANE = 0))]
68860#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68861pub unsafe fn vst2_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x2_t) {
68862 static_assert_uimm_bits!(LANE, 2);
68863 unsafe extern "unadjusted" {
68864 #[cfg_attr(
68865 any(target_arch = "aarch64", target_arch = "arm64ec"),
68866 link_name = "llvm.aarch64.neon.st2lane.v4i16.p0"
68867 )]
68868 fn _vst2_lane_s16(a: int16x4_t, b: int16x4_t, n: i64, ptr: *mut i8);
68869 }
68870 _vst2_lane_s16(b.0, b.1, LANE as i64, a as _)
68871}
68872#[doc = "Store multiple 2-element structures from two registers"]
68873#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_s16)"]
68874#[doc = "## Safety"]
68875#[doc = " * Neon instrinsic unsafe"]
68876#[inline]
68877#[target_feature(enable = "neon")]
68878#[cfg(not(target_arch = "arm"))]
68879#[rustc_legacy_const_generics(2)]
68880#[cfg_attr(test, assert_instr(st2, LANE = 0))]
68881#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68882pub unsafe fn vst2q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x2_t) {
68883 static_assert_uimm_bits!(LANE, 3);
68884 unsafe extern "unadjusted" {
68885 #[cfg_attr(
68886 any(target_arch = "aarch64", target_arch = "arm64ec"),
68887 link_name = "llvm.aarch64.neon.st2lane.v8i16.p0"
68888 )]
68889 fn _vst2q_lane_s16(a: int16x8_t, b: int16x8_t, n: i64, ptr: *mut i8);
68890 }
68891 _vst2q_lane_s16(b.0, b.1, LANE as i64, a as _)
68892}
68893#[doc = "Store multiple 2-element structures from two registers"]
68894#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s32)"]
68895#[doc = "## Safety"]
68896#[doc = " * Neon instrinsic unsafe"]
68897#[inline]
68898#[target_feature(enable = "neon")]
68899#[cfg(not(target_arch = "arm"))]
68900#[rustc_legacy_const_generics(2)]
68901#[cfg_attr(test, assert_instr(st2, LANE = 0))]
68902#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68903pub unsafe fn vst2_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x2_t) {
68904 static_assert_uimm_bits!(LANE, 1);
68905 unsafe extern "unadjusted" {
68906 #[cfg_attr(
68907 any(target_arch = "aarch64", target_arch = "arm64ec"),
68908 link_name = "llvm.aarch64.neon.st2lane.v2i32.p0"
68909 )]
68910 fn _vst2_lane_s32(a: int32x2_t, b: int32x2_t, n: i64, ptr: *mut i8);
68911 }
68912 _vst2_lane_s32(b.0, b.1, LANE as i64, a as _)
68913}
68914#[doc = "Store multiple 2-element structures from two registers"]
68915#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_s32)"]
68916#[doc = "## Safety"]
68917#[doc = " * Neon instrinsic unsafe"]
68918#[inline]
68919#[target_feature(enable = "neon")]
68920#[cfg(not(target_arch = "arm"))]
68921#[rustc_legacy_const_generics(2)]
68922#[cfg_attr(test, assert_instr(st2, LANE = 0))]
68923#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68924pub unsafe fn vst2q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x2_t) {
68925 static_assert_uimm_bits!(LANE, 2);
68926 unsafe extern "unadjusted" {
68927 #[cfg_attr(
68928 any(target_arch = "aarch64", target_arch = "arm64ec"),
68929 link_name = "llvm.aarch64.neon.st2lane.v4i32.p0"
68930 )]
68931 fn _vst2q_lane_s32(a: int32x4_t, b: int32x4_t, n: i64, ptr: *mut i8);
68932 }
68933 _vst2q_lane_s32(b.0, b.1, LANE as i64, a as _)
68934}
68935#[doc = "Store multiple 2-element structures from two registers"]
68936#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_f32)"]
68937#[doc = "## Safety"]
68938#[doc = " * Neon instrinsic unsafe"]
68939#[inline]
68940#[cfg(target_arch = "arm")]
68941#[target_feature(enable = "neon,v7")]
68942#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
68943#[rustc_legacy_const_generics(2)]
68944#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68945pub unsafe fn vst2_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x2_t) {
68946 static_assert_uimm_bits!(LANE, 1);
68947 unsafe extern "unadjusted" {
68948 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v2f32.p0")]
68949 fn _vst2_lane_f32(ptr: *mut i8, a: float32x2_t, b: float32x2_t, n: i32, size: i32);
68950 }
68951 _vst2_lane_f32(a as _, b.0, b.1, LANE, 4)
68952}
68953#[doc = "Store multiple 2-element structures from two registers"]
68954#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_f32)"]
68955#[doc = "## Safety"]
68956#[doc = " * Neon instrinsic unsafe"]
68957#[inline]
68958#[cfg(target_arch = "arm")]
68959#[target_feature(enable = "neon,v7")]
68960#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
68961#[rustc_legacy_const_generics(2)]
68962#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68963pub unsafe fn vst2q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x2_t) {
68964 static_assert_uimm_bits!(LANE, 2);
68965 unsafe extern "unadjusted" {
68966 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v4f32.p0")]
68967 fn _vst2q_lane_f32(ptr: *mut i8, a: float32x4_t, b: float32x4_t, n: i32, size: i32);
68968 }
68969 _vst2q_lane_f32(a as _, b.0, b.1, LANE, 4)
68970}
68971#[doc = "Store multiple 2-element structures from two registers"]
68972#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s8)"]
68973#[doc = "## Safety"]
68974#[doc = " * Neon instrinsic unsafe"]
68975#[inline]
68976#[cfg(target_arch = "arm")]
68977#[target_feature(enable = "neon,v7")]
68978#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
68979#[rustc_legacy_const_generics(2)]
68980#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68981pub unsafe fn vst2_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x2_t) {
68982 static_assert_uimm_bits!(LANE, 3);
68983 unsafe extern "unadjusted" {
68984 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v8i8.p0")]
68985 fn _vst2_lane_s8(ptr: *mut i8, a: int8x8_t, b: int8x8_t, n: i32, size: i32);
68986 }
68987 _vst2_lane_s8(a as _, b.0, b.1, LANE, 1)
68988}
68989#[doc = "Store multiple 2-element structures from two registers"]
68990#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s16)"]
68991#[doc = "## Safety"]
68992#[doc = " * Neon instrinsic unsafe"]
68993#[inline]
68994#[cfg(target_arch = "arm")]
68995#[target_feature(enable = "neon,v7")]
68996#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
68997#[rustc_legacy_const_generics(2)]
68998#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68999pub unsafe fn vst2_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x2_t) {
69000 static_assert_uimm_bits!(LANE, 2);
69001 unsafe extern "unadjusted" {
69002 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v4i16.p0")]
69003 fn _vst2_lane_s16(ptr: *mut i8, a: int16x4_t, b: int16x4_t, n: i32, size: i32);
69004 }
69005 _vst2_lane_s16(a as _, b.0, b.1, LANE, 2)
69006}
69007#[doc = "Store multiple 2-element structures from two registers"]
69008#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_s16)"]
69009#[doc = "## Safety"]
69010#[doc = " * Neon instrinsic unsafe"]
69011#[inline]
69012#[cfg(target_arch = "arm")]
69013#[target_feature(enable = "neon,v7")]
69014#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
69015#[rustc_legacy_const_generics(2)]
69016#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69017pub unsafe fn vst2q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x2_t) {
69018 static_assert_uimm_bits!(LANE, 3);
69019 unsafe extern "unadjusted" {
69020 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v8i16.p0")]
69021 fn _vst2q_lane_s16(ptr: *mut i8, a: int16x8_t, b: int16x8_t, n: i32, size: i32);
69022 }
69023 _vst2q_lane_s16(a as _, b.0, b.1, LANE, 2)
69024}
69025#[doc = "Store multiple 2-element structures from two registers"]
69026#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s32)"]
69027#[doc = "## Safety"]
69028#[doc = " * Neon instrinsic unsafe"]
69029#[inline]
69030#[cfg(target_arch = "arm")]
69031#[target_feature(enable = "neon,v7")]
69032#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
69033#[rustc_legacy_const_generics(2)]
69034#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69035pub unsafe fn vst2_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x2_t) {
69036 static_assert_uimm_bits!(LANE, 1);
69037 unsafe extern "unadjusted" {
69038 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v2i32.p0")]
69039 fn _vst2_lane_s32(ptr: *mut i8, a: int32x2_t, b: int32x2_t, n: i32, size: i32);
69040 }
69041 _vst2_lane_s32(a as _, b.0, b.1, LANE, 4)
69042}
69043#[doc = "Store multiple 2-element structures from two registers"]
69044#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_s32)"]
69045#[doc = "## Safety"]
69046#[doc = " * Neon instrinsic unsafe"]
69047#[inline]
69048#[cfg(target_arch = "arm")]
69049#[target_feature(enable = "neon,v7")]
69050#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
69051#[rustc_legacy_const_generics(2)]
69052#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69053pub unsafe fn vst2q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x2_t) {
69054 static_assert_uimm_bits!(LANE, 2);
69055 unsafe extern "unadjusted" {
69056 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v4i32.p0")]
69057 fn _vst2q_lane_s32(ptr: *mut i8, a: int32x4_t, b: int32x4_t, n: i32, size: i32);
69058 }
69059 _vst2q_lane_s32(a as _, b.0, b.1, LANE, 4)
69060}
69061#[doc = "Store multiple 2-element structures from two registers"]
69062#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_u8)"]
69063#[doc = "## Safety"]
69064#[doc = " * Neon instrinsic unsafe"]
69065#[inline]
69066#[target_feature(enable = "neon")]
69067#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69068#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
69069#[cfg_attr(
69070 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69071 assert_instr(st2, LANE = 0)
69072)]
69073#[rustc_legacy_const_generics(2)]
69074#[cfg_attr(
69075 not(target_arch = "arm"),
69076 stable(feature = "neon_intrinsics", since = "1.59.0")
69077)]
69078#[cfg_attr(
69079 target_arch = "arm",
69080 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69081)]
69082pub unsafe fn vst2_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x8x2_t) {
69083 static_assert_uimm_bits!(LANE, 3);
69084 vst2_lane_s8::<LANE>(transmute(a), transmute(b))
69085}
69086#[doc = "Store multiple 2-element structures from two registers"]
69087#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_u16)"]
69088#[doc = "## Safety"]
69089#[doc = " * Neon instrinsic unsafe"]
69090#[inline]
69091#[target_feature(enable = "neon")]
69092#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69093#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
69094#[cfg_attr(
69095 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69096 assert_instr(st2, LANE = 0)
69097)]
69098#[rustc_legacy_const_generics(2)]
69099#[cfg_attr(
69100 not(target_arch = "arm"),
69101 stable(feature = "neon_intrinsics", since = "1.59.0")
69102)]
69103#[cfg_attr(
69104 target_arch = "arm",
69105 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69106)]
69107pub unsafe fn vst2_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x4x2_t) {
69108 static_assert_uimm_bits!(LANE, 2);
69109 vst2_lane_s16::<LANE>(transmute(a), transmute(b))
69110}
69111#[doc = "Store multiple 2-element structures from two registers"]
69112#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_u16)"]
69113#[doc = "## Safety"]
69114#[doc = " * Neon instrinsic unsafe"]
69115#[inline]
69116#[target_feature(enable = "neon")]
69117#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69118#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
69119#[cfg_attr(
69120 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69121 assert_instr(st2, LANE = 0)
69122)]
69123#[rustc_legacy_const_generics(2)]
69124#[cfg_attr(
69125 not(target_arch = "arm"),
69126 stable(feature = "neon_intrinsics", since = "1.59.0")
69127)]
69128#[cfg_attr(
69129 target_arch = "arm",
69130 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69131)]
69132pub unsafe fn vst2q_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x8x2_t) {
69133 static_assert_uimm_bits!(LANE, 3);
69134 vst2q_lane_s16::<LANE>(transmute(a), transmute(b))
69135}
69136#[doc = "Store multiple 2-element structures from two registers"]
69137#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_u32)"]
69138#[doc = "## Safety"]
69139#[doc = " * Neon instrinsic unsafe"]
69140#[inline]
69141#[target_feature(enable = "neon")]
69142#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69143#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
69144#[cfg_attr(
69145 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69146 assert_instr(st2, LANE = 0)
69147)]
69148#[rustc_legacy_const_generics(2)]
69149#[cfg_attr(
69150 not(target_arch = "arm"),
69151 stable(feature = "neon_intrinsics", since = "1.59.0")
69152)]
69153#[cfg_attr(
69154 target_arch = "arm",
69155 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69156)]
69157pub unsafe fn vst2_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x2x2_t) {
69158 static_assert_uimm_bits!(LANE, 1);
69159 vst2_lane_s32::<LANE>(transmute(a), transmute(b))
69160}
69161#[doc = "Store multiple 2-element structures from two registers"]
69162#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_u32)"]
69163#[doc = "## Safety"]
69164#[doc = " * Neon instrinsic unsafe"]
69165#[inline]
69166#[target_feature(enable = "neon")]
69167#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69168#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
69169#[cfg_attr(
69170 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69171 assert_instr(st2, LANE = 0)
69172)]
69173#[rustc_legacy_const_generics(2)]
69174#[cfg_attr(
69175 not(target_arch = "arm"),
69176 stable(feature = "neon_intrinsics", since = "1.59.0")
69177)]
69178#[cfg_attr(
69179 target_arch = "arm",
69180 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69181)]
69182pub unsafe fn vst2q_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x4x2_t) {
69183 static_assert_uimm_bits!(LANE, 2);
69184 vst2q_lane_s32::<LANE>(transmute(a), transmute(b))
69185}
69186#[doc = "Store multiple 2-element structures from two registers"]
69187#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_p8)"]
69188#[doc = "## Safety"]
69189#[doc = " * Neon instrinsic unsafe"]
69190#[inline]
69191#[target_feature(enable = "neon")]
69192#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69193#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
69194#[cfg_attr(
69195 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69196 assert_instr(st2, LANE = 0)
69197)]
69198#[rustc_legacy_const_generics(2)]
69199#[cfg_attr(
69200 not(target_arch = "arm"),
69201 stable(feature = "neon_intrinsics", since = "1.59.0")
69202)]
69203#[cfg_attr(
69204 target_arch = "arm",
69205 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69206)]
69207pub unsafe fn vst2_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x8x2_t) {
69208 static_assert_uimm_bits!(LANE, 3);
69209 vst2_lane_s8::<LANE>(transmute(a), transmute(b))
69210}
69211#[doc = "Store multiple 2-element structures from two registers"]
69212#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_p16)"]
69213#[doc = "## Safety"]
69214#[doc = " * Neon instrinsic unsafe"]
69215#[inline]
69216#[target_feature(enable = "neon")]
69217#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69218#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
69219#[cfg_attr(
69220 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69221 assert_instr(st2, LANE = 0)
69222)]
69223#[rustc_legacy_const_generics(2)]
69224#[cfg_attr(
69225 not(target_arch = "arm"),
69226 stable(feature = "neon_intrinsics", since = "1.59.0")
69227)]
69228#[cfg_attr(
69229 target_arch = "arm",
69230 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69231)]
69232pub unsafe fn vst2_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x4x2_t) {
69233 static_assert_uimm_bits!(LANE, 2);
69234 vst2_lane_s16::<LANE>(transmute(a), transmute(b))
69235}
69236#[doc = "Store multiple 2-element structures from two registers"]
69237#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_p16)"]
69238#[doc = "## Safety"]
69239#[doc = " * Neon instrinsic unsafe"]
69240#[inline]
69241#[target_feature(enable = "neon")]
69242#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69243#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
69244#[cfg_attr(
69245 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69246 assert_instr(st2, LANE = 0)
69247)]
69248#[rustc_legacy_const_generics(2)]
69249#[cfg_attr(
69250 not(target_arch = "arm"),
69251 stable(feature = "neon_intrinsics", since = "1.59.0")
69252)]
69253#[cfg_attr(
69254 target_arch = "arm",
69255 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69256)]
69257pub unsafe fn vst2q_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x8x2_t) {
69258 static_assert_uimm_bits!(LANE, 3);
69259 vst2q_lane_s16::<LANE>(transmute(a), transmute(b))
69260}
69261#[doc = "Store multiple 2-element structures from two registers"]
69262#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_p64)"]
69263#[doc = "## Safety"]
69264#[doc = " * Neon instrinsic unsafe"]
69265#[inline]
69266#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
69267#[target_feature(enable = "neon,aes")]
69268#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
69269#[cfg_attr(
69270 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69271 assert_instr(nop)
69272)]
69273#[cfg_attr(
69274 not(target_arch = "arm"),
69275 stable(feature = "neon_intrinsics", since = "1.59.0")
69276)]
69277#[cfg_attr(
69278 target_arch = "arm",
69279 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69280)]
69281pub unsafe fn vst2_p64(a: *mut p64, b: poly64x1x2_t) {
69282 vst2_s64(transmute(a), transmute(b))
69283}
69284#[doc = "Store multiple 2-element structures from two registers"]
69285#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s64)"]
69286#[doc = "## Safety"]
69287#[doc = " * Neon instrinsic unsafe"]
69288#[inline]
69289#[cfg(target_arch = "arm")]
69290#[target_feature(enable = "neon,v7")]
69291#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69292#[cfg_attr(test, assert_instr(nop))]
69293pub unsafe fn vst2_s64(a: *mut i64, b: int64x1x2_t) {
69294 unsafe extern "unadjusted" {
69295 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v1i64.p0")]
69296 fn _vst2_s64(ptr: *mut i8, a: int64x1_t, b: int64x1_t, size: i32);
69297 }
69298 _vst2_s64(a as _, b.0, b.1, 8)
69299}
69300#[doc = "Store multiple 2-element structures from two registers"]
69301#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s64)"]
69302#[doc = "## Safety"]
69303#[doc = " * Neon instrinsic unsafe"]
69304#[inline]
69305#[target_feature(enable = "neon")]
69306#[cfg(not(target_arch = "arm"))]
69307#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69308#[cfg_attr(test, assert_instr(nop))]
69309pub unsafe fn vst2_s64(a: *mut i64, b: int64x1x2_t) {
69310 unsafe extern "unadjusted" {
69311 #[cfg_attr(
69312 any(target_arch = "aarch64", target_arch = "arm64ec"),
69313 link_name = "llvm.aarch64.neon.st2.v1i64.p0"
69314 )]
69315 fn _vst2_s64(a: int64x1_t, b: int64x1_t, ptr: *mut i8);
69316 }
69317 _vst2_s64(b.0, b.1, a as _)
69318}
69319#[doc = "Store multiple 2-element structures from two registers"]
69320#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_u64)"]
69321#[doc = "## Safety"]
69322#[doc = " * Neon instrinsic unsafe"]
69323#[inline]
69324#[target_feature(enable = "neon")]
69325#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69326#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
69327#[cfg_attr(
69328 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69329 assert_instr(nop)
69330)]
69331#[cfg_attr(
69332 not(target_arch = "arm"),
69333 stable(feature = "neon_intrinsics", since = "1.59.0")
69334)]
69335#[cfg_attr(
69336 target_arch = "arm",
69337 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69338)]
69339pub unsafe fn vst2_u64(a: *mut u64, b: uint64x1x2_t) {
69340 vst2_s64(transmute(a), transmute(b))
69341}
69342#[doc = "Store multiple 2-element structures from two registers"]
69343#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_u8)"]
69344#[doc = "## Safety"]
69345#[doc = " * Neon instrinsic unsafe"]
69346#[inline]
69347#[target_feature(enable = "neon")]
69348#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69349#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
69350#[cfg_attr(
69351 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69352 assert_instr(st2)
69353)]
69354#[cfg_attr(
69355 not(target_arch = "arm"),
69356 stable(feature = "neon_intrinsics", since = "1.59.0")
69357)]
69358#[cfg_attr(
69359 target_arch = "arm",
69360 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69361)]
69362pub unsafe fn vst2_u8(a: *mut u8, b: uint8x8x2_t) {
69363 vst2_s8(transmute(a), transmute(b))
69364}
69365#[doc = "Store multiple 2-element structures from two registers"]
69366#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_u8)"]
69367#[doc = "## Safety"]
69368#[doc = " * Neon instrinsic unsafe"]
69369#[inline]
69370#[target_feature(enable = "neon")]
69371#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69372#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
69373#[cfg_attr(
69374 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69375 assert_instr(st2)
69376)]
69377#[cfg_attr(
69378 not(target_arch = "arm"),
69379 stable(feature = "neon_intrinsics", since = "1.59.0")
69380)]
69381#[cfg_attr(
69382 target_arch = "arm",
69383 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69384)]
69385pub unsafe fn vst2q_u8(a: *mut u8, b: uint8x16x2_t) {
69386 vst2q_s8(transmute(a), transmute(b))
69387}
69388#[doc = "Store multiple 2-element structures from two registers"]
69389#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_u16)"]
69390#[doc = "## Safety"]
69391#[doc = " * Neon instrinsic unsafe"]
69392#[inline]
69393#[target_feature(enable = "neon")]
69394#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69395#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
69396#[cfg_attr(
69397 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69398 assert_instr(st2)
69399)]
69400#[cfg_attr(
69401 not(target_arch = "arm"),
69402 stable(feature = "neon_intrinsics", since = "1.59.0")
69403)]
69404#[cfg_attr(
69405 target_arch = "arm",
69406 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69407)]
69408pub unsafe fn vst2_u16(a: *mut u16, b: uint16x4x2_t) {
69409 vst2_s16(transmute(a), transmute(b))
69410}
69411#[doc = "Store multiple 2-element structures from two registers"]
69412#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_u16)"]
69413#[doc = "## Safety"]
69414#[doc = " * Neon instrinsic unsafe"]
69415#[inline]
69416#[target_feature(enable = "neon")]
69417#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69418#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
69419#[cfg_attr(
69420 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69421 assert_instr(st2)
69422)]
69423#[cfg_attr(
69424 not(target_arch = "arm"),
69425 stable(feature = "neon_intrinsics", since = "1.59.0")
69426)]
69427#[cfg_attr(
69428 target_arch = "arm",
69429 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69430)]
69431pub unsafe fn vst2q_u16(a: *mut u16, b: uint16x8x2_t) {
69432 vst2q_s16(transmute(a), transmute(b))
69433}
69434#[doc = "Store multiple 2-element structures from two registers"]
69435#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_u32)"]
69436#[doc = "## Safety"]
69437#[doc = " * Neon instrinsic unsafe"]
69438#[inline]
69439#[target_feature(enable = "neon")]
69440#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69441#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
69442#[cfg_attr(
69443 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69444 assert_instr(st2)
69445)]
69446#[cfg_attr(
69447 not(target_arch = "arm"),
69448 stable(feature = "neon_intrinsics", since = "1.59.0")
69449)]
69450#[cfg_attr(
69451 target_arch = "arm",
69452 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69453)]
69454pub unsafe fn vst2_u32(a: *mut u32, b: uint32x2x2_t) {
69455 vst2_s32(transmute(a), transmute(b))
69456}
69457#[doc = "Store multiple 2-element structures from two registers"]
69458#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_u32)"]
69459#[doc = "## Safety"]
69460#[doc = " * Neon instrinsic unsafe"]
69461#[inline]
69462#[target_feature(enable = "neon")]
69463#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69464#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
69465#[cfg_attr(
69466 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69467 assert_instr(st2)
69468)]
69469#[cfg_attr(
69470 not(target_arch = "arm"),
69471 stable(feature = "neon_intrinsics", since = "1.59.0")
69472)]
69473#[cfg_attr(
69474 target_arch = "arm",
69475 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69476)]
69477pub unsafe fn vst2q_u32(a: *mut u32, b: uint32x4x2_t) {
69478 vst2q_s32(transmute(a), transmute(b))
69479}
69480#[doc = "Store multiple 2-element structures from two registers"]
69481#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_p8)"]
69482#[doc = "## Safety"]
69483#[doc = " * Neon instrinsic unsafe"]
69484#[inline]
69485#[target_feature(enable = "neon")]
69486#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69487#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
69488#[cfg_attr(
69489 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69490 assert_instr(st2)
69491)]
69492#[cfg_attr(
69493 not(target_arch = "arm"),
69494 stable(feature = "neon_intrinsics", since = "1.59.0")
69495)]
69496#[cfg_attr(
69497 target_arch = "arm",
69498 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69499)]
69500pub unsafe fn vst2_p8(a: *mut p8, b: poly8x8x2_t) {
69501 vst2_s8(transmute(a), transmute(b))
69502}
69503#[doc = "Store multiple 2-element structures from two registers"]
69504#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_p8)"]
69505#[doc = "## Safety"]
69506#[doc = " * Neon instrinsic unsafe"]
69507#[inline]
69508#[target_feature(enable = "neon")]
69509#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69510#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
69511#[cfg_attr(
69512 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69513 assert_instr(st2)
69514)]
69515#[cfg_attr(
69516 not(target_arch = "arm"),
69517 stable(feature = "neon_intrinsics", since = "1.59.0")
69518)]
69519#[cfg_attr(
69520 target_arch = "arm",
69521 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69522)]
69523pub unsafe fn vst2q_p8(a: *mut p8, b: poly8x16x2_t) {
69524 vst2q_s8(transmute(a), transmute(b))
69525}
69526#[doc = "Store multiple 2-element structures from two registers"]
69527#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_p16)"]
69528#[doc = "## Safety"]
69529#[doc = " * Neon instrinsic unsafe"]
69530#[inline]
69531#[target_feature(enable = "neon")]
69532#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69533#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
69534#[cfg_attr(
69535 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69536 assert_instr(st2)
69537)]
69538#[cfg_attr(
69539 not(target_arch = "arm"),
69540 stable(feature = "neon_intrinsics", since = "1.59.0")
69541)]
69542#[cfg_attr(
69543 target_arch = "arm",
69544 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69545)]
69546pub unsafe fn vst2_p16(a: *mut p16, b: poly16x4x2_t) {
69547 vst2_s16(transmute(a), transmute(b))
69548}
69549#[doc = "Store multiple 2-element structures from two registers"]
69550#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_p16)"]
69551#[doc = "## Safety"]
69552#[doc = " * Neon instrinsic unsafe"]
69553#[inline]
69554#[target_feature(enable = "neon")]
69555#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69556#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
69557#[cfg_attr(
69558 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69559 assert_instr(st2)
69560)]
69561#[cfg_attr(
69562 not(target_arch = "arm"),
69563 stable(feature = "neon_intrinsics", since = "1.59.0")
69564)]
69565#[cfg_attr(
69566 target_arch = "arm",
69567 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69568)]
69569pub unsafe fn vst2q_p16(a: *mut p16, b: poly16x8x2_t) {
69570 vst2q_s16(transmute(a), transmute(b))
69571}
69572#[doc = "Store multiple 3-element structures from three registers"]
69573#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_f16)"]
69574#[doc = "## Safety"]
69575#[doc = " * Neon instrinsic unsafe"]
69576#[inline]
69577#[target_feature(enable = "neon")]
69578#[cfg(target_arch = "arm")]
69579#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69580#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
69581#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
69582#[cfg(not(target_arch = "arm64ec"))]
69583#[cfg_attr(test, assert_instr(vst3))]
69584pub unsafe fn vst3_f16(a: *mut f16, b: float16x4x3_t) {
69585 unsafe extern "unadjusted" {
69586 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v4f16")]
69587 fn _vst3_f16(ptr: *mut i8, a: float16x4_t, b: float16x4_t, c: float16x4_t, size: i32);
69588 }
69589 _vst3_f16(a as _, b.0, b.1, b.2, 2)
69590}
69591#[doc = "Store multiple 3-element structures from three registers"]
69592#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_f16)"]
69593#[doc = "## Safety"]
69594#[doc = " * Neon instrinsic unsafe"]
69595#[inline]
69596#[target_feature(enable = "neon")]
69597#[cfg(target_arch = "arm")]
69598#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69599#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
69600#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
69601#[cfg(not(target_arch = "arm64ec"))]
69602#[cfg_attr(test, assert_instr(vst3))]
69603pub unsafe fn vst3q_f16(a: *mut f16, b: float16x8x3_t) {
69604 unsafe extern "unadjusted" {
69605 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v8f16")]
69606 fn _vst3q_f16(ptr: *mut i8, a: float16x8_t, b: float16x8_t, c: float16x8_t, size: i32);
69607 }
69608 _vst3q_f16(a as _, b.0, b.1, b.2, 2)
69609}
69610#[doc = "Store multiple 3-element structures from three registers"]
69611#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_f16)"]
69612#[doc = "## Safety"]
69613#[doc = " * Neon instrinsic unsafe"]
69614#[inline]
69615#[target_feature(enable = "neon")]
69616#[cfg(not(target_arch = "arm"))]
69617#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
69618#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
69619#[cfg(not(target_arch = "arm64ec"))]
69620#[cfg_attr(test, assert_instr(st3))]
69621pub unsafe fn vst3_f16(a: *mut f16, b: float16x4x3_t) {
69622 unsafe extern "unadjusted" {
69623 #[cfg_attr(
69624 any(target_arch = "aarch64", target_arch = "arm64ec"),
69625 link_name = "llvm.aarch64.neon.st3.v4f16.p0"
69626 )]
69627 fn _vst3_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t, ptr: *mut i8);
69628 }
69629 _vst3_f16(b.0, b.1, b.2, a as _)
69630}
69631#[doc = "Store multiple 3-element structures from three registers"]
69632#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_f16)"]
69633#[doc = "## Safety"]
69634#[doc = " * Neon instrinsic unsafe"]
69635#[inline]
69636#[target_feature(enable = "neon")]
69637#[cfg(not(target_arch = "arm"))]
69638#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
69639#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
69640#[cfg(not(target_arch = "arm64ec"))]
69641#[cfg_attr(test, assert_instr(st3))]
69642pub unsafe fn vst3q_f16(a: *mut f16, b: float16x8x3_t) {
69643 unsafe extern "unadjusted" {
69644 #[cfg_attr(
69645 any(target_arch = "aarch64", target_arch = "arm64ec"),
69646 link_name = "llvm.aarch64.neon.st3.v8f16.p0"
69647 )]
69648 fn _vst3q_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t, ptr: *mut i8);
69649 }
69650 _vst3q_f16(b.0, b.1, b.2, a as _)
69651}
69652#[doc = "Store multiple 3-element structures from three registers"]
69653#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_f32)"]
69654#[doc = "## Safety"]
69655#[doc = " * Neon instrinsic unsafe"]
69656#[inline]
69657#[cfg(target_arch = "arm")]
69658#[target_feature(enable = "neon,v7")]
69659#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69660#[cfg_attr(test, assert_instr(vst3))]
69661pub unsafe fn vst3_f32(a: *mut f32, b: float32x2x3_t) {
69662 unsafe extern "unadjusted" {
69663 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v2f32")]
69664 fn _vst3_f32(ptr: *mut i8, a: float32x2_t, b: float32x2_t, c: float32x2_t, size: i32);
69665 }
69666 _vst3_f32(a as _, b.0, b.1, b.2, 4)
69667}
69668#[doc = "Store multiple 3-element structures from three registers"]
69669#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_f32)"]
69670#[doc = "## Safety"]
69671#[doc = " * Neon instrinsic unsafe"]
69672#[inline]
69673#[cfg(target_arch = "arm")]
69674#[target_feature(enable = "neon,v7")]
69675#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69676#[cfg_attr(test, assert_instr(vst3))]
69677pub unsafe fn vst3q_f32(a: *mut f32, b: float32x4x3_t) {
69678 unsafe extern "unadjusted" {
69679 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v4f32")]
69680 fn _vst3q_f32(ptr: *mut i8, a: float32x4_t, b: float32x4_t, c: float32x4_t, size: i32);
69681 }
69682 _vst3q_f32(a as _, b.0, b.1, b.2, 4)
69683}
69684#[doc = "Store multiple 3-element structures from three registers"]
69685#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s8)"]
69686#[doc = "## Safety"]
69687#[doc = " * Neon instrinsic unsafe"]
69688#[inline]
69689#[cfg(target_arch = "arm")]
69690#[target_feature(enable = "neon,v7")]
69691#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69692#[cfg_attr(test, assert_instr(vst3))]
69693pub unsafe fn vst3_s8(a: *mut i8, b: int8x8x3_t) {
69694 unsafe extern "unadjusted" {
69695 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v8i8")]
69696 fn _vst3_s8(ptr: *mut i8, a: int8x8_t, b: int8x8_t, c: int8x8_t, size: i32);
69697 }
69698 _vst3_s8(a as _, b.0, b.1, b.2, 1)
69699}
69700#[doc = "Store multiple 3-element structures from three registers"]
69701#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s8)"]
69702#[doc = "## Safety"]
69703#[doc = " * Neon instrinsic unsafe"]
69704#[inline]
69705#[cfg(target_arch = "arm")]
69706#[target_feature(enable = "neon,v7")]
69707#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69708#[cfg_attr(test, assert_instr(vst3))]
69709pub unsafe fn vst3q_s8(a: *mut i8, b: int8x16x3_t) {
69710 unsafe extern "unadjusted" {
69711 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v16i8")]
69712 fn _vst3q_s8(ptr: *mut i8, a: int8x16_t, b: int8x16_t, c: int8x16_t, size: i32);
69713 }
69714 _vst3q_s8(a as _, b.0, b.1, b.2, 1)
69715}
69716#[doc = "Store multiple 3-element structures from three registers"]
69717#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s16)"]
69718#[doc = "## Safety"]
69719#[doc = " * Neon instrinsic unsafe"]
69720#[inline]
69721#[cfg(target_arch = "arm")]
69722#[target_feature(enable = "neon,v7")]
69723#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69724#[cfg_attr(test, assert_instr(vst3))]
69725pub unsafe fn vst3_s16(a: *mut i16, b: int16x4x3_t) {
69726 unsafe extern "unadjusted" {
69727 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v4i16")]
69728 fn _vst3_s16(ptr: *mut i8, a: int16x4_t, b: int16x4_t, c: int16x4_t, size: i32);
69729 }
69730 _vst3_s16(a as _, b.0, b.1, b.2, 2)
69731}
69732#[doc = "Store multiple 3-element structures from three registers"]
69733#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s16)"]
69734#[doc = "## Safety"]
69735#[doc = " * Neon instrinsic unsafe"]
69736#[inline]
69737#[cfg(target_arch = "arm")]
69738#[target_feature(enable = "neon,v7")]
69739#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69740#[cfg_attr(test, assert_instr(vst3))]
69741pub unsafe fn vst3q_s16(a: *mut i16, b: int16x8x3_t) {
69742 unsafe extern "unadjusted" {
69743 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v8i16")]
69744 fn _vst3q_s16(ptr: *mut i8, a: int16x8_t, b: int16x8_t, c: int16x8_t, size: i32);
69745 }
69746 _vst3q_s16(a as _, b.0, b.1, b.2, 2)
69747}
69748#[doc = "Store multiple 3-element structures from three registers"]
69749#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s32)"]
69750#[doc = "## Safety"]
69751#[doc = " * Neon instrinsic unsafe"]
69752#[inline]
69753#[cfg(target_arch = "arm")]
69754#[target_feature(enable = "neon,v7")]
69755#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69756#[cfg_attr(test, assert_instr(vst3))]
69757pub unsafe fn vst3_s32(a: *mut i32, b: int32x2x3_t) {
69758 unsafe extern "unadjusted" {
69759 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v2i32")]
69760 fn _vst3_s32(ptr: *mut i8, a: int32x2_t, b: int32x2_t, c: int32x2_t, size: i32);
69761 }
69762 _vst3_s32(a as _, b.0, b.1, b.2, 4)
69763}
69764#[doc = "Store multiple 3-element structures from three registers"]
69765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s32)"]
69766#[doc = "## Safety"]
69767#[doc = " * Neon instrinsic unsafe"]
69768#[inline]
69769#[cfg(target_arch = "arm")]
69770#[target_feature(enable = "neon,v7")]
69771#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69772#[cfg_attr(test, assert_instr(vst3))]
69773pub unsafe fn vst3q_s32(a: *mut i32, b: int32x4x3_t) {
69774 unsafe extern "unadjusted" {
69775 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v4i32")]
69776 fn _vst3q_s32(ptr: *mut i8, a: int32x4_t, b: int32x4_t, c: int32x4_t, size: i32);
69777 }
69778 _vst3q_s32(a as _, b.0, b.1, b.2, 4)
69779}
69780#[doc = "Store multiple 3-element structures from three registers"]
69781#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_f32)"]
69782#[doc = "## Safety"]
69783#[doc = " * Neon instrinsic unsafe"]
69784#[inline]
69785#[target_feature(enable = "neon")]
69786#[cfg(not(target_arch = "arm"))]
69787#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69788#[cfg_attr(test, assert_instr(st3))]
69789pub unsafe fn vst3_f32(a: *mut f32, b: float32x2x3_t) {
69790 unsafe extern "unadjusted" {
69791 #[cfg_attr(
69792 any(target_arch = "aarch64", target_arch = "arm64ec"),
69793 link_name = "llvm.aarch64.neon.st3.v2f32.p0"
69794 )]
69795 fn _vst3_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t, ptr: *mut i8);
69796 }
69797 _vst3_f32(b.0, b.1, b.2, a as _)
69798}
69799#[doc = "Store multiple 3-element structures from three registers"]
69800#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_f32)"]
69801#[doc = "## Safety"]
69802#[doc = " * Neon instrinsic unsafe"]
69803#[inline]
69804#[target_feature(enable = "neon")]
69805#[cfg(not(target_arch = "arm"))]
69806#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69807#[cfg_attr(test, assert_instr(st3))]
69808pub unsafe fn vst3q_f32(a: *mut f32, b: float32x4x3_t) {
69809 unsafe extern "unadjusted" {
69810 #[cfg_attr(
69811 any(target_arch = "aarch64", target_arch = "arm64ec"),
69812 link_name = "llvm.aarch64.neon.st3.v4f32.p0"
69813 )]
69814 fn _vst3q_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t, ptr: *mut i8);
69815 }
69816 _vst3q_f32(b.0, b.1, b.2, a as _)
69817}
69818#[doc = "Store multiple 3-element structures from three registers"]
69819#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s8)"]
69820#[doc = "## Safety"]
69821#[doc = " * Neon instrinsic unsafe"]
69822#[inline]
69823#[target_feature(enable = "neon")]
69824#[cfg(not(target_arch = "arm"))]
69825#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69826#[cfg_attr(test, assert_instr(st3))]
69827pub unsafe fn vst3_s8(a: *mut i8, b: int8x8x3_t) {
69828 unsafe extern "unadjusted" {
69829 #[cfg_attr(
69830 any(target_arch = "aarch64", target_arch = "arm64ec"),
69831 link_name = "llvm.aarch64.neon.st3.v8i8.p0"
69832 )]
69833 fn _vst3_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t, ptr: *mut i8);
69834 }
69835 _vst3_s8(b.0, b.1, b.2, a as _)
69836}
69837#[doc = "Store multiple 3-element structures from three registers"]
69838#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s8)"]
69839#[doc = "## Safety"]
69840#[doc = " * Neon instrinsic unsafe"]
69841#[inline]
69842#[target_feature(enable = "neon")]
69843#[cfg(not(target_arch = "arm"))]
69844#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69845#[cfg_attr(test, assert_instr(st3))]
69846pub unsafe fn vst3q_s8(a: *mut i8, b: int8x16x3_t) {
69847 unsafe extern "unadjusted" {
69848 #[cfg_attr(
69849 any(target_arch = "aarch64", target_arch = "arm64ec"),
69850 link_name = "llvm.aarch64.neon.st3.v16i8.p0"
69851 )]
69852 fn _vst3q_s8(a: int8x16_t, b: int8x16_t, c: int8x16_t, ptr: *mut i8);
69853 }
69854 _vst3q_s8(b.0, b.1, b.2, a as _)
69855}
69856#[doc = "Store multiple 3-element structures from three registers"]
69857#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s16)"]
69858#[doc = "## Safety"]
69859#[doc = " * Neon instrinsic unsafe"]
69860#[inline]
69861#[target_feature(enable = "neon")]
69862#[cfg(not(target_arch = "arm"))]
69863#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69864#[cfg_attr(test, assert_instr(st3))]
69865pub unsafe fn vst3_s16(a: *mut i16, b: int16x4x3_t) {
69866 unsafe extern "unadjusted" {
69867 #[cfg_attr(
69868 any(target_arch = "aarch64", target_arch = "arm64ec"),
69869 link_name = "llvm.aarch64.neon.st3.v4i16.p0"
69870 )]
69871 fn _vst3_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t, ptr: *mut i8);
69872 }
69873 _vst3_s16(b.0, b.1, b.2, a as _)
69874}
69875#[doc = "Store multiple 3-element structures from three registers"]
69876#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s16)"]
69877#[doc = "## Safety"]
69878#[doc = " * Neon instrinsic unsafe"]
69879#[inline]
69880#[target_feature(enable = "neon")]
69881#[cfg(not(target_arch = "arm"))]
69882#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69883#[cfg_attr(test, assert_instr(st3))]
69884pub unsafe fn vst3q_s16(a: *mut i16, b: int16x8x3_t) {
69885 unsafe extern "unadjusted" {
69886 #[cfg_attr(
69887 any(target_arch = "aarch64", target_arch = "arm64ec"),
69888 link_name = "llvm.aarch64.neon.st3.v8i16.p0"
69889 )]
69890 fn _vst3q_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t, ptr: *mut i8);
69891 }
69892 _vst3q_s16(b.0, b.1, b.2, a as _)
69893}
69894#[doc = "Store multiple 3-element structures from three registers"]
69895#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s32)"]
69896#[doc = "## Safety"]
69897#[doc = " * Neon instrinsic unsafe"]
69898#[inline]
69899#[target_feature(enable = "neon")]
69900#[cfg(not(target_arch = "arm"))]
69901#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69902#[cfg_attr(test, assert_instr(st3))]
69903pub unsafe fn vst3_s32(a: *mut i32, b: int32x2x3_t) {
69904 unsafe extern "unadjusted" {
69905 #[cfg_attr(
69906 any(target_arch = "aarch64", target_arch = "arm64ec"),
69907 link_name = "llvm.aarch64.neon.st3.v2i32.p0"
69908 )]
69909 fn _vst3_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t, ptr: *mut i8);
69910 }
69911 _vst3_s32(b.0, b.1, b.2, a as _)
69912}
69913#[doc = "Store multiple 3-element structures from three registers"]
69914#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s32)"]
69915#[doc = "## Safety"]
69916#[doc = " * Neon instrinsic unsafe"]
69917#[inline]
69918#[target_feature(enable = "neon")]
69919#[cfg(not(target_arch = "arm"))]
69920#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69921#[cfg_attr(test, assert_instr(st3))]
69922pub unsafe fn vst3q_s32(a: *mut i32, b: int32x4x3_t) {
69923 unsafe extern "unadjusted" {
69924 #[cfg_attr(
69925 any(target_arch = "aarch64", target_arch = "arm64ec"),
69926 link_name = "llvm.aarch64.neon.st3.v4i32.p0"
69927 )]
69928 fn _vst3q_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t, ptr: *mut i8);
69929 }
69930 _vst3q_s32(b.0, b.1, b.2, a as _)
69931}
69932#[doc = "Store multiple 3-element structures from three registers"]
69933#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_f16)"]
69934#[doc = "## Safety"]
69935#[doc = " * Neon instrinsic unsafe"]
69936#[inline]
69937#[target_feature(enable = "neon")]
69938#[cfg(target_arch = "arm")]
69939#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69940#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
69941#[rustc_legacy_const_generics(2)]
69942#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
69943#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
69944#[cfg(not(target_arch = "arm64ec"))]
69945pub unsafe fn vst3_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x3_t) {
69946 static_assert_uimm_bits!(LANE, 2);
69947 unsafe extern "unadjusted" {
69948 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v4f16")]
69949 fn _vst3_lane_f16(
69950 ptr: *mut i8,
69951 a: float16x4_t,
69952 b: float16x4_t,
69953 c: float16x4_t,
69954 n: i32,
69955 size: i32,
69956 );
69957 }
69958 _vst3_lane_f16(a as _, b.0, b.1, b.2, LANE, 4)
69959}
69960#[doc = "Store multiple 3-element structures from three registers"]
69961#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_f16)"]
69962#[doc = "## Safety"]
69963#[doc = " * Neon instrinsic unsafe"]
69964#[inline]
69965#[target_feature(enable = "neon")]
69966#[cfg(target_arch = "arm")]
69967#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69968#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
69969#[rustc_legacy_const_generics(2)]
69970#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
69971#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
69972#[cfg(not(target_arch = "arm64ec"))]
69973pub unsafe fn vst3q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x3_t) {
69974 static_assert_uimm_bits!(LANE, 3);
69975 unsafe extern "unadjusted" {
69976 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v8f16")]
69977 fn _vst3q_lane_f16(
69978 ptr: *mut i8,
69979 a: float16x8_t,
69980 b: float16x8_t,
69981 c: float16x8_t,
69982 n: i32,
69983 size: i32,
69984 );
69985 }
69986 _vst3q_lane_f16(a as _, b.0, b.1, b.2, LANE, 4)
69987}
69988#[doc = "Store multiple 3-element structures from three registers"]
69989#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_f16)"]
69990#[doc = "## Safety"]
69991#[doc = " * Neon instrinsic unsafe"]
69992#[inline]
69993#[target_feature(enable = "neon")]
69994#[cfg(not(target_arch = "arm"))]
69995#[rustc_legacy_const_generics(2)]
69996#[cfg_attr(test, assert_instr(st3, LANE = 0))]
69997#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
69998#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
69999#[cfg(not(target_arch = "arm64ec"))]
70000pub unsafe fn vst3_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x3_t) {
70001 static_assert_uimm_bits!(LANE, 2);
70002 unsafe extern "unadjusted" {
70003 #[cfg_attr(
70004 any(target_arch = "aarch64", target_arch = "arm64ec"),
70005 link_name = "llvm.aarch64.neon.st3lane.v4f16.p0"
70006 )]
70007 fn _vst3_lane_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t, n: i64, ptr: *mut i8);
70008 }
70009 _vst3_lane_f16(b.0, b.1, b.2, LANE as i64, a as _)
70010}
70011#[doc = "Store multiple 3-element structures from three registers"]
70012#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_f16)"]
70013#[doc = "## Safety"]
70014#[doc = " * Neon instrinsic unsafe"]
70015#[inline]
70016#[target_feature(enable = "neon")]
70017#[cfg(not(target_arch = "arm"))]
70018#[rustc_legacy_const_generics(2)]
70019#[cfg_attr(test, assert_instr(st3, LANE = 0))]
70020#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
70021#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
70022#[cfg(not(target_arch = "arm64ec"))]
70023pub unsafe fn vst3q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x3_t) {
70024 static_assert_uimm_bits!(LANE, 3);
70025 unsafe extern "unadjusted" {
70026 #[cfg_attr(
70027 any(target_arch = "aarch64", target_arch = "arm64ec"),
70028 link_name = "llvm.aarch64.neon.st3lane.v8f16.p0"
70029 )]
70030 fn _vst3q_lane_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t, n: i64, ptr: *mut i8);
70031 }
70032 _vst3q_lane_f16(b.0, b.1, b.2, LANE as i64, a as _)
70033}
70034#[doc = "Store multiple 3-element structures from three registers"]
70035#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_f32)"]
70036#[doc = "## Safety"]
70037#[doc = " * Neon instrinsic unsafe"]
70038#[inline]
70039#[cfg(target_arch = "arm")]
70040#[target_feature(enable = "neon,v7")]
70041#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
70042#[rustc_legacy_const_generics(2)]
70043#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70044pub unsafe fn vst3_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x3_t) {
70045 static_assert_uimm_bits!(LANE, 1);
70046 unsafe extern "unadjusted" {
70047 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v2f32")]
70048 fn _vst3_lane_f32(
70049 ptr: *mut i8,
70050 a: float32x2_t,
70051 b: float32x2_t,
70052 c: float32x2_t,
70053 n: i32,
70054 size: i32,
70055 );
70056 }
70057 _vst3_lane_f32(a as _, b.0, b.1, b.2, LANE, 4)
70058}
70059#[doc = "Store multiple 3-element structures from three registers"]
70060#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_f32)"]
70061#[doc = "## Safety"]
70062#[doc = " * Neon instrinsic unsafe"]
70063#[inline]
70064#[cfg(target_arch = "arm")]
70065#[target_feature(enable = "neon,v7")]
70066#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
70067#[rustc_legacy_const_generics(2)]
70068#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70069pub unsafe fn vst3q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x3_t) {
70070 static_assert_uimm_bits!(LANE, 2);
70071 unsafe extern "unadjusted" {
70072 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v4f32")]
70073 fn _vst3q_lane_f32(
70074 ptr: *mut i8,
70075 a: float32x4_t,
70076 b: float32x4_t,
70077 c: float32x4_t,
70078 n: i32,
70079 size: i32,
70080 );
70081 }
70082 _vst3q_lane_f32(a as _, b.0, b.1, b.2, LANE, 4)
70083}
70084#[doc = "Store multiple 3-element structures from three registers"]
70085#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s8)"]
70086#[doc = "## Safety"]
70087#[doc = " * Neon instrinsic unsafe"]
70088#[inline]
70089#[cfg(target_arch = "arm")]
70090#[target_feature(enable = "neon,v7")]
70091#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
70092#[rustc_legacy_const_generics(2)]
70093#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70094pub unsafe fn vst3_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x3_t) {
70095 static_assert_uimm_bits!(LANE, 3);
70096 unsafe extern "unadjusted" {
70097 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v8i8")]
70098 fn _vst3_lane_s8(ptr: *mut i8, a: int8x8_t, b: int8x8_t, c: int8x8_t, n: i32, size: i32);
70099 }
70100 _vst3_lane_s8(a as _, b.0, b.1, b.2, LANE, 1)
70101}
70102#[doc = "Store multiple 3-element structures from three registers"]
70103#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s16)"]
70104#[doc = "## Safety"]
70105#[doc = " * Neon instrinsic unsafe"]
70106#[inline]
70107#[cfg(target_arch = "arm")]
70108#[target_feature(enable = "neon,v7")]
70109#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
70110#[rustc_legacy_const_generics(2)]
70111#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70112pub unsafe fn vst3_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x3_t) {
70113 static_assert_uimm_bits!(LANE, 2);
70114 unsafe extern "unadjusted" {
70115 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v4i16")]
70116 fn _vst3_lane_s16(
70117 ptr: *mut i8,
70118 a: int16x4_t,
70119 b: int16x4_t,
70120 c: int16x4_t,
70121 n: i32,
70122 size: i32,
70123 );
70124 }
70125 _vst3_lane_s16(a as _, b.0, b.1, b.2, LANE, 2)
70126}
70127#[doc = "Store multiple 3-element structures from three registers"]
70128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_s16)"]
70129#[doc = "## Safety"]
70130#[doc = " * Neon instrinsic unsafe"]
70131#[inline]
70132#[cfg(target_arch = "arm")]
70133#[target_feature(enable = "neon,v7")]
70134#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
70135#[rustc_legacy_const_generics(2)]
70136#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70137pub unsafe fn vst3q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x3_t) {
70138 static_assert_uimm_bits!(LANE, 3);
70139 unsafe extern "unadjusted" {
70140 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v8i16")]
70141 fn _vst3q_lane_s16(
70142 ptr: *mut i8,
70143 a: int16x8_t,
70144 b: int16x8_t,
70145 c: int16x8_t,
70146 n: i32,
70147 size: i32,
70148 );
70149 }
70150 _vst3q_lane_s16(a as _, b.0, b.1, b.2, LANE, 2)
70151}
70152#[doc = "Store multiple 3-element structures from three registers"]
70153#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s32)"]
70154#[doc = "## Safety"]
70155#[doc = " * Neon instrinsic unsafe"]
70156#[inline]
70157#[cfg(target_arch = "arm")]
70158#[target_feature(enable = "neon,v7")]
70159#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
70160#[rustc_legacy_const_generics(2)]
70161#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70162pub unsafe fn vst3_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x3_t) {
70163 static_assert_uimm_bits!(LANE, 1);
70164 unsafe extern "unadjusted" {
70165 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v2i32")]
70166 fn _vst3_lane_s32(
70167 ptr: *mut i8,
70168 a: int32x2_t,
70169 b: int32x2_t,
70170 c: int32x2_t,
70171 n: i32,
70172 size: i32,
70173 );
70174 }
70175 _vst3_lane_s32(a as _, b.0, b.1, b.2, LANE, 4)
70176}
70177#[doc = "Store multiple 3-element structures from three registers"]
70178#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_s32)"]
70179#[doc = "## Safety"]
70180#[doc = " * Neon instrinsic unsafe"]
70181#[inline]
70182#[cfg(target_arch = "arm")]
70183#[target_feature(enable = "neon,v7")]
70184#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
70185#[rustc_legacy_const_generics(2)]
70186#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70187pub unsafe fn vst3q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x3_t) {
70188 static_assert_uimm_bits!(LANE, 2);
70189 unsafe extern "unadjusted" {
70190 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v4i32")]
70191 fn _vst3q_lane_s32(
70192 ptr: *mut i8,
70193 a: int32x4_t,
70194 b: int32x4_t,
70195 c: int32x4_t,
70196 n: i32,
70197 size: i32,
70198 );
70199 }
70200 _vst3q_lane_s32(a as _, b.0, b.1, b.2, LANE, 4)
70201}
70202#[doc = "Store multiple 3-element structures from three registers"]
70203#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_f32)"]
70204#[doc = "## Safety"]
70205#[doc = " * Neon instrinsic unsafe"]
70206#[inline]
70207#[target_feature(enable = "neon")]
70208#[cfg(not(target_arch = "arm"))]
70209#[rustc_legacy_const_generics(2)]
70210#[cfg_attr(test, assert_instr(st3, LANE = 0))]
70211#[stable(feature = "neon_intrinsics", since = "1.59.0")]
70212pub unsafe fn vst3_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x3_t) {
70213 static_assert_uimm_bits!(LANE, 1);
70214 unsafe extern "unadjusted" {
70215 #[cfg_attr(
70216 any(target_arch = "aarch64", target_arch = "arm64ec"),
70217 link_name = "llvm.aarch64.neon.st3lane.v2f32.p0"
70218 )]
70219 fn _vst3_lane_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t, n: i64, ptr: *mut i8);
70220 }
70221 _vst3_lane_f32(b.0, b.1, b.2, LANE as i64, a as _)
70222}
70223#[doc = "Store multiple 3-element structures from three registers"]
70224#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_f32)"]
70225#[doc = "## Safety"]
70226#[doc = " * Neon instrinsic unsafe"]
70227#[inline]
70228#[target_feature(enable = "neon")]
70229#[cfg(not(target_arch = "arm"))]
70230#[rustc_legacy_const_generics(2)]
70231#[cfg_attr(test, assert_instr(st3, LANE = 0))]
70232#[stable(feature = "neon_intrinsics", since = "1.59.0")]
70233pub unsafe fn vst3q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x3_t) {
70234 static_assert_uimm_bits!(LANE, 2);
70235 unsafe extern "unadjusted" {
70236 #[cfg_attr(
70237 any(target_arch = "aarch64", target_arch = "arm64ec"),
70238 link_name = "llvm.aarch64.neon.st3lane.v4f32.p0"
70239 )]
70240 fn _vst3q_lane_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t, n: i64, ptr: *mut i8);
70241 }
70242 _vst3q_lane_f32(b.0, b.1, b.2, LANE as i64, a as _)
70243}
70244#[doc = "Store multiple 3-element structures from three registers"]
70245#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s8)"]
70246#[doc = "## Safety"]
70247#[doc = " * Neon instrinsic unsafe"]
70248#[inline]
70249#[target_feature(enable = "neon")]
70250#[cfg(not(target_arch = "arm"))]
70251#[rustc_legacy_const_generics(2)]
70252#[cfg_attr(test, assert_instr(st3, LANE = 0))]
70253#[stable(feature = "neon_intrinsics", since = "1.59.0")]
70254pub unsafe fn vst3_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x3_t) {
70255 static_assert_uimm_bits!(LANE, 3);
70256 unsafe extern "unadjusted" {
70257 #[cfg_attr(
70258 any(target_arch = "aarch64", target_arch = "arm64ec"),
70259 link_name = "llvm.aarch64.neon.st3lane.v8i8.p0"
70260 )]
70261 fn _vst3_lane_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t, n: i64, ptr: *mut i8);
70262 }
70263 _vst3_lane_s8(b.0, b.1, b.2, LANE as i64, a as _)
70264}
70265#[doc = "Store multiple 3-element structures from three registers"]
70266#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s16)"]
70267#[doc = "## Safety"]
70268#[doc = " * Neon instrinsic unsafe"]
70269#[inline]
70270#[target_feature(enable = "neon")]
70271#[cfg(not(target_arch = "arm"))]
70272#[rustc_legacy_const_generics(2)]
70273#[cfg_attr(test, assert_instr(st3, LANE = 0))]
70274#[stable(feature = "neon_intrinsics", since = "1.59.0")]
70275pub unsafe fn vst3_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x3_t) {
70276 static_assert_uimm_bits!(LANE, 2);
70277 unsafe extern "unadjusted" {
70278 #[cfg_attr(
70279 any(target_arch = "aarch64", target_arch = "arm64ec"),
70280 link_name = "llvm.aarch64.neon.st3lane.v4i16.p0"
70281 )]
70282 fn _vst3_lane_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t, n: i64, ptr: *mut i8);
70283 }
70284 _vst3_lane_s16(b.0, b.1, b.2, LANE as i64, a as _)
70285}
70286#[doc = "Store multiple 3-element structures from three registers"]
70287#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_s16)"]
70288#[doc = "## Safety"]
70289#[doc = " * Neon instrinsic unsafe"]
70290#[inline]
70291#[target_feature(enable = "neon")]
70292#[cfg(not(target_arch = "arm"))]
70293#[rustc_legacy_const_generics(2)]
70294#[cfg_attr(test, assert_instr(st3, LANE = 0))]
70295#[stable(feature = "neon_intrinsics", since = "1.59.0")]
70296pub unsafe fn vst3q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x3_t) {
70297 static_assert_uimm_bits!(LANE, 3);
70298 unsafe extern "unadjusted" {
70299 #[cfg_attr(
70300 any(target_arch = "aarch64", target_arch = "arm64ec"),
70301 link_name = "llvm.aarch64.neon.st3lane.v8i16.p0"
70302 )]
70303 fn _vst3q_lane_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t, n: i64, ptr: *mut i8);
70304 }
70305 _vst3q_lane_s16(b.0, b.1, b.2, LANE as i64, a as _)
70306}
70307#[doc = "Store multiple 3-element structures from three registers"]
70308#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s32)"]
70309#[doc = "## Safety"]
70310#[doc = " * Neon instrinsic unsafe"]
70311#[inline]
70312#[target_feature(enable = "neon")]
70313#[cfg(not(target_arch = "arm"))]
70314#[rustc_legacy_const_generics(2)]
70315#[cfg_attr(test, assert_instr(st3, LANE = 0))]
70316#[stable(feature = "neon_intrinsics", since = "1.59.0")]
70317pub unsafe fn vst3_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x3_t) {
70318 static_assert_uimm_bits!(LANE, 1);
70319 unsafe extern "unadjusted" {
70320 #[cfg_attr(
70321 any(target_arch = "aarch64", target_arch = "arm64ec"),
70322 link_name = "llvm.aarch64.neon.st3lane.v2i32.p0"
70323 )]
70324 fn _vst3_lane_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t, n: i64, ptr: *mut i8);
70325 }
70326 _vst3_lane_s32(b.0, b.1, b.2, LANE as i64, a as _)
70327}
70328#[doc = "Store multiple 3-element structures from three registers"]
70329#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_s32)"]
70330#[doc = "## Safety"]
70331#[doc = " * Neon instrinsic unsafe"]
70332#[inline]
70333#[target_feature(enable = "neon")]
70334#[cfg(not(target_arch = "arm"))]
70335#[rustc_legacy_const_generics(2)]
70336#[cfg_attr(test, assert_instr(st3, LANE = 0))]
70337#[stable(feature = "neon_intrinsics", since = "1.59.0")]
70338pub unsafe fn vst3q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x3_t) {
70339 static_assert_uimm_bits!(LANE, 2);
70340 unsafe extern "unadjusted" {
70341 #[cfg_attr(
70342 any(target_arch = "aarch64", target_arch = "arm64ec"),
70343 link_name = "llvm.aarch64.neon.st3lane.v4i32.p0"
70344 )]
70345 fn _vst3q_lane_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t, n: i64, ptr: *mut i8);
70346 }
70347 _vst3q_lane_s32(b.0, b.1, b.2, LANE as i64, a as _)
70348}
70349#[doc = "Store multiple 3-element structures from three registers"]
70350#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_u8)"]
70351#[doc = "## Safety"]
70352#[doc = " * Neon instrinsic unsafe"]
70353#[inline]
70354#[target_feature(enable = "neon")]
70355#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70356#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
70357#[cfg_attr(
70358 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70359 assert_instr(st3, LANE = 0)
70360)]
70361#[rustc_legacy_const_generics(2)]
70362#[cfg_attr(
70363 not(target_arch = "arm"),
70364 stable(feature = "neon_intrinsics", since = "1.59.0")
70365)]
70366#[cfg_attr(
70367 target_arch = "arm",
70368 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70369)]
70370pub unsafe fn vst3_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x8x3_t) {
70371 static_assert_uimm_bits!(LANE, 3);
70372 vst3_lane_s8::<LANE>(transmute(a), transmute(b))
70373}
70374#[doc = "Store multiple 3-element structures from three registers"]
70375#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_u16)"]
70376#[doc = "## Safety"]
70377#[doc = " * Neon instrinsic unsafe"]
70378#[inline]
70379#[target_feature(enable = "neon")]
70380#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70381#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
70382#[cfg_attr(
70383 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70384 assert_instr(st3, LANE = 0)
70385)]
70386#[rustc_legacy_const_generics(2)]
70387#[cfg_attr(
70388 not(target_arch = "arm"),
70389 stable(feature = "neon_intrinsics", since = "1.59.0")
70390)]
70391#[cfg_attr(
70392 target_arch = "arm",
70393 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70394)]
70395pub unsafe fn vst3_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x4x3_t) {
70396 static_assert_uimm_bits!(LANE, 2);
70397 vst3_lane_s16::<LANE>(transmute(a), transmute(b))
70398}
70399#[doc = "Store multiple 3-element structures from three registers"]
70400#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_u16)"]
70401#[doc = "## Safety"]
70402#[doc = " * Neon instrinsic unsafe"]
70403#[inline]
70404#[target_feature(enable = "neon")]
70405#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70406#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
70407#[cfg_attr(
70408 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70409 assert_instr(st3, LANE = 0)
70410)]
70411#[rustc_legacy_const_generics(2)]
70412#[cfg_attr(
70413 not(target_arch = "arm"),
70414 stable(feature = "neon_intrinsics", since = "1.59.0")
70415)]
70416#[cfg_attr(
70417 target_arch = "arm",
70418 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70419)]
70420pub unsafe fn vst3q_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x8x3_t) {
70421 static_assert_uimm_bits!(LANE, 3);
70422 vst3q_lane_s16::<LANE>(transmute(a), transmute(b))
70423}
70424#[doc = "Store multiple 3-element structures from three registers"]
70425#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_u32)"]
70426#[doc = "## Safety"]
70427#[doc = " * Neon instrinsic unsafe"]
70428#[inline]
70429#[target_feature(enable = "neon")]
70430#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70431#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
70432#[cfg_attr(
70433 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70434 assert_instr(st3, LANE = 0)
70435)]
70436#[rustc_legacy_const_generics(2)]
70437#[cfg_attr(
70438 not(target_arch = "arm"),
70439 stable(feature = "neon_intrinsics", since = "1.59.0")
70440)]
70441#[cfg_attr(
70442 target_arch = "arm",
70443 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70444)]
70445pub unsafe fn vst3_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x2x3_t) {
70446 static_assert_uimm_bits!(LANE, 1);
70447 vst3_lane_s32::<LANE>(transmute(a), transmute(b))
70448}
70449#[doc = "Store multiple 3-element structures from three registers"]
70450#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_u32)"]
70451#[doc = "## Safety"]
70452#[doc = " * Neon instrinsic unsafe"]
70453#[inline]
70454#[target_feature(enable = "neon")]
70455#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70456#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
70457#[cfg_attr(
70458 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70459 assert_instr(st3, LANE = 0)
70460)]
70461#[rustc_legacy_const_generics(2)]
70462#[cfg_attr(
70463 not(target_arch = "arm"),
70464 stable(feature = "neon_intrinsics", since = "1.59.0")
70465)]
70466#[cfg_attr(
70467 target_arch = "arm",
70468 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70469)]
70470pub unsafe fn vst3q_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x4x3_t) {
70471 static_assert_uimm_bits!(LANE, 2);
70472 vst3q_lane_s32::<LANE>(transmute(a), transmute(b))
70473}
70474#[doc = "Store multiple 3-element structures from three registers"]
70475#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_p8)"]
70476#[doc = "## Safety"]
70477#[doc = " * Neon instrinsic unsafe"]
70478#[inline]
70479#[target_feature(enable = "neon")]
70480#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70481#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
70482#[cfg_attr(
70483 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70484 assert_instr(st3, LANE = 0)
70485)]
70486#[rustc_legacy_const_generics(2)]
70487#[cfg_attr(
70488 not(target_arch = "arm"),
70489 stable(feature = "neon_intrinsics", since = "1.59.0")
70490)]
70491#[cfg_attr(
70492 target_arch = "arm",
70493 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70494)]
70495pub unsafe fn vst3_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x8x3_t) {
70496 static_assert_uimm_bits!(LANE, 3);
70497 vst3_lane_s8::<LANE>(transmute(a), transmute(b))
70498}
70499#[doc = "Store multiple 3-element structures from three registers"]
70500#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_p16)"]
70501#[doc = "## Safety"]
70502#[doc = " * Neon instrinsic unsafe"]
70503#[inline]
70504#[target_feature(enable = "neon")]
70505#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70506#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
70507#[cfg_attr(
70508 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70509 assert_instr(st3, LANE = 0)
70510)]
70511#[rustc_legacy_const_generics(2)]
70512#[cfg_attr(
70513 not(target_arch = "arm"),
70514 stable(feature = "neon_intrinsics", since = "1.59.0")
70515)]
70516#[cfg_attr(
70517 target_arch = "arm",
70518 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70519)]
70520pub unsafe fn vst3_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x4x3_t) {
70521 static_assert_uimm_bits!(LANE, 2);
70522 vst3_lane_s16::<LANE>(transmute(a), transmute(b))
70523}
70524#[doc = "Store multiple 3-element structures from three registers"]
70525#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_p16)"]
70526#[doc = "## Safety"]
70527#[doc = " * Neon instrinsic unsafe"]
70528#[inline]
70529#[target_feature(enable = "neon")]
70530#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70531#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
70532#[cfg_attr(
70533 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70534 assert_instr(st3, LANE = 0)
70535)]
70536#[rustc_legacy_const_generics(2)]
70537#[cfg_attr(
70538 not(target_arch = "arm"),
70539 stable(feature = "neon_intrinsics", since = "1.59.0")
70540)]
70541#[cfg_attr(
70542 target_arch = "arm",
70543 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70544)]
70545pub unsafe fn vst3q_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x8x3_t) {
70546 static_assert_uimm_bits!(LANE, 3);
70547 vst3q_lane_s16::<LANE>(transmute(a), transmute(b))
70548}
70549#[doc = "Store multiple 3-element structures from three registers"]
70550#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_p64)"]
70551#[doc = "## Safety"]
70552#[doc = " * Neon instrinsic unsafe"]
70553#[inline]
70554#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
70555#[target_feature(enable = "neon,aes")]
70556#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
70557#[cfg_attr(
70558 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70559 assert_instr(nop)
70560)]
70561#[cfg_attr(
70562 not(target_arch = "arm"),
70563 stable(feature = "neon_intrinsics", since = "1.59.0")
70564)]
70565#[cfg_attr(
70566 target_arch = "arm",
70567 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70568)]
70569pub unsafe fn vst3_p64(a: *mut p64, b: poly64x1x3_t) {
70570 vst3_s64(transmute(a), transmute(b))
70571}
70572#[doc = "Store multiple 3-element structures from three registers"]
70573#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s64)"]
70574#[doc = "## Safety"]
70575#[doc = " * Neon instrinsic unsafe"]
70576#[inline]
70577#[target_feature(enable = "neon")]
70578#[cfg(not(target_arch = "arm"))]
70579#[stable(feature = "neon_intrinsics", since = "1.59.0")]
70580#[cfg_attr(test, assert_instr(nop))]
70581pub unsafe fn vst3_s64(a: *mut i64, b: int64x1x3_t) {
70582 unsafe extern "unadjusted" {
70583 #[cfg_attr(
70584 any(target_arch = "aarch64", target_arch = "arm64ec"),
70585 link_name = "llvm.aarch64.neon.st3.v1i64.p0"
70586 )]
70587 fn _vst3_s64(a: int64x1_t, b: int64x1_t, c: int64x1_t, ptr: *mut i8);
70588 }
70589 _vst3_s64(b.0, b.1, b.2, a as _)
70590}
70591#[doc = "Store multiple 3-element structures from three registers"]
70592#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s64)"]
70593#[doc = "## Safety"]
70594#[doc = " * Neon instrinsic unsafe"]
70595#[inline]
70596#[cfg(target_arch = "arm")]
70597#[target_feature(enable = "neon,v7")]
70598#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70599#[cfg_attr(test, assert_instr(nop))]
70600pub unsafe fn vst3_s64(a: *mut i64, b: int64x1x3_t) {
70601 unsafe extern "unadjusted" {
70602 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v1i64")]
70603 fn _vst3_s64(ptr: *mut i8, a: int64x1_t, b: int64x1_t, c: int64x1_t, size: i32);
70604 }
70605 _vst3_s64(a as _, b.0, b.1, b.2, 8)
70606}
70607#[doc = "Store multiple 3-element structures from three registers"]
70608#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_u64)"]
70609#[doc = "## Safety"]
70610#[doc = " * Neon instrinsic unsafe"]
70611#[inline]
70612#[target_feature(enable = "neon")]
70613#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70614#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
70615#[cfg_attr(
70616 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70617 assert_instr(nop)
70618)]
70619#[cfg_attr(
70620 not(target_arch = "arm"),
70621 stable(feature = "neon_intrinsics", since = "1.59.0")
70622)]
70623#[cfg_attr(
70624 target_arch = "arm",
70625 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70626)]
70627pub unsafe fn vst3_u64(a: *mut u64, b: uint64x1x3_t) {
70628 vst3_s64(transmute(a), transmute(b))
70629}
70630#[doc = "Store multiple 3-element structures from three registers"]
70631#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_u8)"]
70632#[doc = "## Safety"]
70633#[doc = " * Neon instrinsic unsafe"]
70634#[inline]
70635#[target_feature(enable = "neon")]
70636#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70637#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
70638#[cfg_attr(
70639 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70640 assert_instr(st3)
70641)]
70642#[cfg_attr(
70643 not(target_arch = "arm"),
70644 stable(feature = "neon_intrinsics", since = "1.59.0")
70645)]
70646#[cfg_attr(
70647 target_arch = "arm",
70648 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70649)]
70650pub unsafe fn vst3_u8(a: *mut u8, b: uint8x8x3_t) {
70651 vst3_s8(transmute(a), transmute(b))
70652}
70653#[doc = "Store multiple 3-element structures from three registers"]
70654#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_u8)"]
70655#[doc = "## Safety"]
70656#[doc = " * Neon instrinsic unsafe"]
70657#[inline]
70658#[target_feature(enable = "neon")]
70659#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70660#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
70661#[cfg_attr(
70662 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70663 assert_instr(st3)
70664)]
70665#[cfg_attr(
70666 not(target_arch = "arm"),
70667 stable(feature = "neon_intrinsics", since = "1.59.0")
70668)]
70669#[cfg_attr(
70670 target_arch = "arm",
70671 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70672)]
70673pub unsafe fn vst3q_u8(a: *mut u8, b: uint8x16x3_t) {
70674 vst3q_s8(transmute(a), transmute(b))
70675}
70676#[doc = "Store multiple 3-element structures from three registers"]
70677#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_u16)"]
70678#[doc = "## Safety"]
70679#[doc = " * Neon instrinsic unsafe"]
70680#[inline]
70681#[target_feature(enable = "neon")]
70682#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70683#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
70684#[cfg_attr(
70685 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70686 assert_instr(st3)
70687)]
70688#[cfg_attr(
70689 not(target_arch = "arm"),
70690 stable(feature = "neon_intrinsics", since = "1.59.0")
70691)]
70692#[cfg_attr(
70693 target_arch = "arm",
70694 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70695)]
70696pub unsafe fn vst3_u16(a: *mut u16, b: uint16x4x3_t) {
70697 vst3_s16(transmute(a), transmute(b))
70698}
70699#[doc = "Store multiple 3-element structures from three registers"]
70700#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_u16)"]
70701#[doc = "## Safety"]
70702#[doc = " * Neon instrinsic unsafe"]
70703#[inline]
70704#[target_feature(enable = "neon")]
70705#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70706#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
70707#[cfg_attr(
70708 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70709 assert_instr(st3)
70710)]
70711#[cfg_attr(
70712 not(target_arch = "arm"),
70713 stable(feature = "neon_intrinsics", since = "1.59.0")
70714)]
70715#[cfg_attr(
70716 target_arch = "arm",
70717 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70718)]
70719pub unsafe fn vst3q_u16(a: *mut u16, b: uint16x8x3_t) {
70720 vst3q_s16(transmute(a), transmute(b))
70721}
70722#[doc = "Store multiple 3-element structures from three registers"]
70723#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_u32)"]
70724#[doc = "## Safety"]
70725#[doc = " * Neon instrinsic unsafe"]
70726#[inline]
70727#[target_feature(enable = "neon")]
70728#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70729#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
70730#[cfg_attr(
70731 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70732 assert_instr(st3)
70733)]
70734#[cfg_attr(
70735 not(target_arch = "arm"),
70736 stable(feature = "neon_intrinsics", since = "1.59.0")
70737)]
70738#[cfg_attr(
70739 target_arch = "arm",
70740 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70741)]
70742pub unsafe fn vst3_u32(a: *mut u32, b: uint32x2x3_t) {
70743 vst3_s32(transmute(a), transmute(b))
70744}
70745#[doc = "Store multiple 3-element structures from three registers"]
70746#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_u32)"]
70747#[doc = "## Safety"]
70748#[doc = " * Neon instrinsic unsafe"]
70749#[inline]
70750#[target_feature(enable = "neon")]
70751#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70752#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
70753#[cfg_attr(
70754 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70755 assert_instr(st3)
70756)]
70757#[cfg_attr(
70758 not(target_arch = "arm"),
70759 stable(feature = "neon_intrinsics", since = "1.59.0")
70760)]
70761#[cfg_attr(
70762 target_arch = "arm",
70763 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70764)]
70765pub unsafe fn vst3q_u32(a: *mut u32, b: uint32x4x3_t) {
70766 vst3q_s32(transmute(a), transmute(b))
70767}
70768#[doc = "Store multiple 3-element structures from three registers"]
70769#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_p8)"]
70770#[doc = "## Safety"]
70771#[doc = " * Neon instrinsic unsafe"]
70772#[inline]
70773#[target_feature(enable = "neon")]
70774#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70775#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
70776#[cfg_attr(
70777 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70778 assert_instr(st3)
70779)]
70780#[cfg_attr(
70781 not(target_arch = "arm"),
70782 stable(feature = "neon_intrinsics", since = "1.59.0")
70783)]
70784#[cfg_attr(
70785 target_arch = "arm",
70786 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70787)]
70788pub unsafe fn vst3_p8(a: *mut p8, b: poly8x8x3_t) {
70789 vst3_s8(transmute(a), transmute(b))
70790}
70791#[doc = "Store multiple 3-element structures from three registers"]
70792#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_p8)"]
70793#[doc = "## Safety"]
70794#[doc = " * Neon instrinsic unsafe"]
70795#[inline]
70796#[target_feature(enable = "neon")]
70797#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70798#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
70799#[cfg_attr(
70800 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70801 assert_instr(st3)
70802)]
70803#[cfg_attr(
70804 not(target_arch = "arm"),
70805 stable(feature = "neon_intrinsics", since = "1.59.0")
70806)]
70807#[cfg_attr(
70808 target_arch = "arm",
70809 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70810)]
70811pub unsafe fn vst3q_p8(a: *mut p8, b: poly8x16x3_t) {
70812 vst3q_s8(transmute(a), transmute(b))
70813}
70814#[doc = "Store multiple 3-element structures from three registers"]
70815#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_p16)"]
70816#[doc = "## Safety"]
70817#[doc = " * Neon instrinsic unsafe"]
70818#[inline]
70819#[target_feature(enable = "neon")]
70820#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70821#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
70822#[cfg_attr(
70823 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70824 assert_instr(st3)
70825)]
70826#[cfg_attr(
70827 not(target_arch = "arm"),
70828 stable(feature = "neon_intrinsics", since = "1.59.0")
70829)]
70830#[cfg_attr(
70831 target_arch = "arm",
70832 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70833)]
70834pub unsafe fn vst3_p16(a: *mut p16, b: poly16x4x3_t) {
70835 vst3_s16(transmute(a), transmute(b))
70836}
70837#[doc = "Store multiple 3-element structures from three registers"]
70838#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_p16)"]
70839#[doc = "## Safety"]
70840#[doc = " * Neon instrinsic unsafe"]
70841#[inline]
70842#[target_feature(enable = "neon")]
70843#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70844#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
70845#[cfg_attr(
70846 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70847 assert_instr(st3)
70848)]
70849#[cfg_attr(
70850 not(target_arch = "arm"),
70851 stable(feature = "neon_intrinsics", since = "1.59.0")
70852)]
70853#[cfg_attr(
70854 target_arch = "arm",
70855 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70856)]
70857pub unsafe fn vst3q_p16(a: *mut p16, b: poly16x8x3_t) {
70858 vst3q_s16(transmute(a), transmute(b))
70859}
70860#[doc = "Store multiple 4-element structures from four registers"]
70861#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_f16)"]
70862#[doc = "## Safety"]
70863#[doc = " * Neon instrinsic unsafe"]
70864#[inline]
70865#[target_feature(enable = "neon")]
70866#[cfg(target_arch = "arm")]
70867#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70868#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
70869#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
70870#[cfg(not(target_arch = "arm64ec"))]
70871#[cfg_attr(test, assert_instr(vst4))]
70872pub unsafe fn vst4_f16(a: *mut f16, b: float16x4x4_t) {
70873 unsafe extern "unadjusted" {
70874 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v4f16")]
70875 fn _vst4_f16(
70876 ptr: *mut i8,
70877 a: float16x4_t,
70878 b: float16x4_t,
70879 c: float16x4_t,
70880 d: float16x4_t,
70881 size: i32,
70882 );
70883 }
70884 _vst4_f16(a as _, b.0, b.1, b.2, b.3, 2)
70885}
70886#[doc = "Store multiple 4-element structures from four registers"]
70887#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_f16)"]
70888#[doc = "## Safety"]
70889#[doc = " * Neon instrinsic unsafe"]
70890#[inline]
70891#[target_feature(enable = "neon")]
70892#[cfg(target_arch = "arm")]
70893#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70894#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
70895#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
70896#[cfg(not(target_arch = "arm64ec"))]
70897#[cfg_attr(test, assert_instr(vst4))]
70898pub unsafe fn vst4q_f16(a: *mut f16, b: float16x8x4_t) {
70899 unsafe extern "unadjusted" {
70900 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v8f16")]
70901 fn _vst4q_f16(
70902 ptr: *mut i8,
70903 a: float16x8_t,
70904 b: float16x8_t,
70905 c: float16x8_t,
70906 d: float16x8_t,
70907 size: i32,
70908 );
70909 }
70910 _vst4q_f16(a as _, b.0, b.1, b.2, b.3, 2)
70911}
70912#[doc = "Store multiple 4-element structures from four registers"]
70913#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_f16)"]
70914#[doc = "## Safety"]
70915#[doc = " * Neon instrinsic unsafe"]
70916#[inline]
70917#[target_feature(enable = "neon")]
70918#[cfg(not(target_arch = "arm"))]
70919#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
70920#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
70921#[cfg(not(target_arch = "arm64ec"))]
70922#[cfg_attr(test, assert_instr(st4))]
70923pub unsafe fn vst4_f16(a: *mut f16, b: float16x4x4_t) {
70924 unsafe extern "unadjusted" {
70925 #[cfg_attr(
70926 any(target_arch = "aarch64", target_arch = "arm64ec"),
70927 link_name = "llvm.aarch64.neon.st4.v4f16.p0"
70928 )]
70929 fn _vst4_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t, d: float16x4_t, ptr: *mut i8);
70930 }
70931 _vst4_f16(b.0, b.1, b.2, b.3, a as _)
70932}
70933#[doc = "Store multiple 4-element structures from four registers"]
70934#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_f16)"]
70935#[doc = "## Safety"]
70936#[doc = " * Neon instrinsic unsafe"]
70937#[inline]
70938#[target_feature(enable = "neon")]
70939#[cfg(not(target_arch = "arm"))]
70940#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
70941#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
70942#[cfg(not(target_arch = "arm64ec"))]
70943#[cfg_attr(test, assert_instr(st4))]
70944pub unsafe fn vst4q_f16(a: *mut f16, b: float16x8x4_t) {
70945 unsafe extern "unadjusted" {
70946 #[cfg_attr(
70947 any(target_arch = "aarch64", target_arch = "arm64ec"),
70948 link_name = "llvm.aarch64.neon.st4.v8f16.p0"
70949 )]
70950 fn _vst4q_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t, d: float16x8_t, ptr: *mut i8);
70951 }
70952 _vst4q_f16(b.0, b.1, b.2, b.3, a as _)
70953}
70954#[doc = "Store multiple 4-element structures from four registers"]
70955#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_f32)"]
70956#[doc = "## Safety"]
70957#[doc = " * Neon instrinsic unsafe"]
70958#[inline]
70959#[cfg(target_arch = "arm")]
70960#[target_feature(enable = "neon,v7")]
70961#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70962#[cfg_attr(test, assert_instr(vst4))]
70963pub unsafe fn vst4_f32(a: *mut f32, b: float32x2x4_t) {
70964 unsafe extern "unadjusted" {
70965 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v2f32")]
70966 fn _vst4_f32(
70967 ptr: *mut i8,
70968 a: float32x2_t,
70969 b: float32x2_t,
70970 c: float32x2_t,
70971 d: float32x2_t,
70972 size: i32,
70973 );
70974 }
70975 _vst4_f32(a as _, b.0, b.1, b.2, b.3, 4)
70976}
70977#[doc = "Store multiple 4-element structures from four registers"]
70978#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_f32)"]
70979#[doc = "## Safety"]
70980#[doc = " * Neon instrinsic unsafe"]
70981#[inline]
70982#[cfg(target_arch = "arm")]
70983#[target_feature(enable = "neon,v7")]
70984#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70985#[cfg_attr(test, assert_instr(vst4))]
70986pub unsafe fn vst4q_f32(a: *mut f32, b: float32x4x4_t) {
70987 unsafe extern "unadjusted" {
70988 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v4f32")]
70989 fn _vst4q_f32(
70990 ptr: *mut i8,
70991 a: float32x4_t,
70992 b: float32x4_t,
70993 c: float32x4_t,
70994 d: float32x4_t,
70995 size: i32,
70996 );
70997 }
70998 _vst4q_f32(a as _, b.0, b.1, b.2, b.3, 4)
70999}
71000#[doc = "Store multiple 4-element structures from four registers"]
71001#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s8)"]
71002#[doc = "## Safety"]
71003#[doc = " * Neon instrinsic unsafe"]
71004#[inline]
71005#[cfg(target_arch = "arm")]
71006#[target_feature(enable = "neon,v7")]
71007#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71008#[cfg_attr(test, assert_instr(vst4))]
71009pub unsafe fn vst4_s8(a: *mut i8, b: int8x8x4_t) {
71010 unsafe extern "unadjusted" {
71011 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v8i8")]
71012 fn _vst4_s8(ptr: *mut i8, a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, size: i32);
71013 }
71014 _vst4_s8(a as _, b.0, b.1, b.2, b.3, 1)
71015}
71016#[doc = "Store multiple 4-element structures from four registers"]
71017#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s8)"]
71018#[doc = "## Safety"]
71019#[doc = " * Neon instrinsic unsafe"]
71020#[inline]
71021#[cfg(target_arch = "arm")]
71022#[target_feature(enable = "neon,v7")]
71023#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71024#[cfg_attr(test, assert_instr(vst4))]
71025pub unsafe fn vst4q_s8(a: *mut i8, b: int8x16x4_t) {
71026 unsafe extern "unadjusted" {
71027 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v16i8")]
71028 fn _vst4q_s8(
71029 ptr: *mut i8,
71030 a: int8x16_t,
71031 b: int8x16_t,
71032 c: int8x16_t,
71033 d: int8x16_t,
71034 size: i32,
71035 );
71036 }
71037 _vst4q_s8(a as _, b.0, b.1, b.2, b.3, 1)
71038}
71039#[doc = "Store multiple 4-element structures from four registers"]
71040#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s16)"]
71041#[doc = "## Safety"]
71042#[doc = " * Neon instrinsic unsafe"]
71043#[inline]
71044#[cfg(target_arch = "arm")]
71045#[target_feature(enable = "neon,v7")]
71046#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71047#[cfg_attr(test, assert_instr(vst4))]
71048pub unsafe fn vst4_s16(a: *mut i16, b: int16x4x4_t) {
71049 unsafe extern "unadjusted" {
71050 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v4i16")]
71051 fn _vst4_s16(
71052 ptr: *mut i8,
71053 a: int16x4_t,
71054 b: int16x4_t,
71055 c: int16x4_t,
71056 d: int16x4_t,
71057 size: i32,
71058 );
71059 }
71060 _vst4_s16(a as _, b.0, b.1, b.2, b.3, 2)
71061}
71062#[doc = "Store multiple 4-element structures from four registers"]
71063#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s16)"]
71064#[doc = "## Safety"]
71065#[doc = " * Neon instrinsic unsafe"]
71066#[inline]
71067#[cfg(target_arch = "arm")]
71068#[target_feature(enable = "neon,v7")]
71069#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71070#[cfg_attr(test, assert_instr(vst4))]
71071pub unsafe fn vst4q_s16(a: *mut i16, b: int16x8x4_t) {
71072 unsafe extern "unadjusted" {
71073 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v8i16")]
71074 fn _vst4q_s16(
71075 ptr: *mut i8,
71076 a: int16x8_t,
71077 b: int16x8_t,
71078 c: int16x8_t,
71079 d: int16x8_t,
71080 size: i32,
71081 );
71082 }
71083 _vst4q_s16(a as _, b.0, b.1, b.2, b.3, 2)
71084}
71085#[doc = "Store multiple 4-element structures from four registers"]
71086#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s32)"]
71087#[doc = "## Safety"]
71088#[doc = " * Neon instrinsic unsafe"]
71089#[inline]
71090#[cfg(target_arch = "arm")]
71091#[target_feature(enable = "neon,v7")]
71092#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71093#[cfg_attr(test, assert_instr(vst4))]
71094pub unsafe fn vst4_s32(a: *mut i32, b: int32x2x4_t) {
71095 unsafe extern "unadjusted" {
71096 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v2i32")]
71097 fn _vst4_s32(
71098 ptr: *mut i8,
71099 a: int32x2_t,
71100 b: int32x2_t,
71101 c: int32x2_t,
71102 d: int32x2_t,
71103 size: i32,
71104 );
71105 }
71106 _vst4_s32(a as _, b.0, b.1, b.2, b.3, 4)
71107}
71108#[doc = "Store multiple 4-element structures from four registers"]
71109#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s32)"]
71110#[doc = "## Safety"]
71111#[doc = " * Neon instrinsic unsafe"]
71112#[inline]
71113#[cfg(target_arch = "arm")]
71114#[target_feature(enable = "neon,v7")]
71115#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71116#[cfg_attr(test, assert_instr(vst4))]
71117pub unsafe fn vst4q_s32(a: *mut i32, b: int32x4x4_t) {
71118 unsafe extern "unadjusted" {
71119 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v4i32")]
71120 fn _vst4q_s32(
71121 ptr: *mut i8,
71122 a: int32x4_t,
71123 b: int32x4_t,
71124 c: int32x4_t,
71125 d: int32x4_t,
71126 size: i32,
71127 );
71128 }
71129 _vst4q_s32(a as _, b.0, b.1, b.2, b.3, 4)
71130}
71131#[doc = "Store multiple 4-element structures from four registers"]
71132#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_f32)"]
71133#[doc = "## Safety"]
71134#[doc = " * Neon instrinsic unsafe"]
71135#[inline]
71136#[target_feature(enable = "neon")]
71137#[cfg(not(target_arch = "arm"))]
71138#[stable(feature = "neon_intrinsics", since = "1.59.0")]
71139#[cfg_attr(test, assert_instr(st4))]
71140pub unsafe fn vst4_f32(a: *mut f32, b: float32x2x4_t) {
71141 unsafe extern "unadjusted" {
71142 #[cfg_attr(
71143 any(target_arch = "aarch64", target_arch = "arm64ec"),
71144 link_name = "llvm.aarch64.neon.st4.v2f32.p0"
71145 )]
71146 fn _vst4_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t, d: float32x2_t, ptr: *mut i8);
71147 }
71148 _vst4_f32(b.0, b.1, b.2, b.3, a as _)
71149}
71150#[doc = "Store multiple 4-element structures from four registers"]
71151#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_f32)"]
71152#[doc = "## Safety"]
71153#[doc = " * Neon instrinsic unsafe"]
71154#[inline]
71155#[target_feature(enable = "neon")]
71156#[cfg(not(target_arch = "arm"))]
71157#[stable(feature = "neon_intrinsics", since = "1.59.0")]
71158#[cfg_attr(test, assert_instr(st4))]
71159pub unsafe fn vst4q_f32(a: *mut f32, b: float32x4x4_t) {
71160 unsafe extern "unadjusted" {
71161 #[cfg_attr(
71162 any(target_arch = "aarch64", target_arch = "arm64ec"),
71163 link_name = "llvm.aarch64.neon.st4.v4f32.p0"
71164 )]
71165 fn _vst4q_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t, d: float32x4_t, ptr: *mut i8);
71166 }
71167 _vst4q_f32(b.0, b.1, b.2, b.3, a as _)
71168}
71169#[doc = "Store multiple 4-element structures from four registers"]
71170#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s8)"]
71171#[doc = "## Safety"]
71172#[doc = " * Neon instrinsic unsafe"]
71173#[inline]
71174#[target_feature(enable = "neon")]
71175#[cfg(not(target_arch = "arm"))]
71176#[stable(feature = "neon_intrinsics", since = "1.59.0")]
71177#[cfg_attr(test, assert_instr(st4))]
71178pub unsafe fn vst4_s8(a: *mut i8, b: int8x8x4_t) {
71179 unsafe extern "unadjusted" {
71180 #[cfg_attr(
71181 any(target_arch = "aarch64", target_arch = "arm64ec"),
71182 link_name = "llvm.aarch64.neon.st4.v8i8.p0"
71183 )]
71184 fn _vst4_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, ptr: *mut i8);
71185 }
71186 _vst4_s8(b.0, b.1, b.2, b.3, a as _)
71187}
71188#[doc = "Store multiple 4-element structures from four registers"]
71189#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s8)"]
71190#[doc = "## Safety"]
71191#[doc = " * Neon instrinsic unsafe"]
71192#[inline]
71193#[target_feature(enable = "neon")]
71194#[cfg(not(target_arch = "arm"))]
71195#[stable(feature = "neon_intrinsics", since = "1.59.0")]
71196#[cfg_attr(test, assert_instr(st4))]
71197pub unsafe fn vst4q_s8(a: *mut i8, b: int8x16x4_t) {
71198 unsafe extern "unadjusted" {
71199 #[cfg_attr(
71200 any(target_arch = "aarch64", target_arch = "arm64ec"),
71201 link_name = "llvm.aarch64.neon.st4.v16i8.p0"
71202 )]
71203 fn _vst4q_s8(a: int8x16_t, b: int8x16_t, c: int8x16_t, d: int8x16_t, ptr: *mut i8);
71204 }
71205 _vst4q_s8(b.0, b.1, b.2, b.3, a as _)
71206}
71207#[doc = "Store multiple 4-element structures from four registers"]
71208#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s16)"]
71209#[doc = "## Safety"]
71210#[doc = " * Neon instrinsic unsafe"]
71211#[inline]
71212#[target_feature(enable = "neon")]
71213#[cfg(not(target_arch = "arm"))]
71214#[stable(feature = "neon_intrinsics", since = "1.59.0")]
71215#[cfg_attr(test, assert_instr(st4))]
71216pub unsafe fn vst4_s16(a: *mut i16, b: int16x4x4_t) {
71217 unsafe extern "unadjusted" {
71218 #[cfg_attr(
71219 any(target_arch = "aarch64", target_arch = "arm64ec"),
71220 link_name = "llvm.aarch64.neon.st4.v4i16.p0"
71221 )]
71222 fn _vst4_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t, d: int16x4_t, ptr: *mut i8);
71223 }
71224 _vst4_s16(b.0, b.1, b.2, b.3, a as _)
71225}
71226#[doc = "Store multiple 4-element structures from four registers"]
71227#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s16)"]
71228#[doc = "## Safety"]
71229#[doc = " * Neon instrinsic unsafe"]
71230#[inline]
71231#[target_feature(enable = "neon")]
71232#[cfg(not(target_arch = "arm"))]
71233#[stable(feature = "neon_intrinsics", since = "1.59.0")]
71234#[cfg_attr(test, assert_instr(st4))]
71235pub unsafe fn vst4q_s16(a: *mut i16, b: int16x8x4_t) {
71236 unsafe extern "unadjusted" {
71237 #[cfg_attr(
71238 any(target_arch = "aarch64", target_arch = "arm64ec"),
71239 link_name = "llvm.aarch64.neon.st4.v8i16.p0"
71240 )]
71241 fn _vst4q_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t, d: int16x8_t, ptr: *mut i8);
71242 }
71243 _vst4q_s16(b.0, b.1, b.2, b.3, a as _)
71244}
71245#[doc = "Store multiple 4-element structures from four registers"]
71246#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s32)"]
71247#[doc = "## Safety"]
71248#[doc = " * Neon instrinsic unsafe"]
71249#[inline]
71250#[target_feature(enable = "neon")]
71251#[cfg(not(target_arch = "arm"))]
71252#[stable(feature = "neon_intrinsics", since = "1.59.0")]
71253#[cfg_attr(test, assert_instr(st4))]
71254pub unsafe fn vst4_s32(a: *mut i32, b: int32x2x4_t) {
71255 unsafe extern "unadjusted" {
71256 #[cfg_attr(
71257 any(target_arch = "aarch64", target_arch = "arm64ec"),
71258 link_name = "llvm.aarch64.neon.st4.v2i32.p0"
71259 )]
71260 fn _vst4_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t, d: int32x2_t, ptr: *mut i8);
71261 }
71262 _vst4_s32(b.0, b.1, b.2, b.3, a as _)
71263}
71264#[doc = "Store multiple 4-element structures from four registers"]
71265#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s32)"]
71266#[doc = "## Safety"]
71267#[doc = " * Neon instrinsic unsafe"]
71268#[inline]
71269#[target_feature(enable = "neon")]
71270#[cfg(not(target_arch = "arm"))]
71271#[stable(feature = "neon_intrinsics", since = "1.59.0")]
71272#[cfg_attr(test, assert_instr(st4))]
71273pub unsafe fn vst4q_s32(a: *mut i32, b: int32x4x4_t) {
71274 unsafe extern "unadjusted" {
71275 #[cfg_attr(
71276 any(target_arch = "aarch64", target_arch = "arm64ec"),
71277 link_name = "llvm.aarch64.neon.st4.v4i32.p0"
71278 )]
71279 fn _vst4q_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t, d: int32x4_t, ptr: *mut i8);
71280 }
71281 _vst4q_s32(b.0, b.1, b.2, b.3, a as _)
71282}
71283#[doc = "Store multiple 4-element structures from four registers"]
71284#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_f16)"]
71285#[doc = "## Safety"]
71286#[doc = " * Neon instrinsic unsafe"]
71287#[inline]
71288#[target_feature(enable = "neon")]
71289#[cfg(target_arch = "arm")]
71290#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71291#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
71292#[rustc_legacy_const_generics(2)]
71293#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
71294#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
71295#[cfg(not(target_arch = "arm64ec"))]
71296pub unsafe fn vst4_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x4_t) {
71297 static_assert_uimm_bits!(LANE, 2);
71298 unsafe extern "unadjusted" {
71299 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v4f16")]
71300 fn _vst4_lane_f16(
71301 ptr: *mut i8,
71302 a: float16x4_t,
71303 b: float16x4_t,
71304 c: float16x4_t,
71305 d: float16x4_t,
71306 n: i32,
71307 size: i32,
71308 );
71309 }
71310 _vst4_lane_f16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
71311}
71312#[doc = "Store multiple 4-element structures from four registers"]
71313#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_f16)"]
71314#[doc = "## Safety"]
71315#[doc = " * Neon instrinsic unsafe"]
71316#[inline]
71317#[target_feature(enable = "neon")]
71318#[cfg(target_arch = "arm")]
71319#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71320#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
71321#[rustc_legacy_const_generics(2)]
71322#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
71323#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
71324#[cfg(not(target_arch = "arm64ec"))]
71325pub unsafe fn vst4q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x4_t) {
71326 static_assert_uimm_bits!(LANE, 3);
71327 unsafe extern "unadjusted" {
71328 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v8f16")]
71329 fn _vst4q_lane_f16(
71330 ptr: *mut i8,
71331 a: float16x8_t,
71332 b: float16x8_t,
71333 c: float16x8_t,
71334 d: float16x8_t,
71335 n: i32,
71336 size: i32,
71337 );
71338 }
71339 _vst4q_lane_f16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
71340}
71341#[doc = "Store multiple 4-element structures from four registers"]
71342#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_f16)"]
71343#[doc = "## Safety"]
71344#[doc = " * Neon instrinsic unsafe"]
71345#[inline]
71346#[target_feature(enable = "neon")]
71347#[cfg(not(target_arch = "arm"))]
71348#[rustc_legacy_const_generics(2)]
71349#[cfg_attr(test, assert_instr(st4, LANE = 0))]
71350#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
71351#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
71352#[cfg(not(target_arch = "arm64ec"))]
71353pub unsafe fn vst4_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x4_t) {
71354 static_assert_uimm_bits!(LANE, 2);
71355 unsafe extern "unadjusted" {
71356 #[cfg_attr(
71357 any(target_arch = "aarch64", target_arch = "arm64ec"),
71358 link_name = "llvm.aarch64.neon.st4lane.v4f16.p0"
71359 )]
71360 fn _vst4_lane_f16(
71361 a: float16x4_t,
71362 b: float16x4_t,
71363 c: float16x4_t,
71364 d: float16x4_t,
71365 n: i64,
71366 ptr: *mut i8,
71367 );
71368 }
71369 _vst4_lane_f16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
71370}
71371#[doc = "Store multiple 4-element structures from four registers"]
71372#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_f16)"]
71373#[doc = "## Safety"]
71374#[doc = " * Neon instrinsic unsafe"]
71375#[inline]
71376#[target_feature(enable = "neon")]
71377#[cfg(not(target_arch = "arm"))]
71378#[rustc_legacy_const_generics(2)]
71379#[cfg_attr(test, assert_instr(st4, LANE = 0))]
71380#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
71381#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
71382#[cfg(not(target_arch = "arm64ec"))]
71383pub unsafe fn vst4q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x4_t) {
71384 static_assert_uimm_bits!(LANE, 3);
71385 unsafe extern "unadjusted" {
71386 #[cfg_attr(
71387 any(target_arch = "aarch64", target_arch = "arm64ec"),
71388 link_name = "llvm.aarch64.neon.st4lane.v8f16.p0"
71389 )]
71390 fn _vst4q_lane_f16(
71391 a: float16x8_t,
71392 b: float16x8_t,
71393 c: float16x8_t,
71394 d: float16x8_t,
71395 n: i64,
71396 ptr: *mut i8,
71397 );
71398 }
71399 _vst4q_lane_f16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
71400}
71401#[doc = "Store multiple 4-element structures from four registers"]
71402#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_f32)"]
71403#[doc = "## Safety"]
71404#[doc = " * Neon instrinsic unsafe"]
71405#[inline]
71406#[cfg(target_arch = "arm")]
71407#[target_feature(enable = "neon,v7")]
71408#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
71409#[rustc_legacy_const_generics(2)]
71410#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71411pub unsafe fn vst4_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x4_t) {
71412 static_assert_uimm_bits!(LANE, 1);
71413 unsafe extern "unadjusted" {
71414 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v2f32")]
71415 fn _vst4_lane_f32(
71416 ptr: *mut i8,
71417 a: float32x2_t,
71418 b: float32x2_t,
71419 c: float32x2_t,
71420 d: float32x2_t,
71421 n: i32,
71422 size: i32,
71423 );
71424 }
71425 _vst4_lane_f32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
71426}
71427#[doc = "Store multiple 4-element structures from four registers"]
71428#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_f32)"]
71429#[doc = "## Safety"]
71430#[doc = " * Neon instrinsic unsafe"]
71431#[inline]
71432#[cfg(target_arch = "arm")]
71433#[target_feature(enable = "neon,v7")]
71434#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
71435#[rustc_legacy_const_generics(2)]
71436#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71437pub unsafe fn vst4q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x4_t) {
71438 static_assert_uimm_bits!(LANE, 2);
71439 unsafe extern "unadjusted" {
71440 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v4f32")]
71441 fn _vst4q_lane_f32(
71442 ptr: *mut i8,
71443 a: float32x4_t,
71444 b: float32x4_t,
71445 c: float32x4_t,
71446 d: float32x4_t,
71447 n: i32,
71448 size: i32,
71449 );
71450 }
71451 _vst4q_lane_f32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
71452}
71453#[doc = "Store multiple 4-element structures from four registers"]
71454#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s8)"]
71455#[doc = "## Safety"]
71456#[doc = " * Neon instrinsic unsafe"]
71457#[inline]
71458#[cfg(target_arch = "arm")]
71459#[target_feature(enable = "neon,v7")]
71460#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
71461#[rustc_legacy_const_generics(2)]
71462#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71463pub unsafe fn vst4_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x4_t) {
71464 static_assert_uimm_bits!(LANE, 3);
71465 unsafe extern "unadjusted" {
71466 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v8i8")]
71467 fn _vst4_lane_s8(
71468 ptr: *mut i8,
71469 a: int8x8_t,
71470 b: int8x8_t,
71471 c: int8x8_t,
71472 d: int8x8_t,
71473 n: i32,
71474 size: i32,
71475 );
71476 }
71477 _vst4_lane_s8(a as _, b.0, b.1, b.2, b.3, LANE, 1)
71478}
71479#[doc = "Store multiple 4-element structures from four registers"]
71480#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s16)"]
71481#[doc = "## Safety"]
71482#[doc = " * Neon instrinsic unsafe"]
71483#[inline]
71484#[cfg(target_arch = "arm")]
71485#[target_feature(enable = "neon,v7")]
71486#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
71487#[rustc_legacy_const_generics(2)]
71488#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71489pub unsafe fn vst4_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x4_t) {
71490 static_assert_uimm_bits!(LANE, 2);
71491 unsafe extern "unadjusted" {
71492 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v4i16")]
71493 fn _vst4_lane_s16(
71494 ptr: *mut i8,
71495 a: int16x4_t,
71496 b: int16x4_t,
71497 c: int16x4_t,
71498 d: int16x4_t,
71499 n: i32,
71500 size: i32,
71501 );
71502 }
71503 _vst4_lane_s16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
71504}
71505#[doc = "Store multiple 4-element structures from four registers"]
71506#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_s16)"]
71507#[doc = "## Safety"]
71508#[doc = " * Neon instrinsic unsafe"]
71509#[inline]
71510#[cfg(target_arch = "arm")]
71511#[target_feature(enable = "neon,v7")]
71512#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
71513#[rustc_legacy_const_generics(2)]
71514#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71515pub unsafe fn vst4q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x4_t) {
71516 static_assert_uimm_bits!(LANE, 3);
71517 unsafe extern "unadjusted" {
71518 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v8i16")]
71519 fn _vst4q_lane_s16(
71520 ptr: *mut i8,
71521 a: int16x8_t,
71522 b: int16x8_t,
71523 c: int16x8_t,
71524 d: int16x8_t,
71525 n: i32,
71526 size: i32,
71527 );
71528 }
71529 _vst4q_lane_s16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
71530}
71531#[doc = "Store multiple 4-element structures from four registers"]
71532#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s32)"]
71533#[doc = "## Safety"]
71534#[doc = " * Neon instrinsic unsafe"]
71535#[inline]
71536#[cfg(target_arch = "arm")]
71537#[target_feature(enable = "neon,v7")]
71538#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
71539#[rustc_legacy_const_generics(2)]
71540#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71541pub unsafe fn vst4_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x4_t) {
71542 static_assert_uimm_bits!(LANE, 1);
71543 unsafe extern "unadjusted" {
71544 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v2i32")]
71545 fn _vst4_lane_s32(
71546 ptr: *mut i8,
71547 a: int32x2_t,
71548 b: int32x2_t,
71549 c: int32x2_t,
71550 d: int32x2_t,
71551 n: i32,
71552 size: i32,
71553 );
71554 }
71555 _vst4_lane_s32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
71556}
71557#[doc = "Store multiple 4-element structures from four registers"]
71558#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_s32)"]
71559#[doc = "## Safety"]
71560#[doc = " * Neon instrinsic unsafe"]
71561#[inline]
71562#[cfg(target_arch = "arm")]
71563#[target_feature(enable = "neon,v7")]
71564#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
71565#[rustc_legacy_const_generics(2)]
71566#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71567pub unsafe fn vst4q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x4_t) {
71568 static_assert_uimm_bits!(LANE, 2);
71569 unsafe extern "unadjusted" {
71570 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v4i32")]
71571 fn _vst4q_lane_s32(
71572 ptr: *mut i8,
71573 a: int32x4_t,
71574 b: int32x4_t,
71575 c: int32x4_t,
71576 d: int32x4_t,
71577 n: i32,
71578 size: i32,
71579 );
71580 }
71581 _vst4q_lane_s32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
71582}
71583#[doc = "Store multiple 4-element structures from four registers"]
71584#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_f32)"]
71585#[doc = "## Safety"]
71586#[doc = " * Neon instrinsic unsafe"]
71587#[inline]
71588#[target_feature(enable = "neon")]
71589#[cfg(not(target_arch = "arm"))]
71590#[rustc_legacy_const_generics(2)]
71591#[cfg_attr(test, assert_instr(st4, LANE = 0))]
71592#[stable(feature = "neon_intrinsics", since = "1.59.0")]
71593pub unsafe fn vst4_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x4_t) {
71594 static_assert_uimm_bits!(LANE, 1);
71595 unsafe extern "unadjusted" {
71596 #[cfg_attr(
71597 any(target_arch = "aarch64", target_arch = "arm64ec"),
71598 link_name = "llvm.aarch64.neon.st4lane.v2f32.p0"
71599 )]
71600 fn _vst4_lane_f32(
71601 a: float32x2_t,
71602 b: float32x2_t,
71603 c: float32x2_t,
71604 d: float32x2_t,
71605 n: i64,
71606 ptr: *mut i8,
71607 );
71608 }
71609 _vst4_lane_f32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
71610}
71611#[doc = "Store multiple 4-element structures from four registers"]
71612#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_f32)"]
71613#[doc = "## Safety"]
71614#[doc = " * Neon instrinsic unsafe"]
71615#[inline]
71616#[target_feature(enable = "neon")]
71617#[cfg(not(target_arch = "arm"))]
71618#[rustc_legacy_const_generics(2)]
71619#[cfg_attr(test, assert_instr(st4, LANE = 0))]
71620#[stable(feature = "neon_intrinsics", since = "1.59.0")]
71621pub unsafe fn vst4q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x4_t) {
71622 static_assert_uimm_bits!(LANE, 2);
71623 unsafe extern "unadjusted" {
71624 #[cfg_attr(
71625 any(target_arch = "aarch64", target_arch = "arm64ec"),
71626 link_name = "llvm.aarch64.neon.st4lane.v4f32.p0"
71627 )]
71628 fn _vst4q_lane_f32(
71629 a: float32x4_t,
71630 b: float32x4_t,
71631 c: float32x4_t,
71632 d: float32x4_t,
71633 n: i64,
71634 ptr: *mut i8,
71635 );
71636 }
71637 _vst4q_lane_f32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
71638}
71639#[doc = "Store multiple 4-element structures from four registers"]
71640#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s8)"]
71641#[doc = "## Safety"]
71642#[doc = " * Neon instrinsic unsafe"]
71643#[inline]
71644#[target_feature(enable = "neon")]
71645#[cfg(not(target_arch = "arm"))]
71646#[rustc_legacy_const_generics(2)]
71647#[cfg_attr(test, assert_instr(st4, LANE = 0))]
71648#[stable(feature = "neon_intrinsics", since = "1.59.0")]
71649pub unsafe fn vst4_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x4_t) {
71650 static_assert_uimm_bits!(LANE, 3);
71651 unsafe extern "unadjusted" {
71652 #[cfg_attr(
71653 any(target_arch = "aarch64", target_arch = "arm64ec"),
71654 link_name = "llvm.aarch64.neon.st4lane.v8i8.p0"
71655 )]
71656 fn _vst4_lane_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, n: i64, ptr: *mut i8);
71657 }
71658 _vst4_lane_s8(b.0, b.1, b.2, b.3, LANE as i64, a as _)
71659}
71660#[doc = "Store multiple 4-element structures from four registers"]
71661#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s16)"]
71662#[doc = "## Safety"]
71663#[doc = " * Neon instrinsic unsafe"]
71664#[inline]
71665#[target_feature(enable = "neon")]
71666#[cfg(not(target_arch = "arm"))]
71667#[rustc_legacy_const_generics(2)]
71668#[cfg_attr(test, assert_instr(st4, LANE = 0))]
71669#[stable(feature = "neon_intrinsics", since = "1.59.0")]
71670pub unsafe fn vst4_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x4_t) {
71671 static_assert_uimm_bits!(LANE, 2);
71672 unsafe extern "unadjusted" {
71673 #[cfg_attr(
71674 any(target_arch = "aarch64", target_arch = "arm64ec"),
71675 link_name = "llvm.aarch64.neon.st4lane.v4i16.p0"
71676 )]
71677 fn _vst4_lane_s16(
71678 a: int16x4_t,
71679 b: int16x4_t,
71680 c: int16x4_t,
71681 d: int16x4_t,
71682 n: i64,
71683 ptr: *mut i8,
71684 );
71685 }
71686 _vst4_lane_s16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
71687}
71688#[doc = "Store multiple 4-element structures from four registers"]
71689#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_s16)"]
71690#[doc = "## Safety"]
71691#[doc = " * Neon instrinsic unsafe"]
71692#[inline]
71693#[target_feature(enable = "neon")]
71694#[cfg(not(target_arch = "arm"))]
71695#[rustc_legacy_const_generics(2)]
71696#[cfg_attr(test, assert_instr(st4, LANE = 0))]
71697#[stable(feature = "neon_intrinsics", since = "1.59.0")]
71698pub unsafe fn vst4q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x4_t) {
71699 static_assert_uimm_bits!(LANE, 3);
71700 unsafe extern "unadjusted" {
71701 #[cfg_attr(
71702 any(target_arch = "aarch64", target_arch = "arm64ec"),
71703 link_name = "llvm.aarch64.neon.st4lane.v8i16.p0"
71704 )]
71705 fn _vst4q_lane_s16(
71706 a: int16x8_t,
71707 b: int16x8_t,
71708 c: int16x8_t,
71709 d: int16x8_t,
71710 n: i64,
71711 ptr: *mut i8,
71712 );
71713 }
71714 _vst4q_lane_s16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
71715}
71716#[doc = "Store multiple 4-element structures from four registers"]
71717#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s32)"]
71718#[doc = "## Safety"]
71719#[doc = " * Neon instrinsic unsafe"]
71720#[inline]
71721#[target_feature(enable = "neon")]
71722#[cfg(not(target_arch = "arm"))]
71723#[rustc_legacy_const_generics(2)]
71724#[cfg_attr(test, assert_instr(st4, LANE = 0))]
71725#[stable(feature = "neon_intrinsics", since = "1.59.0")]
71726pub unsafe fn vst4_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x4_t) {
71727 static_assert_uimm_bits!(LANE, 1);
71728 unsafe extern "unadjusted" {
71729 #[cfg_attr(
71730 any(target_arch = "aarch64", target_arch = "arm64ec"),
71731 link_name = "llvm.aarch64.neon.st4lane.v2i32.p0"
71732 )]
71733 fn _vst4_lane_s32(
71734 a: int32x2_t,
71735 b: int32x2_t,
71736 c: int32x2_t,
71737 d: int32x2_t,
71738 n: i64,
71739 ptr: *mut i8,
71740 );
71741 }
71742 _vst4_lane_s32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
71743}
71744#[doc = "Store multiple 4-element structures from four registers"]
71745#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_s32)"]
71746#[doc = "## Safety"]
71747#[doc = " * Neon instrinsic unsafe"]
71748#[inline]
71749#[target_feature(enable = "neon")]
71750#[cfg(not(target_arch = "arm"))]
71751#[rustc_legacy_const_generics(2)]
71752#[cfg_attr(test, assert_instr(st4, LANE = 0))]
71753#[stable(feature = "neon_intrinsics", since = "1.59.0")]
71754pub unsafe fn vst4q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x4_t) {
71755 static_assert_uimm_bits!(LANE, 2);
71756 unsafe extern "unadjusted" {
71757 #[cfg_attr(
71758 any(target_arch = "aarch64", target_arch = "arm64ec"),
71759 link_name = "llvm.aarch64.neon.st4lane.v4i32.p0"
71760 )]
71761 fn _vst4q_lane_s32(
71762 a: int32x4_t,
71763 b: int32x4_t,
71764 c: int32x4_t,
71765 d: int32x4_t,
71766 n: i64,
71767 ptr: *mut i8,
71768 );
71769 }
71770 _vst4q_lane_s32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
71771}
71772#[doc = "Store multiple 4-element structures from four registers"]
71773#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_u8)"]
71774#[doc = "## Safety"]
71775#[doc = " * Neon instrinsic unsafe"]
71776#[inline]
71777#[target_feature(enable = "neon")]
71778#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71779#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
71780#[cfg_attr(
71781 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71782 assert_instr(st4, LANE = 0)
71783)]
71784#[rustc_legacy_const_generics(2)]
71785#[cfg_attr(
71786 not(target_arch = "arm"),
71787 stable(feature = "neon_intrinsics", since = "1.59.0")
71788)]
71789#[cfg_attr(
71790 target_arch = "arm",
71791 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71792)]
71793pub unsafe fn vst4_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x8x4_t) {
71794 static_assert_uimm_bits!(LANE, 3);
71795 vst4_lane_s8::<LANE>(transmute(a), transmute(b))
71796}
71797#[doc = "Store multiple 4-element structures from four registers"]
71798#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_u16)"]
71799#[doc = "## Safety"]
71800#[doc = " * Neon instrinsic unsafe"]
71801#[inline]
71802#[target_feature(enable = "neon")]
71803#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71804#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
71805#[cfg_attr(
71806 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71807 assert_instr(st4, LANE = 0)
71808)]
71809#[rustc_legacy_const_generics(2)]
71810#[cfg_attr(
71811 not(target_arch = "arm"),
71812 stable(feature = "neon_intrinsics", since = "1.59.0")
71813)]
71814#[cfg_attr(
71815 target_arch = "arm",
71816 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71817)]
71818pub unsafe fn vst4_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x4x4_t) {
71819 static_assert_uimm_bits!(LANE, 2);
71820 vst4_lane_s16::<LANE>(transmute(a), transmute(b))
71821}
71822#[doc = "Store multiple 4-element structures from four registers"]
71823#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_u16)"]
71824#[doc = "## Safety"]
71825#[doc = " * Neon instrinsic unsafe"]
71826#[inline]
71827#[target_feature(enable = "neon")]
71828#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71829#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
71830#[cfg_attr(
71831 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71832 assert_instr(st4, LANE = 0)
71833)]
71834#[rustc_legacy_const_generics(2)]
71835#[cfg_attr(
71836 not(target_arch = "arm"),
71837 stable(feature = "neon_intrinsics", since = "1.59.0")
71838)]
71839#[cfg_attr(
71840 target_arch = "arm",
71841 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71842)]
71843pub unsafe fn vst4q_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x8x4_t) {
71844 static_assert_uimm_bits!(LANE, 3);
71845 vst4q_lane_s16::<LANE>(transmute(a), transmute(b))
71846}
71847#[doc = "Store multiple 4-element structures from four registers"]
71848#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_u32)"]
71849#[doc = "## Safety"]
71850#[doc = " * Neon instrinsic unsafe"]
71851#[inline]
71852#[target_feature(enable = "neon")]
71853#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71854#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
71855#[cfg_attr(
71856 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71857 assert_instr(st4, LANE = 0)
71858)]
71859#[rustc_legacy_const_generics(2)]
71860#[cfg_attr(
71861 not(target_arch = "arm"),
71862 stable(feature = "neon_intrinsics", since = "1.59.0")
71863)]
71864#[cfg_attr(
71865 target_arch = "arm",
71866 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71867)]
71868pub unsafe fn vst4_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x2x4_t) {
71869 static_assert_uimm_bits!(LANE, 1);
71870 vst4_lane_s32::<LANE>(transmute(a), transmute(b))
71871}
71872#[doc = "Store multiple 4-element structures from four registers"]
71873#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_u32)"]
71874#[doc = "## Safety"]
71875#[doc = " * Neon instrinsic unsafe"]
71876#[inline]
71877#[target_feature(enable = "neon")]
71878#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71879#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
71880#[cfg_attr(
71881 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71882 assert_instr(st4, LANE = 0)
71883)]
71884#[rustc_legacy_const_generics(2)]
71885#[cfg_attr(
71886 not(target_arch = "arm"),
71887 stable(feature = "neon_intrinsics", since = "1.59.0")
71888)]
71889#[cfg_attr(
71890 target_arch = "arm",
71891 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71892)]
71893pub unsafe fn vst4q_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x4x4_t) {
71894 static_assert_uimm_bits!(LANE, 2);
71895 vst4q_lane_s32::<LANE>(transmute(a), transmute(b))
71896}
71897#[doc = "Store multiple 4-element structures from four registers"]
71898#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_p8)"]
71899#[doc = "## Safety"]
71900#[doc = " * Neon instrinsic unsafe"]
71901#[inline]
71902#[target_feature(enable = "neon")]
71903#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71904#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
71905#[cfg_attr(
71906 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71907 assert_instr(st4, LANE = 0)
71908)]
71909#[rustc_legacy_const_generics(2)]
71910#[cfg_attr(
71911 not(target_arch = "arm"),
71912 stable(feature = "neon_intrinsics", since = "1.59.0")
71913)]
71914#[cfg_attr(
71915 target_arch = "arm",
71916 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71917)]
71918pub unsafe fn vst4_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x8x4_t) {
71919 static_assert_uimm_bits!(LANE, 3);
71920 vst4_lane_s8::<LANE>(transmute(a), transmute(b))
71921}
71922#[doc = "Store multiple 4-element structures from four registers"]
71923#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_p16)"]
71924#[doc = "## Safety"]
71925#[doc = " * Neon instrinsic unsafe"]
71926#[inline]
71927#[target_feature(enable = "neon")]
71928#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71929#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
71930#[cfg_attr(
71931 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71932 assert_instr(st4, LANE = 0)
71933)]
71934#[rustc_legacy_const_generics(2)]
71935#[cfg_attr(
71936 not(target_arch = "arm"),
71937 stable(feature = "neon_intrinsics", since = "1.59.0")
71938)]
71939#[cfg_attr(
71940 target_arch = "arm",
71941 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71942)]
71943pub unsafe fn vst4_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x4x4_t) {
71944 static_assert_uimm_bits!(LANE, 2);
71945 vst4_lane_s16::<LANE>(transmute(a), transmute(b))
71946}
71947#[doc = "Store multiple 4-element structures from four registers"]
71948#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_p16)"]
71949#[doc = "## Safety"]
71950#[doc = " * Neon instrinsic unsafe"]
71951#[inline]
71952#[target_feature(enable = "neon")]
71953#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71954#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
71955#[cfg_attr(
71956 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71957 assert_instr(st4, LANE = 0)
71958)]
71959#[rustc_legacy_const_generics(2)]
71960#[cfg_attr(
71961 not(target_arch = "arm"),
71962 stable(feature = "neon_intrinsics", since = "1.59.0")
71963)]
71964#[cfg_attr(
71965 target_arch = "arm",
71966 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71967)]
71968pub unsafe fn vst4q_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x8x4_t) {
71969 static_assert_uimm_bits!(LANE, 3);
71970 vst4q_lane_s16::<LANE>(transmute(a), transmute(b))
71971}
71972#[doc = "Store multiple 4-element structures from four registers"]
71973#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_p64)"]
71974#[doc = "## Safety"]
71975#[doc = " * Neon instrinsic unsafe"]
71976#[inline]
71977#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
71978#[target_feature(enable = "neon,aes")]
71979#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
71980#[cfg_attr(
71981 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71982 assert_instr(nop)
71983)]
71984#[cfg_attr(
71985 not(target_arch = "arm"),
71986 stable(feature = "neon_intrinsics", since = "1.59.0")
71987)]
71988#[cfg_attr(
71989 target_arch = "arm",
71990 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71991)]
71992pub unsafe fn vst4_p64(a: *mut p64, b: poly64x1x4_t) {
71993 vst4_s64(transmute(a), transmute(b))
71994}
71995#[doc = "Store multiple 4-element structures from four registers"]
71996#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s64)"]
71997#[doc = "## Safety"]
71998#[doc = " * Neon instrinsic unsafe"]
71999#[inline]
72000#[cfg(target_arch = "arm")]
72001#[target_feature(enable = "neon,v7")]
72002#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
72003#[cfg_attr(test, assert_instr(nop))]
72004pub unsafe fn vst4_s64(a: *mut i64, b: int64x1x4_t) {
72005 unsafe extern "unadjusted" {
72006 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v1i64")]
72007 fn _vst4_s64(
72008 ptr: *mut i8,
72009 a: int64x1_t,
72010 b: int64x1_t,
72011 c: int64x1_t,
72012 d: int64x1_t,
72013 size: i32,
72014 );
72015 }
72016 _vst4_s64(a as _, b.0, b.1, b.2, b.3, 8)
72017}
72018#[doc = "Store multiple 4-element structures from four registers"]
72019#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s64)"]
72020#[doc = "## Safety"]
72021#[doc = " * Neon instrinsic unsafe"]
72022#[inline]
72023#[target_feature(enable = "neon")]
72024#[cfg(not(target_arch = "arm"))]
72025#[stable(feature = "neon_intrinsics", since = "1.59.0")]
72026#[cfg_attr(test, assert_instr(nop))]
72027pub unsafe fn vst4_s64(a: *mut i64, b: int64x1x4_t) {
72028 unsafe extern "unadjusted" {
72029 #[cfg_attr(
72030 any(target_arch = "aarch64", target_arch = "arm64ec"),
72031 link_name = "llvm.aarch64.neon.st4.v1i64.p0"
72032 )]
72033 fn _vst4_s64(a: int64x1_t, b: int64x1_t, c: int64x1_t, d: int64x1_t, ptr: *mut i8);
72034 }
72035 _vst4_s64(b.0, b.1, b.2, b.3, a as _)
72036}
72037#[doc = "Store multiple 4-element structures from four registers"]
72038#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_u64)"]
72039#[doc = "## Safety"]
72040#[doc = " * Neon instrinsic unsafe"]
72041#[inline]
72042#[target_feature(enable = "neon")]
72043#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72044#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
72045#[cfg_attr(
72046 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72047 assert_instr(nop)
72048)]
72049#[cfg_attr(
72050 not(target_arch = "arm"),
72051 stable(feature = "neon_intrinsics", since = "1.59.0")
72052)]
72053#[cfg_attr(
72054 target_arch = "arm",
72055 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72056)]
72057pub unsafe fn vst4_u64(a: *mut u64, b: uint64x1x4_t) {
72058 vst4_s64(transmute(a), transmute(b))
72059}
72060#[doc = "Store multiple 4-element structures from four registers"]
72061#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_u8)"]
72062#[doc = "## Safety"]
72063#[doc = " * Neon instrinsic unsafe"]
72064#[inline]
72065#[target_feature(enable = "neon")]
72066#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72067#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
72068#[cfg_attr(
72069 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72070 assert_instr(st4)
72071)]
72072#[cfg_attr(
72073 not(target_arch = "arm"),
72074 stable(feature = "neon_intrinsics", since = "1.59.0")
72075)]
72076#[cfg_attr(
72077 target_arch = "arm",
72078 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72079)]
72080pub unsafe fn vst4_u8(a: *mut u8, b: uint8x8x4_t) {
72081 vst4_s8(transmute(a), transmute(b))
72082}
72083#[doc = "Store multiple 4-element structures from four registers"]
72084#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_u8)"]
72085#[doc = "## Safety"]
72086#[doc = " * Neon instrinsic unsafe"]
72087#[inline]
72088#[target_feature(enable = "neon")]
72089#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72090#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
72091#[cfg_attr(
72092 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72093 assert_instr(st4)
72094)]
72095#[cfg_attr(
72096 not(target_arch = "arm"),
72097 stable(feature = "neon_intrinsics", since = "1.59.0")
72098)]
72099#[cfg_attr(
72100 target_arch = "arm",
72101 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72102)]
72103pub unsafe fn vst4q_u8(a: *mut u8, b: uint8x16x4_t) {
72104 vst4q_s8(transmute(a), transmute(b))
72105}
72106#[doc = "Store multiple 4-element structures from four registers"]
72107#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_u16)"]
72108#[doc = "## Safety"]
72109#[doc = " * Neon instrinsic unsafe"]
72110#[inline]
72111#[target_feature(enable = "neon")]
72112#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72113#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
72114#[cfg_attr(
72115 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72116 assert_instr(st4)
72117)]
72118#[cfg_attr(
72119 not(target_arch = "arm"),
72120 stable(feature = "neon_intrinsics", since = "1.59.0")
72121)]
72122#[cfg_attr(
72123 target_arch = "arm",
72124 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72125)]
72126pub unsafe fn vst4_u16(a: *mut u16, b: uint16x4x4_t) {
72127 vst4_s16(transmute(a), transmute(b))
72128}
72129#[doc = "Store multiple 4-element structures from four registers"]
72130#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_u16)"]
72131#[doc = "## Safety"]
72132#[doc = " * Neon instrinsic unsafe"]
72133#[inline]
72134#[target_feature(enable = "neon")]
72135#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72136#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
72137#[cfg_attr(
72138 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72139 assert_instr(st4)
72140)]
72141#[cfg_attr(
72142 not(target_arch = "arm"),
72143 stable(feature = "neon_intrinsics", since = "1.59.0")
72144)]
72145#[cfg_attr(
72146 target_arch = "arm",
72147 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72148)]
72149pub unsafe fn vst4q_u16(a: *mut u16, b: uint16x8x4_t) {
72150 vst4q_s16(transmute(a), transmute(b))
72151}
72152#[doc = "Store multiple 4-element structures from four registers"]
72153#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_u32)"]
72154#[doc = "## Safety"]
72155#[doc = " * Neon instrinsic unsafe"]
72156#[inline]
72157#[target_feature(enable = "neon")]
72158#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72159#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
72160#[cfg_attr(
72161 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72162 assert_instr(st4)
72163)]
72164#[cfg_attr(
72165 not(target_arch = "arm"),
72166 stable(feature = "neon_intrinsics", since = "1.59.0")
72167)]
72168#[cfg_attr(
72169 target_arch = "arm",
72170 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72171)]
72172pub unsafe fn vst4_u32(a: *mut u32, b: uint32x2x4_t) {
72173 vst4_s32(transmute(a), transmute(b))
72174}
72175#[doc = "Store multiple 4-element structures from four registers"]
72176#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_u32)"]
72177#[doc = "## Safety"]
72178#[doc = " * Neon instrinsic unsafe"]
72179#[inline]
72180#[target_feature(enable = "neon")]
72181#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72182#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
72183#[cfg_attr(
72184 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72185 assert_instr(st4)
72186)]
72187#[cfg_attr(
72188 not(target_arch = "arm"),
72189 stable(feature = "neon_intrinsics", since = "1.59.0")
72190)]
72191#[cfg_attr(
72192 target_arch = "arm",
72193 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72194)]
72195pub unsafe fn vst4q_u32(a: *mut u32, b: uint32x4x4_t) {
72196 vst4q_s32(transmute(a), transmute(b))
72197}
72198#[doc = "Store multiple 4-element structures from four registers"]
72199#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_p8)"]
72200#[doc = "## Safety"]
72201#[doc = " * Neon instrinsic unsafe"]
72202#[inline]
72203#[target_feature(enable = "neon")]
72204#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72205#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
72206#[cfg_attr(
72207 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72208 assert_instr(st4)
72209)]
72210#[cfg_attr(
72211 not(target_arch = "arm"),
72212 stable(feature = "neon_intrinsics", since = "1.59.0")
72213)]
72214#[cfg_attr(
72215 target_arch = "arm",
72216 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72217)]
72218pub unsafe fn vst4_p8(a: *mut p8, b: poly8x8x4_t) {
72219 vst4_s8(transmute(a), transmute(b))
72220}
72221#[doc = "Store multiple 4-element structures from four registers"]
72222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_p8)"]
72223#[doc = "## Safety"]
72224#[doc = " * Neon instrinsic unsafe"]
72225#[inline]
72226#[target_feature(enable = "neon")]
72227#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72228#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
72229#[cfg_attr(
72230 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72231 assert_instr(st4)
72232)]
72233#[cfg_attr(
72234 not(target_arch = "arm"),
72235 stable(feature = "neon_intrinsics", since = "1.59.0")
72236)]
72237#[cfg_attr(
72238 target_arch = "arm",
72239 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72240)]
72241pub unsafe fn vst4q_p8(a: *mut p8, b: poly8x16x4_t) {
72242 vst4q_s8(transmute(a), transmute(b))
72243}
72244#[doc = "Store multiple 4-element structures from four registers"]
72245#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_p16)"]
72246#[doc = "## Safety"]
72247#[doc = " * Neon instrinsic unsafe"]
72248#[inline]
72249#[target_feature(enable = "neon")]
72250#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72251#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
72252#[cfg_attr(
72253 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72254 assert_instr(st4)
72255)]
72256#[cfg_attr(
72257 not(target_arch = "arm"),
72258 stable(feature = "neon_intrinsics", since = "1.59.0")
72259)]
72260#[cfg_attr(
72261 target_arch = "arm",
72262 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72263)]
72264pub unsafe fn vst4_p16(a: *mut p16, b: poly16x4x4_t) {
72265 vst4_s16(transmute(a), transmute(b))
72266}
72267#[doc = "Store multiple 4-element structures from four registers"]
72268#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_p16)"]
72269#[doc = "## Safety"]
72270#[doc = " * Neon instrinsic unsafe"]
72271#[inline]
72272#[target_feature(enable = "neon")]
72273#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72274#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
72275#[cfg_attr(
72276 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72277 assert_instr(st4)
72278)]
72279#[cfg_attr(
72280 not(target_arch = "arm"),
72281 stable(feature = "neon_intrinsics", since = "1.59.0")
72282)]
72283#[cfg_attr(
72284 target_arch = "arm",
72285 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72286)]
72287pub unsafe fn vst4q_p16(a: *mut p16, b: poly16x8x4_t) {
72288 vst4q_s16(transmute(a), transmute(b))
72289}
72290#[doc = "Store SIMD&FP register (immediate offset)"]
72291#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vstrq_p128)"]
72292#[doc = "## Safety"]
72293#[doc = " * Neon instrinsic unsafe"]
72294#[inline]
72295#[target_feature(enable = "neon")]
72296#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72297#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
72298#[cfg_attr(
72299 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72300 assert_instr(nop)
72301)]
72302#[cfg_attr(
72303 not(target_arch = "arm"),
72304 stable(feature = "neon_intrinsics", since = "1.59.0")
72305)]
72306#[cfg_attr(
72307 target_arch = "arm",
72308 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72309)]
72310pub unsafe fn vstrq_p128(a: *mut p128, b: p128) {
72311 *a = b
72312}
72313#[doc = "Subtract"]
72314#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_f16)"]
72315#[inline]
72316#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
72317#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.f16"))]
72318#[cfg_attr(
72319 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72320 assert_instr(fsub)
72321)]
72322#[target_feature(enable = "neon,fp16")]
72323#[cfg_attr(
72324 not(target_arch = "arm"),
72325 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
72326)]
72327#[cfg_attr(
72328 target_arch = "arm",
72329 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72330)]
72331#[cfg(not(target_arch = "arm64ec"))]
72332pub fn vsub_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
72333 unsafe { simd_sub(a, b) }
72334}
72335#[doc = "Subtract"]
72336#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_f16)"]
72337#[inline]
72338#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
72339#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.f16"))]
72340#[cfg_attr(
72341 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72342 assert_instr(fsub)
72343)]
72344#[target_feature(enable = "neon,fp16")]
72345#[cfg_attr(
72346 not(target_arch = "arm"),
72347 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
72348)]
72349#[cfg_attr(
72350 target_arch = "arm",
72351 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72352)]
72353#[cfg(not(target_arch = "arm64ec"))]
72354pub fn vsubq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
72355 unsafe { simd_sub(a, b) }
72356}
72357#[doc = "Subtract"]
72358#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_f32)"]
72359#[inline]
72360#[target_feature(enable = "neon")]
72361#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72362#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.f32"))]
72363#[cfg_attr(
72364 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72365 assert_instr(fsub)
72366)]
72367#[cfg_attr(
72368 not(target_arch = "arm"),
72369 stable(feature = "neon_intrinsics", since = "1.59.0")
72370)]
72371#[cfg_attr(
72372 target_arch = "arm",
72373 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72374)]
72375pub fn vsub_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
72376 unsafe { simd_sub(a, b) }
72377}
72378#[doc = "Subtract"]
72379#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_f32)"]
72380#[inline]
72381#[target_feature(enable = "neon")]
72382#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72383#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.f32"))]
72384#[cfg_attr(
72385 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72386 assert_instr(fsub)
72387)]
72388#[cfg_attr(
72389 not(target_arch = "arm"),
72390 stable(feature = "neon_intrinsics", since = "1.59.0")
72391)]
72392#[cfg_attr(
72393 target_arch = "arm",
72394 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72395)]
72396pub fn vsubq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
72397 unsafe { simd_sub(a, b) }
72398}
72399#[doc = "Subtract"]
72400#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_s16)"]
72401#[inline]
72402#[target_feature(enable = "neon")]
72403#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72404#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i16"))]
72405#[cfg_attr(
72406 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72407 assert_instr(sub)
72408)]
72409#[cfg_attr(
72410 not(target_arch = "arm"),
72411 stable(feature = "neon_intrinsics", since = "1.59.0")
72412)]
72413#[cfg_attr(
72414 target_arch = "arm",
72415 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72416)]
72417pub fn vsub_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
72418 unsafe { simd_sub(a, b) }
72419}
72420#[doc = "Subtract"]
72421#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_s16)"]
72422#[inline]
72423#[target_feature(enable = "neon")]
72424#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72425#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i16"))]
72426#[cfg_attr(
72427 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72428 assert_instr(sub)
72429)]
72430#[cfg_attr(
72431 not(target_arch = "arm"),
72432 stable(feature = "neon_intrinsics", since = "1.59.0")
72433)]
72434#[cfg_attr(
72435 target_arch = "arm",
72436 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72437)]
72438pub fn vsubq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
72439 unsafe { simd_sub(a, b) }
72440}
72441#[doc = "Subtract"]
72442#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_u16)"]
72443#[inline]
72444#[target_feature(enable = "neon")]
72445#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72446#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i16"))]
72447#[cfg_attr(
72448 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72449 assert_instr(sub)
72450)]
72451#[cfg_attr(
72452 not(target_arch = "arm"),
72453 stable(feature = "neon_intrinsics", since = "1.59.0")
72454)]
72455#[cfg_attr(
72456 target_arch = "arm",
72457 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72458)]
72459pub fn vsub_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
72460 unsafe { simd_sub(a, b) }
72461}
72462#[doc = "Subtract"]
72463#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_u16)"]
72464#[inline]
72465#[target_feature(enable = "neon")]
72466#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72467#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i16"))]
72468#[cfg_attr(
72469 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72470 assert_instr(sub)
72471)]
72472#[cfg_attr(
72473 not(target_arch = "arm"),
72474 stable(feature = "neon_intrinsics", since = "1.59.0")
72475)]
72476#[cfg_attr(
72477 target_arch = "arm",
72478 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72479)]
72480pub fn vsubq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
72481 unsafe { simd_sub(a, b) }
72482}
72483#[doc = "Subtract"]
72484#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_s32)"]
72485#[inline]
72486#[target_feature(enable = "neon")]
72487#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72488#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i32"))]
72489#[cfg_attr(
72490 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72491 assert_instr(sub)
72492)]
72493#[cfg_attr(
72494 not(target_arch = "arm"),
72495 stable(feature = "neon_intrinsics", since = "1.59.0")
72496)]
72497#[cfg_attr(
72498 target_arch = "arm",
72499 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72500)]
72501pub fn vsub_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
72502 unsafe { simd_sub(a, b) }
72503}
72504#[doc = "Subtract"]
72505#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_s32)"]
72506#[inline]
72507#[target_feature(enable = "neon")]
72508#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72509#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i32"))]
72510#[cfg_attr(
72511 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72512 assert_instr(sub)
72513)]
72514#[cfg_attr(
72515 not(target_arch = "arm"),
72516 stable(feature = "neon_intrinsics", since = "1.59.0")
72517)]
72518#[cfg_attr(
72519 target_arch = "arm",
72520 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72521)]
72522pub fn vsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
72523 unsafe { simd_sub(a, b) }
72524}
72525#[doc = "Subtract"]
72526#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_u32)"]
72527#[inline]
72528#[target_feature(enable = "neon")]
72529#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72530#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i32"))]
72531#[cfg_attr(
72532 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72533 assert_instr(sub)
72534)]
72535#[cfg_attr(
72536 not(target_arch = "arm"),
72537 stable(feature = "neon_intrinsics", since = "1.59.0")
72538)]
72539#[cfg_attr(
72540 target_arch = "arm",
72541 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72542)]
72543pub fn vsub_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
72544 unsafe { simd_sub(a, b) }
72545}
72546#[doc = "Subtract"]
72547#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_u32)"]
72548#[inline]
72549#[target_feature(enable = "neon")]
72550#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72551#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i32"))]
72552#[cfg_attr(
72553 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72554 assert_instr(sub)
72555)]
72556#[cfg_attr(
72557 not(target_arch = "arm"),
72558 stable(feature = "neon_intrinsics", since = "1.59.0")
72559)]
72560#[cfg_attr(
72561 target_arch = "arm",
72562 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72563)]
72564pub fn vsubq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
72565 unsafe { simd_sub(a, b) }
72566}
72567#[doc = "Subtract"]
72568#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_s64)"]
72569#[inline]
72570#[target_feature(enable = "neon")]
72571#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72572#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i64"))]
72573#[cfg_attr(
72574 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72575 assert_instr(sub)
72576)]
72577#[cfg_attr(
72578 not(target_arch = "arm"),
72579 stable(feature = "neon_intrinsics", since = "1.59.0")
72580)]
72581#[cfg_attr(
72582 target_arch = "arm",
72583 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72584)]
72585pub fn vsub_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
72586 unsafe { simd_sub(a, b) }
72587}
72588#[doc = "Subtract"]
72589#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_s64)"]
72590#[inline]
72591#[target_feature(enable = "neon")]
72592#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72593#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i64"))]
72594#[cfg_attr(
72595 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72596 assert_instr(sub)
72597)]
72598#[cfg_attr(
72599 not(target_arch = "arm"),
72600 stable(feature = "neon_intrinsics", since = "1.59.0")
72601)]
72602#[cfg_attr(
72603 target_arch = "arm",
72604 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72605)]
72606pub fn vsubq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
72607 unsafe { simd_sub(a, b) }
72608}
72609#[doc = "Subtract"]
72610#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_u64)"]
72611#[inline]
72612#[target_feature(enable = "neon")]
72613#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72614#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i64"))]
72615#[cfg_attr(
72616 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72617 assert_instr(sub)
72618)]
72619#[cfg_attr(
72620 not(target_arch = "arm"),
72621 stable(feature = "neon_intrinsics", since = "1.59.0")
72622)]
72623#[cfg_attr(
72624 target_arch = "arm",
72625 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72626)]
72627pub fn vsub_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
72628 unsafe { simd_sub(a, b) }
72629}
72630#[doc = "Subtract"]
72631#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_u64)"]
72632#[inline]
72633#[target_feature(enable = "neon")]
72634#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72635#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i64"))]
72636#[cfg_attr(
72637 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72638 assert_instr(sub)
72639)]
72640#[cfg_attr(
72641 not(target_arch = "arm"),
72642 stable(feature = "neon_intrinsics", since = "1.59.0")
72643)]
72644#[cfg_attr(
72645 target_arch = "arm",
72646 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72647)]
72648pub fn vsubq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
72649 unsafe { simd_sub(a, b) }
72650}
72651#[doc = "Subtract"]
72652#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_s8)"]
72653#[inline]
72654#[target_feature(enable = "neon")]
72655#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72656#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i8"))]
72657#[cfg_attr(
72658 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72659 assert_instr(sub)
72660)]
72661#[cfg_attr(
72662 not(target_arch = "arm"),
72663 stable(feature = "neon_intrinsics", since = "1.59.0")
72664)]
72665#[cfg_attr(
72666 target_arch = "arm",
72667 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72668)]
72669pub fn vsub_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
72670 unsafe { simd_sub(a, b) }
72671}
72672#[doc = "Subtract"]
72673#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_s8)"]
72674#[inline]
72675#[target_feature(enable = "neon")]
72676#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72677#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i8"))]
72678#[cfg_attr(
72679 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72680 assert_instr(sub)
72681)]
72682#[cfg_attr(
72683 not(target_arch = "arm"),
72684 stable(feature = "neon_intrinsics", since = "1.59.0")
72685)]
72686#[cfg_attr(
72687 target_arch = "arm",
72688 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72689)]
72690pub fn vsubq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
72691 unsafe { simd_sub(a, b) }
72692}
72693#[doc = "Subtract"]
72694#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_u8)"]
72695#[inline]
72696#[target_feature(enable = "neon")]
72697#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72698#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i8"))]
72699#[cfg_attr(
72700 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72701 assert_instr(sub)
72702)]
72703#[cfg_attr(
72704 not(target_arch = "arm"),
72705 stable(feature = "neon_intrinsics", since = "1.59.0")
72706)]
72707#[cfg_attr(
72708 target_arch = "arm",
72709 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72710)]
72711pub fn vsub_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
72712 unsafe { simd_sub(a, b) }
72713}
72714#[doc = "Subtract"]
72715#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_u8)"]
72716#[inline]
72717#[target_feature(enable = "neon")]
72718#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72719#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i8"))]
72720#[cfg_attr(
72721 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72722 assert_instr(sub)
72723)]
72724#[cfg_attr(
72725 not(target_arch = "arm"),
72726 stable(feature = "neon_intrinsics", since = "1.59.0")
72727)]
72728#[cfg_attr(
72729 target_arch = "arm",
72730 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72731)]
72732pub fn vsubq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
72733 unsafe { simd_sub(a, b) }
72734}
72735#[doc = "Subtract returning high narrow"]
72736#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_s16)"]
72737#[inline]
72738#[target_feature(enable = "neon")]
72739#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72740#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
72741#[cfg_attr(
72742 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72743 assert_instr(subhn2)
72744)]
72745#[cfg_attr(
72746 not(target_arch = "arm"),
72747 stable(feature = "neon_intrinsics", since = "1.59.0")
72748)]
72749#[cfg_attr(
72750 target_arch = "arm",
72751 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72752)]
72753pub fn vsubhn_high_s16(a: int8x8_t, b: int16x8_t, c: int16x8_t) -> int8x16_t {
72754 let d: int8x8_t = vsubhn_s16(b, c);
72755 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) }
72756}
72757#[doc = "Subtract returning high narrow"]
72758#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_s32)"]
72759#[inline]
72760#[target_feature(enable = "neon")]
72761#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72762#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
72763#[cfg_attr(
72764 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72765 assert_instr(subhn2)
72766)]
72767#[cfg_attr(
72768 not(target_arch = "arm"),
72769 stable(feature = "neon_intrinsics", since = "1.59.0")
72770)]
72771#[cfg_attr(
72772 target_arch = "arm",
72773 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72774)]
72775pub fn vsubhn_high_s32(a: int16x4_t, b: int32x4_t, c: int32x4_t) -> int16x8_t {
72776 let d: int16x4_t = vsubhn_s32(b, c);
72777 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3, 4, 5, 6, 7]) }
72778}
72779#[doc = "Subtract returning high narrow"]
72780#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_s64)"]
72781#[inline]
72782#[target_feature(enable = "neon")]
72783#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72784#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
72785#[cfg_attr(
72786 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72787 assert_instr(subhn2)
72788)]
72789#[cfg_attr(
72790 not(target_arch = "arm"),
72791 stable(feature = "neon_intrinsics", since = "1.59.0")
72792)]
72793#[cfg_attr(
72794 target_arch = "arm",
72795 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72796)]
72797pub fn vsubhn_high_s64(a: int32x2_t, b: int64x2_t, c: int64x2_t) -> int32x4_t {
72798 let d: int32x2_t = vsubhn_s64(b, c);
72799 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3]) }
72800}
72801#[doc = "Subtract returning high narrow"]
72802#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_u16)"]
72803#[inline]
72804#[target_feature(enable = "neon")]
72805#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72806#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
72807#[cfg_attr(
72808 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72809 assert_instr(subhn2)
72810)]
72811#[cfg_attr(
72812 not(target_arch = "arm"),
72813 stable(feature = "neon_intrinsics", since = "1.59.0")
72814)]
72815#[cfg_attr(
72816 target_arch = "arm",
72817 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72818)]
72819pub fn vsubhn_high_u16(a: uint8x8_t, b: uint16x8_t, c: uint16x8_t) -> uint8x16_t {
72820 let d: uint8x8_t = vsubhn_u16(b, c);
72821 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) }
72822}
72823#[doc = "Subtract returning high narrow"]
72824#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_u32)"]
72825#[inline]
72826#[target_feature(enable = "neon")]
72827#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72828#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
72829#[cfg_attr(
72830 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72831 assert_instr(subhn2)
72832)]
72833#[cfg_attr(
72834 not(target_arch = "arm"),
72835 stable(feature = "neon_intrinsics", since = "1.59.0")
72836)]
72837#[cfg_attr(
72838 target_arch = "arm",
72839 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72840)]
72841pub fn vsubhn_high_u32(a: uint16x4_t, b: uint32x4_t, c: uint32x4_t) -> uint16x8_t {
72842 let d: uint16x4_t = vsubhn_u32(b, c);
72843 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3, 4, 5, 6, 7]) }
72844}
72845#[doc = "Subtract returning high narrow"]
72846#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_u64)"]
72847#[inline]
72848#[target_feature(enable = "neon")]
72849#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72850#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
72851#[cfg_attr(
72852 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72853 assert_instr(subhn2)
72854)]
72855#[cfg_attr(
72856 not(target_arch = "arm"),
72857 stable(feature = "neon_intrinsics", since = "1.59.0")
72858)]
72859#[cfg_attr(
72860 target_arch = "arm",
72861 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72862)]
72863pub fn vsubhn_high_u64(a: uint32x2_t, b: uint64x2_t, c: uint64x2_t) -> uint32x4_t {
72864 let d: uint32x2_t = vsubhn_u64(b, c);
72865 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3]) }
72866}
72867#[doc = "Subtract returning high narrow"]
72868#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_s16)"]
72869#[inline]
72870#[target_feature(enable = "neon")]
72871#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72872#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
72873#[cfg_attr(
72874 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72875 assert_instr(subhn)
72876)]
72877#[cfg_attr(
72878 not(target_arch = "arm"),
72879 stable(feature = "neon_intrinsics", since = "1.59.0")
72880)]
72881#[cfg_attr(
72882 target_arch = "arm",
72883 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72884)]
72885pub fn vsubhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t {
72886 let c: i16x8 = i16x8::new(8, 8, 8, 8, 8, 8, 8, 8);
72887 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
72888}
72889#[doc = "Subtract returning high narrow"]
72890#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_s32)"]
72891#[inline]
72892#[target_feature(enable = "neon")]
72893#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72894#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
72895#[cfg_attr(
72896 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72897 assert_instr(subhn)
72898)]
72899#[cfg_attr(
72900 not(target_arch = "arm"),
72901 stable(feature = "neon_intrinsics", since = "1.59.0")
72902)]
72903#[cfg_attr(
72904 target_arch = "arm",
72905 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72906)]
72907pub fn vsubhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t {
72908 let c: i32x4 = i32x4::new(16, 16, 16, 16);
72909 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
72910}
72911#[doc = "Subtract returning high narrow"]
72912#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_s64)"]
72913#[inline]
72914#[target_feature(enable = "neon")]
72915#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72916#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
72917#[cfg_attr(
72918 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72919 assert_instr(subhn)
72920)]
72921#[cfg_attr(
72922 not(target_arch = "arm"),
72923 stable(feature = "neon_intrinsics", since = "1.59.0")
72924)]
72925#[cfg_attr(
72926 target_arch = "arm",
72927 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72928)]
72929pub fn vsubhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t {
72930 let c: i64x2 = i64x2::new(32, 32);
72931 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
72932}
72933#[doc = "Subtract returning high narrow"]
72934#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_u16)"]
72935#[inline]
72936#[target_feature(enable = "neon")]
72937#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72938#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
72939#[cfg_attr(
72940 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72941 assert_instr(subhn)
72942)]
72943#[cfg_attr(
72944 not(target_arch = "arm"),
72945 stable(feature = "neon_intrinsics", since = "1.59.0")
72946)]
72947#[cfg_attr(
72948 target_arch = "arm",
72949 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72950)]
72951pub fn vsubhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
72952 let c: u16x8 = u16x8::new(8, 8, 8, 8, 8, 8, 8, 8);
72953 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
72954}
72955#[doc = "Subtract returning high narrow"]
72956#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_u32)"]
72957#[inline]
72958#[target_feature(enable = "neon")]
72959#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72960#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
72961#[cfg_attr(
72962 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72963 assert_instr(subhn)
72964)]
72965#[cfg_attr(
72966 not(target_arch = "arm"),
72967 stable(feature = "neon_intrinsics", since = "1.59.0")
72968)]
72969#[cfg_attr(
72970 target_arch = "arm",
72971 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72972)]
72973pub fn vsubhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
72974 let c: u32x4 = u32x4::new(16, 16, 16, 16);
72975 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
72976}
72977#[doc = "Subtract returning high narrow"]
72978#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_u64)"]
72979#[inline]
72980#[target_feature(enable = "neon")]
72981#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72982#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
72983#[cfg_attr(
72984 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72985 assert_instr(subhn)
72986)]
72987#[cfg_attr(
72988 not(target_arch = "arm"),
72989 stable(feature = "neon_intrinsics", since = "1.59.0")
72990)]
72991#[cfg_attr(
72992 target_arch = "arm",
72993 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72994)]
72995pub fn vsubhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
72996 let c: u64x2 = u64x2::new(32, 32);
72997 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
72998}
72999#[doc = "Signed Subtract Long"]
73000#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_s8)"]
73001#[inline]
73002#[target_feature(enable = "neon")]
73003#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73004#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
73005#[cfg_attr(
73006 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73007 assert_instr(ssubl)
73008)]
73009#[cfg_attr(
73010 not(target_arch = "arm"),
73011 stable(feature = "neon_intrinsics", since = "1.59.0")
73012)]
73013#[cfg_attr(
73014 target_arch = "arm",
73015 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73016)]
73017pub fn vsubl_s8(a: int8x8_t, b: int8x8_t) -> int16x8_t {
73018 unsafe {
73019 let c: int16x8_t = simd_cast(a);
73020 let d: int16x8_t = simd_cast(b);
73021 simd_sub(c, d)
73022 }
73023}
73024#[doc = "Signed Subtract Long"]
73025#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_s16)"]
73026#[inline]
73027#[target_feature(enable = "neon")]
73028#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73029#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
73030#[cfg_attr(
73031 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73032 assert_instr(ssubl)
73033)]
73034#[cfg_attr(
73035 not(target_arch = "arm"),
73036 stable(feature = "neon_intrinsics", since = "1.59.0")
73037)]
73038#[cfg_attr(
73039 target_arch = "arm",
73040 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73041)]
73042pub fn vsubl_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t {
73043 unsafe {
73044 let c: int32x4_t = simd_cast(a);
73045 let d: int32x4_t = simd_cast(b);
73046 simd_sub(c, d)
73047 }
73048}
73049#[doc = "Signed Subtract Long"]
73050#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_s32)"]
73051#[inline]
73052#[target_feature(enable = "neon")]
73053#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73054#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
73055#[cfg_attr(
73056 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73057 assert_instr(ssubl)
73058)]
73059#[cfg_attr(
73060 not(target_arch = "arm"),
73061 stable(feature = "neon_intrinsics", since = "1.59.0")
73062)]
73063#[cfg_attr(
73064 target_arch = "arm",
73065 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73066)]
73067pub fn vsubl_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t {
73068 unsafe {
73069 let c: int64x2_t = simd_cast(a);
73070 let d: int64x2_t = simd_cast(b);
73071 simd_sub(c, d)
73072 }
73073}
73074#[doc = "Unsigned Subtract Long"]
73075#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_u8)"]
73076#[inline]
73077#[target_feature(enable = "neon")]
73078#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73079#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
73080#[cfg_attr(
73081 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73082 assert_instr(usubl)
73083)]
73084#[cfg_attr(
73085 not(target_arch = "arm"),
73086 stable(feature = "neon_intrinsics", since = "1.59.0")
73087)]
73088#[cfg_attr(
73089 target_arch = "arm",
73090 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73091)]
73092pub fn vsubl_u8(a: uint8x8_t, b: uint8x8_t) -> uint16x8_t {
73093 unsafe {
73094 let c: uint16x8_t = simd_cast(a);
73095 let d: uint16x8_t = simd_cast(b);
73096 simd_sub(c, d)
73097 }
73098}
73099#[doc = "Unsigned Subtract Long"]
73100#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_u16)"]
73101#[inline]
73102#[target_feature(enable = "neon")]
73103#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73104#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
73105#[cfg_attr(
73106 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73107 assert_instr(usubl)
73108)]
73109#[cfg_attr(
73110 not(target_arch = "arm"),
73111 stable(feature = "neon_intrinsics", since = "1.59.0")
73112)]
73113#[cfg_attr(
73114 target_arch = "arm",
73115 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73116)]
73117pub fn vsubl_u16(a: uint16x4_t, b: uint16x4_t) -> uint32x4_t {
73118 unsafe {
73119 let c: uint32x4_t = simd_cast(a);
73120 let d: uint32x4_t = simd_cast(b);
73121 simd_sub(c, d)
73122 }
73123}
73124#[doc = "Unsigned Subtract Long"]
73125#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_u32)"]
73126#[inline]
73127#[target_feature(enable = "neon")]
73128#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73129#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
73130#[cfg_attr(
73131 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73132 assert_instr(usubl)
73133)]
73134#[cfg_attr(
73135 not(target_arch = "arm"),
73136 stable(feature = "neon_intrinsics", since = "1.59.0")
73137)]
73138#[cfg_attr(
73139 target_arch = "arm",
73140 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73141)]
73142pub fn vsubl_u32(a: uint32x2_t, b: uint32x2_t) -> uint64x2_t {
73143 unsafe {
73144 let c: uint64x2_t = simd_cast(a);
73145 let d: uint64x2_t = simd_cast(b);
73146 simd_sub(c, d)
73147 }
73148}
73149#[doc = "Signed Subtract Wide"]
73150#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_s8)"]
73151#[inline]
73152#[target_feature(enable = "neon")]
73153#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73154#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
73155#[cfg_attr(
73156 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73157 assert_instr(ssubw)
73158)]
73159#[cfg_attr(
73160 not(target_arch = "arm"),
73161 stable(feature = "neon_intrinsics", since = "1.59.0")
73162)]
73163#[cfg_attr(
73164 target_arch = "arm",
73165 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73166)]
73167pub fn vsubw_s8(a: int16x8_t, b: int8x8_t) -> int16x8_t {
73168 unsafe { simd_sub(a, simd_cast(b)) }
73169}
73170#[doc = "Signed Subtract Wide"]
73171#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_s16)"]
73172#[inline]
73173#[target_feature(enable = "neon")]
73174#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73175#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
73176#[cfg_attr(
73177 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73178 assert_instr(ssubw)
73179)]
73180#[cfg_attr(
73181 not(target_arch = "arm"),
73182 stable(feature = "neon_intrinsics", since = "1.59.0")
73183)]
73184#[cfg_attr(
73185 target_arch = "arm",
73186 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73187)]
73188pub fn vsubw_s16(a: int32x4_t, b: int16x4_t) -> int32x4_t {
73189 unsafe { simd_sub(a, simd_cast(b)) }
73190}
73191#[doc = "Signed Subtract Wide"]
73192#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_s32)"]
73193#[inline]
73194#[target_feature(enable = "neon")]
73195#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73196#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
73197#[cfg_attr(
73198 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73199 assert_instr(ssubw)
73200)]
73201#[cfg_attr(
73202 not(target_arch = "arm"),
73203 stable(feature = "neon_intrinsics", since = "1.59.0")
73204)]
73205#[cfg_attr(
73206 target_arch = "arm",
73207 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73208)]
73209pub fn vsubw_s32(a: int64x2_t, b: int32x2_t) -> int64x2_t {
73210 unsafe { simd_sub(a, simd_cast(b)) }
73211}
73212#[doc = "Unsigned Subtract Wide"]
73213#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_u8)"]
73214#[inline]
73215#[target_feature(enable = "neon")]
73216#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73217#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
73218#[cfg_attr(
73219 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73220 assert_instr(usubw)
73221)]
73222#[cfg_attr(
73223 not(target_arch = "arm"),
73224 stable(feature = "neon_intrinsics", since = "1.59.0")
73225)]
73226#[cfg_attr(
73227 target_arch = "arm",
73228 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73229)]
73230pub fn vsubw_u8(a: uint16x8_t, b: uint8x8_t) -> uint16x8_t {
73231 unsafe { simd_sub(a, simd_cast(b)) }
73232}
73233#[doc = "Unsigned Subtract Wide"]
73234#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_u16)"]
73235#[inline]
73236#[target_feature(enable = "neon")]
73237#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73238#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
73239#[cfg_attr(
73240 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73241 assert_instr(usubw)
73242)]
73243#[cfg_attr(
73244 not(target_arch = "arm"),
73245 stable(feature = "neon_intrinsics", since = "1.59.0")
73246)]
73247#[cfg_attr(
73248 target_arch = "arm",
73249 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73250)]
73251pub fn vsubw_u16(a: uint32x4_t, b: uint16x4_t) -> uint32x4_t {
73252 unsafe { simd_sub(a, simd_cast(b)) }
73253}
73254#[doc = "Unsigned Subtract Wide"]
73255#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_u32)"]
73256#[inline]
73257#[target_feature(enable = "neon")]
73258#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73259#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
73260#[cfg_attr(
73261 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73262 assert_instr(usubw)
73263)]
73264#[cfg_attr(
73265 not(target_arch = "arm"),
73266 stable(feature = "neon_intrinsics", since = "1.59.0")
73267)]
73268#[cfg_attr(
73269 target_arch = "arm",
73270 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73271)]
73272pub fn vsubw_u32(a: uint64x2_t, b: uint32x2_t) -> uint64x2_t {
73273 unsafe { simd_sub(a, simd_cast(b)) }
73274}
73275#[doc = "Dot product index form with signed and unsigned integers"]
73276#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsudot_lane_s32)"]
73277#[inline]
73278#[cfg(target_endian = "little")]
73279#[target_feature(enable = "neon,i8mm")]
73280#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
73281#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsudot, LANE = 0))]
73282#[cfg_attr(
73283 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73284 assert_instr(sudot, LANE = 0)
73285)]
73286#[rustc_legacy_const_generics(3)]
73287#[cfg_attr(
73288 not(target_arch = "arm"),
73289 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
73290)]
73291#[cfg_attr(
73292 target_arch = "arm",
73293 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73294)]
73295pub fn vsudot_lane_s32<const LANE: i32>(a: int32x2_t, b: int8x8_t, c: uint8x8_t) -> int32x2_t {
73296 static_assert_uimm_bits!(LANE, 1);
73297 unsafe {
73298 let c: uint32x2_t = transmute(c);
73299 let c: uint32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
73300 vusdot_s32(a, transmute(c), b)
73301 }
73302}
73303#[doc = "Dot product index form with signed and unsigned integers"]
73304#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsudot_lane_s32)"]
73305#[inline]
73306#[cfg(target_endian = "big")]
73307#[target_feature(enable = "neon,i8mm")]
73308#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
73309#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsudot, LANE = 0))]
73310#[cfg_attr(
73311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73312 assert_instr(sudot, LANE = 0)
73313)]
73314#[rustc_legacy_const_generics(3)]
73315#[cfg_attr(
73316 not(target_arch = "arm"),
73317 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
73318)]
73319#[cfg_attr(
73320 target_arch = "arm",
73321 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73322)]
73323pub fn vsudot_lane_s32<const LANE: i32>(a: int32x2_t, b: int8x8_t, c: uint8x8_t) -> int32x2_t {
73324 static_assert_uimm_bits!(LANE, 1);
73325 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
73326 let b: int8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
73327 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
73328 unsafe {
73329 let c: uint32x2_t = transmute(c);
73330 let c: uint32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
73331 let ret_val: int32x2_t = vusdot_s32(a, transmute(c), b);
73332 simd_shuffle!(ret_val, ret_val, [1, 0])
73333 }
73334}
73335#[doc = "Dot product index form with signed and unsigned integers"]
73336#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsudotq_lane_s32)"]
73337#[inline]
73338#[cfg(target_endian = "little")]
73339#[target_feature(enable = "neon,i8mm")]
73340#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
73341#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsudot, LANE = 0))]
73342#[cfg_attr(
73343 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73344 assert_instr(sudot, LANE = 0)
73345)]
73346#[rustc_legacy_const_generics(3)]
73347#[cfg_attr(
73348 not(target_arch = "arm"),
73349 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
73350)]
73351#[cfg_attr(
73352 target_arch = "arm",
73353 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73354)]
73355pub fn vsudotq_lane_s32<const LANE: i32>(a: int32x4_t, b: int8x16_t, c: uint8x8_t) -> int32x4_t {
73356 static_assert_uimm_bits!(LANE, 1);
73357 unsafe {
73358 let c: uint32x2_t = transmute(c);
73359 let c: uint32x4_t =
73360 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
73361 vusdotq_s32(a, transmute(c), b)
73362 }
73363}
73364#[doc = "Dot product index form with signed and unsigned integers"]
73365#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsudotq_lane_s32)"]
73366#[inline]
73367#[cfg(target_endian = "big")]
73368#[target_feature(enable = "neon,i8mm")]
73369#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
73370#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsudot, LANE = 0))]
73371#[cfg_attr(
73372 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73373 assert_instr(sudot, LANE = 0)
73374)]
73375#[rustc_legacy_const_generics(3)]
73376#[cfg_attr(
73377 not(target_arch = "arm"),
73378 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
73379)]
73380#[cfg_attr(
73381 target_arch = "arm",
73382 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73383)]
73384pub fn vsudotq_lane_s32<const LANE: i32>(a: int32x4_t, b: int8x16_t, c: uint8x8_t) -> int32x4_t {
73385 static_assert_uimm_bits!(LANE, 1);
73386 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
73387 let b: int8x16_t =
73388 unsafe { simd_shuffle!(b, b, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
73389 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
73390 unsafe {
73391 let c: uint32x2_t = transmute(c);
73392 let c: uint32x4_t =
73393 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
73394 let ret_val: int32x4_t = vusdotq_s32(a, transmute(c), b);
73395 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
73396 }
73397}
73398#[doc = "Table look-up"]
73399#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1)"]
73400#[inline]
73401#[target_feature(enable = "neon")]
73402#[cfg(target_arch = "arm")]
73403#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73404#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73405#[cfg_attr(test, assert_instr(vtbl))]
73406fn vtbl1(a: int8x8_t, b: int8x8_t) -> int8x8_t {
73407 unsafe extern "unadjusted" {
73408 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbl1")]
73409 fn _vtbl1(a: int8x8_t, b: int8x8_t) -> int8x8_t;
73410 }
73411 unsafe { _vtbl1(a, b) }
73412}
73413#[doc = "Table look-up"]
73414#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_s8)"]
73415#[inline]
73416#[target_feature(enable = "neon")]
73417#[cfg(target_arch = "arm")]
73418#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73419#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73420#[cfg_attr(test, assert_instr(vtbl))]
73421pub fn vtbl1_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
73422 vtbl1(a, b)
73423}
73424#[doc = "Table look-up"]
73425#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_u8)"]
73426#[inline]
73427#[cfg(target_endian = "little")]
73428#[target_feature(enable = "neon")]
73429#[cfg(target_arch = "arm")]
73430#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73431#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73432#[cfg_attr(test, assert_instr(vtbl))]
73433pub fn vtbl1_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
73434 unsafe { transmute(vtbl1(transmute(a), transmute(b))) }
73435}
73436#[doc = "Table look-up"]
73437#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_u8)"]
73438#[inline]
73439#[cfg(target_endian = "big")]
73440#[target_feature(enable = "neon")]
73441#[cfg(target_arch = "arm")]
73442#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73443#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73444#[cfg_attr(test, assert_instr(vtbl))]
73445pub fn vtbl1_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
73446 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
73447 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
73448 unsafe {
73449 let ret_val: uint8x8_t = transmute(vtbl1(transmute(a), transmute(b)));
73450 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
73451 }
73452}
73453#[doc = "Table look-up"]
73454#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_p8)"]
73455#[inline]
73456#[cfg(target_endian = "little")]
73457#[target_feature(enable = "neon")]
73458#[cfg(target_arch = "arm")]
73459#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73460#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73461#[cfg_attr(test, assert_instr(vtbl))]
73462pub fn vtbl1_p8(a: poly8x8_t, b: uint8x8_t) -> poly8x8_t {
73463 unsafe { transmute(vtbl1(transmute(a), transmute(b))) }
73464}
73465#[doc = "Table look-up"]
73466#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_p8)"]
73467#[inline]
73468#[cfg(target_endian = "big")]
73469#[target_feature(enable = "neon")]
73470#[cfg(target_arch = "arm")]
73471#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73472#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73473#[cfg_attr(test, assert_instr(vtbl))]
73474pub fn vtbl1_p8(a: poly8x8_t, b: uint8x8_t) -> poly8x8_t {
73475 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
73476 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
73477 unsafe {
73478 let ret_val: poly8x8_t = transmute(vtbl1(transmute(a), transmute(b)));
73479 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
73480 }
73481}
73482#[doc = "Table look-up"]
73483#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2)"]
73484#[inline]
73485#[target_feature(enable = "neon")]
73486#[cfg(target_arch = "arm")]
73487#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73488#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73489#[cfg_attr(test, assert_instr(vtbl))]
73490fn vtbl2(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
73491 unsafe extern "unadjusted" {
73492 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbl2")]
73493 fn _vtbl2(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t;
73494 }
73495 unsafe { _vtbl2(a, b, c) }
73496}
73497#[doc = "Table look-up"]
73498#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_s8)"]
73499#[inline]
73500#[target_feature(enable = "neon")]
73501#[cfg(target_arch = "arm")]
73502#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73503#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73504#[cfg_attr(test, assert_instr(vtbl))]
73505pub fn vtbl2_s8(a: int8x8x2_t, b: int8x8_t) -> int8x8_t {
73506 vtbl2(a.0, a.1, b)
73507}
73508#[doc = "Table look-up"]
73509#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_u8)"]
73510#[inline]
73511#[cfg(target_endian = "little")]
73512#[target_feature(enable = "neon")]
73513#[cfg(target_arch = "arm")]
73514#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73515#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73516#[cfg_attr(test, assert_instr(vtbl))]
73517pub fn vtbl2_u8(a: uint8x8x2_t, b: uint8x8_t) -> uint8x8_t {
73518 unsafe { transmute(vtbl2(transmute(a.0), transmute(a.1), transmute(b))) }
73519}
73520#[doc = "Table look-up"]
73521#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_u8)"]
73522#[inline]
73523#[cfg(target_endian = "big")]
73524#[target_feature(enable = "neon")]
73525#[cfg(target_arch = "arm")]
73526#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73527#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73528#[cfg_attr(test, assert_instr(vtbl))]
73529pub fn vtbl2_u8(a: uint8x8x2_t, b: uint8x8_t) -> uint8x8_t {
73530 let mut a: uint8x8x2_t = a;
73531 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
73532 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
73533 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
73534 unsafe {
73535 let ret_val: uint8x8_t = transmute(vtbl2(transmute(a.0), transmute(a.1), transmute(b)));
73536 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
73537 }
73538}
73539#[doc = "Table look-up"]
73540#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_p8)"]
73541#[inline]
73542#[cfg(target_endian = "little")]
73543#[target_feature(enable = "neon")]
73544#[cfg(target_arch = "arm")]
73545#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73546#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73547#[cfg_attr(test, assert_instr(vtbl))]
73548pub fn vtbl2_p8(a: poly8x8x2_t, b: uint8x8_t) -> poly8x8_t {
73549 unsafe { transmute(vtbl2(transmute(a.0), transmute(a.1), transmute(b))) }
73550}
73551#[doc = "Table look-up"]
73552#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_p8)"]
73553#[inline]
73554#[cfg(target_endian = "big")]
73555#[target_feature(enable = "neon")]
73556#[cfg(target_arch = "arm")]
73557#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73558#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73559#[cfg_attr(test, assert_instr(vtbl))]
73560pub fn vtbl2_p8(a: poly8x8x2_t, b: uint8x8_t) -> poly8x8_t {
73561 let mut a: poly8x8x2_t = a;
73562 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
73563 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
73564 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
73565 unsafe {
73566 let ret_val: poly8x8_t = transmute(vtbl2(transmute(a.0), transmute(a.1), transmute(b)));
73567 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
73568 }
73569}
73570#[doc = "Table look-up"]
73571#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3)"]
73572#[inline]
73573#[target_feature(enable = "neon")]
73574#[cfg(target_arch = "arm")]
73575#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73576#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73577#[cfg_attr(test, assert_instr(vtbl))]
73578fn vtbl3(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t) -> int8x8_t {
73579 unsafe extern "unadjusted" {
73580 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbl3")]
73581 fn _vtbl3(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t) -> int8x8_t;
73582 }
73583 unsafe { _vtbl3(a, b, c, d) }
73584}
73585#[doc = "Table look-up"]
73586#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_s8)"]
73587#[inline]
73588#[target_feature(enable = "neon")]
73589#[cfg(target_arch = "arm")]
73590#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73591#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73592#[cfg_attr(test, assert_instr(vtbl))]
73593pub fn vtbl3_s8(a: int8x8x3_t, b: int8x8_t) -> int8x8_t {
73594 vtbl3(a.0, a.1, a.2, b)
73595}
73596#[doc = "Table look-up"]
73597#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_u8)"]
73598#[inline]
73599#[cfg(target_endian = "little")]
73600#[target_feature(enable = "neon")]
73601#[cfg(target_arch = "arm")]
73602#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73603#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73604#[cfg_attr(test, assert_instr(vtbl))]
73605pub fn vtbl3_u8(a: uint8x8x3_t, b: uint8x8_t) -> uint8x8_t {
73606 unsafe {
73607 transmute(vtbl3(
73608 transmute(a.0),
73609 transmute(a.1),
73610 transmute(a.2),
73611 transmute(b),
73612 ))
73613 }
73614}
73615#[doc = "Table look-up"]
73616#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_u8)"]
73617#[inline]
73618#[cfg(target_endian = "big")]
73619#[target_feature(enable = "neon")]
73620#[cfg(target_arch = "arm")]
73621#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73622#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73623#[cfg_attr(test, assert_instr(vtbl))]
73624pub fn vtbl3_u8(a: uint8x8x3_t, b: uint8x8_t) -> uint8x8_t {
73625 let mut a: uint8x8x3_t = a;
73626 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
73627 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
73628 a.2 = unsafe { simd_shuffle!(a.2, a.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
73629 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
73630 unsafe {
73631 let ret_val: uint8x8_t = transmute(vtbl3(
73632 transmute(a.0),
73633 transmute(a.1),
73634 transmute(a.2),
73635 transmute(b),
73636 ));
73637 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
73638 }
73639}
73640#[doc = "Table look-up"]
73641#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_p8)"]
73642#[inline]
73643#[cfg(target_endian = "little")]
73644#[target_feature(enable = "neon")]
73645#[cfg(target_arch = "arm")]
73646#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73647#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73648#[cfg_attr(test, assert_instr(vtbl))]
73649pub fn vtbl3_p8(a: poly8x8x3_t, b: uint8x8_t) -> poly8x8_t {
73650 unsafe {
73651 transmute(vtbl3(
73652 transmute(a.0),
73653 transmute(a.1),
73654 transmute(a.2),
73655 transmute(b),
73656 ))
73657 }
73658}
73659#[doc = "Table look-up"]
73660#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_p8)"]
73661#[inline]
73662#[cfg(target_endian = "big")]
73663#[target_feature(enable = "neon")]
73664#[cfg(target_arch = "arm")]
73665#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73666#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73667#[cfg_attr(test, assert_instr(vtbl))]
73668pub fn vtbl3_p8(a: poly8x8x3_t, b: uint8x8_t) -> poly8x8_t {
73669 let mut a: poly8x8x3_t = a;
73670 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
73671 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
73672 a.2 = unsafe { simd_shuffle!(a.2, a.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
73673 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
73674 unsafe {
73675 let ret_val: poly8x8_t = transmute(vtbl3(
73676 transmute(a.0),
73677 transmute(a.1),
73678 transmute(a.2),
73679 transmute(b),
73680 ));
73681 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
73682 }
73683}
73684#[doc = "Table look-up"]
73685#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4)"]
73686#[inline]
73687#[target_feature(enable = "neon")]
73688#[cfg(target_arch = "arm")]
73689#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73690#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73691#[cfg_attr(test, assert_instr(vtbl))]
73692fn vtbl4(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t) -> int8x8_t {
73693 unsafe extern "unadjusted" {
73694 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbl4")]
73695 fn _vtbl4(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t) -> int8x8_t;
73696 }
73697 unsafe { _vtbl4(a, b, c, d, e) }
73698}
73699#[doc = "Table look-up"]
73700#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_s8)"]
73701#[inline]
73702#[target_feature(enable = "neon")]
73703#[cfg(target_arch = "arm")]
73704#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73705#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73706#[cfg_attr(test, assert_instr(vtbl))]
73707pub fn vtbl4_s8(a: int8x8x4_t, b: int8x8_t) -> int8x8_t {
73708 vtbl4(a.0, a.1, a.2, a.3, b)
73709}
73710#[doc = "Table look-up"]
73711#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_u8)"]
73712#[inline]
73713#[cfg(target_endian = "little")]
73714#[target_feature(enable = "neon")]
73715#[cfg(target_arch = "arm")]
73716#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73717#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73718#[cfg_attr(test, assert_instr(vtbl))]
73719pub fn vtbl4_u8(a: uint8x8x4_t, b: uint8x8_t) -> uint8x8_t {
73720 unsafe {
73721 transmute(vtbl4(
73722 transmute(a.0),
73723 transmute(a.1),
73724 transmute(a.2),
73725 transmute(a.3),
73726 transmute(b),
73727 ))
73728 }
73729}
73730#[doc = "Table look-up"]
73731#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_u8)"]
73732#[inline]
73733#[cfg(target_endian = "big")]
73734#[target_feature(enable = "neon")]
73735#[cfg(target_arch = "arm")]
73736#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73737#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73738#[cfg_attr(test, assert_instr(vtbl))]
73739pub fn vtbl4_u8(a: uint8x8x4_t, b: uint8x8_t) -> uint8x8_t {
73740 let mut a: uint8x8x4_t = a;
73741 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
73742 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
73743 a.2 = unsafe { simd_shuffle!(a.2, a.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
73744 a.3 = unsafe { simd_shuffle!(a.3, a.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
73745 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
73746 unsafe {
73747 let ret_val: uint8x8_t = transmute(vtbl4(
73748 transmute(a.0),
73749 transmute(a.1),
73750 transmute(a.2),
73751 transmute(a.3),
73752 transmute(b),
73753 ));
73754 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
73755 }
73756}
73757#[doc = "Table look-up"]
73758#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_p8)"]
73759#[inline]
73760#[cfg(target_endian = "little")]
73761#[target_feature(enable = "neon")]
73762#[cfg(target_arch = "arm")]
73763#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73764#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73765#[cfg_attr(test, assert_instr(vtbl))]
73766pub fn vtbl4_p8(a: poly8x8x4_t, b: uint8x8_t) -> poly8x8_t {
73767 unsafe {
73768 transmute(vtbl4(
73769 transmute(a.0),
73770 transmute(a.1),
73771 transmute(a.2),
73772 transmute(a.3),
73773 transmute(b),
73774 ))
73775 }
73776}
73777#[doc = "Table look-up"]
73778#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_p8)"]
73779#[inline]
73780#[cfg(target_endian = "big")]
73781#[target_feature(enable = "neon")]
73782#[cfg(target_arch = "arm")]
73783#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73784#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73785#[cfg_attr(test, assert_instr(vtbl))]
73786pub fn vtbl4_p8(a: poly8x8x4_t, b: uint8x8_t) -> poly8x8_t {
73787 let mut a: poly8x8x4_t = a;
73788 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
73789 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
73790 a.2 = unsafe { simd_shuffle!(a.2, a.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
73791 a.3 = unsafe { simd_shuffle!(a.3, a.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
73792 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
73793 unsafe {
73794 let ret_val: poly8x8_t = transmute(vtbl4(
73795 transmute(a.0),
73796 transmute(a.1),
73797 transmute(a.2),
73798 transmute(a.3),
73799 transmute(b),
73800 ));
73801 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
73802 }
73803}
73804#[doc = "Extended table look-up"]
73805#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1)"]
73806#[inline]
73807#[target_feature(enable = "neon,v7")]
73808#[cfg(target_arch = "arm")]
73809#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73810#[cfg_attr(test, assert_instr(vtbx))]
73811fn vtbx1(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
73812 unsafe extern "unadjusted" {
73813 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbx1")]
73814 fn _vtbx1(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t;
73815 }
73816 unsafe { _vtbx1(a, b, c) }
73817}
73818#[doc = "Extended table look-up"]
73819#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_s8)"]
73820#[inline]
73821#[target_feature(enable = "neon,v7")]
73822#[cfg(target_arch = "arm")]
73823#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73824#[cfg_attr(test, assert_instr(vtbx))]
73825pub fn vtbx1_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
73826 vtbx1(a, b, c)
73827}
73828#[doc = "Extended table look-up"]
73829#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_u8)"]
73830#[inline]
73831#[cfg(target_endian = "little")]
73832#[target_feature(enable = "neon,v7")]
73833#[cfg(target_arch = "arm")]
73834#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73835#[cfg_attr(test, assert_instr(vtbx))]
73836pub fn vtbx1_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
73837 unsafe { transmute(vtbx1(transmute(a), transmute(b), transmute(c))) }
73838}
73839#[doc = "Extended table look-up"]
73840#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_u8)"]
73841#[inline]
73842#[cfg(target_endian = "big")]
73843#[target_feature(enable = "neon,v7")]
73844#[cfg(target_arch = "arm")]
73845#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73846#[cfg_attr(test, assert_instr(vtbx))]
73847pub fn vtbx1_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
73848 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
73849 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
73850 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
73851 unsafe {
73852 let ret_val: uint8x8_t = transmute(vtbx1(transmute(a), transmute(b), transmute(c)));
73853 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
73854 }
73855}
73856#[doc = "Extended table look-up"]
73857#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_p8)"]
73858#[inline]
73859#[cfg(target_endian = "little")]
73860#[target_feature(enable = "neon,v7")]
73861#[cfg(target_arch = "arm")]
73862#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73863#[cfg_attr(test, assert_instr(vtbx))]
73864pub fn vtbx1_p8(a: poly8x8_t, b: poly8x8_t, c: uint8x8_t) -> poly8x8_t {
73865 unsafe { transmute(vtbx1(transmute(a), transmute(b), transmute(c))) }
73866}
73867#[doc = "Extended table look-up"]
73868#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_p8)"]
73869#[inline]
73870#[cfg(target_endian = "big")]
73871#[target_feature(enable = "neon,v7")]
73872#[cfg(target_arch = "arm")]
73873#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73874#[cfg_attr(test, assert_instr(vtbx))]
73875pub fn vtbx1_p8(a: poly8x8_t, b: poly8x8_t, c: uint8x8_t) -> poly8x8_t {
73876 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
73877 let b: poly8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
73878 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
73879 unsafe {
73880 let ret_val: poly8x8_t = transmute(vtbx1(transmute(a), transmute(b), transmute(c)));
73881 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
73882 }
73883}
73884#[doc = "Extended table look-up"]
73885#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2)"]
73886#[inline]
73887#[target_feature(enable = "neon,v7")]
73888#[cfg(target_arch = "arm")]
73889#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73890#[cfg_attr(test, assert_instr(vtbx))]
73891fn vtbx2(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t) -> int8x8_t {
73892 unsafe extern "unadjusted" {
73893 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbx2")]
73894 fn _vtbx2(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t) -> int8x8_t;
73895 }
73896 unsafe { _vtbx2(a, b, c, d) }
73897}
73898#[doc = "Extended table look-up"]
73899#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_s8)"]
73900#[inline]
73901#[target_feature(enable = "neon,v7")]
73902#[cfg(target_arch = "arm")]
73903#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73904#[cfg_attr(test, assert_instr(vtbx))]
73905pub fn vtbx2_s8(a: int8x8_t, b: int8x8x2_t, c: int8x8_t) -> int8x8_t {
73906 vtbx2(a, b.0, b.1, c)
73907}
73908#[doc = "Extended table look-up"]
73909#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_u8)"]
73910#[inline]
73911#[cfg(target_endian = "little")]
73912#[target_feature(enable = "neon,v7")]
73913#[cfg(target_arch = "arm")]
73914#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73915#[cfg_attr(test, assert_instr(vtbx))]
73916pub fn vtbx2_u8(a: uint8x8_t, b: uint8x8x2_t, c: uint8x8_t) -> uint8x8_t {
73917 unsafe {
73918 transmute(vtbx2(
73919 transmute(a),
73920 transmute(b.0),
73921 transmute(b.1),
73922 transmute(c),
73923 ))
73924 }
73925}
73926#[doc = "Extended table look-up"]
73927#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_u8)"]
73928#[inline]
73929#[cfg(target_endian = "big")]
73930#[target_feature(enable = "neon,v7")]
73931#[cfg(target_arch = "arm")]
73932#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73933#[cfg_attr(test, assert_instr(vtbx))]
73934pub fn vtbx2_u8(a: uint8x8_t, b: uint8x8x2_t, c: uint8x8_t) -> uint8x8_t {
73935 let mut b: uint8x8x2_t = b;
73936 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
73937 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
73938 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
73939 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
73940 unsafe {
73941 let ret_val: uint8x8_t = transmute(vtbx2(
73942 transmute(a),
73943 transmute(b.0),
73944 transmute(b.1),
73945 transmute(c),
73946 ));
73947 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
73948 }
73949}
73950#[doc = "Extended table look-up"]
73951#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_p8)"]
73952#[inline]
73953#[cfg(target_endian = "little")]
73954#[target_feature(enable = "neon,v7")]
73955#[cfg(target_arch = "arm")]
73956#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73957#[cfg_attr(test, assert_instr(vtbx))]
73958pub fn vtbx2_p8(a: poly8x8_t, b: poly8x8x2_t, c: uint8x8_t) -> poly8x8_t {
73959 unsafe {
73960 transmute(vtbx2(
73961 transmute(a),
73962 transmute(b.0),
73963 transmute(b.1),
73964 transmute(c),
73965 ))
73966 }
73967}
73968#[doc = "Extended table look-up"]
73969#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_p8)"]
73970#[inline]
73971#[cfg(target_endian = "big")]
73972#[target_feature(enable = "neon,v7")]
73973#[cfg(target_arch = "arm")]
73974#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73975#[cfg_attr(test, assert_instr(vtbx))]
73976pub fn vtbx2_p8(a: poly8x8_t, b: poly8x8x2_t, c: uint8x8_t) -> poly8x8_t {
73977 let mut b: poly8x8x2_t = b;
73978 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
73979 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
73980 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
73981 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
73982 unsafe {
73983 let ret_val: poly8x8_t = transmute(vtbx2(
73984 transmute(a),
73985 transmute(b.0),
73986 transmute(b.1),
73987 transmute(c),
73988 ));
73989 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
73990 }
73991}
73992#[doc = "Extended table look-up"]
73993#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3)"]
73994#[inline]
73995#[target_feature(enable = "neon,v7")]
73996#[cfg(target_arch = "arm")]
73997#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
73998#[cfg_attr(test, assert_instr(vtbx))]
73999fn vtbx3(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t) -> int8x8_t {
74000 unsafe extern "unadjusted" {
74001 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbx3")]
74002 fn _vtbx3(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t) -> int8x8_t;
74003 }
74004 unsafe { _vtbx3(a, b, c, d, e) }
74005}
74006#[doc = "Extended table look-up"]
74007#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_s8)"]
74008#[inline]
74009#[target_feature(enable = "neon,v7")]
74010#[cfg(target_arch = "arm")]
74011#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
74012#[cfg_attr(test, assert_instr(vtbx))]
74013pub fn vtbx3_s8(a: int8x8_t, b: int8x8x3_t, c: int8x8_t) -> int8x8_t {
74014 vtbx3(a, b.0, b.1, b.2, c)
74015}
74016#[doc = "Extended table look-up"]
74017#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_u8)"]
74018#[inline]
74019#[cfg(target_endian = "little")]
74020#[target_feature(enable = "neon,v7")]
74021#[cfg(target_arch = "arm")]
74022#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
74023#[cfg_attr(test, assert_instr(vtbx))]
74024pub fn vtbx3_u8(a: uint8x8_t, b: uint8x8x3_t, c: uint8x8_t) -> uint8x8_t {
74025 unsafe {
74026 transmute(vtbx3(
74027 transmute(a),
74028 transmute(b.0),
74029 transmute(b.1),
74030 transmute(b.2),
74031 transmute(c),
74032 ))
74033 }
74034}
74035#[doc = "Extended table look-up"]
74036#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_u8)"]
74037#[inline]
74038#[cfg(target_endian = "big")]
74039#[target_feature(enable = "neon,v7")]
74040#[cfg(target_arch = "arm")]
74041#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
74042#[cfg_attr(test, assert_instr(vtbx))]
74043pub fn vtbx3_u8(a: uint8x8_t, b: uint8x8x3_t, c: uint8x8_t) -> uint8x8_t {
74044 let mut b: uint8x8x3_t = b;
74045 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
74046 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
74047 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
74048 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
74049 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
74050 unsafe {
74051 let ret_val: uint8x8_t = transmute(vtbx3(
74052 transmute(a),
74053 transmute(b.0),
74054 transmute(b.1),
74055 transmute(b.2),
74056 transmute(c),
74057 ));
74058 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
74059 }
74060}
74061#[doc = "Extended table look-up"]
74062#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_p8)"]
74063#[inline]
74064#[cfg(target_endian = "little")]
74065#[target_feature(enable = "neon,v7")]
74066#[cfg(target_arch = "arm")]
74067#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
74068#[cfg_attr(test, assert_instr(vtbx))]
74069pub fn vtbx3_p8(a: poly8x8_t, b: poly8x8x3_t, c: uint8x8_t) -> poly8x8_t {
74070 unsafe {
74071 transmute(vtbx3(
74072 transmute(a),
74073 transmute(b.0),
74074 transmute(b.1),
74075 transmute(b.2),
74076 transmute(c),
74077 ))
74078 }
74079}
74080#[doc = "Extended table look-up"]
74081#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_p8)"]
74082#[inline]
74083#[cfg(target_endian = "big")]
74084#[target_feature(enable = "neon,v7")]
74085#[cfg(target_arch = "arm")]
74086#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
74087#[cfg_attr(test, assert_instr(vtbx))]
74088pub fn vtbx3_p8(a: poly8x8_t, b: poly8x8x3_t, c: uint8x8_t) -> poly8x8_t {
74089 let mut b: poly8x8x3_t = b;
74090 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
74091 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
74092 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
74093 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
74094 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
74095 unsafe {
74096 let ret_val: poly8x8_t = transmute(vtbx3(
74097 transmute(a),
74098 transmute(b.0),
74099 transmute(b.1),
74100 transmute(b.2),
74101 transmute(c),
74102 ));
74103 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
74104 }
74105}
74106#[doc = "Extended table look-up"]
74107#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4)"]
74108#[inline]
74109#[target_feature(enable = "neon,v7")]
74110#[cfg(target_arch = "arm")]
74111#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
74112#[cfg_attr(test, assert_instr(vtbx))]
74113fn vtbx4(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t, f: int8x8_t) -> int8x8_t {
74114 unsafe extern "unadjusted" {
74115 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbx4")]
74116 fn _vtbx4(
74117 a: int8x8_t,
74118 b: int8x8_t,
74119 c: int8x8_t,
74120 d: int8x8_t,
74121 e: int8x8_t,
74122 f: int8x8_t,
74123 ) -> int8x8_t;
74124 }
74125 unsafe { _vtbx4(a, b, c, d, e, f) }
74126}
74127#[doc = "Extended table look-up"]
74128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_s8)"]
74129#[inline]
74130#[cfg(target_endian = "little")]
74131#[target_feature(enable = "neon,v7")]
74132#[cfg(target_arch = "arm")]
74133#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
74134#[cfg_attr(test, assert_instr(vtbx))]
74135pub fn vtbx4_s8(a: int8x8_t, b: int8x8x4_t, c: int8x8_t) -> int8x8_t {
74136 unsafe {
74137 vtbx4(
74138 a,
74139 transmute(b.0),
74140 transmute(b.1),
74141 transmute(b.2),
74142 transmute(b.3),
74143 c,
74144 )
74145 }
74146}
74147#[doc = "Extended table look-up"]
74148#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_s8)"]
74149#[inline]
74150#[cfg(target_endian = "big")]
74151#[target_feature(enable = "neon,v7")]
74152#[cfg(target_arch = "arm")]
74153#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
74154#[cfg_attr(test, assert_instr(vtbx))]
74155pub fn vtbx4_s8(a: int8x8_t, b: int8x8x4_t, c: int8x8_t) -> int8x8_t {
74156 let mut b: int8x8x4_t = b;
74157 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
74158 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
74159 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
74160 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
74161 b.3 = unsafe { simd_shuffle!(b.3, b.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
74162 let c: int8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
74163 unsafe {
74164 let ret_val: int8x8_t = vtbx4(
74165 a,
74166 transmute(b.0),
74167 transmute(b.1),
74168 transmute(b.2),
74169 transmute(b.3),
74170 c,
74171 );
74172 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
74173 }
74174}
74175#[doc = "Extended table look-up"]
74176#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_u8)"]
74177#[inline]
74178#[cfg(target_endian = "little")]
74179#[target_feature(enable = "neon,v7")]
74180#[cfg(target_arch = "arm")]
74181#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
74182#[cfg_attr(test, assert_instr(vtbx))]
74183pub fn vtbx4_u8(a: uint8x8_t, b: uint8x8x4_t, c: uint8x8_t) -> uint8x8_t {
74184 unsafe {
74185 transmute(vtbx4(
74186 transmute(a),
74187 transmute(b.0),
74188 transmute(b.1),
74189 transmute(b.2),
74190 transmute(b.3),
74191 transmute(c),
74192 ))
74193 }
74194}
74195#[doc = "Extended table look-up"]
74196#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_u8)"]
74197#[inline]
74198#[cfg(target_endian = "big")]
74199#[target_feature(enable = "neon,v7")]
74200#[cfg(target_arch = "arm")]
74201#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
74202#[cfg_attr(test, assert_instr(vtbx))]
74203pub fn vtbx4_u8(a: uint8x8_t, b: uint8x8x4_t, c: uint8x8_t) -> uint8x8_t {
74204 let mut b: uint8x8x4_t = b;
74205 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
74206 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
74207 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
74208 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
74209 b.3 = unsafe { simd_shuffle!(b.3, b.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
74210 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
74211 unsafe {
74212 let ret_val: uint8x8_t = transmute(vtbx4(
74213 transmute(a),
74214 transmute(b.0),
74215 transmute(b.1),
74216 transmute(b.2),
74217 transmute(b.3),
74218 transmute(c),
74219 ));
74220 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
74221 }
74222}
74223#[doc = "Extended table look-up"]
74224#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_p8)"]
74225#[inline]
74226#[cfg(target_endian = "little")]
74227#[target_feature(enable = "neon,v7")]
74228#[cfg(target_arch = "arm")]
74229#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
74230#[cfg_attr(test, assert_instr(vtbx))]
74231pub fn vtbx4_p8(a: poly8x8_t, b: poly8x8x4_t, c: uint8x8_t) -> poly8x8_t {
74232 unsafe {
74233 transmute(vtbx4(
74234 transmute(a),
74235 transmute(b.0),
74236 transmute(b.1),
74237 transmute(b.2),
74238 transmute(b.3),
74239 transmute(c),
74240 ))
74241 }
74242}
74243#[doc = "Extended table look-up"]
74244#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_p8)"]
74245#[inline]
74246#[cfg(target_endian = "big")]
74247#[target_feature(enable = "neon,v7")]
74248#[cfg(target_arch = "arm")]
74249#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
74250#[cfg_attr(test, assert_instr(vtbx))]
74251pub fn vtbx4_p8(a: poly8x8_t, b: poly8x8x4_t, c: uint8x8_t) -> poly8x8_t {
74252 let mut b: poly8x8x4_t = b;
74253 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
74254 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
74255 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
74256 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
74257 b.3 = unsafe { simd_shuffle!(b.3, b.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
74258 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
74259 unsafe {
74260 let ret_val: poly8x8_t = transmute(vtbx4(
74261 transmute(a),
74262 transmute(b.0),
74263 transmute(b.1),
74264 transmute(b.2),
74265 transmute(b.3),
74266 transmute(c),
74267 ));
74268 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
74269 }
74270}
74271#[doc = "Transpose elements"]
74272#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_f16)"]
74273#[inline]
74274#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74275#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74276#[cfg_attr(
74277 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74278 assert_instr(trn1)
74279)]
74280#[cfg_attr(
74281 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74282 assert_instr(trn2)
74283)]
74284#[target_feature(enable = "neon,fp16")]
74285#[cfg_attr(
74286 not(target_arch = "arm"),
74287 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
74288)]
74289#[cfg_attr(
74290 target_arch = "arm",
74291 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74292)]
74293#[cfg(not(target_arch = "arm64ec"))]
74294pub fn vtrn_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {
74295 unsafe {
74296 let a1: float16x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
74297 let b1: float16x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
74298 transmute((a1, b1))
74299 }
74300}
74301#[doc = "Transpose elements"]
74302#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_f16)"]
74303#[inline]
74304#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74305#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74306#[cfg_attr(
74307 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74308 assert_instr(trn1)
74309)]
74310#[cfg_attr(
74311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74312 assert_instr(trn2)
74313)]
74314#[target_feature(enable = "neon,fp16")]
74315#[cfg_attr(
74316 not(target_arch = "arm"),
74317 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
74318)]
74319#[cfg_attr(
74320 target_arch = "arm",
74321 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74322)]
74323#[cfg(not(target_arch = "arm64ec"))]
74324pub fn vtrnq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {
74325 unsafe {
74326 let a1: float16x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
74327 let b1: float16x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
74328 transmute((a1, b1))
74329 }
74330}
74331#[doc = "Transpose elements"]
74332#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_f32)"]
74333#[inline]
74334#[target_feature(enable = "neon")]
74335#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74336#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74337#[cfg_attr(
74338 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74339 assert_instr(zip1)
74340)]
74341#[cfg_attr(
74342 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74343 assert_instr(zip2)
74344)]
74345#[cfg_attr(
74346 not(target_arch = "arm"),
74347 stable(feature = "neon_intrinsics", since = "1.59.0")
74348)]
74349#[cfg_attr(
74350 target_arch = "arm",
74351 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74352)]
74353pub fn vtrn_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {
74354 unsafe {
74355 let a1: float32x2_t = simd_shuffle!(a, b, [0, 2]);
74356 let b1: float32x2_t = simd_shuffle!(a, b, [1, 3]);
74357 transmute((a1, b1))
74358 }
74359}
74360#[doc = "Transpose elements"]
74361#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_s32)"]
74362#[inline]
74363#[target_feature(enable = "neon")]
74364#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74365#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74366#[cfg_attr(
74367 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74368 assert_instr(zip1)
74369)]
74370#[cfg_attr(
74371 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74372 assert_instr(zip2)
74373)]
74374#[cfg_attr(
74375 not(target_arch = "arm"),
74376 stable(feature = "neon_intrinsics", since = "1.59.0")
74377)]
74378#[cfg_attr(
74379 target_arch = "arm",
74380 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74381)]
74382pub fn vtrn_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {
74383 unsafe {
74384 let a1: int32x2_t = simd_shuffle!(a, b, [0, 2]);
74385 let b1: int32x2_t = simd_shuffle!(a, b, [1, 3]);
74386 transmute((a1, b1))
74387 }
74388}
74389#[doc = "Transpose elements"]
74390#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_u32)"]
74391#[inline]
74392#[target_feature(enable = "neon")]
74393#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74394#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74395#[cfg_attr(
74396 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74397 assert_instr(zip1)
74398)]
74399#[cfg_attr(
74400 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74401 assert_instr(zip2)
74402)]
74403#[cfg_attr(
74404 not(target_arch = "arm"),
74405 stable(feature = "neon_intrinsics", since = "1.59.0")
74406)]
74407#[cfg_attr(
74408 target_arch = "arm",
74409 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74410)]
74411pub fn vtrn_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {
74412 unsafe {
74413 let a1: uint32x2_t = simd_shuffle!(a, b, [0, 2]);
74414 let b1: uint32x2_t = simd_shuffle!(a, b, [1, 3]);
74415 transmute((a1, b1))
74416 }
74417}
74418#[doc = "Transpose elements"]
74419#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_f32)"]
74420#[inline]
74421#[target_feature(enable = "neon")]
74422#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74423#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74424#[cfg_attr(
74425 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74426 assert_instr(trn1)
74427)]
74428#[cfg_attr(
74429 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74430 assert_instr(trn2)
74431)]
74432#[cfg_attr(
74433 not(target_arch = "arm"),
74434 stable(feature = "neon_intrinsics", since = "1.59.0")
74435)]
74436#[cfg_attr(
74437 target_arch = "arm",
74438 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74439)]
74440pub fn vtrnq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
74441 unsafe {
74442 let a1: float32x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
74443 let b1: float32x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
74444 transmute((a1, b1))
74445 }
74446}
74447#[doc = "Transpose elements"]
74448#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_s8)"]
74449#[inline]
74450#[target_feature(enable = "neon")]
74451#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74452#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74453#[cfg_attr(
74454 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74455 assert_instr(trn1)
74456)]
74457#[cfg_attr(
74458 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74459 assert_instr(trn2)
74460)]
74461#[cfg_attr(
74462 not(target_arch = "arm"),
74463 stable(feature = "neon_intrinsics", since = "1.59.0")
74464)]
74465#[cfg_attr(
74466 target_arch = "arm",
74467 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74468)]
74469pub fn vtrn_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {
74470 unsafe {
74471 let a1: int8x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
74472 let b1: int8x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
74473 transmute((a1, b1))
74474 }
74475}
74476#[doc = "Transpose elements"]
74477#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_s8)"]
74478#[inline]
74479#[target_feature(enable = "neon")]
74480#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74481#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74482#[cfg_attr(
74483 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74484 assert_instr(trn1)
74485)]
74486#[cfg_attr(
74487 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74488 assert_instr(trn2)
74489)]
74490#[cfg_attr(
74491 not(target_arch = "arm"),
74492 stable(feature = "neon_intrinsics", since = "1.59.0")
74493)]
74494#[cfg_attr(
74495 target_arch = "arm",
74496 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74497)]
74498pub fn vtrnq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
74499 unsafe {
74500 let a1: int8x16_t = simd_shuffle!(
74501 a,
74502 b,
74503 [0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30]
74504 );
74505 let b1: int8x16_t = simd_shuffle!(
74506 a,
74507 b,
74508 [1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31]
74509 );
74510 transmute((a1, b1))
74511 }
74512}
74513#[doc = "Transpose elements"]
74514#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_s16)"]
74515#[inline]
74516#[target_feature(enable = "neon")]
74517#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74518#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74519#[cfg_attr(
74520 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74521 assert_instr(trn1)
74522)]
74523#[cfg_attr(
74524 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74525 assert_instr(trn2)
74526)]
74527#[cfg_attr(
74528 not(target_arch = "arm"),
74529 stable(feature = "neon_intrinsics", since = "1.59.0")
74530)]
74531#[cfg_attr(
74532 target_arch = "arm",
74533 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74534)]
74535pub fn vtrn_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {
74536 unsafe {
74537 let a1: int16x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
74538 let b1: int16x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
74539 transmute((a1, b1))
74540 }
74541}
74542#[doc = "Transpose elements"]
74543#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_s16)"]
74544#[inline]
74545#[target_feature(enable = "neon")]
74546#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74547#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74548#[cfg_attr(
74549 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74550 assert_instr(trn1)
74551)]
74552#[cfg_attr(
74553 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74554 assert_instr(trn2)
74555)]
74556#[cfg_attr(
74557 not(target_arch = "arm"),
74558 stable(feature = "neon_intrinsics", since = "1.59.0")
74559)]
74560#[cfg_attr(
74561 target_arch = "arm",
74562 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74563)]
74564pub fn vtrnq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
74565 unsafe {
74566 let a1: int16x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
74567 let b1: int16x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
74568 transmute((a1, b1))
74569 }
74570}
74571#[doc = "Transpose elements"]
74572#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_s32)"]
74573#[inline]
74574#[target_feature(enable = "neon")]
74575#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74576#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74577#[cfg_attr(
74578 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74579 assert_instr(trn1)
74580)]
74581#[cfg_attr(
74582 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74583 assert_instr(trn2)
74584)]
74585#[cfg_attr(
74586 not(target_arch = "arm"),
74587 stable(feature = "neon_intrinsics", since = "1.59.0")
74588)]
74589#[cfg_attr(
74590 target_arch = "arm",
74591 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74592)]
74593pub fn vtrnq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
74594 unsafe {
74595 let a1: int32x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
74596 let b1: int32x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
74597 transmute((a1, b1))
74598 }
74599}
74600#[doc = "Transpose elements"]
74601#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_u8)"]
74602#[inline]
74603#[target_feature(enable = "neon")]
74604#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74605#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74606#[cfg_attr(
74607 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74608 assert_instr(trn1)
74609)]
74610#[cfg_attr(
74611 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74612 assert_instr(trn2)
74613)]
74614#[cfg_attr(
74615 not(target_arch = "arm"),
74616 stable(feature = "neon_intrinsics", since = "1.59.0")
74617)]
74618#[cfg_attr(
74619 target_arch = "arm",
74620 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74621)]
74622pub fn vtrn_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {
74623 unsafe {
74624 let a1: uint8x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
74625 let b1: uint8x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
74626 transmute((a1, b1))
74627 }
74628}
74629#[doc = "Transpose elements"]
74630#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_u8)"]
74631#[inline]
74632#[target_feature(enable = "neon")]
74633#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74634#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74635#[cfg_attr(
74636 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74637 assert_instr(trn1)
74638)]
74639#[cfg_attr(
74640 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74641 assert_instr(trn2)
74642)]
74643#[cfg_attr(
74644 not(target_arch = "arm"),
74645 stable(feature = "neon_intrinsics", since = "1.59.0")
74646)]
74647#[cfg_attr(
74648 target_arch = "arm",
74649 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74650)]
74651pub fn vtrnq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
74652 unsafe {
74653 let a1: uint8x16_t = simd_shuffle!(
74654 a,
74655 b,
74656 [0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30]
74657 );
74658 let b1: uint8x16_t = simd_shuffle!(
74659 a,
74660 b,
74661 [1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31]
74662 );
74663 transmute((a1, b1))
74664 }
74665}
74666#[doc = "Transpose elements"]
74667#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_u16)"]
74668#[inline]
74669#[target_feature(enable = "neon")]
74670#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74671#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74672#[cfg_attr(
74673 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74674 assert_instr(trn1)
74675)]
74676#[cfg_attr(
74677 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74678 assert_instr(trn2)
74679)]
74680#[cfg_attr(
74681 not(target_arch = "arm"),
74682 stable(feature = "neon_intrinsics", since = "1.59.0")
74683)]
74684#[cfg_attr(
74685 target_arch = "arm",
74686 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74687)]
74688pub fn vtrn_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {
74689 unsafe {
74690 let a1: uint16x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
74691 let b1: uint16x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
74692 transmute((a1, b1))
74693 }
74694}
74695#[doc = "Transpose elements"]
74696#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_u16)"]
74697#[inline]
74698#[target_feature(enable = "neon")]
74699#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74700#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74701#[cfg_attr(
74702 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74703 assert_instr(trn1)
74704)]
74705#[cfg_attr(
74706 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74707 assert_instr(trn2)
74708)]
74709#[cfg_attr(
74710 not(target_arch = "arm"),
74711 stable(feature = "neon_intrinsics", since = "1.59.0")
74712)]
74713#[cfg_attr(
74714 target_arch = "arm",
74715 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74716)]
74717pub fn vtrnq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
74718 unsafe {
74719 let a1: uint16x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
74720 let b1: uint16x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
74721 transmute((a1, b1))
74722 }
74723}
74724#[doc = "Transpose elements"]
74725#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_u32)"]
74726#[inline]
74727#[target_feature(enable = "neon")]
74728#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74729#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74730#[cfg_attr(
74731 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74732 assert_instr(trn1)
74733)]
74734#[cfg_attr(
74735 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74736 assert_instr(trn2)
74737)]
74738#[cfg_attr(
74739 not(target_arch = "arm"),
74740 stable(feature = "neon_intrinsics", since = "1.59.0")
74741)]
74742#[cfg_attr(
74743 target_arch = "arm",
74744 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74745)]
74746pub fn vtrnq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
74747 unsafe {
74748 let a1: uint32x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
74749 let b1: uint32x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
74750 transmute((a1, b1))
74751 }
74752}
74753#[doc = "Transpose elements"]
74754#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_p8)"]
74755#[inline]
74756#[target_feature(enable = "neon")]
74757#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74758#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74759#[cfg_attr(
74760 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74761 assert_instr(trn1)
74762)]
74763#[cfg_attr(
74764 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74765 assert_instr(trn2)
74766)]
74767#[cfg_attr(
74768 not(target_arch = "arm"),
74769 stable(feature = "neon_intrinsics", since = "1.59.0")
74770)]
74771#[cfg_attr(
74772 target_arch = "arm",
74773 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74774)]
74775pub fn vtrn_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {
74776 unsafe {
74777 let a1: poly8x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
74778 let b1: poly8x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
74779 transmute((a1, b1))
74780 }
74781}
74782#[doc = "Transpose elements"]
74783#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_p8)"]
74784#[inline]
74785#[target_feature(enable = "neon")]
74786#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74787#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74788#[cfg_attr(
74789 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74790 assert_instr(trn1)
74791)]
74792#[cfg_attr(
74793 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74794 assert_instr(trn2)
74795)]
74796#[cfg_attr(
74797 not(target_arch = "arm"),
74798 stable(feature = "neon_intrinsics", since = "1.59.0")
74799)]
74800#[cfg_attr(
74801 target_arch = "arm",
74802 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74803)]
74804pub fn vtrnq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
74805 unsafe {
74806 let a1: poly8x16_t = simd_shuffle!(
74807 a,
74808 b,
74809 [0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30]
74810 );
74811 let b1: poly8x16_t = simd_shuffle!(
74812 a,
74813 b,
74814 [1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31]
74815 );
74816 transmute((a1, b1))
74817 }
74818}
74819#[doc = "Transpose elements"]
74820#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_p16)"]
74821#[inline]
74822#[target_feature(enable = "neon")]
74823#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74824#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74825#[cfg_attr(
74826 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74827 assert_instr(trn1)
74828)]
74829#[cfg_attr(
74830 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74831 assert_instr(trn2)
74832)]
74833#[cfg_attr(
74834 not(target_arch = "arm"),
74835 stable(feature = "neon_intrinsics", since = "1.59.0")
74836)]
74837#[cfg_attr(
74838 target_arch = "arm",
74839 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74840)]
74841pub fn vtrn_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {
74842 unsafe {
74843 let a1: poly16x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
74844 let b1: poly16x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
74845 transmute((a1, b1))
74846 }
74847}
74848#[doc = "Transpose elements"]
74849#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_p16)"]
74850#[inline]
74851#[target_feature(enable = "neon")]
74852#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74853#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
74854#[cfg_attr(
74855 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74856 assert_instr(trn1)
74857)]
74858#[cfg_attr(
74859 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74860 assert_instr(trn2)
74861)]
74862#[cfg_attr(
74863 not(target_arch = "arm"),
74864 stable(feature = "neon_intrinsics", since = "1.59.0")
74865)]
74866#[cfg_attr(
74867 target_arch = "arm",
74868 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74869)]
74870pub fn vtrnq_p16(a: poly16x8_t, b: poly16x8_t) -> poly16x8x2_t {
74871 unsafe {
74872 let a1: poly16x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
74873 let b1: poly16x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
74874 transmute((a1, b1))
74875 }
74876}
74877#[doc = "Signed compare bitwise Test bits nonzero"]
74878#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_s8)"]
74879#[inline]
74880#[target_feature(enable = "neon")]
74881#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74882#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
74883#[cfg_attr(
74884 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74885 assert_instr(cmtst)
74886)]
74887#[cfg_attr(
74888 not(target_arch = "arm"),
74889 stable(feature = "neon_intrinsics", since = "1.59.0")
74890)]
74891#[cfg_attr(
74892 target_arch = "arm",
74893 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74894)]
74895pub fn vtst_s8(a: int8x8_t, b: int8x8_t) -> uint8x8_t {
74896 unsafe {
74897 let c: int8x8_t = simd_and(a, b);
74898 let d: i8x8 = i8x8::new(0, 0, 0, 0, 0, 0, 0, 0);
74899 simd_ne(c, transmute(d))
74900 }
74901}
74902#[doc = "Signed compare bitwise Test bits nonzero"]
74903#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_s8)"]
74904#[inline]
74905#[target_feature(enable = "neon")]
74906#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74907#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
74908#[cfg_attr(
74909 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74910 assert_instr(cmtst)
74911)]
74912#[cfg_attr(
74913 not(target_arch = "arm"),
74914 stable(feature = "neon_intrinsics", since = "1.59.0")
74915)]
74916#[cfg_attr(
74917 target_arch = "arm",
74918 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74919)]
74920pub fn vtstq_s8(a: int8x16_t, b: int8x16_t) -> uint8x16_t {
74921 unsafe {
74922 let c: int8x16_t = simd_and(a, b);
74923 let d: i8x16 = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
74924 simd_ne(c, transmute(d))
74925 }
74926}
74927#[doc = "Signed compare bitwise Test bits nonzero"]
74928#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_s16)"]
74929#[inline]
74930#[target_feature(enable = "neon")]
74931#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74932#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
74933#[cfg_attr(
74934 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74935 assert_instr(cmtst)
74936)]
74937#[cfg_attr(
74938 not(target_arch = "arm"),
74939 stable(feature = "neon_intrinsics", since = "1.59.0")
74940)]
74941#[cfg_attr(
74942 target_arch = "arm",
74943 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74944)]
74945pub fn vtst_s16(a: int16x4_t, b: int16x4_t) -> uint16x4_t {
74946 unsafe {
74947 let c: int16x4_t = simd_and(a, b);
74948 let d: i16x4 = i16x4::new(0, 0, 0, 0);
74949 simd_ne(c, transmute(d))
74950 }
74951}
74952#[doc = "Signed compare bitwise Test bits nonzero"]
74953#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_s16)"]
74954#[inline]
74955#[target_feature(enable = "neon")]
74956#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74957#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
74958#[cfg_attr(
74959 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74960 assert_instr(cmtst)
74961)]
74962#[cfg_attr(
74963 not(target_arch = "arm"),
74964 stable(feature = "neon_intrinsics", since = "1.59.0")
74965)]
74966#[cfg_attr(
74967 target_arch = "arm",
74968 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74969)]
74970pub fn vtstq_s16(a: int16x8_t, b: int16x8_t) -> uint16x8_t {
74971 unsafe {
74972 let c: int16x8_t = simd_and(a, b);
74973 let d: i16x8 = i16x8::new(0, 0, 0, 0, 0, 0, 0, 0);
74974 simd_ne(c, transmute(d))
74975 }
74976}
74977#[doc = "Signed compare bitwise Test bits nonzero"]
74978#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_s32)"]
74979#[inline]
74980#[target_feature(enable = "neon")]
74981#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74982#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
74983#[cfg_attr(
74984 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74985 assert_instr(cmtst)
74986)]
74987#[cfg_attr(
74988 not(target_arch = "arm"),
74989 stable(feature = "neon_intrinsics", since = "1.59.0")
74990)]
74991#[cfg_attr(
74992 target_arch = "arm",
74993 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74994)]
74995pub fn vtst_s32(a: int32x2_t, b: int32x2_t) -> uint32x2_t {
74996 unsafe {
74997 let c: int32x2_t = simd_and(a, b);
74998 let d: i32x2 = i32x2::new(0, 0);
74999 simd_ne(c, transmute(d))
75000 }
75001}
75002#[doc = "Signed compare bitwise Test bits nonzero"]
75003#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_s32)"]
75004#[inline]
75005#[target_feature(enable = "neon")]
75006#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75007#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
75008#[cfg_attr(
75009 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75010 assert_instr(cmtst)
75011)]
75012#[cfg_attr(
75013 not(target_arch = "arm"),
75014 stable(feature = "neon_intrinsics", since = "1.59.0")
75015)]
75016#[cfg_attr(
75017 target_arch = "arm",
75018 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75019)]
75020pub fn vtstq_s32(a: int32x4_t, b: int32x4_t) -> uint32x4_t {
75021 unsafe {
75022 let c: int32x4_t = simd_and(a, b);
75023 let d: i32x4 = i32x4::new(0, 0, 0, 0);
75024 simd_ne(c, transmute(d))
75025 }
75026}
75027#[doc = "Signed compare bitwise Test bits nonzero"]
75028#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_p8)"]
75029#[inline]
75030#[target_feature(enable = "neon")]
75031#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75032#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
75033#[cfg_attr(
75034 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75035 assert_instr(cmtst)
75036)]
75037#[cfg_attr(
75038 not(target_arch = "arm"),
75039 stable(feature = "neon_intrinsics", since = "1.59.0")
75040)]
75041#[cfg_attr(
75042 target_arch = "arm",
75043 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75044)]
75045pub fn vtst_p8(a: poly8x8_t, b: poly8x8_t) -> uint8x8_t {
75046 unsafe {
75047 let c: poly8x8_t = simd_and(a, b);
75048 let d: i8x8 = i8x8::new(0, 0, 0, 0, 0, 0, 0, 0);
75049 simd_ne(c, transmute(d))
75050 }
75051}
75052#[doc = "Signed compare bitwise Test bits nonzero"]
75053#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_p8)"]
75054#[inline]
75055#[target_feature(enable = "neon")]
75056#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75057#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
75058#[cfg_attr(
75059 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75060 assert_instr(cmtst)
75061)]
75062#[cfg_attr(
75063 not(target_arch = "arm"),
75064 stable(feature = "neon_intrinsics", since = "1.59.0")
75065)]
75066#[cfg_attr(
75067 target_arch = "arm",
75068 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75069)]
75070pub fn vtstq_p8(a: poly8x16_t, b: poly8x16_t) -> uint8x16_t {
75071 unsafe {
75072 let c: poly8x16_t = simd_and(a, b);
75073 let d: i8x16 = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
75074 simd_ne(c, transmute(d))
75075 }
75076}
75077#[doc = "Signed compare bitwise Test bits nonzero"]
75078#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_p16)"]
75079#[inline]
75080#[target_feature(enable = "neon")]
75081#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75082#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
75083#[cfg_attr(
75084 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75085 assert_instr(cmtst)
75086)]
75087#[cfg_attr(
75088 not(target_arch = "arm"),
75089 stable(feature = "neon_intrinsics", since = "1.59.0")
75090)]
75091#[cfg_attr(
75092 target_arch = "arm",
75093 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75094)]
75095pub fn vtst_p16(a: poly16x4_t, b: poly16x4_t) -> uint16x4_t {
75096 unsafe {
75097 let c: poly16x4_t = simd_and(a, b);
75098 let d: i16x4 = i16x4::new(0, 0, 0, 0);
75099 simd_ne(c, transmute(d))
75100 }
75101}
75102#[doc = "Signed compare bitwise Test bits nonzero"]
75103#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_p16)"]
75104#[inline]
75105#[target_feature(enable = "neon")]
75106#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75107#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
75108#[cfg_attr(
75109 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75110 assert_instr(cmtst)
75111)]
75112#[cfg_attr(
75113 not(target_arch = "arm"),
75114 stable(feature = "neon_intrinsics", since = "1.59.0")
75115)]
75116#[cfg_attr(
75117 target_arch = "arm",
75118 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75119)]
75120pub fn vtstq_p16(a: poly16x8_t, b: poly16x8_t) -> uint16x8_t {
75121 unsafe {
75122 let c: poly16x8_t = simd_and(a, b);
75123 let d: i16x8 = i16x8::new(0, 0, 0, 0, 0, 0, 0, 0);
75124 simd_ne(c, transmute(d))
75125 }
75126}
75127#[doc = "Unsigned compare bitwise Test bits nonzero"]
75128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_u8)"]
75129#[inline]
75130#[target_feature(enable = "neon")]
75131#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75132#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
75133#[cfg_attr(
75134 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75135 assert_instr(cmtst)
75136)]
75137#[cfg_attr(
75138 not(target_arch = "arm"),
75139 stable(feature = "neon_intrinsics", since = "1.59.0")
75140)]
75141#[cfg_attr(
75142 target_arch = "arm",
75143 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75144)]
75145pub fn vtst_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
75146 unsafe {
75147 let c: uint8x8_t = simd_and(a, b);
75148 let d: u8x8 = u8x8::new(0, 0, 0, 0, 0, 0, 0, 0);
75149 simd_ne(c, transmute(d))
75150 }
75151}
75152#[doc = "Unsigned compare bitwise Test bits nonzero"]
75153#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_u8)"]
75154#[inline]
75155#[target_feature(enable = "neon")]
75156#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75157#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
75158#[cfg_attr(
75159 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75160 assert_instr(cmtst)
75161)]
75162#[cfg_attr(
75163 not(target_arch = "arm"),
75164 stable(feature = "neon_intrinsics", since = "1.59.0")
75165)]
75166#[cfg_attr(
75167 target_arch = "arm",
75168 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75169)]
75170pub fn vtstq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
75171 unsafe {
75172 let c: uint8x16_t = simd_and(a, b);
75173 let d: u8x16 = u8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
75174 simd_ne(c, transmute(d))
75175 }
75176}
75177#[doc = "Unsigned compare bitwise Test bits nonzero"]
75178#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_u16)"]
75179#[inline]
75180#[target_feature(enable = "neon")]
75181#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75182#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
75183#[cfg_attr(
75184 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75185 assert_instr(cmtst)
75186)]
75187#[cfg_attr(
75188 not(target_arch = "arm"),
75189 stable(feature = "neon_intrinsics", since = "1.59.0")
75190)]
75191#[cfg_attr(
75192 target_arch = "arm",
75193 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75194)]
75195pub fn vtst_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
75196 unsafe {
75197 let c: uint16x4_t = simd_and(a, b);
75198 let d: u16x4 = u16x4::new(0, 0, 0, 0);
75199 simd_ne(c, transmute(d))
75200 }
75201}
75202#[doc = "Unsigned compare bitwise Test bits nonzero"]
75203#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_u16)"]
75204#[inline]
75205#[target_feature(enable = "neon")]
75206#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75207#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
75208#[cfg_attr(
75209 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75210 assert_instr(cmtst)
75211)]
75212#[cfg_attr(
75213 not(target_arch = "arm"),
75214 stable(feature = "neon_intrinsics", since = "1.59.0")
75215)]
75216#[cfg_attr(
75217 target_arch = "arm",
75218 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75219)]
75220pub fn vtstq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
75221 unsafe {
75222 let c: uint16x8_t = simd_and(a, b);
75223 let d: u16x8 = u16x8::new(0, 0, 0, 0, 0, 0, 0, 0);
75224 simd_ne(c, transmute(d))
75225 }
75226}
75227#[doc = "Unsigned compare bitwise Test bits nonzero"]
75228#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_u32)"]
75229#[inline]
75230#[target_feature(enable = "neon")]
75231#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75232#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
75233#[cfg_attr(
75234 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75235 assert_instr(cmtst)
75236)]
75237#[cfg_attr(
75238 not(target_arch = "arm"),
75239 stable(feature = "neon_intrinsics", since = "1.59.0")
75240)]
75241#[cfg_attr(
75242 target_arch = "arm",
75243 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75244)]
75245pub fn vtst_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
75246 unsafe {
75247 let c: uint32x2_t = simd_and(a, b);
75248 let d: u32x2 = u32x2::new(0, 0);
75249 simd_ne(c, transmute(d))
75250 }
75251}
75252#[doc = "Unsigned compare bitwise Test bits nonzero"]
75253#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_u32)"]
75254#[inline]
75255#[target_feature(enable = "neon")]
75256#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75257#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
75258#[cfg_attr(
75259 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75260 assert_instr(cmtst)
75261)]
75262#[cfg_attr(
75263 not(target_arch = "arm"),
75264 stable(feature = "neon_intrinsics", since = "1.59.0")
75265)]
75266#[cfg_attr(
75267 target_arch = "arm",
75268 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75269)]
75270pub fn vtstq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
75271 unsafe {
75272 let c: uint32x4_t = simd_and(a, b);
75273 let d: u32x4 = u32x4::new(0, 0, 0, 0);
75274 simd_ne(c, transmute(d))
75275 }
75276}
75277#[doc = "Dot product index form with unsigned and signed integers"]
75278#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdot_lane_s32)"]
75279#[inline]
75280#[cfg(target_endian = "little")]
75281#[target_feature(enable = "neon,i8mm")]
75282#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
75283#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 0))]
75284#[cfg_attr(
75285 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75286 assert_instr(usdot, LANE = 0)
75287)]
75288#[rustc_legacy_const_generics(3)]
75289#[cfg_attr(
75290 not(target_arch = "arm"),
75291 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
75292)]
75293#[cfg_attr(
75294 target_arch = "arm",
75295 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75296)]
75297pub fn vusdot_lane_s32<const LANE: i32>(a: int32x2_t, b: uint8x8_t, c: int8x8_t) -> int32x2_t {
75298 static_assert_uimm_bits!(LANE, 1);
75299 unsafe {
75300 let c: int32x2_t = transmute(c);
75301 let c: int32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
75302 vusdot_s32(a, b, transmute(c))
75303 }
75304}
75305#[doc = "Dot product index form with unsigned and signed integers"]
75306#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdot_lane_s32)"]
75307#[inline]
75308#[cfg(target_endian = "big")]
75309#[target_feature(enable = "neon,i8mm")]
75310#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
75311#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 0))]
75312#[cfg_attr(
75313 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75314 assert_instr(usdot, LANE = 0)
75315)]
75316#[rustc_legacy_const_generics(3)]
75317#[cfg_attr(
75318 not(target_arch = "arm"),
75319 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
75320)]
75321#[cfg_attr(
75322 target_arch = "arm",
75323 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75324)]
75325pub fn vusdot_lane_s32<const LANE: i32>(a: int32x2_t, b: uint8x8_t, c: int8x8_t) -> int32x2_t {
75326 static_assert_uimm_bits!(LANE, 1);
75327 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
75328 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
75329 let c: int8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
75330 unsafe {
75331 let c: int32x2_t = transmute(c);
75332 let c: int32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
75333 let ret_val: int32x2_t = vusdot_s32(a, b, transmute(c));
75334 simd_shuffle!(ret_val, ret_val, [1, 0])
75335 }
75336}
75337#[doc = "Dot product index form with unsigned and signed integers"]
75338#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdotq_lane_s32)"]
75339#[inline]
75340#[cfg(target_endian = "little")]
75341#[target_feature(enable = "neon,i8mm")]
75342#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
75343#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 0))]
75344#[cfg_attr(
75345 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75346 assert_instr(usdot, LANE = 0)
75347)]
75348#[rustc_legacy_const_generics(3)]
75349#[cfg_attr(
75350 not(target_arch = "arm"),
75351 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
75352)]
75353#[cfg_attr(
75354 target_arch = "arm",
75355 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75356)]
75357pub fn vusdotq_lane_s32<const LANE: i32>(a: int32x4_t, b: uint8x16_t, c: int8x8_t) -> int32x4_t {
75358 static_assert_uimm_bits!(LANE, 1);
75359 unsafe {
75360 let c: int32x2_t = transmute(c);
75361 let c: int32x4_t =
75362 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
75363 vusdotq_s32(a, b, transmute(c))
75364 }
75365}
75366#[doc = "Dot product index form with unsigned and signed integers"]
75367#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdotq_lane_s32)"]
75368#[inline]
75369#[cfg(target_endian = "big")]
75370#[target_feature(enable = "neon,i8mm")]
75371#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
75372#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 0))]
75373#[cfg_attr(
75374 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75375 assert_instr(usdot, LANE = 0)
75376)]
75377#[rustc_legacy_const_generics(3)]
75378#[cfg_attr(
75379 not(target_arch = "arm"),
75380 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
75381)]
75382#[cfg_attr(
75383 target_arch = "arm",
75384 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75385)]
75386pub fn vusdotq_lane_s32<const LANE: i32>(a: int32x4_t, b: uint8x16_t, c: int8x8_t) -> int32x4_t {
75387 static_assert_uimm_bits!(LANE, 1);
75388 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
75389 let b: uint8x16_t =
75390 unsafe { simd_shuffle!(b, b, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
75391 let c: int8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
75392 unsafe {
75393 let c: int32x2_t = transmute(c);
75394 let c: int32x4_t =
75395 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
75396 let ret_val: int32x4_t = vusdotq_s32(a, b, transmute(c));
75397 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
75398 }
75399}
75400#[doc = "Dot product vector form with unsigned and signed integers"]
75401#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdot_s32)"]
75402#[inline]
75403#[target_feature(enable = "neon,i8mm")]
75404#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
75405#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot))]
75406#[cfg_attr(
75407 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75408 assert_instr(usdot)
75409)]
75410#[cfg_attr(
75411 not(target_arch = "arm"),
75412 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
75413)]
75414#[cfg_attr(
75415 target_arch = "arm",
75416 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75417)]
75418pub fn vusdot_s32(a: int32x2_t, b: uint8x8_t, c: int8x8_t) -> int32x2_t {
75419 unsafe extern "unadjusted" {
75420 #[cfg_attr(
75421 any(target_arch = "aarch64", target_arch = "arm64ec"),
75422 link_name = "llvm.aarch64.neon.usdot.v2i32.v8i8"
75423 )]
75424 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.usdot.v2i32.v8i8")]
75425 fn _vusdot_s32(a: int32x2_t, b: uint8x8_t, c: int8x8_t) -> int32x2_t;
75426 }
75427 unsafe { _vusdot_s32(a, b, c) }
75428}
75429#[doc = "Dot product vector form with unsigned and signed integers"]
75430#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdotq_s32)"]
75431#[inline]
75432#[target_feature(enable = "neon,i8mm")]
75433#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
75434#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot))]
75435#[cfg_attr(
75436 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75437 assert_instr(usdot)
75438)]
75439#[cfg_attr(
75440 not(target_arch = "arm"),
75441 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
75442)]
75443#[cfg_attr(
75444 target_arch = "arm",
75445 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75446)]
75447pub fn vusdotq_s32(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t {
75448 unsafe extern "unadjusted" {
75449 #[cfg_attr(
75450 any(target_arch = "aarch64", target_arch = "arm64ec"),
75451 link_name = "llvm.aarch64.neon.usdot.v4i32.v16i8"
75452 )]
75453 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.usdot.v4i32.v16i8")]
75454 fn _vusdotq_s32(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t;
75455 }
75456 unsafe { _vusdotq_s32(a, b, c) }
75457}
75458#[doc = "Unsigned and signed 8-bit integer matrix multiply-accumulate"]
75459#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusmmlaq_s32)"]
75460#[inline]
75461#[target_feature(enable = "neon,i8mm")]
75462#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
75463#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
75464#[cfg_attr(
75465 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75466 assert_instr(usmmla)
75467)]
75468#[cfg_attr(
75469 not(target_arch = "arm"),
75470 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
75471)]
75472#[cfg_attr(
75473 target_arch = "arm",
75474 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75475)]
75476pub fn vusmmlaq_s32(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t {
75477 unsafe extern "unadjusted" {
75478 #[cfg_attr(
75479 any(target_arch = "aarch64", target_arch = "arm64ec"),
75480 link_name = "llvm.aarch64.neon.usmmla.v4i32.v16i8"
75481 )]
75482 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.usmmla.v4i32.v16i8")]
75483 fn _vusmmlaq_s32(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t;
75484 }
75485 unsafe { _vusmmlaq_s32(a, b, c) }
75486}
75487#[doc = "Unzip vectors"]
75488#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_f16)"]
75489#[inline]
75490#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75491#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
75492#[cfg_attr(
75493 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75494 assert_instr(uzp1)
75495)]
75496#[cfg_attr(
75497 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75498 assert_instr(uzp2)
75499)]
75500#[target_feature(enable = "neon,fp16")]
75501#[cfg_attr(
75502 not(target_arch = "arm"),
75503 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
75504)]
75505#[cfg_attr(
75506 target_arch = "arm",
75507 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75508)]
75509#[cfg(not(target_arch = "arm64ec"))]
75510pub fn vuzp_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {
75511 unsafe {
75512 let a0: float16x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
75513 let b0: float16x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
75514 transmute((a0, b0))
75515 }
75516}
75517#[doc = "Unzip vectors"]
75518#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_f16)"]
75519#[inline]
75520#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75521#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
75522#[cfg_attr(
75523 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75524 assert_instr(uzp1)
75525)]
75526#[cfg_attr(
75527 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75528 assert_instr(uzp2)
75529)]
75530#[target_feature(enable = "neon,fp16")]
75531#[cfg_attr(
75532 not(target_arch = "arm"),
75533 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
75534)]
75535#[cfg_attr(
75536 target_arch = "arm",
75537 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75538)]
75539#[cfg(not(target_arch = "arm64ec"))]
75540pub fn vuzpq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {
75541 unsafe {
75542 let a0: float16x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
75543 let b0: float16x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
75544 transmute((a0, b0))
75545 }
75546}
75547#[doc = "Unzip vectors"]
75548#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_f32)"]
75549#[inline]
75550#[target_feature(enable = "neon")]
75551#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75552#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
75553#[cfg_attr(
75554 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75555 assert_instr(zip1)
75556)]
75557#[cfg_attr(
75558 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75559 assert_instr(zip2)
75560)]
75561#[cfg_attr(
75562 not(target_arch = "arm"),
75563 stable(feature = "neon_intrinsics", since = "1.59.0")
75564)]
75565#[cfg_attr(
75566 target_arch = "arm",
75567 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75568)]
75569pub fn vuzp_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {
75570 unsafe {
75571 let a0: float32x2_t = simd_shuffle!(a, b, [0, 2]);
75572 let b0: float32x2_t = simd_shuffle!(a, b, [1, 3]);
75573 transmute((a0, b0))
75574 }
75575}
75576#[doc = "Unzip vectors"]
75577#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_s32)"]
75578#[inline]
75579#[target_feature(enable = "neon")]
75580#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75581#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
75582#[cfg_attr(
75583 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75584 assert_instr(zip1)
75585)]
75586#[cfg_attr(
75587 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75588 assert_instr(zip2)
75589)]
75590#[cfg_attr(
75591 not(target_arch = "arm"),
75592 stable(feature = "neon_intrinsics", since = "1.59.0")
75593)]
75594#[cfg_attr(
75595 target_arch = "arm",
75596 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75597)]
75598pub fn vuzp_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {
75599 unsafe {
75600 let a0: int32x2_t = simd_shuffle!(a, b, [0, 2]);
75601 let b0: int32x2_t = simd_shuffle!(a, b, [1, 3]);
75602 transmute((a0, b0))
75603 }
75604}
75605#[doc = "Unzip vectors"]
75606#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_u32)"]
75607#[inline]
75608#[target_feature(enable = "neon")]
75609#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75610#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
75611#[cfg_attr(
75612 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75613 assert_instr(zip1)
75614)]
75615#[cfg_attr(
75616 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75617 assert_instr(zip2)
75618)]
75619#[cfg_attr(
75620 not(target_arch = "arm"),
75621 stable(feature = "neon_intrinsics", since = "1.59.0")
75622)]
75623#[cfg_attr(
75624 target_arch = "arm",
75625 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75626)]
75627pub fn vuzp_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {
75628 unsafe {
75629 let a0: uint32x2_t = simd_shuffle!(a, b, [0, 2]);
75630 let b0: uint32x2_t = simd_shuffle!(a, b, [1, 3]);
75631 transmute((a0, b0))
75632 }
75633}
75634#[doc = "Unzip vectors"]
75635#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_f32)"]
75636#[inline]
75637#[target_feature(enable = "neon")]
75638#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75639#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
75640#[cfg_attr(
75641 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75642 assert_instr(uzp1)
75643)]
75644#[cfg_attr(
75645 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75646 assert_instr(uzp2)
75647)]
75648#[cfg_attr(
75649 not(target_arch = "arm"),
75650 stable(feature = "neon_intrinsics", since = "1.59.0")
75651)]
75652#[cfg_attr(
75653 target_arch = "arm",
75654 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75655)]
75656pub fn vuzpq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
75657 unsafe {
75658 let a0: float32x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
75659 let b0: float32x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
75660 transmute((a0, b0))
75661 }
75662}
75663#[doc = "Unzip vectors"]
75664#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_s8)"]
75665#[inline]
75666#[target_feature(enable = "neon")]
75667#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75668#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
75669#[cfg_attr(
75670 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75671 assert_instr(uzp1)
75672)]
75673#[cfg_attr(
75674 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75675 assert_instr(uzp2)
75676)]
75677#[cfg_attr(
75678 not(target_arch = "arm"),
75679 stable(feature = "neon_intrinsics", since = "1.59.0")
75680)]
75681#[cfg_attr(
75682 target_arch = "arm",
75683 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75684)]
75685pub fn vuzp_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {
75686 unsafe {
75687 let a0: int8x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
75688 let b0: int8x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
75689 transmute((a0, b0))
75690 }
75691}
75692#[doc = "Unzip vectors"]
75693#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_s8)"]
75694#[inline]
75695#[target_feature(enable = "neon")]
75696#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75697#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
75698#[cfg_attr(
75699 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75700 assert_instr(uzp1)
75701)]
75702#[cfg_attr(
75703 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75704 assert_instr(uzp2)
75705)]
75706#[cfg_attr(
75707 not(target_arch = "arm"),
75708 stable(feature = "neon_intrinsics", since = "1.59.0")
75709)]
75710#[cfg_attr(
75711 target_arch = "arm",
75712 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75713)]
75714pub fn vuzpq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
75715 unsafe {
75716 let a0: int8x16_t = simd_shuffle!(
75717 a,
75718 b,
75719 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]
75720 );
75721 let b0: int8x16_t = simd_shuffle!(
75722 a,
75723 b,
75724 [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31]
75725 );
75726 transmute((a0, b0))
75727 }
75728}
75729#[doc = "Unzip vectors"]
75730#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_s16)"]
75731#[inline]
75732#[target_feature(enable = "neon")]
75733#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75734#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
75735#[cfg_attr(
75736 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75737 assert_instr(uzp1)
75738)]
75739#[cfg_attr(
75740 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75741 assert_instr(uzp2)
75742)]
75743#[cfg_attr(
75744 not(target_arch = "arm"),
75745 stable(feature = "neon_intrinsics", since = "1.59.0")
75746)]
75747#[cfg_attr(
75748 target_arch = "arm",
75749 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75750)]
75751pub fn vuzp_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {
75752 unsafe {
75753 let a0: int16x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
75754 let b0: int16x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
75755 transmute((a0, b0))
75756 }
75757}
75758#[doc = "Unzip vectors"]
75759#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_s16)"]
75760#[inline]
75761#[target_feature(enable = "neon")]
75762#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75763#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
75764#[cfg_attr(
75765 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75766 assert_instr(uzp1)
75767)]
75768#[cfg_attr(
75769 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75770 assert_instr(uzp2)
75771)]
75772#[cfg_attr(
75773 not(target_arch = "arm"),
75774 stable(feature = "neon_intrinsics", since = "1.59.0")
75775)]
75776#[cfg_attr(
75777 target_arch = "arm",
75778 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75779)]
75780pub fn vuzpq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
75781 unsafe {
75782 let a0: int16x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
75783 let b0: int16x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
75784 transmute((a0, b0))
75785 }
75786}
75787#[doc = "Unzip vectors"]
75788#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_s32)"]
75789#[inline]
75790#[target_feature(enable = "neon")]
75791#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75792#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
75793#[cfg_attr(
75794 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75795 assert_instr(uzp1)
75796)]
75797#[cfg_attr(
75798 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75799 assert_instr(uzp2)
75800)]
75801#[cfg_attr(
75802 not(target_arch = "arm"),
75803 stable(feature = "neon_intrinsics", since = "1.59.0")
75804)]
75805#[cfg_attr(
75806 target_arch = "arm",
75807 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75808)]
75809pub fn vuzpq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
75810 unsafe {
75811 let a0: int32x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
75812 let b0: int32x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
75813 transmute((a0, b0))
75814 }
75815}
75816#[doc = "Unzip vectors"]
75817#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_u8)"]
75818#[inline]
75819#[target_feature(enable = "neon")]
75820#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75821#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
75822#[cfg_attr(
75823 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75824 assert_instr(uzp1)
75825)]
75826#[cfg_attr(
75827 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75828 assert_instr(uzp2)
75829)]
75830#[cfg_attr(
75831 not(target_arch = "arm"),
75832 stable(feature = "neon_intrinsics", since = "1.59.0")
75833)]
75834#[cfg_attr(
75835 target_arch = "arm",
75836 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75837)]
75838pub fn vuzp_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {
75839 unsafe {
75840 let a0: uint8x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
75841 let b0: uint8x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
75842 transmute((a0, b0))
75843 }
75844}
75845#[doc = "Unzip vectors"]
75846#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_u8)"]
75847#[inline]
75848#[target_feature(enable = "neon")]
75849#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75850#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
75851#[cfg_attr(
75852 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75853 assert_instr(uzp1)
75854)]
75855#[cfg_attr(
75856 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75857 assert_instr(uzp2)
75858)]
75859#[cfg_attr(
75860 not(target_arch = "arm"),
75861 stable(feature = "neon_intrinsics", since = "1.59.0")
75862)]
75863#[cfg_attr(
75864 target_arch = "arm",
75865 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75866)]
75867pub fn vuzpq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
75868 unsafe {
75869 let a0: uint8x16_t = simd_shuffle!(
75870 a,
75871 b,
75872 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]
75873 );
75874 let b0: uint8x16_t = simd_shuffle!(
75875 a,
75876 b,
75877 [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31]
75878 );
75879 transmute((a0, b0))
75880 }
75881}
75882#[doc = "Unzip vectors"]
75883#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_u16)"]
75884#[inline]
75885#[target_feature(enable = "neon")]
75886#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75887#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
75888#[cfg_attr(
75889 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75890 assert_instr(uzp1)
75891)]
75892#[cfg_attr(
75893 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75894 assert_instr(uzp2)
75895)]
75896#[cfg_attr(
75897 not(target_arch = "arm"),
75898 stable(feature = "neon_intrinsics", since = "1.59.0")
75899)]
75900#[cfg_attr(
75901 target_arch = "arm",
75902 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75903)]
75904pub fn vuzp_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {
75905 unsafe {
75906 let a0: uint16x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
75907 let b0: uint16x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
75908 transmute((a0, b0))
75909 }
75910}
75911#[doc = "Unzip vectors"]
75912#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_u16)"]
75913#[inline]
75914#[target_feature(enable = "neon")]
75915#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75916#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
75917#[cfg_attr(
75918 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75919 assert_instr(uzp1)
75920)]
75921#[cfg_attr(
75922 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75923 assert_instr(uzp2)
75924)]
75925#[cfg_attr(
75926 not(target_arch = "arm"),
75927 stable(feature = "neon_intrinsics", since = "1.59.0")
75928)]
75929#[cfg_attr(
75930 target_arch = "arm",
75931 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75932)]
75933pub fn vuzpq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
75934 unsafe {
75935 let a0: uint16x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
75936 let b0: uint16x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
75937 transmute((a0, b0))
75938 }
75939}
75940#[doc = "Unzip vectors"]
75941#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_u32)"]
75942#[inline]
75943#[target_feature(enable = "neon")]
75944#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75945#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
75946#[cfg_attr(
75947 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75948 assert_instr(uzp1)
75949)]
75950#[cfg_attr(
75951 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75952 assert_instr(uzp2)
75953)]
75954#[cfg_attr(
75955 not(target_arch = "arm"),
75956 stable(feature = "neon_intrinsics", since = "1.59.0")
75957)]
75958#[cfg_attr(
75959 target_arch = "arm",
75960 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75961)]
75962pub fn vuzpq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
75963 unsafe {
75964 let a0: uint32x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
75965 let b0: uint32x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
75966 transmute((a0, b0))
75967 }
75968}
75969#[doc = "Unzip vectors"]
75970#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_p8)"]
75971#[inline]
75972#[target_feature(enable = "neon")]
75973#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
75974#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
75975#[cfg_attr(
75976 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75977 assert_instr(uzp1)
75978)]
75979#[cfg_attr(
75980 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
75981 assert_instr(uzp2)
75982)]
75983#[cfg_attr(
75984 not(target_arch = "arm"),
75985 stable(feature = "neon_intrinsics", since = "1.59.0")
75986)]
75987#[cfg_attr(
75988 target_arch = "arm",
75989 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
75990)]
75991pub fn vuzp_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {
75992 unsafe {
75993 let a0: poly8x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
75994 let b0: poly8x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
75995 transmute((a0, b0))
75996 }
75997}
75998#[doc = "Unzip vectors"]
75999#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_p8)"]
76000#[inline]
76001#[target_feature(enable = "neon")]
76002#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76003#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
76004#[cfg_attr(
76005 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76006 assert_instr(uzp1)
76007)]
76008#[cfg_attr(
76009 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76010 assert_instr(uzp2)
76011)]
76012#[cfg_attr(
76013 not(target_arch = "arm"),
76014 stable(feature = "neon_intrinsics", since = "1.59.0")
76015)]
76016#[cfg_attr(
76017 target_arch = "arm",
76018 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76019)]
76020pub fn vuzpq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
76021 unsafe {
76022 let a0: poly8x16_t = simd_shuffle!(
76023 a,
76024 b,
76025 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]
76026 );
76027 let b0: poly8x16_t = simd_shuffle!(
76028 a,
76029 b,
76030 [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31]
76031 );
76032 transmute((a0, b0))
76033 }
76034}
76035#[doc = "Unzip vectors"]
76036#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_p16)"]
76037#[inline]
76038#[target_feature(enable = "neon")]
76039#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76040#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
76041#[cfg_attr(
76042 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76043 assert_instr(uzp1)
76044)]
76045#[cfg_attr(
76046 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76047 assert_instr(uzp2)
76048)]
76049#[cfg_attr(
76050 not(target_arch = "arm"),
76051 stable(feature = "neon_intrinsics", since = "1.59.0")
76052)]
76053#[cfg_attr(
76054 target_arch = "arm",
76055 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76056)]
76057pub fn vuzp_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {
76058 unsafe {
76059 let a0: poly16x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
76060 let b0: poly16x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
76061 transmute((a0, b0))
76062 }
76063}
76064#[doc = "Unzip vectors"]
76065#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_p16)"]
76066#[inline]
76067#[target_feature(enable = "neon")]
76068#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76069#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
76070#[cfg_attr(
76071 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76072 assert_instr(uzp1)
76073)]
76074#[cfg_attr(
76075 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76076 assert_instr(uzp2)
76077)]
76078#[cfg_attr(
76079 not(target_arch = "arm"),
76080 stable(feature = "neon_intrinsics", since = "1.59.0")
76081)]
76082#[cfg_attr(
76083 target_arch = "arm",
76084 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76085)]
76086pub fn vuzpq_p16(a: poly16x8_t, b: poly16x8_t) -> poly16x8x2_t {
76087 unsafe {
76088 let a0: poly16x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
76089 let b0: poly16x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
76090 transmute((a0, b0))
76091 }
76092}
76093#[doc = "Zip vectors"]
76094#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_f16)"]
76095#[inline]
76096#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76097#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vzip.16"))]
76098#[cfg_attr(
76099 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76100 assert_instr(zip1)
76101)]
76102#[cfg_attr(
76103 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76104 assert_instr(zip2)
76105)]
76106#[target_feature(enable = "neon,fp16")]
76107#[cfg_attr(
76108 not(target_arch = "arm"),
76109 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
76110)]
76111#[cfg_attr(
76112 target_arch = "arm",
76113 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76114)]
76115#[cfg(not(target_arch = "arm64ec"))]
76116pub fn vzip_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {
76117 unsafe {
76118 let a0: float16x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
76119 let b0: float16x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
76120 transmute((a0, b0))
76121 }
76122}
76123#[doc = "Zip vectors"]
76124#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_f16)"]
76125#[inline]
76126#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76127#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vzip.16"))]
76128#[cfg_attr(
76129 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76130 assert_instr(zip1)
76131)]
76132#[cfg_attr(
76133 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76134 assert_instr(zip2)
76135)]
76136#[target_feature(enable = "neon,fp16")]
76137#[cfg_attr(
76138 not(target_arch = "arm"),
76139 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
76140)]
76141#[cfg_attr(
76142 target_arch = "arm",
76143 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76144)]
76145#[cfg(not(target_arch = "arm64ec"))]
76146pub fn vzipq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {
76147 unsafe {
76148 let a0: float16x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
76149 let b0: float16x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
76150 transmute((a0, b0))
76151 }
76152}
76153#[doc = "Zip vectors"]
76154#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_f32)"]
76155#[inline]
76156#[target_feature(enable = "neon")]
76157#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76158#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
76159#[cfg_attr(
76160 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76161 assert_instr(zip1)
76162)]
76163#[cfg_attr(
76164 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76165 assert_instr(zip2)
76166)]
76167#[cfg_attr(
76168 not(target_arch = "arm"),
76169 stable(feature = "neon_intrinsics", since = "1.59.0")
76170)]
76171#[cfg_attr(
76172 target_arch = "arm",
76173 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76174)]
76175pub fn vzip_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {
76176 unsafe {
76177 let a0: float32x2_t = simd_shuffle!(a, b, [0, 2]);
76178 let b0: float32x2_t = simd_shuffle!(a, b, [1, 3]);
76179 transmute((a0, b0))
76180 }
76181}
76182#[doc = "Zip vectors"]
76183#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_s32)"]
76184#[inline]
76185#[target_feature(enable = "neon")]
76186#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76187#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
76188#[cfg_attr(
76189 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76190 assert_instr(zip1)
76191)]
76192#[cfg_attr(
76193 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76194 assert_instr(zip2)
76195)]
76196#[cfg_attr(
76197 not(target_arch = "arm"),
76198 stable(feature = "neon_intrinsics", since = "1.59.0")
76199)]
76200#[cfg_attr(
76201 target_arch = "arm",
76202 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76203)]
76204pub fn vzip_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {
76205 unsafe {
76206 let a0: int32x2_t = simd_shuffle!(a, b, [0, 2]);
76207 let b0: int32x2_t = simd_shuffle!(a, b, [1, 3]);
76208 transmute((a0, b0))
76209 }
76210}
76211#[doc = "Zip vectors"]
76212#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_u32)"]
76213#[inline]
76214#[target_feature(enable = "neon")]
76215#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76216#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
76217#[cfg_attr(
76218 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76219 assert_instr(zip1)
76220)]
76221#[cfg_attr(
76222 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76223 assert_instr(zip2)
76224)]
76225#[cfg_attr(
76226 not(target_arch = "arm"),
76227 stable(feature = "neon_intrinsics", since = "1.59.0")
76228)]
76229#[cfg_attr(
76230 target_arch = "arm",
76231 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76232)]
76233pub fn vzip_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {
76234 unsafe {
76235 let a0: uint32x2_t = simd_shuffle!(a, b, [0, 2]);
76236 let b0: uint32x2_t = simd_shuffle!(a, b, [1, 3]);
76237 transmute((a0, b0))
76238 }
76239}
76240#[doc = "Zip vectors"]
76241#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_s8)"]
76242#[inline]
76243#[target_feature(enable = "neon")]
76244#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76245#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
76246#[cfg_attr(
76247 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76248 assert_instr(zip1)
76249)]
76250#[cfg_attr(
76251 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76252 assert_instr(zip2)
76253)]
76254#[cfg_attr(
76255 not(target_arch = "arm"),
76256 stable(feature = "neon_intrinsics", since = "1.59.0")
76257)]
76258#[cfg_attr(
76259 target_arch = "arm",
76260 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76261)]
76262pub fn vzip_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {
76263 unsafe {
76264 let a0: int8x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
76265 let b0: int8x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
76266 transmute((a0, b0))
76267 }
76268}
76269#[doc = "Zip vectors"]
76270#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_s16)"]
76271#[inline]
76272#[target_feature(enable = "neon")]
76273#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76274#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
76275#[cfg_attr(
76276 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76277 assert_instr(zip1)
76278)]
76279#[cfg_attr(
76280 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76281 assert_instr(zip2)
76282)]
76283#[cfg_attr(
76284 not(target_arch = "arm"),
76285 stable(feature = "neon_intrinsics", since = "1.59.0")
76286)]
76287#[cfg_attr(
76288 target_arch = "arm",
76289 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76290)]
76291pub fn vzip_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {
76292 unsafe {
76293 let a0: int16x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
76294 let b0: int16x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
76295 transmute((a0, b0))
76296 }
76297}
76298#[doc = "Zip vectors"]
76299#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_u8)"]
76300#[inline]
76301#[target_feature(enable = "neon")]
76302#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76303#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
76304#[cfg_attr(
76305 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76306 assert_instr(zip1)
76307)]
76308#[cfg_attr(
76309 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76310 assert_instr(zip2)
76311)]
76312#[cfg_attr(
76313 not(target_arch = "arm"),
76314 stable(feature = "neon_intrinsics", since = "1.59.0")
76315)]
76316#[cfg_attr(
76317 target_arch = "arm",
76318 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76319)]
76320pub fn vzip_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {
76321 unsafe {
76322 let a0: uint8x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
76323 let b0: uint8x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
76324 transmute((a0, b0))
76325 }
76326}
76327#[doc = "Zip vectors"]
76328#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_u16)"]
76329#[inline]
76330#[target_feature(enable = "neon")]
76331#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76332#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
76333#[cfg_attr(
76334 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76335 assert_instr(zip1)
76336)]
76337#[cfg_attr(
76338 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76339 assert_instr(zip2)
76340)]
76341#[cfg_attr(
76342 not(target_arch = "arm"),
76343 stable(feature = "neon_intrinsics", since = "1.59.0")
76344)]
76345#[cfg_attr(
76346 target_arch = "arm",
76347 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76348)]
76349pub fn vzip_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {
76350 unsafe {
76351 let a0: uint16x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
76352 let b0: uint16x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
76353 transmute((a0, b0))
76354 }
76355}
76356#[doc = "Zip vectors"]
76357#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_p8)"]
76358#[inline]
76359#[target_feature(enable = "neon")]
76360#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76361#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
76362#[cfg_attr(
76363 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76364 assert_instr(zip1)
76365)]
76366#[cfg_attr(
76367 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76368 assert_instr(zip2)
76369)]
76370#[cfg_attr(
76371 not(target_arch = "arm"),
76372 stable(feature = "neon_intrinsics", since = "1.59.0")
76373)]
76374#[cfg_attr(
76375 target_arch = "arm",
76376 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76377)]
76378pub fn vzip_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {
76379 unsafe {
76380 let a0: poly8x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
76381 let b0: poly8x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
76382 transmute((a0, b0))
76383 }
76384}
76385#[doc = "Zip vectors"]
76386#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_p16)"]
76387#[inline]
76388#[target_feature(enable = "neon")]
76389#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76390#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
76391#[cfg_attr(
76392 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76393 assert_instr(zip1)
76394)]
76395#[cfg_attr(
76396 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76397 assert_instr(zip2)
76398)]
76399#[cfg_attr(
76400 not(target_arch = "arm"),
76401 stable(feature = "neon_intrinsics", since = "1.59.0")
76402)]
76403#[cfg_attr(
76404 target_arch = "arm",
76405 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76406)]
76407pub fn vzip_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {
76408 unsafe {
76409 let a0: poly16x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
76410 let b0: poly16x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
76411 transmute((a0, b0))
76412 }
76413}
76414#[doc = "Zip vectors"]
76415#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_f32)"]
76416#[inline]
76417#[target_feature(enable = "neon")]
76418#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76419#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
76420#[cfg_attr(
76421 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76422 assert_instr(zip1)
76423)]
76424#[cfg_attr(
76425 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76426 assert_instr(zip2)
76427)]
76428#[cfg_attr(
76429 not(target_arch = "arm"),
76430 stable(feature = "neon_intrinsics", since = "1.59.0")
76431)]
76432#[cfg_attr(
76433 target_arch = "arm",
76434 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76435)]
76436pub fn vzipq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
76437 unsafe {
76438 let a0: float32x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
76439 let b0: float32x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
76440 transmute((a0, b0))
76441 }
76442}
76443#[doc = "Zip vectors"]
76444#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_s8)"]
76445#[inline]
76446#[target_feature(enable = "neon")]
76447#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76448#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
76449#[cfg_attr(
76450 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76451 assert_instr(zip1)
76452)]
76453#[cfg_attr(
76454 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76455 assert_instr(zip2)
76456)]
76457#[cfg_attr(
76458 not(target_arch = "arm"),
76459 stable(feature = "neon_intrinsics", since = "1.59.0")
76460)]
76461#[cfg_attr(
76462 target_arch = "arm",
76463 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76464)]
76465pub fn vzipq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
76466 unsafe {
76467 let a0: int8x16_t = simd_shuffle!(
76468 a,
76469 b,
76470 [0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23]
76471 );
76472 let b0: int8x16_t = simd_shuffle!(
76473 a,
76474 b,
76475 [8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31]
76476 );
76477 transmute((a0, b0))
76478 }
76479}
76480#[doc = "Zip vectors"]
76481#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_s16)"]
76482#[inline]
76483#[target_feature(enable = "neon")]
76484#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76485#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
76486#[cfg_attr(
76487 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76488 assert_instr(zip1)
76489)]
76490#[cfg_attr(
76491 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76492 assert_instr(zip2)
76493)]
76494#[cfg_attr(
76495 not(target_arch = "arm"),
76496 stable(feature = "neon_intrinsics", since = "1.59.0")
76497)]
76498#[cfg_attr(
76499 target_arch = "arm",
76500 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76501)]
76502pub fn vzipq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
76503 unsafe {
76504 let a0: int16x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
76505 let b0: int16x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
76506 transmute((a0, b0))
76507 }
76508}
76509#[doc = "Zip vectors"]
76510#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_s32)"]
76511#[inline]
76512#[target_feature(enable = "neon")]
76513#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76514#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
76515#[cfg_attr(
76516 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76517 assert_instr(zip1)
76518)]
76519#[cfg_attr(
76520 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76521 assert_instr(zip2)
76522)]
76523#[cfg_attr(
76524 not(target_arch = "arm"),
76525 stable(feature = "neon_intrinsics", since = "1.59.0")
76526)]
76527#[cfg_attr(
76528 target_arch = "arm",
76529 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76530)]
76531pub fn vzipq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
76532 unsafe {
76533 let a0: int32x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
76534 let b0: int32x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
76535 transmute((a0, b0))
76536 }
76537}
76538#[doc = "Zip vectors"]
76539#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_u8)"]
76540#[inline]
76541#[target_feature(enable = "neon")]
76542#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76543#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
76544#[cfg_attr(
76545 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76546 assert_instr(zip1)
76547)]
76548#[cfg_attr(
76549 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76550 assert_instr(zip2)
76551)]
76552#[cfg_attr(
76553 not(target_arch = "arm"),
76554 stable(feature = "neon_intrinsics", since = "1.59.0")
76555)]
76556#[cfg_attr(
76557 target_arch = "arm",
76558 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76559)]
76560pub fn vzipq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
76561 unsafe {
76562 let a0: uint8x16_t = simd_shuffle!(
76563 a,
76564 b,
76565 [0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23]
76566 );
76567 let b0: uint8x16_t = simd_shuffle!(
76568 a,
76569 b,
76570 [8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31]
76571 );
76572 transmute((a0, b0))
76573 }
76574}
76575#[doc = "Zip vectors"]
76576#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_u16)"]
76577#[inline]
76578#[target_feature(enable = "neon")]
76579#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76580#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
76581#[cfg_attr(
76582 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76583 assert_instr(zip1)
76584)]
76585#[cfg_attr(
76586 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76587 assert_instr(zip2)
76588)]
76589#[cfg_attr(
76590 not(target_arch = "arm"),
76591 stable(feature = "neon_intrinsics", since = "1.59.0")
76592)]
76593#[cfg_attr(
76594 target_arch = "arm",
76595 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76596)]
76597pub fn vzipq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
76598 unsafe {
76599 let a0: uint16x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
76600 let b0: uint16x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
76601 transmute((a0, b0))
76602 }
76603}
76604#[doc = "Zip vectors"]
76605#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_u32)"]
76606#[inline]
76607#[target_feature(enable = "neon")]
76608#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76609#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
76610#[cfg_attr(
76611 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76612 assert_instr(zip1)
76613)]
76614#[cfg_attr(
76615 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76616 assert_instr(zip2)
76617)]
76618#[cfg_attr(
76619 not(target_arch = "arm"),
76620 stable(feature = "neon_intrinsics", since = "1.59.0")
76621)]
76622#[cfg_attr(
76623 target_arch = "arm",
76624 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76625)]
76626pub fn vzipq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
76627 unsafe {
76628 let a0: uint32x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
76629 let b0: uint32x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
76630 transmute((a0, b0))
76631 }
76632}
76633#[doc = "Zip vectors"]
76634#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_p8)"]
76635#[inline]
76636#[target_feature(enable = "neon")]
76637#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76638#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
76639#[cfg_attr(
76640 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76641 assert_instr(zip1)
76642)]
76643#[cfg_attr(
76644 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76645 assert_instr(zip2)
76646)]
76647#[cfg_attr(
76648 not(target_arch = "arm"),
76649 stable(feature = "neon_intrinsics", since = "1.59.0")
76650)]
76651#[cfg_attr(
76652 target_arch = "arm",
76653 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76654)]
76655pub fn vzipq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
76656 unsafe {
76657 let a0: poly8x16_t = simd_shuffle!(
76658 a,
76659 b,
76660 [0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23]
76661 );
76662 let b0: poly8x16_t = simd_shuffle!(
76663 a,
76664 b,
76665 [8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31]
76666 );
76667 transmute((a0, b0))
76668 }
76669}
76670#[doc = "Zip vectors"]
76671#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_p16)"]
76672#[inline]
76673#[target_feature(enable = "neon")]
76674#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
76675#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
76676#[cfg_attr(
76677 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76678 assert_instr(zip1)
76679)]
76680#[cfg_attr(
76681 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
76682 assert_instr(zip2)
76683)]
76684#[cfg_attr(
76685 not(target_arch = "arm"),
76686 stable(feature = "neon_intrinsics", since = "1.59.0")
76687)]
76688#[cfg_attr(
76689 target_arch = "arm",
76690 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
76691)]
76692pub fn vzipq_p16(a: poly16x8_t, b: poly16x8_t) -> poly16x8x2_t {
76693 unsafe {
76694 let a0: poly16x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
76695 let b0: poly16x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
76696 transmute((a0, b0))
76697 }
76698}